policyengine 3.1.6__py3-none-any.whl → 3.1.8__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/__pycache__/__init__.cpython-313.pyc +0 -0
- policyengine/core/parameter.py +4 -0
- policyengine/core/parameter_value.py +4 -2
- policyengine/tax_benefit_models/uk/datasets.py +27 -4
- {policyengine-3.1.6.dist-info → policyengine-3.1.8.dist-info}/METADATA +1 -1
- {policyengine-3.1.6.dist-info → policyengine-3.1.8.dist-info}/RECORD +9 -9
- {policyengine-3.1.6.dist-info → policyengine-3.1.8.dist-info}/WHEEL +0 -0
- {policyengine-3.1.6.dist-info → policyengine-3.1.8.dist-info}/licenses/LICENSE +0 -0
- {policyengine-3.1.6.dist-info → policyengine-3.1.8.dist-info}/top_level.txt +0 -0
|
Binary file
|
policyengine/core/parameter.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING
|
|
1
2
|
from uuid import uuid4
|
|
2
3
|
|
|
3
4
|
from pydantic import BaseModel, Field
|
|
@@ -5,6 +6,9 @@ from pydantic import BaseModel, Field
|
|
|
5
6
|
from .parameter_value import ParameterValue
|
|
6
7
|
from .tax_benefit_model_version import TaxBenefitModelVersion
|
|
7
8
|
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from .parameter_value import ParameterValue
|
|
11
|
+
|
|
8
12
|
|
|
9
13
|
class Parameter(BaseModel):
|
|
10
14
|
id: str = Field(default_factory=lambda: str(uuid4()))
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
from datetime import datetime
|
|
2
|
+
from typing import TYPE_CHECKING
|
|
2
3
|
from uuid import uuid4
|
|
3
4
|
|
|
4
5
|
from pydantic import BaseModel, Field
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from .parameter import Parameter
|
|
7
9
|
|
|
8
10
|
|
|
9
11
|
class ParameterValue(BaseModel):
|
|
10
12
|
id: str = Field(default_factory=lambda: str(uuid4()))
|
|
11
|
-
parameter: Parameter | None = None
|
|
13
|
+
parameter: "Parameter | None" = None
|
|
12
14
|
value: float | int | str | bool | list | None = None
|
|
13
15
|
start_date: datetime
|
|
14
16
|
end_date: datetime | None = None
|
|
@@ -40,14 +40,37 @@ class PolicyEngineUKDataset(Dataset):
|
|
|
40
40
|
self.load()
|
|
41
41
|
|
|
42
42
|
def save(self) -> None:
|
|
43
|
-
"""Save dataset to HDF5 file.
|
|
43
|
+
"""Save dataset to HDF5 file.
|
|
44
|
+
|
|
45
|
+
Converts object columns to categorical dtype to avoid slow pickle serialization.
|
|
46
|
+
"""
|
|
44
47
|
filepath = Path(self.filepath)
|
|
45
48
|
if not filepath.parent.exists():
|
|
46
49
|
filepath.parent.mkdir(parents=True, exist_ok=True)
|
|
50
|
+
|
|
51
|
+
# Convert DataFrames and optimize object columns to categorical
|
|
52
|
+
person_df = pd.DataFrame(self.data.person)
|
|
53
|
+
benunit_df = pd.DataFrame(self.data.benunit)
|
|
54
|
+
household_df = pd.DataFrame(self.data.household)
|
|
55
|
+
|
|
56
|
+
# Convert object columns to categorical to avoid pickle serialization
|
|
57
|
+
for col in person_df.columns:
|
|
58
|
+
if person_df[col].dtype == "object":
|
|
59
|
+
person_df[col] = person_df[col].astype("category")
|
|
60
|
+
|
|
61
|
+
for col in benunit_df.columns:
|
|
62
|
+
if benunit_df[col].dtype == "object":
|
|
63
|
+
benunit_df[col] = benunit_df[col].astype("category")
|
|
64
|
+
|
|
65
|
+
for col in household_df.columns:
|
|
66
|
+
if household_df[col].dtype == "object":
|
|
67
|
+
household_df[col] = household_df[col].astype("category")
|
|
68
|
+
|
|
47
69
|
with pd.HDFStore(filepath, mode="w") as store:
|
|
48
|
-
|
|
49
|
-
store
|
|
50
|
-
store
|
|
70
|
+
# Use format='table' to support categorical dtypes
|
|
71
|
+
store.put("person", person_df, format="table")
|
|
72
|
+
store.put("benunit", benunit_df, format="table")
|
|
73
|
+
store.put("household", household_df, format="table")
|
|
51
74
|
|
|
52
75
|
def load(self) -> None:
|
|
53
76
|
"""Load dataset from HDF5 file into this instance."""
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
policyengine/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
policyengine/__pycache__/__init__.cpython-313.pyc,sha256=
|
|
2
|
+
policyengine/__pycache__/__init__.cpython-313.pyc,sha256=LQBTMmPPnJo-w-7_mvuE542bVf07bu1ONsDcLBRHLH8,175
|
|
3
3
|
policyengine/core/__init__.py,sha256=KBVhkqzkvjWLDDwk96vquQKL63ZFuLen5AzBOBnO9pg,912
|
|
4
4
|
policyengine/core/dataset.py,sha256=iJr9-J6w11uMRYy3EEJO9Gveku1m71AA1yzeo-0SiCs,16094
|
|
5
5
|
policyengine/core/dataset_version.py,sha256=6KeFCRGQto_Yyl4QY4Vo2JFythjaXrNAOHQiwRGESyM,378
|
|
6
6
|
policyengine/core/dynamic.py,sha256=ng9BjDzxdwjJ0e7zoqXFmq33E1SRbaaPYfW7pjRSSzI,1641
|
|
7
7
|
policyengine/core/output.py,sha256=cCW4vbzkLdQaT_nJTyDJBl7Hubm7nZeRuR7aVG1dKvg,643
|
|
8
|
-
policyengine/core/parameter.py,sha256=
|
|
9
|
-
policyengine/core/parameter_value.py,sha256=
|
|
8
|
+
policyengine/core/parameter.py,sha256=8RKKuGCDW1OoHPoXI9vF3JY6COc1qhUtMolXTUxPoEs,626
|
|
9
|
+
policyengine/core/parameter_value.py,sha256=ZRBZWFYtaY9TqdgjrCymzOZNmuKOBZsrWBET24DIJ_Q,434
|
|
10
10
|
policyengine/core/policy.py,sha256=ExMrUDMvNk_uuOL0cSm0UCzDyGka0t_yk6x4U0Kp6Ww,1635
|
|
11
11
|
policyengine/core/simulation.py,sha256=yvvved75XMcGP3Bj9E2tmKRxvI-DQVZv7k4uTETwBm0,1134
|
|
12
12
|
policyengine/core/tax_benefit_model.py,sha256=2Yc1RlQrUG7djDMZbJOQH4Ns86_lOnLeISCGR4-9zMo,176
|
|
@@ -20,7 +20,7 @@ policyengine/tax_benefit_models/uk.py,sha256=HzAG_dORmsj1NJ9pd9WrqwgZPe9DUDrZ1wV
|
|
|
20
20
|
policyengine/tax_benefit_models/us.py,sha256=G51dAmHo8NJLb2mnbne6iO5eNaatCGUd_2unvawwF84,946
|
|
21
21
|
policyengine/tax_benefit_models/uk/__init__.py,sha256=AiA74iED5FEryvUCMfVZi6pYDYuTfQcj9B01h8J5xFA,1105
|
|
22
22
|
policyengine/tax_benefit_models/uk/analysis.py,sha256=O4eYJYF7tsgiuLuiWMU0OXq7ss6U8-vzlg6nC2U8sgU,3175
|
|
23
|
-
policyengine/tax_benefit_models/uk/datasets.py,sha256
|
|
23
|
+
policyengine/tax_benefit_models/uk/datasets.py,sha256=_puLrvNo700HFv17TLGXufXRFcrLS9-pBVjYwp1VFac,8989
|
|
24
24
|
policyengine/tax_benefit_models/uk/model.py,sha256=djCLLBeik9ZGFqe5WXUNVcu1JXjh0U8MXakvncasUj0,9754
|
|
25
25
|
policyengine/tax_benefit_models/uk/outputs.py,sha256=2mYLwQW4QNvrOHtHfm_ACqE9gbmuLxvcCyldRU46s0o,3543
|
|
26
26
|
policyengine/tax_benefit_models/us/__init__.py,sha256=zP-UUQqOc9g0ymyHkweJdi4RVXQDKSR6SUxavUKvV0s,1101
|
|
@@ -32,8 +32,8 @@ policyengine/utils/__init__.py,sha256=1X-VYAWLyB9A0YRHwsGWrqQHns1WfeZ7ISC6DMU5my
|
|
|
32
32
|
policyengine/utils/dates.py,sha256=HnAqyl8S8EOYp8ibsnMTmECYoDWCSqwL-7A2_qKgxSc,1510
|
|
33
33
|
policyengine/utils/parametric_reforms.py,sha256=4P3U39-4pYTU4BN6JjgmVLUkCkBhRfZJ6UIWTlsjyQE,1155
|
|
34
34
|
policyengine/utils/plotting.py,sha256=ZAzTWz38vIaW0c3Nt4Un1kfrNoXLyHCDd1pEJIlsRg4,5335
|
|
35
|
-
policyengine-3.1.
|
|
36
|
-
policyengine-3.1.
|
|
37
|
-
policyengine-3.1.
|
|
38
|
-
policyengine-3.1.
|
|
39
|
-
policyengine-3.1.
|
|
35
|
+
policyengine-3.1.8.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
|
|
36
|
+
policyengine-3.1.8.dist-info/METADATA,sha256=h0r-m8cflbRqVtwajLnbgxmrKmowdeWUpXHVwLRLIGw,45889
|
|
37
|
+
policyengine-3.1.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
38
|
+
policyengine-3.1.8.dist-info/top_level.txt,sha256=_23UPobfkneHQkpJ0e0OmDJfhCUfoXj_F2sTckCGOH4,13
|
|
39
|
+
policyengine-3.1.8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|