policyengine-api-simulation-client 0.20251216.73__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.
Files changed (68) hide show
  1. policyengine_api_simulation_client/__init__.py +8 -0
  2. policyengine_api_simulation_client/api/__init__.py +1 -0
  3. policyengine_api_simulation_client/api/default/__init__.py +1 -0
  4. policyengine_api_simulation_client/api/default/alive_ping_alive_get.py +139 -0
  5. policyengine_api_simulation_client/api/default/ping_ping_post.py +174 -0
  6. policyengine_api_simulation_client/api/default/simulate_simulate_economy_comparison_post.py +166 -0
  7. policyengine_api_simulation_client/api/default/started_ping_started_get.py +129 -0
  8. policyengine_api_simulation_client/client.py +268 -0
  9. policyengine_api_simulation_client/errors.py +16 -0
  10. policyengine_api_simulation_client/models/__init__.py +117 -0
  11. policyengine_api_simulation_client/models/age_group_baseline_reform_values.py +91 -0
  12. policyengine_api_simulation_client/models/baseline_reform_values.py +69 -0
  13. policyengine_api_simulation_client/models/budgetary_impact.py +101 -0
  14. policyengine_api_simulation_client/models/cliff_impact.py +75 -0
  15. policyengine_api_simulation_client/models/cliff_impact_in_simulation.py +69 -0
  16. policyengine_api_simulation_client/models/decile_impact.py +77 -0
  17. policyengine_api_simulation_client/models/decile_impact_average.py +46 -0
  18. policyengine_api_simulation_client/models/decile_impact_relative.py +46 -0
  19. policyengine_api_simulation_client/models/economy_comparison.py +366 -0
  20. policyengine_api_simulation_client/models/economy_comparison_detailed_budget_type_0.py +59 -0
  21. policyengine_api_simulation_client/models/gender_baseline_reform_values.py +75 -0
  22. policyengine_api_simulation_client/models/health_status.py +83 -0
  23. policyengine_api_simulation_client/models/hours_response.py +93 -0
  24. policyengine_api_simulation_client/models/http_validation_error.py +79 -0
  25. policyengine_api_simulation_client/models/inequality_impact.py +83 -0
  26. policyengine_api_simulation_client/models/intra_decile_impact.py +77 -0
  27. policyengine_api_simulation_client/models/intra_decile_impact_all.py +46 -0
  28. policyengine_api_simulation_client/models/intra_decile_impact_deciles.py +53 -0
  29. policyengine_api_simulation_client/models/intra_wealth_decile_impact_with_values.py +77 -0
  30. policyengine_api_simulation_client/models/intra_wealth_decile_impact_with_values_all.py +46 -0
  31. policyengine_api_simulation_client/models/intra_wealth_decile_impact_with_values_deciles.py +53 -0
  32. policyengine_api_simulation_client/models/labor_supply_response.py +119 -0
  33. policyengine_api_simulation_client/models/labor_supply_response_decile.py +63 -0
  34. policyengine_api_simulation_client/models/labor_supply_response_decile_additional_property.py +65 -0
  35. policyengine_api_simulation_client/models/labor_supply_response_decile_additional_property_additional_property.py +46 -0
  36. policyengine_api_simulation_client/models/labor_supply_response_relative_lsr.py +46 -0
  37. policyengine_api_simulation_client/models/parameter_change_dict.py +53 -0
  38. policyengine_api_simulation_client/models/parametric_reform.py +80 -0
  39. policyengine_api_simulation_client/models/ping_request.py +61 -0
  40. policyengine_api_simulation_client/models/ping_response.py +61 -0
  41. policyengine_api_simulation_client/models/poverty_gender_breakdown.py +75 -0
  42. policyengine_api_simulation_client/models/poverty_impact.py +75 -0
  43. policyengine_api_simulation_client/models/poverty_racial_breakdown_with_values.py +67 -0
  44. policyengine_api_simulation_client/models/probe_status.py +91 -0
  45. policyengine_api_simulation_client/models/program_specific_impact.py +77 -0
  46. policyengine_api_simulation_client/models/racial_baseline_reform_values.py +91 -0
  47. policyengine_api_simulation_client/models/simulation_options.py +309 -0
  48. policyengine_api_simulation_client/models/simulation_options_country.py +9 -0
  49. policyengine_api_simulation_client/models/simulation_options_data_type_1.py +46 -0
  50. policyengine_api_simulation_client/models/simulation_options_scope.py +9 -0
  51. policyengine_api_simulation_client/models/system_status.py +91 -0
  52. policyengine_api_simulation_client/models/uk_constituency_breakdown_by_constituency.py +85 -0
  53. policyengine_api_simulation_client/models/uk_constituency_breakdown_with_values.py +85 -0
  54. policyengine_api_simulation_client/models/uk_constituency_breakdown_with_values_by_constituency.py +59 -0
  55. policyengine_api_simulation_client/models/uk_constituency_breakdown_with_values_outcomes_by_region.py +67 -0
  56. policyengine_api_simulation_client/models/uk_constituency_breakdown_with_values_outcomes_by_region_additional_property.py +46 -0
  57. policyengine_api_simulation_client/models/uk_local_authority_breakdown_by_local_authority.py +85 -0
  58. policyengine_api_simulation_client/models/uk_local_authority_breakdown_with_values.py +71 -0
  59. policyengine_api_simulation_client/models/uk_local_authority_breakdown_with_values_by_local_authority.py +59 -0
  60. policyengine_api_simulation_client/models/validation_error.py +90 -0
  61. policyengine_api_simulation_client/models/wealth_decile_impact_with_values.py +77 -0
  62. policyengine_api_simulation_client/models/wealth_decile_impact_with_values_average.py +46 -0
  63. policyengine_api_simulation_client/models/wealth_decile_impact_with_values_relative.py +46 -0
  64. policyengine_api_simulation_client/py.typed +1 -0
  65. policyengine_api_simulation_client/types.py +54 -0
  66. policyengine_api_simulation_client-0.20251216.73.dist-info/METADATA +141 -0
  67. policyengine_api_simulation_client-0.20251216.73.dist-info/RECORD +68 -0
  68. policyengine_api_simulation_client-0.20251216.73.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