policyengine-api-simulation-client 0.20251210.56__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_api_simulation_client/__init__.py +8 -0
- policyengine_api_simulation_client/api/__init__.py +1 -0
- policyengine_api_simulation_client/api/default/__init__.py +1 -0
- policyengine_api_simulation_client/api/default/alive_ping_alive_get.py +139 -0
- policyengine_api_simulation_client/api/default/ping_ping_post.py +174 -0
- policyengine_api_simulation_client/api/default/simulate_simulate_economy_comparison_post.py +166 -0
- policyengine_api_simulation_client/api/default/started_ping_started_get.py +129 -0
- policyengine_api_simulation_client/client.py +268 -0
- policyengine_api_simulation_client/errors.py +16 -0
- policyengine_api_simulation_client/models/__init__.py +109 -0
- policyengine_api_simulation_client/models/age_group_baseline_reform_values.py +91 -0
- policyengine_api_simulation_client/models/baseline_reform_values.py +69 -0
- policyengine_api_simulation_client/models/budgetary_impact.py +101 -0
- policyengine_api_simulation_client/models/cliff_impact.py +75 -0
- policyengine_api_simulation_client/models/cliff_impact_in_simulation.py +69 -0
- policyengine_api_simulation_client/models/decile_impact.py +77 -0
- policyengine_api_simulation_client/models/decile_impact_average.py +46 -0
- policyengine_api_simulation_client/models/decile_impact_relative.py +46 -0
- policyengine_api_simulation_client/models/economy_comparison.py +338 -0
- policyengine_api_simulation_client/models/economy_comparison_detailed_budget_type_0.py +59 -0
- policyengine_api_simulation_client/models/gender_baseline_reform_values.py +75 -0
- policyengine_api_simulation_client/models/health_status.py +83 -0
- policyengine_api_simulation_client/models/hours_response.py +93 -0
- policyengine_api_simulation_client/models/http_validation_error.py +79 -0
- policyengine_api_simulation_client/models/inequality_impact.py +83 -0
- policyengine_api_simulation_client/models/intra_decile_impact.py +77 -0
- policyengine_api_simulation_client/models/intra_decile_impact_all.py +46 -0
- policyengine_api_simulation_client/models/intra_decile_impact_deciles.py +53 -0
- policyengine_api_simulation_client/models/intra_wealth_decile_impact_with_values.py +77 -0
- policyengine_api_simulation_client/models/intra_wealth_decile_impact_with_values_all.py +46 -0
- policyengine_api_simulation_client/models/intra_wealth_decile_impact_with_values_deciles.py +53 -0
- policyengine_api_simulation_client/models/labor_supply_response.py +119 -0
- policyengine_api_simulation_client/models/labor_supply_response_decile.py +63 -0
- policyengine_api_simulation_client/models/labor_supply_response_decile_additional_property.py +65 -0
- policyengine_api_simulation_client/models/labor_supply_response_decile_additional_property_additional_property.py +46 -0
- policyengine_api_simulation_client/models/labor_supply_response_relative_lsr.py +46 -0
- policyengine_api_simulation_client/models/parameter_change_dict.py +53 -0
- policyengine_api_simulation_client/models/parametric_reform.py +80 -0
- policyengine_api_simulation_client/models/ping_request.py +61 -0
- policyengine_api_simulation_client/models/ping_response.py +61 -0
- policyengine_api_simulation_client/models/poverty_gender_breakdown.py +75 -0
- policyengine_api_simulation_client/models/poverty_impact.py +75 -0
- policyengine_api_simulation_client/models/poverty_racial_breakdown_with_values.py +67 -0
- policyengine_api_simulation_client/models/probe_status.py +91 -0
- policyengine_api_simulation_client/models/program_specific_impact.py +77 -0
- policyengine_api_simulation_client/models/racial_baseline_reform_values.py +91 -0
- policyengine_api_simulation_client/models/simulation_options.py +309 -0
- policyengine_api_simulation_client/models/simulation_options_country.py +9 -0
- policyengine_api_simulation_client/models/simulation_options_data_type_1.py +46 -0
- policyengine_api_simulation_client/models/simulation_options_scope.py +9 -0
- policyengine_api_simulation_client/models/system_status.py +91 -0
- policyengine_api_simulation_client/models/uk_constituency_breakdown_by_constituency.py +85 -0
- policyengine_api_simulation_client/models/uk_constituency_breakdown_with_values.py +85 -0
- policyengine_api_simulation_client/models/uk_constituency_breakdown_with_values_by_constituency.py +59 -0
- policyengine_api_simulation_client/models/uk_constituency_breakdown_with_values_outcomes_by_region.py +67 -0
- policyengine_api_simulation_client/models/uk_constituency_breakdown_with_values_outcomes_by_region_additional_property.py +46 -0
- policyengine_api_simulation_client/models/validation_error.py +90 -0
- policyengine_api_simulation_client/models/wealth_decile_impact_with_values.py +77 -0
- policyengine_api_simulation_client/models/wealth_decile_impact_with_values_average.py +46 -0
- policyengine_api_simulation_client/models/wealth_decile_impact_with_values_relative.py +46 -0
- policyengine_api_simulation_client/py.typed +1 -0
- policyengine_api_simulation_client/types.py +54 -0
- policyengine_api_simulation_client-0.20251210.56.dist-info/METADATA +141 -0
- policyengine_api_simulation_client-0.20251210.56.dist-info/RECORD +65 -0
- policyengine_api_simulation_client-0.20251210.56.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import TYPE_CHECKING, Any, TypeVar
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from ..models.program_specific_impact import ProgramSpecificImpact
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
T = TypeVar("T", bound="EconomyComparisonDetailedBudgetType0")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@_attrs_define
|
|
17
|
+
class EconomyComparisonDetailedBudgetType0:
|
|
18
|
+
""" """
|
|
19
|
+
|
|
20
|
+
additional_properties: dict[str, ProgramSpecificImpact] = _attrs_field(init=False, factory=dict)
|
|
21
|
+
|
|
22
|
+
def to_dict(self) -> dict[str, Any]:
|
|
23
|
+
field_dict: dict[str, Any] = {}
|
|
24
|
+
for prop_name, prop in self.additional_properties.items():
|
|
25
|
+
field_dict[prop_name] = prop.to_dict()
|
|
26
|
+
|
|
27
|
+
return field_dict
|
|
28
|
+
|
|
29
|
+
@classmethod
|
|
30
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
31
|
+
from ..models.program_specific_impact import ProgramSpecificImpact
|
|
32
|
+
|
|
33
|
+
d = dict(src_dict)
|
|
34
|
+
economy_comparison_detailed_budget_type_0 = cls()
|
|
35
|
+
|
|
36
|
+
additional_properties = {}
|
|
37
|
+
for prop_name, prop_dict in d.items():
|
|
38
|
+
additional_property = ProgramSpecificImpact.from_dict(prop_dict)
|
|
39
|
+
|
|
40
|
+
additional_properties[prop_name] = additional_property
|
|
41
|
+
|
|
42
|
+
economy_comparison_detailed_budget_type_0.additional_properties = additional_properties
|
|
43
|
+
return economy_comparison_detailed_budget_type_0
|
|
44
|
+
|
|
45
|
+
@property
|
|
46
|
+
def additional_keys(self) -> list[str]:
|
|
47
|
+
return list(self.additional_properties.keys())
|
|
48
|
+
|
|
49
|
+
def __getitem__(self, key: str) -> ProgramSpecificImpact:
|
|
50
|
+
return self.additional_properties[key]
|
|
51
|
+
|
|
52
|
+
def __setitem__(self, key: str, value: ProgramSpecificImpact) -> None:
|
|
53
|
+
self.additional_properties[key] = value
|
|
54
|
+
|
|
55
|
+
def __delitem__(self, key: str) -> None:
|
|
56
|
+
del self.additional_properties[key]
|
|
57
|
+
|
|
58
|
+
def __contains__(self, key: str) -> bool:
|
|
59
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import TYPE_CHECKING, Any, TypeVar
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from ..models.baseline_reform_values import BaselineReformValues
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
T = TypeVar("T", bound="GenderBaselineReformValues")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@_attrs_define
|
|
17
|
+
class GenderBaselineReformValues:
|
|
18
|
+
"""
|
|
19
|
+
Attributes:
|
|
20
|
+
male (BaselineReformValues):
|
|
21
|
+
female (BaselineReformValues):
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
male: BaselineReformValues
|
|
25
|
+
female: BaselineReformValues
|
|
26
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
27
|
+
|
|
28
|
+
def to_dict(self) -> dict[str, Any]:
|
|
29
|
+
male = self.male.to_dict()
|
|
30
|
+
|
|
31
|
+
female = self.female.to_dict()
|
|
32
|
+
|
|
33
|
+
field_dict: dict[str, Any] = {}
|
|
34
|
+
field_dict.update(self.additional_properties)
|
|
35
|
+
field_dict.update(
|
|
36
|
+
{
|
|
37
|
+
"male": male,
|
|
38
|
+
"female": female,
|
|
39
|
+
}
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
return field_dict
|
|
43
|
+
|
|
44
|
+
@classmethod
|
|
45
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
46
|
+
from ..models.baseline_reform_values import BaselineReformValues
|
|
47
|
+
|
|
48
|
+
d = dict(src_dict)
|
|
49
|
+
male = BaselineReformValues.from_dict(d.pop("male"))
|
|
50
|
+
|
|
51
|
+
female = BaselineReformValues.from_dict(d.pop("female"))
|
|
52
|
+
|
|
53
|
+
gender_baseline_reform_values = cls(
|
|
54
|
+
male=male,
|
|
55
|
+
female=female,
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
gender_baseline_reform_values.additional_properties = d
|
|
59
|
+
return gender_baseline_reform_values
|
|
60
|
+
|
|
61
|
+
@property
|
|
62
|
+
def additional_keys(self) -> list[str]:
|
|
63
|
+
return list(self.additional_properties.keys())
|
|
64
|
+
|
|
65
|
+
def __getitem__(self, key: str) -> Any:
|
|
66
|
+
return self.additional_properties[key]
|
|
67
|
+
|
|
68
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
69
|
+
self.additional_properties[key] = value
|
|
70
|
+
|
|
71
|
+
def __delitem__(self, key: str) -> None:
|
|
72
|
+
del self.additional_properties[key]
|
|
73
|
+
|
|
74
|
+
def __contains__(self, key: str) -> bool:
|
|
75
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import TYPE_CHECKING, Any, TypeVar
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from ..models.system_status import SystemStatus
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
T = TypeVar("T", bound="HealthStatus")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@_attrs_define
|
|
17
|
+
class HealthStatus:
|
|
18
|
+
"""
|
|
19
|
+
Attributes:
|
|
20
|
+
healthy (bool):
|
|
21
|
+
systems (list[SystemStatus]):
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
healthy: bool
|
|
25
|
+
systems: list[SystemStatus]
|
|
26
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
27
|
+
|
|
28
|
+
def to_dict(self) -> dict[str, Any]:
|
|
29
|
+
healthy = self.healthy
|
|
30
|
+
|
|
31
|
+
systems = []
|
|
32
|
+
for systems_item_data in self.systems:
|
|
33
|
+
systems_item = systems_item_data.to_dict()
|
|
34
|
+
systems.append(systems_item)
|
|
35
|
+
|
|
36
|
+
field_dict: dict[str, Any] = {}
|
|
37
|
+
field_dict.update(self.additional_properties)
|
|
38
|
+
field_dict.update(
|
|
39
|
+
{
|
|
40
|
+
"healthy": healthy,
|
|
41
|
+
"systems": systems,
|
|
42
|
+
}
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
return field_dict
|
|
46
|
+
|
|
47
|
+
@classmethod
|
|
48
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
49
|
+
from ..models.system_status import SystemStatus
|
|
50
|
+
|
|
51
|
+
d = dict(src_dict)
|
|
52
|
+
healthy = d.pop("healthy")
|
|
53
|
+
|
|
54
|
+
systems = []
|
|
55
|
+
_systems = d.pop("systems")
|
|
56
|
+
for systems_item_data in _systems:
|
|
57
|
+
systems_item = SystemStatus.from_dict(systems_item_data)
|
|
58
|
+
|
|
59
|
+
systems.append(systems_item)
|
|
60
|
+
|
|
61
|
+
health_status = cls(
|
|
62
|
+
healthy=healthy,
|
|
63
|
+
systems=systems,
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
health_status.additional_properties = d
|
|
67
|
+
return health_status
|
|
68
|
+
|
|
69
|
+
@property
|
|
70
|
+
def additional_keys(self) -> list[str]:
|
|
71
|
+
return list(self.additional_properties.keys())
|
|
72
|
+
|
|
73
|
+
def __getitem__(self, key: str) -> Any:
|
|
74
|
+
return self.additional_properties[key]
|
|
75
|
+
|
|
76
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
77
|
+
self.additional_properties[key] = value
|
|
78
|
+
|
|
79
|
+
def __delitem__(self, key: str) -> None:
|
|
80
|
+
del self.additional_properties[key]
|
|
81
|
+
|
|
82
|
+
def __contains__(self, key: str) -> bool:
|
|
83
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
T = TypeVar("T", bound="HoursResponse")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@_attrs_define
|
|
13
|
+
class HoursResponse:
|
|
14
|
+
"""
|
|
15
|
+
Attributes:
|
|
16
|
+
baseline (float):
|
|
17
|
+
reform (float):
|
|
18
|
+
change (float):
|
|
19
|
+
income_effect (float):
|
|
20
|
+
substitution_effect (float):
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
baseline: float
|
|
24
|
+
reform: float
|
|
25
|
+
change: float
|
|
26
|
+
income_effect: float
|
|
27
|
+
substitution_effect: float
|
|
28
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
29
|
+
|
|
30
|
+
def to_dict(self) -> dict[str, Any]:
|
|
31
|
+
baseline = self.baseline
|
|
32
|
+
|
|
33
|
+
reform = self.reform
|
|
34
|
+
|
|
35
|
+
change = self.change
|
|
36
|
+
|
|
37
|
+
income_effect = self.income_effect
|
|
38
|
+
|
|
39
|
+
substitution_effect = self.substitution_effect
|
|
40
|
+
|
|
41
|
+
field_dict: dict[str, Any] = {}
|
|
42
|
+
field_dict.update(self.additional_properties)
|
|
43
|
+
field_dict.update(
|
|
44
|
+
{
|
|
45
|
+
"baseline": baseline,
|
|
46
|
+
"reform": reform,
|
|
47
|
+
"change": change,
|
|
48
|
+
"income_effect": income_effect,
|
|
49
|
+
"substitution_effect": substitution_effect,
|
|
50
|
+
}
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
return field_dict
|
|
54
|
+
|
|
55
|
+
@classmethod
|
|
56
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
57
|
+
d = dict(src_dict)
|
|
58
|
+
baseline = d.pop("baseline")
|
|
59
|
+
|
|
60
|
+
reform = d.pop("reform")
|
|
61
|
+
|
|
62
|
+
change = d.pop("change")
|
|
63
|
+
|
|
64
|
+
income_effect = d.pop("income_effect")
|
|
65
|
+
|
|
66
|
+
substitution_effect = d.pop("substitution_effect")
|
|
67
|
+
|
|
68
|
+
hours_response = cls(
|
|
69
|
+
baseline=baseline,
|
|
70
|
+
reform=reform,
|
|
71
|
+
change=change,
|
|
72
|
+
income_effect=income_effect,
|
|
73
|
+
substitution_effect=substitution_effect,
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
hours_response.additional_properties = d
|
|
77
|
+
return hours_response
|
|
78
|
+
|
|
79
|
+
@property
|
|
80
|
+
def additional_keys(self) -> list[str]:
|
|
81
|
+
return list(self.additional_properties.keys())
|
|
82
|
+
|
|
83
|
+
def __getitem__(self, key: str) -> Any:
|
|
84
|
+
return self.additional_properties[key]
|
|
85
|
+
|
|
86
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
87
|
+
self.additional_properties[key] = value
|
|
88
|
+
|
|
89
|
+
def __delitem__(self, key: str) -> None:
|
|
90
|
+
del self.additional_properties[key]
|
|
91
|
+
|
|
92
|
+
def __contains__(self, key: str) -> bool:
|
|
93
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import TYPE_CHECKING, Any, TypeVar
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from ..models.validation_error import ValidationError
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
T = TypeVar("T", bound="HTTPValidationError")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@_attrs_define
|
|
19
|
+
class HTTPValidationError:
|
|
20
|
+
"""
|
|
21
|
+
Attributes:
|
|
22
|
+
detail (list[ValidationError] | Unset):
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
detail: list[ValidationError] | Unset = UNSET
|
|
26
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
27
|
+
|
|
28
|
+
def to_dict(self) -> dict[str, Any]:
|
|
29
|
+
detail: list[dict[str, Any]] | Unset = UNSET
|
|
30
|
+
if not isinstance(self.detail, Unset):
|
|
31
|
+
detail = []
|
|
32
|
+
for detail_item_data in self.detail:
|
|
33
|
+
detail_item = detail_item_data.to_dict()
|
|
34
|
+
detail.append(detail_item)
|
|
35
|
+
|
|
36
|
+
field_dict: dict[str, Any] = {}
|
|
37
|
+
field_dict.update(self.additional_properties)
|
|
38
|
+
field_dict.update({})
|
|
39
|
+
if detail is not UNSET:
|
|
40
|
+
field_dict["detail"] = detail
|
|
41
|
+
|
|
42
|
+
return field_dict
|
|
43
|
+
|
|
44
|
+
@classmethod
|
|
45
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
46
|
+
from ..models.validation_error import ValidationError
|
|
47
|
+
|
|
48
|
+
d = dict(src_dict)
|
|
49
|
+
_detail = d.pop("detail", UNSET)
|
|
50
|
+
detail: list[ValidationError] | Unset = UNSET
|
|
51
|
+
if _detail is not UNSET:
|
|
52
|
+
detail = []
|
|
53
|
+
for detail_item_data in _detail:
|
|
54
|
+
detail_item = ValidationError.from_dict(detail_item_data)
|
|
55
|
+
|
|
56
|
+
detail.append(detail_item)
|
|
57
|
+
|
|
58
|
+
http_validation_error = cls(
|
|
59
|
+
detail=detail,
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
http_validation_error.additional_properties = d
|
|
63
|
+
return http_validation_error
|
|
64
|
+
|
|
65
|
+
@property
|
|
66
|
+
def additional_keys(self) -> list[str]:
|
|
67
|
+
return list(self.additional_properties.keys())
|
|
68
|
+
|
|
69
|
+
def __getitem__(self, key: str) -> Any:
|
|
70
|
+
return self.additional_properties[key]
|
|
71
|
+
|
|
72
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
73
|
+
self.additional_properties[key] = value
|
|
74
|
+
|
|
75
|
+
def __delitem__(self, key: str) -> None:
|
|
76
|
+
del self.additional_properties[key]
|
|
77
|
+
|
|
78
|
+
def __contains__(self, key: str) -> bool:
|
|
79
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import TYPE_CHECKING, Any, TypeVar
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from ..models.baseline_reform_values import BaselineReformValues
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
T = TypeVar("T", bound="InequalityImpact")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@_attrs_define
|
|
17
|
+
class InequalityImpact:
|
|
18
|
+
"""
|
|
19
|
+
Attributes:
|
|
20
|
+
gini (BaselineReformValues):
|
|
21
|
+
top_10_pct_share (BaselineReformValues):
|
|
22
|
+
top_1_pct_share (BaselineReformValues):
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
gini: BaselineReformValues
|
|
26
|
+
top_10_pct_share: BaselineReformValues
|
|
27
|
+
top_1_pct_share: BaselineReformValues
|
|
28
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
29
|
+
|
|
30
|
+
def to_dict(self) -> dict[str, Any]:
|
|
31
|
+
gini = self.gini.to_dict()
|
|
32
|
+
|
|
33
|
+
top_10_pct_share = self.top_10_pct_share.to_dict()
|
|
34
|
+
|
|
35
|
+
top_1_pct_share = self.top_1_pct_share.to_dict()
|
|
36
|
+
|
|
37
|
+
field_dict: dict[str, Any] = {}
|
|
38
|
+
field_dict.update(self.additional_properties)
|
|
39
|
+
field_dict.update(
|
|
40
|
+
{
|
|
41
|
+
"gini": gini,
|
|
42
|
+
"top_10_pct_share": top_10_pct_share,
|
|
43
|
+
"top_1_pct_share": top_1_pct_share,
|
|
44
|
+
}
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
return field_dict
|
|
48
|
+
|
|
49
|
+
@classmethod
|
|
50
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
51
|
+
from ..models.baseline_reform_values import BaselineReformValues
|
|
52
|
+
|
|
53
|
+
d = dict(src_dict)
|
|
54
|
+
gini = BaselineReformValues.from_dict(d.pop("gini"))
|
|
55
|
+
|
|
56
|
+
top_10_pct_share = BaselineReformValues.from_dict(d.pop("top_10_pct_share"))
|
|
57
|
+
|
|
58
|
+
top_1_pct_share = BaselineReformValues.from_dict(d.pop("top_1_pct_share"))
|
|
59
|
+
|
|
60
|
+
inequality_impact = cls(
|
|
61
|
+
gini=gini,
|
|
62
|
+
top_10_pct_share=top_10_pct_share,
|
|
63
|
+
top_1_pct_share=top_1_pct_share,
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
inequality_impact.additional_properties = d
|
|
67
|
+
return inequality_impact
|
|
68
|
+
|
|
69
|
+
@property
|
|
70
|
+
def additional_keys(self) -> list[str]:
|
|
71
|
+
return list(self.additional_properties.keys())
|
|
72
|
+
|
|
73
|
+
def __getitem__(self, key: str) -> Any:
|
|
74
|
+
return self.additional_properties[key]
|
|
75
|
+
|
|
76
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
77
|
+
self.additional_properties[key] = value
|
|
78
|
+
|
|
79
|
+
def __delitem__(self, key: str) -> None:
|
|
80
|
+
del self.additional_properties[key]
|
|
81
|
+
|
|
82
|
+
def __contains__(self, key: str) -> bool:
|
|
83
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import TYPE_CHECKING, Any, TypeVar
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from ..models.intra_decile_impact_all import IntraDecileImpactAll
|
|
11
|
+
from ..models.intra_decile_impact_deciles import IntraDecileImpactDeciles
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
T = TypeVar("T", bound="IntraDecileImpact")
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@_attrs_define
|
|
18
|
+
class IntraDecileImpact:
|
|
19
|
+
"""
|
|
20
|
+
Attributes:
|
|
21
|
+
deciles (IntraDecileImpactDeciles):
|
|
22
|
+
all_ (IntraDecileImpactAll):
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
deciles: IntraDecileImpactDeciles
|
|
26
|
+
all_: IntraDecileImpactAll
|
|
27
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
28
|
+
|
|
29
|
+
def to_dict(self) -> dict[str, Any]:
|
|
30
|
+
deciles = self.deciles.to_dict()
|
|
31
|
+
|
|
32
|
+
all_ = self.all_.to_dict()
|
|
33
|
+
|
|
34
|
+
field_dict: dict[str, Any] = {}
|
|
35
|
+
field_dict.update(self.additional_properties)
|
|
36
|
+
field_dict.update(
|
|
37
|
+
{
|
|
38
|
+
"deciles": deciles,
|
|
39
|
+
"all": all_,
|
|
40
|
+
}
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
return field_dict
|
|
44
|
+
|
|
45
|
+
@classmethod
|
|
46
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
47
|
+
from ..models.intra_decile_impact_all import IntraDecileImpactAll
|
|
48
|
+
from ..models.intra_decile_impact_deciles import IntraDecileImpactDeciles
|
|
49
|
+
|
|
50
|
+
d = dict(src_dict)
|
|
51
|
+
deciles = IntraDecileImpactDeciles.from_dict(d.pop("deciles"))
|
|
52
|
+
|
|
53
|
+
all_ = IntraDecileImpactAll.from_dict(d.pop("all"))
|
|
54
|
+
|
|
55
|
+
intra_decile_impact = cls(
|
|
56
|
+
deciles=deciles,
|
|
57
|
+
all_=all_,
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
intra_decile_impact.additional_properties = d
|
|
61
|
+
return intra_decile_impact
|
|
62
|
+
|
|
63
|
+
@property
|
|
64
|
+
def additional_keys(self) -> list[str]:
|
|
65
|
+
return list(self.additional_properties.keys())
|
|
66
|
+
|
|
67
|
+
def __getitem__(self, key: str) -> Any:
|
|
68
|
+
return self.additional_properties[key]
|
|
69
|
+
|
|
70
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
71
|
+
self.additional_properties[key] = value
|
|
72
|
+
|
|
73
|
+
def __delitem__(self, key: str) -> None:
|
|
74
|
+
del self.additional_properties[key]
|
|
75
|
+
|
|
76
|
+
def __contains__(self, key: str) -> bool:
|
|
77
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
T = TypeVar("T", bound="IntraDecileImpactAll")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@_attrs_define
|
|
13
|
+
class IntraDecileImpactAll:
|
|
14
|
+
""" """
|
|
15
|
+
|
|
16
|
+
additional_properties: dict[str, float] = _attrs_field(init=False, factory=dict)
|
|
17
|
+
|
|
18
|
+
def to_dict(self) -> dict[str, Any]:
|
|
19
|
+
field_dict: dict[str, Any] = {}
|
|
20
|
+
field_dict.update(self.additional_properties)
|
|
21
|
+
|
|
22
|
+
return field_dict
|
|
23
|
+
|
|
24
|
+
@classmethod
|
|
25
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
26
|
+
d = dict(src_dict)
|
|
27
|
+
intra_decile_impact_all = cls()
|
|
28
|
+
|
|
29
|
+
intra_decile_impact_all.additional_properties = d
|
|
30
|
+
return intra_decile_impact_all
|
|
31
|
+
|
|
32
|
+
@property
|
|
33
|
+
def additional_keys(self) -> list[str]:
|
|
34
|
+
return list(self.additional_properties.keys())
|
|
35
|
+
|
|
36
|
+
def __getitem__(self, key: str) -> float:
|
|
37
|
+
return self.additional_properties[key]
|
|
38
|
+
|
|
39
|
+
def __setitem__(self, key: str, value: float) -> None:
|
|
40
|
+
self.additional_properties[key] = value
|
|
41
|
+
|
|
42
|
+
def __delitem__(self, key: str) -> None:
|
|
43
|
+
del self.additional_properties[key]
|
|
44
|
+
|
|
45
|
+
def __contains__(self, key: str) -> bool:
|
|
46
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, cast
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
T = TypeVar("T", bound="IntraDecileImpactDeciles")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@_attrs_define
|
|
13
|
+
class IntraDecileImpactDeciles:
|
|
14
|
+
""" """
|
|
15
|
+
|
|
16
|
+
additional_properties: dict[str, list[float]] = _attrs_field(init=False, factory=dict)
|
|
17
|
+
|
|
18
|
+
def to_dict(self) -> dict[str, Any]:
|
|
19
|
+
field_dict: dict[str, Any] = {}
|
|
20
|
+
for prop_name, prop in self.additional_properties.items():
|
|
21
|
+
field_dict[prop_name] = prop
|
|
22
|
+
|
|
23
|
+
return field_dict
|
|
24
|
+
|
|
25
|
+
@classmethod
|
|
26
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
27
|
+
d = dict(src_dict)
|
|
28
|
+
intra_decile_impact_deciles = cls()
|
|
29
|
+
|
|
30
|
+
additional_properties = {}
|
|
31
|
+
for prop_name, prop_dict in d.items():
|
|
32
|
+
additional_property = cast(list[float], prop_dict)
|
|
33
|
+
|
|
34
|
+
additional_properties[prop_name] = additional_property
|
|
35
|
+
|
|
36
|
+
intra_decile_impact_deciles.additional_properties = additional_properties
|
|
37
|
+
return intra_decile_impact_deciles
|
|
38
|
+
|
|
39
|
+
@property
|
|
40
|
+
def additional_keys(self) -> list[str]:
|
|
41
|
+
return list(self.additional_properties.keys())
|
|
42
|
+
|
|
43
|
+
def __getitem__(self, key: str) -> list[float]:
|
|
44
|
+
return self.additional_properties[key]
|
|
45
|
+
|
|
46
|
+
def __setitem__(self, key: str, value: list[float]) -> None:
|
|
47
|
+
self.additional_properties[key] = value
|
|
48
|
+
|
|
49
|
+
def __delitem__(self, key: str) -> None:
|
|
50
|
+
del self.additional_properties[key]
|
|
51
|
+
|
|
52
|
+
def __contains__(self, key: str) -> bool:
|
|
53
|
+
return key in self.additional_properties
|