Skip to content
Merged
Show file tree
Hide file tree
Changes from 31 commits
Commits
Show all changes
124 commits
Select commit Hold shift + click to select a range
421f4f9
Draft of eink_st_sn.
MImmesberger Mar 1, 2024
6372480
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 1, 2024
c46252d
Update environment.
MImmesberger Mar 1, 2024
26e7f90
Merge branch '690-remove-tu-groupings' of https://github.com/iza-inst…
MImmesberger Mar 1, 2024
229de4b
refactor: rename variable
lars-reimann Mar 4, 2024
75130cf
feat: `_eg` grouping
lars-reimann Mar 4, 2024
f32b7bb
feat: `_ehe` grouping
lars-reimann Mar 4, 2024
4df035d
fix: convert booleans to ints before summing them up
lars-reimann Mar 4, 2024
c9784bf
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 4, 2024
137013f
refactor: demographic variable for all possible groupings
lars-reimann Mar 4, 2024
cbb6ad0
fix: use correct groupings for ALG II
lars-reimann Mar 4, 2024
876a68e
fix: use correct groupings for `grunds_im_alter_vermög_freib`
lars-reimann Mar 4, 2024
55a1d7a
fix: use correct groupings for `grunds_im_alter_eink_m`
lars-reimann Mar 4, 2024
4a58c8e
fix: use `_eg` instead of `_hh` for Grundsicherung im Alter
lars-reimann Mar 4, 2024
6ff5618
fix: use correct groupings for `wohngeld_abzüge_st_sozialv_m`
lars-reimann Mar 4, 2024
3eab258
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 4, 2024
3c5f069
Merge branch '690-remove-tu-groupings' of https://github.com/iza-inst…
MImmesberger Mar 4, 2024
d2af552
Update src/_gettsim/taxes/eink_st.py
MImmesberger Mar 4, 2024
d7bc5f1
Change grouping of Freibetrag for Grundsicherung im Alter back to eg.
MImmesberger Mar 4, 2024
79a7ffa
Correct count of children for Wohngeld.
MImmesberger Mar 4, 2024
d459601
Adjust erziehungsgeld.
MImmesberger Mar 4, 2024
f300456
Adjust Elterngeld.
MImmesberger Mar 4, 2024
d25d897
Adjust soli.
MImmesberger Mar 4, 2024
31e69b4
Adjust AbgeltungsSt.
MImmesberger Mar 4, 2024
6f1eab4
Adjust eink_st parameters.
MImmesberger Mar 4, 2024
7d214a4
Adjust Lohnsteuer.
MImmesberger Mar 4, 2024
b8d7609
Adjust Vorsorgeaufwand.
MImmesberger Mar 4, 2024
022e65f
Adjust Freibeträge.
MImmesberger Mar 6, 2024
3dcf032
Adjust Kinderzuschlag.
MImmesberger Mar 6, 2024
0eabc5c
Adjust ALG.
MImmesberger Mar 6, 2024
ff4ed94
Adjust Unterhaltsvorschuss.
MImmesberger Mar 6, 2024
c0b28eb
Update src/_gettsim/config.py
MImmesberger Mar 6, 2024
2bd85fa
Typo.
MImmesberger Mar 6, 2024
1efe11d
Benefit checks.
MImmesberger Mar 6, 2024
f4ab1b4
Adjust docs.
MImmesberger Mar 6, 2024
3fdc8be
Rest of renaming.
MImmesberger Mar 6, 2024
47097eb
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 6, 2024
86ef8d4
Document changes.
MImmesberger Mar 6, 2024
40f62d8
Merge branch '690-remove-tu-groupings' of https://github.com/iza-inst…
MImmesberger Mar 6, 2024
c6752ef
Rename _tu in yaml files.
MImmesberger Mar 6, 2024
99d6a19
Rename tu_id in test files.
MImmesberger Mar 6, 2024
b3d9618
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 6, 2024
20b9126
Specify unterhaltsvors result to be monthly.
MImmesberger Mar 6, 2024
21007c6
Start to adjust tests.
MImmesberger Mar 6, 2024
8fa6390
Merge branch '690-remove-tu-groupings' of https://github.com/iza-inst…
MImmesberger Mar 6, 2024
dbe647e
Remove test case for ALG2.
MImmesberger Mar 6, 2024
f1bc88e
Fix typo and adjust benefit_check tests.
MImmesberger Mar 6, 2024
d0d4395
Fix ESt tests.
MImmesberger Mar 6, 2024
185d978
Fix some typos.
MImmesberger Mar 6, 2024
2d32d32
Fix Elterngeld tests.
MImmesberger Mar 6, 2024
29739d8
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 6, 2024
bbcba2c
Fix favorability tests.
MImmesberger Mar 7, 2024
4ea3266
Fix full TT tests, add basic input vars and set aggregation source co…
MImmesberger Mar 7, 2024
f52e8cc
Fix Grundrente tests.
MImmesberger Mar 7, 2024
2d5d5ec
Fix Grundsicherung im Alter tests.
MImmesberger Mar 7, 2024
c3d7ced
Kindergeld tests.
MImmesberger Mar 7, 2024
3960148
Kinderzuschlag tests.
MImmesberger Mar 7, 2024
5ea0f89
Lohnsteuer tests.
MImmesberger Mar 7, 2024
7ec1980
Soli tests.
MImmesberger Mar 7, 2024
d7c29ae
Unterhaltsvorschuss tests.
MImmesberger Mar 7, 2024
eeb0e4b
Vorsorgeaufwand tests.
MImmesberger Mar 7, 2024
7964497
Wohngeld tests.
MImmesberger Mar 7, 2024
7f5dee6
Zu versteuerndes Einkommen tests.
MImmesberger Mar 7, 2024
19cb919
Adjust synthetic data creation, rename eigener_bedarf_gedeckt.
MImmesberger Mar 7, 2024
efa9fbd
Rename größe_bg.
MImmesberger Mar 7, 2024
daade2b
Handle Betreuungskosten correctly.
MImmesberger Mar 7, 2024
6f23746
Add ToDo for Wohngeld check.
MImmesberger Mar 7, 2024
3367971
More clean up.
MImmesberger Mar 7, 2024
1422163
Make new var größe available, remove haushaltsgröße_hh.
MImmesberger Mar 7, 2024
9748a3b
Allow source_col of aggregate_by_p_id to be in input cols.
MImmesberger Mar 7, 2024
d307bd9
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 7, 2024
30254f4
Merge branch 'main' into 690-remove-tu-groupings
MImmesberger Mar 7, 2024
9697896
Rename Betreuungskosten Träger var.
MImmesberger Mar 7, 2024
2f637e6
Merge branch '690-remove-tu-groupings' of https://github.com/iza-inst…
MImmesberger Mar 7, 2024
382d19a
Merge branch 'main' into 690-remove-tu-groupings
MImmesberger Mar 7, 2024
955f7bc
Adjust visalization notebook.
MImmesberger Mar 7, 2024
61f0df6
Adjust load policy funcs nb.
MImmesberger Mar 7, 2024
e8c068e
Adjust parameters notebook.
MImmesberger Mar 7, 2024
6bc8243
Adjust policy functions nb.
MImmesberger Mar 7, 2024
2482223
Adjust debugging nb.
MImmesberger Mar 7, 2024
4cbaa67
Adjust basic_usage nb.
MImmesberger Mar 7, 2024
7969536
Adjust adavanced usage nb.
MImmesberger Mar 7, 2024
b31fe55
Adjust adavanced usage nb further.
MImmesberger Mar 7, 2024
bebe605
Adjust docs, docstrings and remove eltern function that doesnt make s…
MImmesberger Mar 7, 2024
ae39e73
Merge branch '690-remove-tu-groupings' of https://github.com/iza-inst…
MImmesberger Mar 7, 2024
b77a109
Remove unnecessary line.
MImmesberger Mar 7, 2024
5d4814c
Get rid of pandas warning.
MImmesberger Mar 7, 2024
9cf9a02
Adjust tutorial.
MImmesberger Mar 7, 2024
3d131af
Remove Kinderzuschlag, Wohngeld, ALG2 Günstigerprüfung ToDo.
MImmesberger Mar 7, 2024
e41293f
Fix type error in test_synthetic.
MImmesberger Mar 7, 2024
d609691
Add Bruttokaltmiete Kinderzuschlag test.
MImmesberger Mar 7, 2024
2c870cf
Add additional tests for ESt.
MImmesberger Mar 7, 2024
b6dec5a
Add todo note in grunds_im_alter_m_eg.
MImmesberger Mar 7, 2024
a066496
Fix return type of eink_st_mit_kinderfreib_y_sn_bis_2001.
MImmesberger Mar 7, 2024
7dbc576
Add todo for treatment of bg with retirees and job seekers in Grundsi…
MImmesberger Mar 8, 2024
b3e465a
Change type hint.
MImmesberger Mar 8, 2024
82befa8
Remove obsolete function.
MImmesberger Mar 8, 2024
1bf9bd5
Fix link, change assignee :-)
hmgaudecker Mar 8, 2024
a919e30
Implement some of the code review comments.
MImmesberger Mar 9, 2024
e876dd8
Test new groupings.
MImmesberger Mar 9, 2024
9d2c223
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 9, 2024
c7f6048
Tiny fixes to docstrings.
hmgaudecker Mar 14, 2024
955b6ac
Adjust changes.md.
MImmesberger Mar 15, 2024
15bddad
Remove explicit if statement anz_personen_sn.
MImmesberger Mar 15, 2024
bce61ff
Remove comment in ALG2 Regelbedarf calculation.
MImmesberger Mar 15, 2024
4f90d33
Change time unit for income taxes when it is divided by 12.
MImmesberger Mar 15, 2024
5c6059e
Remove commented out code.
MImmesberger Mar 15, 2024
8b4a1ce
Update src/_gettsim/transfers/kinderzuschl/kinderzuschl_eink.py
MImmesberger Mar 15, 2024
aa0ba11
Update src/_gettsim/transfers/kinderzuschl/kost_unterk.py
MImmesberger Mar 15, 2024
0142f63
Remove hard-coded number in kost_unterk.
MImmesberger Mar 17, 2024
d6b02ee
Remove another hard coded number.
MImmesberger Mar 17, 2024
f62100b
Adjust ToDo.
MImmesberger Mar 17, 2024
9eb423b
Change ToDo note.
MImmesberger Mar 17, 2024
6d2b63e
Change Docstring.
MImmesberger Mar 17, 2024
a63c585
Remove kind condition in arbeitsl_geld_2_eink.
MImmesberger Mar 17, 2024
cf84a0e
Add issue in Wohngeld module.
MImmesberger Mar 17, 2024
1d78ded
Min income is 0 in arbeitsl_geld_2_eink_m.
MImmesberger Mar 17, 2024
8ea298a
Merge branch '690-remove-tu-groupings' of https://github.com/iza-inst…
MImmesberger Mar 17, 2024
782c4c5
Fix calculation of Vorsorgeaufwand.
MImmesberger Mar 17, 2024
44258b2
Fix docstring.
MImmesberger Mar 17, 2024
c549303
Revert "Change time unit for income taxes when it is divided by 12."
MImmesberger Mar 18, 2024
e25637a
Revert "Min income is 0 in arbeitsl_geld_2_eink_m."
MImmesberger Mar 18, 2024
4472af0
Adjust test to make sense.
MImmesberger Mar 18, 2024
849ba6a
Add todo note.
MImmesberger Mar 18, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/geps/gep-01.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.,
`arbeitsl_geld_2_vermög_freib_bg` vs. `grunds_im_alter_vermög_freib_hh`), the group
`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.

1. Because of the necessity of concatenated column names, there will be conflicts
Expand Down Expand Up @@ -112,7 +112,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.,
`arbeitsl_geld_2_vermög_freib_bg` vs. `grunds_im_alter_vermög_freib_hh`), the group
`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.

If a column has a reference to a time unit (i.e., any flow variable like earnings or
Expand Down
16 changes: 8 additions & 8 deletions docs/geps/gep-04.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ is able to replace this function with her own version.
See the following example for capital income taxes.

```python
def abgelt_st_y_tu(zu_verst_kapitaleink_y_tu: float, abgelt_st_params: dict) -> float:
def abgelt_st_y_sn(zu_verst_kapitaleink_y_tu: float, abgelt_st_params: dict) -> float:
"""Calculate Abgeltungssteuer on tax unit level.

Parameters
Expand All @@ -97,26 +97,26 @@ def abgelt_st_y_tu(zu_verst_kapitaleink_y_tu: float, abgelt_st_params: dict) ->
return abgelt_st_params["satz"] * zu_verst_kapitaleink_y_tu
```

The function {func}`abgelt_st_y_tu` requires the variable `zu_verst_kapital_eink_y_tu`,
The function {func}`abgelt_st_y_sn` requires the variable `zu_verst_kapital_eink_y_tu`,
which is the amount of taxable capital income on tax unit level (the latter is implied
by the `_tu` suffix, see {ref}`gep-1`). `zu_verst_kapital_eink_y_tu` 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
`abgelt_st_y_tu`.
`abgelt_st_y_sn`.

Another function, say

```python
def soli_st_y_tu(
eink_st_mit_kinderfreib_y_tu: float,
def soli_st_y_sn(
eink_st_mit_kinderfreib_y_sn: float,
anz_erwachsene_tu: int,
abgelt_st_y_tu: float,
abgelt_st_y_sn: float,
soli_st_params: dict,
) -> float: ...
```

may use `abgelt_st_y_tu` as an input argument. The DAG backend ensures that the function
`abgelt_st_y_tu` will be executed first.
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.

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`.
Expand Down
6 changes: 3 additions & 3 deletions docs/gettsim_objects/variables_out.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ You can find their individual calculation in the documentation of all {ref}`func
- Monthly amount of unemployment assistance
* - {func}`entgeltp_update <_gettsim.functions.entgeltp_update>`
- Updated earning points for pension claim
* - {func}`abgelt_st_y_tu <_gettsim.functions.abgelt_st_y_tu>`
* - {func}`abgelt_st_y_sn <_gettsim.functions.abgelt_st_y_sn>`
- Capital income tax on tax unit level
* - {func}`soli_st_y_tu <_gettsim.functions.soli_st_y_tu>`
* - {func}`soli_st_y_sn <_gettsim.functions.soli_st_y_sn>`
- Solidarity surcharge on tax unit level
* - {func}`kindergeld_m <_gettsim.functions.kindergeld_m>`
- Monthly child benefit
Expand All @@ -42,6 +42,6 @@ You can find their individual calculation in the documentation of all {ref}`func
- Monthly parental leave benefit
* - {func}`wohngeld_m_hh <_gettsim.functions.wohngeld_m_hh>`
- Monthly housing benefit on household level
* - {func}`grunds_im_alter_m_hh <_gettsim.functions.grunds_im_alter_m_hh>`
* - {func}`grunds_im_alter_m_eg <_gettsim.functions.grunds_im_alter_m_eg>`
- Monthly subsistence payment for retirees on household level
```
2 changes: 1 addition & 1 deletion environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ dependencies:
- pyyaml
- setuptools_scm
- sphinx
- sphinx-automodapi
- sphinx-automodapi<0.17.0
- sphinx-copybutton
- toml
- pip:
Expand Down
3 changes: 2 additions & 1 deletion src/_gettsim/aggregation_numpy.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ def grouped_count(group_id):
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")

if column.dtype == bool:
column = column.astype(int)
out_on_hh = npg.aggregate(group_id, column, func="sum", fill_value=0)

# Expand to individual level
Expand Down
17 changes: 13 additions & 4 deletions src/_gettsim/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,15 @@ def set_array_backend(backend: str):
"description": "Spouses filing taxes jointly or individuals.",
"potentially_endogenous": True,
},
"ehe": {
"name": "Ehepartner",
"description": "Couples that are either married or in a civil union.",
"potentially_endogenous": False,
},
"eg": {
"name": "Einstandsgemeinschaft / Einstandspartner",
"description": "Couples that live together but are not necessarily married.",
},
}

SUPPORTED_TIME_UNITS = {
Expand All @@ -118,20 +127,20 @@ def set_array_backend(backend: str):

DEFAULT_TARGETS = [
"eink_st_y_tu",
"soli_st_y_tu",
"abgelt_st_y_tu",
"soli_st_y_sn",
"abgelt_st_y_sn",
"sozialv_beitr_m",
"ges_rentenv_beitr_m",
"arbeitsl_v_beitr_m",
"ges_krankenv_beitr_m",
"ges_pflegev_beitr_m",
"arbeitsl_geld_m",
"kindergeld_m_tu",
"kindergeld_m",
"arbeitsl_geld_2_m_bg",
"kinderzuschl_m_bg",
"wohngeld_m_hh",
"unterhaltsvors_m_hh",
"grunds_im_alter_m_hh",
"grunds_im_alter_m_eg",
"ges_rente_m",
"erwerbsm_rente_m",
]
Expand Down
75 changes: 49 additions & 26 deletions src/_gettsim/demographic_vars.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,31 +8,54 @@

import numpy

aggregate_by_group_demographic_vars = {
"anz_erwachsene_tu": {"source_col": "erwachsen", "aggr": "sum"},
"anz_erwachsene_hh": {"source_col": "erwachsen", "aggr": "sum"},
"anz_rentner_hh": {"source_col": "rentner", "aggr": "sum"},
"anz_kinder_hh": {"source_col": "kind", "aggr": "sum"},
"anz_kinder_tu": {"source_col": "kind", "aggr": "sum"},
"anz_kinder_bis_5_hh": {"source_col": "kind_bis_5", "aggr": "sum"},
"anz_kinder_bis_6_hh": {"source_col": "kind_bis_6", "aggr": "sum"},
"anz_kinder_bis_15_hh": {"source_col": "kind_bis_15", "aggr": "sum"},
"anz_kinder_bis_17_hh": {"source_col": "kind_bis_17", "aggr": "sum"},
"anz_kinder_ab_6_bis_13_hh": {"source_col": "kind_ab_6_bis_13", "aggr": "sum"},
"anz_kinder_ab_14_bis_24_hh": {"source_col": "kind_ab_14_bis_24", "aggr": "sum"},
"anz_kinder_ab_14_bis_17_hh": {"source_col": "kind_ab_14_bis_17", "aggr": "sum"},
"anz_kinder_ab_18_bis_24_hh": {"source_col": "kind_ab_18_bis_24", "aggr": "sum"},
"anz_kinder_bis_10_tu": {"source_col": "kind_bis_10", "aggr": "sum"},
"alleinerz_tu": {"source_col": "alleinerz", "aggr": "any"},
"alleinerz_hh": {"source_col": "alleinerz", "aggr": "any"},
"haushaltsgröße_hh": {"aggr": "count"},
"tax_unit_größe_tu": {"aggr": "count"},
"alter_monate_jüngstes_mitglied_hh": {"source_col": "alter_monate", "aggr": "min"},
"anz_mehrlinge_jüngstes_kind_hh": {
"source_col": "jüngstes_kind_oder_mehrling",
"aggr": "sum",
},
}
from _gettsim.config import SUPPORTED_GROUPINGS


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_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"},
"anz_kinder_ab_6_bis_13": {"source_col": "kind_ab_6_bis_13", "aggr": "sum"},
"anz_kinder_ab_14_bis_24": {"source_col": "kind_ab_14_bis_24", "aggr": "sum"},
"anz_kinder_ab_14_bis_17": {"source_col": "kind_ab_14_bis_17", "aggr": "sum"},
"anz_kinder_ab_18_bis_24": {"source_col": "kind_ab_18_bis_24", "aggr": "sum"},
"alleinerz": {"source_col": "alleinerz", "aggr": "any"},
"haushaltsgröße": {"aggr": "count"},
"tax_unit_größe": {"aggr": "count"},
"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_5(alter: int, kind: bool) -> bool:
Expand Down Expand Up @@ -71,7 +94,7 @@ def kind_bis_6(alter: int, kind: bool) -> bool:
return out


def kind_bis_10(alter: int, kind: bool) -> bool:
def kind_bis_12(alter: int, kind: bool) -> bool:
"""Calculate if child under the age of 11.

Parameters
Expand Down
76 changes: 67 additions & 9 deletions src/_gettsim/groupings.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,13 @@


def create_groupings() -> dict[str, Callable]:
return {"bg_id": bg_id_numpy, "fg_id": fg_id_numpy, "sn_id": sn_id_numpy}
return {
"bg_id": bg_id_numpy,
"eg_id": eg_id_numpy,
"fg_id": fg_id_numpy,
"sn_id": sn_id_numpy,
"ehe_id": ehe_id_numpy,
}


def bg_id_numpy(
Expand Down Expand Up @@ -33,6 +39,61 @@ def bg_id_numpy(
return numpy.asarray(result)


def eg_id_numpy(
p_id: numpy.ndarray,
p_id_einstandspartner: numpy.ndarray,
) -> numpy.ndarray:
"""
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)


def ehe_id_numpy(
p_id: numpy.ndarray,
p_id_ehepartner: numpy.ndarray,
):
"""
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)


def fg_id_numpy( # noqa: PLR0913
p_id: numpy.ndarray,
hh_id: numpy.ndarray,
Expand Down Expand Up @@ -123,27 +184,24 @@ def sn_id_numpy(
result = []

for index, current_p_id in enumerate(p_id):
current_p_id_einstandspartner = p_id_ehepartner[index]
current_p_id_ehepartner = p_id_ehepartner[index]
current_gemeinsam_veranlagt = gemeinsam_veranlagt[index]

if (
current_p_id_einstandspartner >= 0
and current_p_id_einstandspartner in p_id_to_sn_id
):
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_einstandspartner
current_p_id_ehepartner
]

if current_gemeinsam_veranlagt != gemeinsam_veranlagt_ehepartner:
message = (
f"{current_p_id_einstandspartner} and {current_p_id} are "
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_einstandspartner])
result.append(p_id_to_sn_id[current_p_id_ehepartner])
continue

# New Steuersubjekt
Expand Down
4 changes: 2 additions & 2 deletions src/_gettsim/parameters/eink_st_abzuege.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -747,14 +747,14 @@ vorsorgepauschale_kv_max:
steuerklasse_nicht3: 1900
reference: Art. 1 G. v. 16.07.2009 BGBl. I S. 1959
rounding:
vorsorgeaufw_y_tu:
vorsorgeaufw_y_sn:
note:
en: Starting date unclear
reference: § 10 Abs. 3 EStG
1984-01-01:
base: 1
direction: up
sonderausgaben_betreuung_y_tu:
sonderausgaben_betreuung_y_sn:
note:
en: Starting date unclear
1984-01-01:
Expand Down
Loading