policyengine-uk 2.42.0__py3-none-any.whl → 2.43.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- policyengine_uk/data/dataset_schema.py +63 -15
- policyengine_uk/data/economic_assumptions.py +18 -1
- policyengine_uk/model_api.py +1 -0
- policyengine_uk/parameters/gov/economic_assumptions/yoy_growth.yaml +1 -3
- policyengine_uk/scenarios/__init__.py +3 -0
- policyengine_uk/scenarios/pip_reform.py +23 -0
- policyengine_uk/scenarios/reindex_benefit_cap.py +32 -0
- policyengine_uk/scenarios/repeal_two_child_limit.py +10 -0
- policyengine_uk/system.py +543 -186
- policyengine_uk/tests/microsimulation/reforms_config.yaml +1 -1
- policyengine_uk/utils/scenario.py +184 -0
- policyengine_uk/variables/gov/dwp/winter_fuel_allowance.py +5 -4
- {policyengine_uk-2.42.0.dist-info → policyengine_uk-2.43.1.dist-info}/METADATA +11 -5
- {policyengine_uk-2.42.0.dist-info → policyengine_uk-2.43.1.dist-info}/RECORD +16 -16
- policyengine_uk/repo.py +0 -3
- policyengine_uk/tests/policy/baseline/gov/abolitions/abolition_parameters.yaml +0 -250
- policyengine_uk-2.42.0.data/data/share/openfisca/openfisca-country-template/CHANGELOG.md +0 -2334
- policyengine_uk-2.42.0.data/data/share/openfisca/openfisca-country-template/README.md +0 -37
- policyengine_uk-2.42.0.dist-info/licenses/LICENSE +0 -661
- {policyengine_uk-2.42.0.dist-info → policyengine_uk-2.43.1.dist-info}/WHEEL +0 -0
- {policyengine_uk-2.42.0.data/data/share/openfisca/openfisca-country-template → policyengine_uk-2.43.1.dist-info/licenses}/LICENSE +0 -0
@@ -16,7 +16,7 @@ reforms:
|
|
16
16
|
parameters:
|
17
17
|
gov.hmrc.child_benefit.amount.additional: 25
|
18
18
|
- name: Reduce Universal Credit taper rate to 20%
|
19
|
-
expected_impact: -
|
19
|
+
expected_impact: -38.4
|
20
20
|
parameters:
|
21
21
|
gov.dwp.universal_credit.means_test.reduction_rate: 0.2
|
22
22
|
- name: Raise Class 1 main employee NICs rate to 10%
|
@@ -0,0 +1,184 @@
|
|
1
|
+
from pydantic import BaseModel
|
2
|
+
from typing import Optional, Callable, Dict, Type, Union
|
3
|
+
from policyengine_core.simulations import Simulation
|
4
|
+
from policyengine_core.reforms import Reform
|
5
|
+
|
6
|
+
|
7
|
+
class Scenario(BaseModel):
|
8
|
+
"""Represents a scenario configuration for policy simulations.
|
9
|
+
|
10
|
+
A scenario can include parameter changes and/or simulation modifications
|
11
|
+
that are applied before running a simulation. Scenarios can be combined
|
12
|
+
using the + operator.
|
13
|
+
"""
|
14
|
+
|
15
|
+
parameter_changes: Optional[
|
16
|
+
Dict[
|
17
|
+
str,
|
18
|
+
Union[
|
19
|
+
int,
|
20
|
+
float,
|
21
|
+
bool,
|
22
|
+
Dict[Union[str, int], Union[int, float, bool]],
|
23
|
+
],
|
24
|
+
]
|
25
|
+
] = None
|
26
|
+
"""A dictionary of parameter changes to apply to the simulation. These are applied *before* parameter operations."""
|
27
|
+
|
28
|
+
simulation_modifier: Optional[Callable[["Simulation"], None]] = None
|
29
|
+
"""A function that modifies the simulation before running it."""
|
30
|
+
|
31
|
+
class Config:
|
32
|
+
"""Pydantic configuration."""
|
33
|
+
|
34
|
+
arbitrary_types_allowed = True # Allow Callable types
|
35
|
+
|
36
|
+
def __add__(self, other: "Scenario") -> "Scenario":
|
37
|
+
"""Combine two scenarios by merging parameter changes and chaining modifiers.
|
38
|
+
|
39
|
+
Args:
|
40
|
+
other: Another Scenario to combine with this one
|
41
|
+
|
42
|
+
Returns:
|
43
|
+
A new Scenario with merged parameter changes and combined modifiers
|
44
|
+
"""
|
45
|
+
# Merge parameter changes (other's changes take precedence in conflicts)
|
46
|
+
merged_params = {}
|
47
|
+
|
48
|
+
if self.parameter_changes:
|
49
|
+
merged_params.update(self.parameter_changes)
|
50
|
+
|
51
|
+
if other.parameter_changes:
|
52
|
+
for key, value in other.parameter_changes.items():
|
53
|
+
if (
|
54
|
+
key in merged_params
|
55
|
+
and isinstance(merged_params[key], dict)
|
56
|
+
and isinstance(value, dict)
|
57
|
+
):
|
58
|
+
# Deep merge nested dictionaries
|
59
|
+
merged_params[key] = {**merged_params[key], **value}
|
60
|
+
else:
|
61
|
+
# Simple override
|
62
|
+
merged_params[key] = value
|
63
|
+
|
64
|
+
# Chain simulation modifiers
|
65
|
+
combined_modifier = None
|
66
|
+
|
67
|
+
if self.simulation_modifier and other.simulation_modifier:
|
68
|
+
# Both have modifiers - chain them
|
69
|
+
def combined_modifier(simulation: Simulation) -> None:
|
70
|
+
self.simulation_modifier(simulation)
|
71
|
+
other.simulation_modifier(simulation)
|
72
|
+
|
73
|
+
elif self.simulation_modifier:
|
74
|
+
combined_modifier = self.simulation_modifier
|
75
|
+
elif other.simulation_modifier:
|
76
|
+
combined_modifier = other.simulation_modifier
|
77
|
+
|
78
|
+
# Return new scenario with merged configuration
|
79
|
+
return Scenario(
|
80
|
+
parameter_changes=merged_params if merged_params else None,
|
81
|
+
simulation_modifier=combined_modifier,
|
82
|
+
)
|
83
|
+
|
84
|
+
@classmethod
|
85
|
+
def from_reform(
|
86
|
+
cls, reform: Union[tuple, dict, Type[Reform]]
|
87
|
+
) -> "Scenario":
|
88
|
+
"""Create a Scenario from various reform representations.
|
89
|
+
|
90
|
+
Args:
|
91
|
+
reform: Can be:
|
92
|
+
- A Reform class type (will be applied via simulation modifier)
|
93
|
+
- A dict of parameter changes
|
94
|
+
- A tuple (treated as a Reform for backward compatibility)
|
95
|
+
|
96
|
+
Returns:
|
97
|
+
A new Scenario configured with the reform
|
98
|
+
|
99
|
+
Raises:
|
100
|
+
ValueError: If reform type is not supported
|
101
|
+
"""
|
102
|
+
if isinstance(reform, type) and issubclass(reform, Reform):
|
103
|
+
# Reform class - create modifier function
|
104
|
+
def modifier(simulation: Simulation) -> None:
|
105
|
+
reform_instance = reform()
|
106
|
+
reform_instance.apply(simulation.tax_benefit_system)
|
107
|
+
|
108
|
+
return cls(
|
109
|
+
simulation_modifier=modifier,
|
110
|
+
)
|
111
|
+
|
112
|
+
elif isinstance(reform, dict):
|
113
|
+
# Dictionary of parameter changes
|
114
|
+
return cls(
|
115
|
+
parameter_changes=reform,
|
116
|
+
)
|
117
|
+
|
118
|
+
elif isinstance(reform, tuple):
|
119
|
+
# Tuple format (legacy support) - treat as a Reform class
|
120
|
+
# Assuming the tuple contains (reform_class, *args)
|
121
|
+
if (
|
122
|
+
len(reform) > 0
|
123
|
+
and isinstance(reform[0], type)
|
124
|
+
and issubclass(reform[0], Reform)
|
125
|
+
):
|
126
|
+
reform_class = reform[0]
|
127
|
+
reform_args = reform[1:] if len(reform) > 1 else ()
|
128
|
+
|
129
|
+
def modifier(simulation: Simulation) -> None:
|
130
|
+
reform_instance = reform_class(*reform_args)
|
131
|
+
reform_instance.apply(simulation.tax_benefit_system)
|
132
|
+
|
133
|
+
return cls(
|
134
|
+
simulation_modifier=modifier,
|
135
|
+
)
|
136
|
+
else:
|
137
|
+
raise ValueError(f"Invalid tuple format for reform: {reform}")
|
138
|
+
|
139
|
+
else:
|
140
|
+
raise ValueError(
|
141
|
+
f"Unsupported reform type: {type(reform)}. "
|
142
|
+
"Expected Reform class, dict, or tuple."
|
143
|
+
)
|
144
|
+
|
145
|
+
def apply(self, simulation: Simulation) -> None:
|
146
|
+
"""Apply this scenario to a simulation.
|
147
|
+
|
148
|
+
First applies parameter changes, then runs the simulation modifier if present.
|
149
|
+
|
150
|
+
Args:
|
151
|
+
simulation: The simulation to modify
|
152
|
+
"""
|
153
|
+
# Apply parameter changes first
|
154
|
+
if self.parameter_changes:
|
155
|
+
for path, value in self.parameter_changes.items():
|
156
|
+
if isinstance(value, dict):
|
157
|
+
# Handle nested parameter changes
|
158
|
+
for sub_path, sub_value in value.items():
|
159
|
+
full_path = f"{path}.{sub_path}"
|
160
|
+
simulation.tax_benefit_system.parameters.update(
|
161
|
+
full_path,
|
162
|
+
period=None, # Apply to all periods
|
163
|
+
value=sub_value,
|
164
|
+
)
|
165
|
+
else:
|
166
|
+
# Simple parameter change
|
167
|
+
simulation.tax_benefit_system.parameters.update(
|
168
|
+
path, period=None, value=value # Apply to all periods
|
169
|
+
)
|
170
|
+
|
171
|
+
# Then apply simulation modifier
|
172
|
+
if self.simulation_modifier:
|
173
|
+
self.simulation_modifier(simulation)
|
174
|
+
|
175
|
+
def __repr__(self) -> str:
|
176
|
+
"""String representation of the Scenario."""
|
177
|
+
parts = []
|
178
|
+
if self.parameter_changes:
|
179
|
+
parts.append(
|
180
|
+
f"parameter_changes={len(self.parameter_changes)} items"
|
181
|
+
)
|
182
|
+
if self.simulation_modifier:
|
183
|
+
parts.append("simulation_modifier=<function>")
|
184
|
+
return f"Scenario({', '.join(parts)})"
|
@@ -45,11 +45,12 @@ class winter_fuel_allowance(Variable):
|
|
45
45
|
)
|
46
46
|
|
47
47
|
meets_mtb_requirement = (
|
48
|
-
on_mtb
|
48
|
+
on_mtb
|
49
|
+
| (not wfp.eligibility.require_benefits)
|
50
|
+
| meets_income_passport
|
49
51
|
)
|
50
|
-
meets_spa_requirement = (
|
51
|
-
|
52
|
-
| ~wfp.eligibility.state_pension_age_requirement
|
52
|
+
meets_spa_requirement = household.any(is_SP_age) | (
|
53
|
+
not wfp.eligibility.state_pension_age_requirement
|
53
54
|
)
|
54
55
|
meets_higher_age_requirement = household.any(
|
55
56
|
age >= wfp.eligibility.higher_age_requirement
|
@@ -1,22 +1,28 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: policyengine-uk
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.43.1
|
4
4
|
Summary: PolicyEngine tax and benefit system for the UK
|
5
5
|
Project-URL: Homepage, https://github.com/PolicyEngine/policyengine-uk
|
6
6
|
Project-URL: Repository, https://github.com/PolicyEngine/policyengine-uk
|
7
|
+
Project-URL: Issues, https://github.com/PolicyEngine/policyengine-uk/issues
|
8
|
+
Project-URL: Changelog, https://github.com/PolicyEngine/policyengine-uk/blob/master/CHANGELOG.md
|
7
9
|
Author-email: PolicyEngine <nikhil@policyengine.org>
|
8
|
-
Maintainer-email: Nikhil Woodruff <nikhil
|
9
|
-
License: AGPL-3.0
|
10
|
+
Maintainer-email: Nikhil Woodruff <nikhil@policyengine.org>
|
11
|
+
License-Expression: AGPL-3.0
|
10
12
|
License-File: LICENSE
|
11
13
|
Keywords: benefit,microsimulation,social,tax
|
12
14
|
Classifier: Development Status :: 5 - Production/Stable
|
13
15
|
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
|
14
16
|
Classifier: Operating System :: POSIX
|
15
17
|
Classifier: Programming Language :: Python
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
16
22
|
Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
17
23
|
Requires-Python: >=3.10
|
18
|
-
Requires-Dist: microdf-python
|
19
|
-
Requires-Dist: policyengine-core>=3.
|
24
|
+
Requires-Dist: microdf-python>=1.0.2
|
25
|
+
Requires-Dist: policyengine-core>=3.19.3
|
20
26
|
Provides-Extra: dev
|
21
27
|
Requires-Dist: black; extra == 'dev'
|
22
28
|
Requires-Dist: coverage; extra == 'dev'
|
@@ -1,12 +1,11 @@
|
|
1
1
|
policyengine_uk/__init__.py,sha256=ud1uvjBep-lcZKBWUd0eo-PAT_FM92_PqUlDp5OYl4g,355
|
2
2
|
policyengine_uk/entities.py,sha256=9yUbkUWQr3WydNE-gHhUudG97HGyXIZY3dkgQ6Z3t9A,1212
|
3
|
-
policyengine_uk/model_api.py,sha256=
|
3
|
+
policyengine_uk/model_api.py,sha256=KdwJCL2HkXVxDpL6fCsCnQ9Sub6Kqp7Hyxlis3MNIx4,241
|
4
4
|
policyengine_uk/modelled_policies.yaml,sha256=TLhvmkuI9ip-Fjq63n66RzDErCkN8K4BzY6XLxLMtFg,463
|
5
|
-
policyengine_uk/
|
6
|
-
policyengine_uk/system.py,sha256=jfMN-0cDBMsbqIgTenRxCblSY3o69YIeSWGFaBgF76s,9719
|
5
|
+
policyengine_uk/system.py,sha256=OooTAxHpzh4H5k8rWiH_qE4SooBomn-pjZnk4UvVR8A,21813
|
7
6
|
policyengine_uk/data/__init__.py,sha256=J0bZ3WnvPzZ4qfVLYcwOc4lziMUMdbcMqJ3xwjoekbM,101
|
8
|
-
policyengine_uk/data/dataset_schema.py,sha256=
|
9
|
-
policyengine_uk/data/economic_assumptions.py,sha256=
|
7
|
+
policyengine_uk/data/dataset_schema.py,sha256=4SPUqDmzTsmmWFaJIlpDzT7J6WvBDgxRPfUnbjjtFuQ,9854
|
8
|
+
policyengine_uk/data/economic_assumptions.py,sha256=4ZmE6z8Bbf21n0Hm-IpsS04Astg2NJAypv9TdA_udEk,6189
|
10
9
|
policyengine_uk/data/uprating_indices.yaml,sha256=kQtfeGWyqge4dbJhs0iF4kTMqovuegill_Zfs8orJi4,2394
|
11
10
|
policyengine_uk/parameters/gov/README.md,sha256=bHUep1_2pLHD3Or8SwjStOWXDIbW9OuYxOd4ml8IXcM,13
|
12
11
|
policyengine_uk/parameters/gov/benefit_uprating_cpi.yaml,sha256=2zOSdJeUhDZYYsKE2vLkcK-UbKNoOSVwfac0QIAp02g,250
|
@@ -314,7 +313,7 @@ policyengine_uk/parameters/gov/dwp/winter_fuel_payment/eligibility/taxable_incom
|
|
314
313
|
policyengine_uk/parameters/gov/economic_assumptions/create_economic_assumption_indices.py,sha256=Z4dYghSit5gXo4V3wBpnLIc9zgTX4cfEyb_TUlJkTGY,1937
|
315
314
|
policyengine_uk/parameters/gov/economic_assumptions/lag_average_earnings.py,sha256=ksHcyUQkLAJmKizCeSg8j0hzPc7ajgIvbExWLgCra4U,701
|
316
315
|
policyengine_uk/parameters/gov/economic_assumptions/lag_cpi.py,sha256=IdtaMLN1_OSu-RFZsQV8vBlbOvXsPlnNlsOuinRHrxg,642
|
317
|
-
policyengine_uk/parameters/gov/economic_assumptions/yoy_growth.yaml,sha256=
|
316
|
+
policyengine_uk/parameters/gov/economic_assumptions/yoy_growth.yaml,sha256=k2xxY4YvioJ0agEOHwebcEWVwQbgePrnXO1dvogGWCs,17673
|
318
317
|
policyengine_uk/parameters/gov/hmrc/README.md,sha256=nkHVZl6lsjI93sR8uC7wAbul3_61wJrsP08iaW8f5lk,7
|
319
318
|
policyengine_uk/parameters/gov/hmrc/minimum_wage.yaml,sha256=1oMbevU0ESHR51mcAG39POd1DA1FgPUep4hL6ojj-P4,2049
|
320
319
|
policyengine_uk/parameters/gov/hmrc/business_rates/README.md,sha256=9ud50i_gMjGj6VymF-nzFDTzkFRMMJx6ybpLwbWzvpI,17
|
@@ -526,10 +525,14 @@ policyengine_uk/reforms/cps/marriage_tax_reforms.py,sha256=UK7fTMoa4Xh2IvkT3wRDw
|
|
526
525
|
policyengine_uk/reforms/policyengine/__init__.py,sha256=5ubEO0DGRBXhn3QRSoBNT-jff9ORb4dd2J6FYNpSEik,42
|
527
526
|
policyengine_uk/reforms/policyengine/adjust_budgets.py,sha256=p1NbFB7wwfC_jRdeVLbClHm3MOvRO-gKmU7PzY2zJv8,2084
|
528
527
|
policyengine_uk/reforms/policyengine/disable_simulated_benefits.py,sha256=siEs1EpSHCm5-4CJKwGdDm9jArscd6kVM39JUrFTPlE,2524
|
528
|
+
policyengine_uk/scenarios/__init__.py,sha256=_Ci6FeBm6tEiv5LUVsn70ubBftSFlaNZXcc--epBdQM,156
|
529
|
+
policyengine_uk/scenarios/pip_reform.py,sha256=fv6-HCuRxhzt-XEYv9yLJTEliAWu3EGx6duADSBO4n8,687
|
530
|
+
policyengine_uk/scenarios/reindex_benefit_cap.py,sha256=dPUOsTkgYZNRN15e_ax5hg5ObHngk5tizz7FYStkGaE,1070
|
531
|
+
policyengine_uk/scenarios/repeal_two_child_limit.py,sha256=vZndQVFNCe7v7k4v-PgneOCPld-YTnCmlveRbX_1czk,250
|
529
532
|
policyengine_uk/tests/test_parameter_metadata.py,sha256=_2w2dSokAf5Jskye_KIL8eh80N7yIrUszlmqnZtwQws,450
|
530
533
|
policyengine_uk/tests/code_health/test_variables.py,sha256=9Y-KpmzhyRGy9eEqocK9z91NXHX5QIF3mDMNGvegb7Q,1398
|
531
534
|
policyengine_uk/tests/microsimulation/README.md,sha256=1toB1Z06ynlUielTrsAaeo9Vb-c3ZrB3tbbR4E1xUGk,3924
|
532
|
-
policyengine_uk/tests/microsimulation/reforms_config.yaml,sha256=
|
535
|
+
policyengine_uk/tests/microsimulation/reforms_config.yaml,sha256=qIxLo33i7qAAkCc6Pvpa-rhWTxoevrbOlsADjF-w7pk,1086
|
533
536
|
policyengine_uk/tests/microsimulation/test_reform_impacts.py,sha256=xM3M2pclEhA9JIFpnuiPMy1fEBFOKcSzroRPk73FPls,2635
|
534
537
|
policyengine_uk/tests/microsimulation/test_validity.py,sha256=RWhbSKrnrZCNQRVmGYlM8hnpe1_Blo5_xP8vr8u3kV0,694
|
535
538
|
policyengine_uk/tests/microsimulation/update_reform_impacts.py,sha256=2pxp2RNLWxV4CesGKKHmg3qBs79Jq2Jcq3GJIBk4euU,4824
|
@@ -595,7 +598,6 @@ policyengine_uk/tests/policy/baseline/finance/income/minimum_wage.yaml,sha256=qv
|
|
595
598
|
policyengine_uk/tests/policy/baseline/finance/income/minimum_wage_category.yaml,sha256=mGVi7xJRUiuoYjmp_Dcc1dWZ2-7ceIKAhN1r6NLI6tg,787
|
596
599
|
policyengine_uk/tests/policy/baseline/finance/tax/income_tax/savings_starter_rate_income.yaml,sha256=MVgdxK3jU9_i5WptA6SxYXipKg__mHm1tGk01A9MwS0,1195
|
597
600
|
policyengine_uk/tests/policy/baseline/finance/tax/income_tax/scottish_rates.yaml,sha256=6W1oeU7i13VJZhSS2_2du6a4P75YHkTSv3vmZJIs92I,181
|
598
|
-
policyengine_uk/tests/policy/baseline/gov/abolitions/abolition_parameters.yaml,sha256=9oaBaVXSP-3-02UZpr3nLB4b0re50G8jRFOop9SPq_A,4837
|
599
601
|
policyengine_uk/tests/policy/baseline/gov/dcms/bbc/tv_licence_discount.yaml,sha256=INGw-yjudsQMxNDTiWpcuWbns-UPDKGnH3VuF000kHY,805
|
600
602
|
policyengine_uk/tests/policy/baseline/gov/dcms/bbc/tv-licence/tv_licence.yaml,sha256=cYAZlmmoAxWymv7L0lDzPcX6dexNAERQnVQMOB0HVzE,562
|
601
603
|
policyengine_uk/tests/policy/baseline/gov/dfe/care_to_learn/care_to_learn.yaml,sha256=i5RIghjT2T7uWn_xvaeYb2dIJ7JsreSr_f12UPtFqpg,508
|
@@ -689,6 +691,7 @@ policyengine_uk/utils/create_ahc_deflator.py,sha256=zCJ_R_hq8DUfuO7u3puhRl6gkC1h
|
|
689
691
|
policyengine_uk/utils/create_triple_lock.py,sha256=E8qR51cq5jPL6EOXFoPi1qJhrcUBXg3dfWTvdqWN2Bo,948
|
690
692
|
policyengine_uk/utils/dependencies.py,sha256=6mLDZr-lypI6RZMeb0rcWoJy5Ig7QT18kOuAMUgI7vg,8198
|
691
693
|
policyengine_uk/utils/parameters.py,sha256=OQTzTkHMdwbphCo0mV7_n_FJT0rdwIKNFTsk_lsdETE,1301
|
694
|
+
policyengine_uk/utils/scenario.py,sha256=xvWjv7WViH6NxqQF5RUECXtIWYktploOn-0kPYC3rXM,6702
|
692
695
|
policyengine_uk/utils/solve_private_school_attendance_factor.py,sha256=LUZCgHKAQTY5qHlGJutn7pOFUWT0AP16YcJy-YUjQ3Q,1609
|
693
696
|
policyengine_uk/utils/water/README.md,sha256=sdBI-JZ-jcRoSUfwNx5wjv5Ig_nM8OPvvjSsSMs_Wh8,443
|
694
697
|
policyengine_uk/utils/water/forecast_water_bills.py,sha256=B4vtfJuR8XfBP-KHGyhRp2Oo7X7buN-lDH6tBIXqE2U,2788
|
@@ -852,7 +855,7 @@ policyengine_uk/variables/gov/dwp/student_payments.py,sha256=DkHigY4bNofKucCSSZD
|
|
852
855
|
policyengine_uk/variables/gov/dwp/tax_credits.py,sha256=i9_4SmPY-NQMu5uUNzsWTRK3_U5QZVEc52V_gFnLuMc,584
|
853
856
|
policyengine_uk/variables/gov/dwp/tax_credits_applicable_income.py,sha256=dWxPPtQYfdP9JjrmC5DBqOMOMMJtCvahSOkaBXUEoyg,1328
|
854
857
|
policyengine_uk/variables/gov/dwp/tax_credits_reduction.py,sha256=H7Dtfga6Bh49hqPEdyqUYUoj5ZA_anBXk1rP1dY9twM,841
|
855
|
-
policyengine_uk/variables/gov/dwp/winter_fuel_allowance.py,sha256=
|
858
|
+
policyengine_uk/variables/gov/dwp/winter_fuel_allowance.py,sha256=S3Zr7e0YndHx_svXZNua3T9Pm2pqfqqjyojy8O_7uUI,2346
|
856
859
|
policyengine_uk/variables/gov/dwp/winter_fuel_allowance_reported.py,sha256=kXsOG2hGYZ6uZKWtKlDgL_bgz-L8cLgSWA4x9nYw-lA,288
|
857
860
|
policyengine_uk/variables/gov/dwp/working_tax_credit.py,sha256=I0KQwybLrpyKTc7hMGFI3c2itFap-QXHv_S3IgfJLeY,266
|
858
861
|
policyengine_uk/variables/gov/dwp/working_tax_credit_pre_minimum.py,sha256=HJSC1BxmunGJYs3Ja8Avi_iSHlbBR6I6FRlYDhQgXyI,561
|
@@ -1370,10 +1373,7 @@ policyengine_uk/variables/misc/spi_imputed.py,sha256=iPVlBF_TisM0rtKvO-3-PQ2UYCe
|
|
1370
1373
|
policyengine_uk/variables/misc/uc_migrated.py,sha256=zFNcUJaO8gwmbL1iY9GKgUt3G6J9yrCraqBV_5dCvlM,306
|
1371
1374
|
policyengine_uk/variables/misc/categories/lower_middle_or_higher.py,sha256=C54tHYz2DmOyvQYCC1bF8RJwRZinhAq_e3aYC-9F5fM,157
|
1372
1375
|
policyengine_uk/variables/misc/categories/lower_or_higher.py,sha256=81NIbLLabRr9NwjpUZDuV8IV8_mqmp5NM-CZvt55TwE,129
|
1373
|
-
policyengine_uk-2.
|
1374
|
-
policyengine_uk-2.
|
1375
|
-
policyengine_uk-2.
|
1376
|
-
policyengine_uk-2.
|
1377
|
-
policyengine_uk-2.42.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
1378
|
-
policyengine_uk-2.42.0.dist-info/licenses/LICENSE,sha256=dql8h4yceoMhuzlcK0TT_i-NgTFNIZsgE47Q4t3dUYI,34520
|
1379
|
-
policyengine_uk-2.42.0.dist-info/RECORD,,
|
1376
|
+
policyengine_uk-2.43.1.dist-info/METADATA,sha256=9zAYNEJ4r4sPN8eIjQ9GMTzAxSaL5_iDmKPLiFj9Hus,3887
|
1377
|
+
policyengine_uk-2.43.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
1378
|
+
policyengine_uk-2.43.1.dist-info/licenses/LICENSE,sha256=dql8h4yceoMhuzlcK0TT_i-NgTFNIZsgE47Q4t3dUYI,34520
|
1379
|
+
policyengine_uk-2.43.1.dist-info/RECORD,,
|
policyengine_uk/repo.py
DELETED
@@ -1,250 +0,0 @@
|
|
1
|
-
- name: Child benefit abolition test
|
2
|
-
period: 2025
|
3
|
-
input:
|
4
|
-
gov.abolitions.child_benefit: true
|
5
|
-
people:
|
6
|
-
parent:
|
7
|
-
age: 35
|
8
|
-
child:
|
9
|
-
age: 5
|
10
|
-
benunits:
|
11
|
-
benunit:
|
12
|
-
members: [parent, child]
|
13
|
-
would_claim_child_benefit: true
|
14
|
-
output:
|
15
|
-
child_benefit: [0, 0]
|
16
|
-
|
17
|
-
- name: State pension abolition test
|
18
|
-
period: 2025
|
19
|
-
input:
|
20
|
-
gov.abolitions.state_pension: true
|
21
|
-
people:
|
22
|
-
pensioner:
|
23
|
-
age: 67
|
24
|
-
state_pension_age: 67
|
25
|
-
output:
|
26
|
-
state_pension: 0
|
27
|
-
|
28
|
-
- name: Employment income abolition test
|
29
|
-
period: 2025
|
30
|
-
input:
|
31
|
-
gov.abolitions.employment_income: true
|
32
|
-
people:
|
33
|
-
worker:
|
34
|
-
age: 30
|
35
|
-
employment_income: 50000
|
36
|
-
output:
|
37
|
-
employment_income: 0
|
38
|
-
|
39
|
-
- name: Universal credit abolition test
|
40
|
-
period: 2025
|
41
|
-
input:
|
42
|
-
gov.abolitions.universal_credit: true
|
43
|
-
people:
|
44
|
-
claimant:
|
45
|
-
age: 25
|
46
|
-
benunits:
|
47
|
-
benunit:
|
48
|
-
members: [claimant]
|
49
|
-
would_claim_uc: true
|
50
|
-
output:
|
51
|
-
universal_credit: 0
|
52
|
-
|
53
|
-
- name: Income tax abolition test
|
54
|
-
period: 2025
|
55
|
-
input:
|
56
|
-
gov.abolitions.income_tax: true
|
57
|
-
people:
|
58
|
-
taxpayer:
|
59
|
-
age: 30
|
60
|
-
employment_income: 50000
|
61
|
-
output:
|
62
|
-
income_tax: 0
|
63
|
-
|
64
|
-
- name: National insurance abolition test
|
65
|
-
period: 2025
|
66
|
-
input:
|
67
|
-
gov.abolitions.national_insurance: true
|
68
|
-
people:
|
69
|
-
worker:
|
70
|
-
age: 30
|
71
|
-
employment_income: 50000
|
72
|
-
output:
|
73
|
-
national_insurance: 0
|
74
|
-
|
75
|
-
- name: Carers allowance abolition test
|
76
|
-
period: 2025
|
77
|
-
input:
|
78
|
-
gov.abolitions.carers_allowance: true
|
79
|
-
people:
|
80
|
-
carer:
|
81
|
-
age: 30
|
82
|
-
care_hours: 40
|
83
|
-
output:
|
84
|
-
carers_allowance: 0
|
85
|
-
|
86
|
-
- name: Housing benefit abolition test
|
87
|
-
period: 2025
|
88
|
-
input:
|
89
|
-
gov.abolitions.housing_benefit: true
|
90
|
-
people:
|
91
|
-
claimant:
|
92
|
-
age: 25
|
93
|
-
benunits:
|
94
|
-
benunit:
|
95
|
-
members: [claimant]
|
96
|
-
households:
|
97
|
-
household:
|
98
|
-
members: [claimant]
|
99
|
-
rent: 500
|
100
|
-
brma: "CENTRAL_LONDON"
|
101
|
-
tenure_type: "RENT_PRIVATELY"
|
102
|
-
output:
|
103
|
-
housing_benefit: 0
|
104
|
-
|
105
|
-
- name: Pension credit abolition test
|
106
|
-
period: 2025
|
107
|
-
input:
|
108
|
-
gov.abolitions.pension_credit: true
|
109
|
-
people:
|
110
|
-
pensioner:
|
111
|
-
age: 67
|
112
|
-
state_pension_age: 67
|
113
|
-
output:
|
114
|
-
pension_credit: 0
|
115
|
-
|
116
|
-
- name: Working tax credit abolition test
|
117
|
-
period: 2025
|
118
|
-
input:
|
119
|
-
gov.abolitions.working_tax_credit: true
|
120
|
-
people:
|
121
|
-
worker:
|
122
|
-
age: 30
|
123
|
-
employment_income: 15000
|
124
|
-
weekly_hours: 35
|
125
|
-
output:
|
126
|
-
working_tax_credit: 0
|
127
|
-
|
128
|
-
- name: Child tax credit abolition test
|
129
|
-
period: 2025
|
130
|
-
input:
|
131
|
-
gov.abolitions.child_tax_credit: true
|
132
|
-
people:
|
133
|
-
parent:
|
134
|
-
age: 30
|
135
|
-
employment_income: 15000
|
136
|
-
child:
|
137
|
-
age: 5
|
138
|
-
benunits:
|
139
|
-
benunit:
|
140
|
-
members: [parent, child]
|
141
|
-
output:
|
142
|
-
child_tax_credit: 0
|
143
|
-
|
144
|
-
- name: Income support abolition test
|
145
|
-
period: 2025
|
146
|
-
input:
|
147
|
-
gov.abolitions.income_support: true
|
148
|
-
people:
|
149
|
-
claimant:
|
150
|
-
age: 25
|
151
|
-
output:
|
152
|
-
income_support: 0
|
153
|
-
|
154
|
-
- name: JSA income abolition test
|
155
|
-
period: 2025
|
156
|
-
input:
|
157
|
-
gov.abolitions.jsa_income: true
|
158
|
-
people:
|
159
|
-
claimant:
|
160
|
-
age: 25
|
161
|
-
output:
|
162
|
-
jsa_income: 0
|
163
|
-
|
164
|
-
- name: ESA income abolition test
|
165
|
-
period: 2025
|
166
|
-
input:
|
167
|
-
gov.abolitions.esa_income: true
|
168
|
-
people:
|
169
|
-
claimant:
|
170
|
-
age: 25
|
171
|
-
output:
|
172
|
-
esa_income: 0
|
173
|
-
|
174
|
-
- name: Attendance allowance abolition test
|
175
|
-
period: 2025
|
176
|
-
input:
|
177
|
-
gov.abolitions.attendance_allowance: true
|
178
|
-
people:
|
179
|
-
claimant:
|
180
|
-
age: 70
|
181
|
-
aa_category: "LOWER"
|
182
|
-
output:
|
183
|
-
attendance_allowance: 0
|
184
|
-
|
185
|
-
- name: Council tax benefit abolition test
|
186
|
-
period: 2025
|
187
|
-
input:
|
188
|
-
gov.abolitions.council_tax_benefit: true
|
189
|
-
people:
|
190
|
-
claimant:
|
191
|
-
age: 25
|
192
|
-
benunits:
|
193
|
-
benunit:
|
194
|
-
members: [claimant]
|
195
|
-
households:
|
196
|
-
household:
|
197
|
-
members: [claimant]
|
198
|
-
council_tax_band: "A"
|
199
|
-
region: "LONDON"
|
200
|
-
output:
|
201
|
-
council_tax_benefit: 0
|
202
|
-
|
203
|
-
- name: Stamp duty land tax abolition test
|
204
|
-
period: 2025
|
205
|
-
input:
|
206
|
-
gov.abolitions.stamp_duty_land_tax: true
|
207
|
-
people:
|
208
|
-
buyer:
|
209
|
-
age: 30
|
210
|
-
households:
|
211
|
-
household:
|
212
|
-
members: [buyer]
|
213
|
-
main_residential_property_purchased: 300000
|
214
|
-
output:
|
215
|
-
stamp_duty_land_tax: 0
|
216
|
-
|
217
|
-
- name: VAT abolition test
|
218
|
-
period: 2025
|
219
|
-
input:
|
220
|
-
gov.abolitions.vat: true
|
221
|
-
people:
|
222
|
-
consumer:
|
223
|
-
age: 30
|
224
|
-
households:
|
225
|
-
household:
|
226
|
-
members: [consumer]
|
227
|
-
full_rate_vat_consumption: 1000
|
228
|
-
output:
|
229
|
-
vat: 0
|
230
|
-
|
231
|
-
- name: Capital gains tax abolition test
|
232
|
-
period: 2025
|
233
|
-
input:
|
234
|
-
gov.abolitions.capital_gains_tax: true
|
235
|
-
people:
|
236
|
-
investor:
|
237
|
-
age: 30
|
238
|
-
capital_gains: 50000
|
239
|
-
output:
|
240
|
-
capital_gains_tax: 0
|
241
|
-
|
242
|
-
- name: Business rates abolition test
|
243
|
-
period: 2025
|
244
|
-
input:
|
245
|
-
gov.abolitions.business_rates: true
|
246
|
-
people:
|
247
|
-
business_owner:
|
248
|
-
age: 30
|
249
|
-
output:
|
250
|
-
business_rates: 0
|