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,61 @@
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="PingRequest")
10
+
11
+
12
+ @_attrs_define
13
+ class PingRequest:
14
+ """
15
+ Attributes:
16
+ value (int):
17
+ """
18
+
19
+ value: int
20
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
21
+
22
+ def to_dict(self) -> dict[str, Any]:
23
+ value = self.value
24
+
25
+ field_dict: dict[str, Any] = {}
26
+ field_dict.update(self.additional_properties)
27
+ field_dict.update(
28
+ {
29
+ "value": value,
30
+ }
31
+ )
32
+
33
+ return field_dict
34
+
35
+ @classmethod
36
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
37
+ d = dict(src_dict)
38
+ value = d.pop("value")
39
+
40
+ ping_request = cls(
41
+ value=value,
42
+ )
43
+
44
+ ping_request.additional_properties = d
45
+ return ping_request
46
+
47
+ @property
48
+ def additional_keys(self) -> list[str]:
49
+ return list(self.additional_properties.keys())
50
+
51
+ def __getitem__(self, key: str) -> Any:
52
+ return self.additional_properties[key]
53
+
54
+ def __setitem__(self, key: str, value: Any) -> None:
55
+ self.additional_properties[key] = value
56
+
57
+ def __delitem__(self, key: str) -> None:
58
+ del self.additional_properties[key]
59
+
60
+ def __contains__(self, key: str) -> bool:
61
+ return key in self.additional_properties
@@ -0,0 +1,61 @@
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="PingResponse")
10
+
11
+
12
+ @_attrs_define
13
+ class PingResponse:
14
+ """
15
+ Attributes:
16
+ incremented (int):
17
+ """
18
+
19
+ incremented: int
20
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
21
+
22
+ def to_dict(self) -> dict[str, Any]:
23
+ incremented = self.incremented
24
+
25
+ field_dict: dict[str, Any] = {}
26
+ field_dict.update(self.additional_properties)
27
+ field_dict.update(
28
+ {
29
+ "incremented": incremented,
30
+ }
31
+ )
32
+
33
+ return field_dict
34
+
35
+ @classmethod
36
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
37
+ d = dict(src_dict)
38
+ incremented = d.pop("incremented")
39
+
40
+ ping_response = cls(
41
+ incremented=incremented,
42
+ )
43
+
44
+ ping_response.additional_properties = d
45
+ return ping_response
46
+
47
+ @property
48
+ def additional_keys(self) -> list[str]:
49
+ return list(self.additional_properties.keys())
50
+
51
+ def __getitem__(self, key: str) -> Any:
52
+ return self.additional_properties[key]
53
+
54
+ def __setitem__(self, key: str, value: Any) -> None:
55
+ self.additional_properties[key] = value
56
+
57
+ def __delitem__(self, key: str) -> None:
58
+ del self.additional_properties[key]
59
+
60
+ def __contains__(self, key: str) -> bool:
61
+ 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.gender_baseline_reform_values import GenderBaselineReformValues
11
+
12
+
13
+ T = TypeVar("T", bound="PovertyGenderBreakdown")
14
+
15
+
16
+ @_attrs_define
17
+ class PovertyGenderBreakdown:
18
+ """
19
+ Attributes:
20
+ poverty (GenderBaselineReformValues):
21
+ deep_poverty (GenderBaselineReformValues):
22
+ """
23
+
24
+ poverty: GenderBaselineReformValues
25
+ deep_poverty: GenderBaselineReformValues
26
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
27
+
28
+ def to_dict(self) -> dict[str, Any]:
29
+ poverty = self.poverty.to_dict()
30
+
31
+ deep_poverty = self.deep_poverty.to_dict()
32
+
33
+ field_dict: dict[str, Any] = {}
34
+ field_dict.update(self.additional_properties)
35
+ field_dict.update(
36
+ {
37
+ "poverty": poverty,
38
+ "deep_poverty": deep_poverty,
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.gender_baseline_reform_values import GenderBaselineReformValues
47
+
48
+ d = dict(src_dict)
49
+ poverty = GenderBaselineReformValues.from_dict(d.pop("poverty"))
50
+
51
+ deep_poverty = GenderBaselineReformValues.from_dict(d.pop("deep_poverty"))
52
+
53
+ poverty_gender_breakdown = cls(
54
+ poverty=poverty,
55
+ deep_poverty=deep_poverty,
56
+ )
57
+
58
+ poverty_gender_breakdown.additional_properties = d
59
+ return poverty_gender_breakdown
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,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.age_group_baseline_reform_values import AgeGroupBaselineReformValues
11
+
12
+
13
+ T = TypeVar("T", bound="PovertyImpact")
14
+
15
+
16
+ @_attrs_define
17
+ class PovertyImpact:
18
+ """
19
+ Attributes:
20
+ poverty (AgeGroupBaselineReformValues):
21
+ deep_poverty (AgeGroupBaselineReformValues):
22
+ """
23
+
24
+ poverty: AgeGroupBaselineReformValues
25
+ deep_poverty: AgeGroupBaselineReformValues
26
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
27
+
28
+ def to_dict(self) -> dict[str, Any]:
29
+ poverty = self.poverty.to_dict()
30
+
31
+ deep_poverty = self.deep_poverty.to_dict()
32
+
33
+ field_dict: dict[str, Any] = {}
34
+ field_dict.update(self.additional_properties)
35
+ field_dict.update(
36
+ {
37
+ "poverty": poverty,
38
+ "deep_poverty": deep_poverty,
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.age_group_baseline_reform_values import AgeGroupBaselineReformValues
47
+
48
+ d = dict(src_dict)
49
+ poverty = AgeGroupBaselineReformValues.from_dict(d.pop("poverty"))
50
+
51
+ deep_poverty = AgeGroupBaselineReformValues.from_dict(d.pop("deep_poverty"))
52
+
53
+ poverty_impact = cls(
54
+ poverty=poverty,
55
+ deep_poverty=deep_poverty,
56
+ )
57
+
58
+ poverty_impact.additional_properties = d
59
+ return poverty_impact
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,67 @@
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.racial_baseline_reform_values import RacialBaselineReformValues
11
+
12
+
13
+ T = TypeVar("T", bound="PovertyRacialBreakdownWithValues")
14
+
15
+
16
+ @_attrs_define
17
+ class PovertyRacialBreakdownWithValues:
18
+ """
19
+ Attributes:
20
+ poverty (RacialBaselineReformValues):
21
+ """
22
+
23
+ poverty: RacialBaselineReformValues
24
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
25
+
26
+ def to_dict(self) -> dict[str, Any]:
27
+ poverty = self.poverty.to_dict()
28
+
29
+ field_dict: dict[str, Any] = {}
30
+ field_dict.update(self.additional_properties)
31
+ field_dict.update(
32
+ {
33
+ "poverty": poverty,
34
+ }
35
+ )
36
+
37
+ return field_dict
38
+
39
+ @classmethod
40
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
41
+ from ..models.racial_baseline_reform_values import RacialBaselineReformValues
42
+
43
+ d = dict(src_dict)
44
+ poverty = RacialBaselineReformValues.from_dict(d.pop("poverty"))
45
+
46
+ poverty_racial_breakdown_with_values = cls(
47
+ poverty=poverty,
48
+ )
49
+
50
+ poverty_racial_breakdown_with_values.additional_properties = d
51
+ return poverty_racial_breakdown_with_values
52
+
53
+ @property
54
+ def additional_keys(self) -> list[str]:
55
+ return list(self.additional_properties.keys())
56
+
57
+ def __getitem__(self, key: str) -> Any:
58
+ return self.additional_properties[key]
59
+
60
+ def __setitem__(self, key: str, value: Any) -> None:
61
+ self.additional_properties[key] = value
62
+
63
+ def __delitem__(self, key: str) -> None:
64
+ del self.additional_properties[key]
65
+
66
+ def __contains__(self, key: str) -> bool:
67
+ return key in self.additional_properties
@@ -0,0 +1,91 @@
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
+ from ..types import UNSET, Unset
10
+
11
+ T = TypeVar("T", bound="ProbeStatus")
12
+
13
+
14
+ @_attrs_define
15
+ class ProbeStatus:
16
+ """
17
+ Attributes:
18
+ name (str):
19
+ healthy (bool):
20
+ message (None | str | Unset):
21
+ """
22
+
23
+ name: str
24
+ healthy: bool
25
+ message: None | str | Unset = UNSET
26
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
27
+
28
+ def to_dict(self) -> dict[str, Any]:
29
+ name = self.name
30
+
31
+ healthy = self.healthy
32
+
33
+ message: None | str | Unset
34
+ if isinstance(self.message, Unset):
35
+ message = UNSET
36
+ else:
37
+ message = self.message
38
+
39
+ field_dict: dict[str, Any] = {}
40
+ field_dict.update(self.additional_properties)
41
+ field_dict.update(
42
+ {
43
+ "name": name,
44
+ "healthy": healthy,
45
+ }
46
+ )
47
+ if message is not UNSET:
48
+ field_dict["message"] = message
49
+
50
+ return field_dict
51
+
52
+ @classmethod
53
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
54
+ d = dict(src_dict)
55
+ name = d.pop("name")
56
+
57
+ healthy = d.pop("healthy")
58
+
59
+ def _parse_message(data: object) -> None | str | Unset:
60
+ if data is None:
61
+ return data
62
+ if isinstance(data, Unset):
63
+ return data
64
+ return cast(None | str | Unset, data)
65
+
66
+ message = _parse_message(d.pop("message", UNSET))
67
+
68
+ probe_status = cls(
69
+ name=name,
70
+ healthy=healthy,
71
+ message=message,
72
+ )
73
+
74
+ probe_status.additional_properties = d
75
+ return probe_status
76
+
77
+ @property
78
+ def additional_keys(self) -> list[str]:
79
+ return list(self.additional_properties.keys())
80
+
81
+ def __getitem__(self, key: str) -> Any:
82
+ return self.additional_properties[key]
83
+
84
+ def __setitem__(self, key: str, value: Any) -> None:
85
+ self.additional_properties[key] = value
86
+
87
+ def __delitem__(self, key: str) -> None:
88
+ del self.additional_properties[key]
89
+
90
+ def __contains__(self, key: str) -> bool:
91
+ 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 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="ProgramSpecificImpact")
10
+
11
+
12
+ @_attrs_define
13
+ class ProgramSpecificImpact:
14
+ """
15
+ Attributes:
16
+ baseline (float):
17
+ reform (float):
18
+ difference (float):
19
+ """
20
+
21
+ baseline: float
22
+ reform: float
23
+ difference: float
24
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
25
+
26
+ def to_dict(self) -> dict[str, Any]:
27
+ baseline = self.baseline
28
+
29
+ reform = self.reform
30
+
31
+ difference = self.difference
32
+
33
+ field_dict: dict[str, Any] = {}
34
+ field_dict.update(self.additional_properties)
35
+ field_dict.update(
36
+ {
37
+ "baseline": baseline,
38
+ "reform": reform,
39
+ "difference": difference,
40
+ }
41
+ )
42
+
43
+ return field_dict
44
+
45
+ @classmethod
46
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
47
+ d = dict(src_dict)
48
+ baseline = d.pop("baseline")
49
+
50
+ reform = d.pop("reform")
51
+
52
+ difference = d.pop("difference")
53
+
54
+ program_specific_impact = cls(
55
+ baseline=baseline,
56
+ reform=reform,
57
+ difference=difference,
58
+ )
59
+
60
+ program_specific_impact.additional_properties = d
61
+ return program_specific_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,91 @@
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="RacialBaselineReformValues")
14
+
15
+
16
+ @_attrs_define
17
+ class RacialBaselineReformValues:
18
+ """
19
+ Attributes:
20
+ white (BaselineReformValues):
21
+ black (BaselineReformValues):
22
+ hispanic (BaselineReformValues):
23
+ other (BaselineReformValues):
24
+ """
25
+
26
+ white: BaselineReformValues
27
+ black: BaselineReformValues
28
+ hispanic: BaselineReformValues
29
+ other: BaselineReformValues
30
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
31
+
32
+ def to_dict(self) -> dict[str, Any]:
33
+ white = self.white.to_dict()
34
+
35
+ black = self.black.to_dict()
36
+
37
+ hispanic = self.hispanic.to_dict()
38
+
39
+ other = self.other.to_dict()
40
+
41
+ field_dict: dict[str, Any] = {}
42
+ field_dict.update(self.additional_properties)
43
+ field_dict.update(
44
+ {
45
+ "white": white,
46
+ "black": black,
47
+ "hispanic": hispanic,
48
+ "other": other,
49
+ }
50
+ )
51
+
52
+ return field_dict
53
+
54
+ @classmethod
55
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
56
+ from ..models.baseline_reform_values import BaselineReformValues
57
+
58
+ d = dict(src_dict)
59
+ white = BaselineReformValues.from_dict(d.pop("white"))
60
+
61
+ black = BaselineReformValues.from_dict(d.pop("black"))
62
+
63
+ hispanic = BaselineReformValues.from_dict(d.pop("hispanic"))
64
+
65
+ other = BaselineReformValues.from_dict(d.pop("other"))
66
+
67
+ racial_baseline_reform_values = cls(
68
+ white=white,
69
+ black=black,
70
+ hispanic=hispanic,
71
+ other=other,
72
+ )
73
+
74
+ racial_baseline_reform_values.additional_properties = d
75
+ return racial_baseline_reform_values
76
+
77
+ @property
78
+ def additional_keys(self) -> list[str]:
79
+ return list(self.additional_properties.keys())
80
+
81
+ def __getitem__(self, key: str) -> Any:
82
+ return self.additional_properties[key]
83
+
84
+ def __setitem__(self, key: str, value: Any) -> None:
85
+ self.additional_properties[key] = value
86
+
87
+ def __delitem__(self, key: str) -> None:
88
+ del self.additional_properties[key]
89
+
90
+ def __contains__(self, key: str) -> bool:
91
+ return key in self.additional_properties