statuspro-openapi-client 0.1.0__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 (74) hide show
  1. statuspro_openapi_client-0.1.0.dist-info/METADATA +337 -0
  2. statuspro_openapi_client-0.1.0.dist-info/RECORD +74 -0
  3. statuspro_openapi_client-0.1.0.dist-info/WHEEL +4 -0
  4. statuspro_openapi_client-0.1.0.dist-info/entry_points.txt +3 -0
  5. statuspro_openapi_client-0.1.0.dist-info/licenses/LICENSE +21 -0
  6. statuspro_public_api_client/__init__.py +36 -0
  7. statuspro_public_api_client/_logging.py +33 -0
  8. statuspro_public_api_client/api/__init__.py +1 -0
  9. statuspro_public_api_client/api/orders/__init__.py +1 -0
  10. statuspro_public_api_client/api/orders/add_order_comment.py +215 -0
  11. statuspro_public_api_client/api/orders/bulk_update_order_status.py +194 -0
  12. statuspro_public_api_client/api/orders/get_order.py +188 -0
  13. statuspro_public_api_client/api/orders/get_viable_statuses.py +193 -0
  14. statuspro_public_api_client/api/orders/list_orders.py +366 -0
  15. statuspro_public_api_client/api/orders/lookup_order.py +208 -0
  16. statuspro_public_api_client/api/orders/set_order_due_date.py +215 -0
  17. statuspro_public_api_client/api/orders/update_order_status.py +215 -0
  18. statuspro_public_api_client/api/statuses/__init__.py +1 -0
  19. statuspro_public_api_client/api/statuses/get_statuses.py +161 -0
  20. statuspro_public_api_client/api_wrapper/__init__.py +15 -0
  21. statuspro_public_api_client/api_wrapper/_namespace.py +40 -0
  22. statuspro_public_api_client/api_wrapper/_registry.py +43 -0
  23. statuspro_public_api_client/api_wrapper/_resource.py +116 -0
  24. statuspro_public_api_client/client.py +267 -0
  25. statuspro_public_api_client/client_types.py +54 -0
  26. statuspro_public_api_client/domain/__init__.py +33 -0
  27. statuspro_public_api_client/domain/base.py +117 -0
  28. statuspro_public_api_client/domain/converters.py +71 -0
  29. statuspro_public_api_client/domain/order.py +87 -0
  30. statuspro_public_api_client/domain/status.py +30 -0
  31. statuspro_public_api_client/errors.py +16 -0
  32. statuspro_public_api_client/helpers/__init__.py +21 -0
  33. statuspro_public_api_client/helpers/base.py +26 -0
  34. statuspro_public_api_client/helpers/orders.py +78 -0
  35. statuspro_public_api_client/helpers/statuses.py +37 -0
  36. statuspro_public_api_client/log_setup.py +99 -0
  37. statuspro_public_api_client/models/__init__.py +53 -0
  38. statuspro_public_api_client/models/add_order_comment_request.py +68 -0
  39. statuspro_public_api_client/models/bulk_status_update_request.py +124 -0
  40. statuspro_public_api_client/models/bulk_status_update_response.py +72 -0
  41. statuspro_public_api_client/models/customer.py +74 -0
  42. statuspro_public_api_client/models/error_response.py +58 -0
  43. statuspro_public_api_client/models/history_item.py +171 -0
  44. statuspro_public_api_client/models/list_orders_financial_status_item.py +15 -0
  45. statuspro_public_api_client/models/list_orders_fulfillment_status_item.py +11 -0
  46. statuspro_public_api_client/models/locale_translation.py +66 -0
  47. statuspro_public_api_client/models/mail_log.py +82 -0
  48. statuspro_public_api_client/models/message_response.py +58 -0
  49. statuspro_public_api_client/models/order_list_item.py +180 -0
  50. statuspro_public_api_client/models/order_list_meta.py +120 -0
  51. statuspro_public_api_client/models/order_list_response.py +81 -0
  52. statuspro_public_api_client/models/order_response.py +220 -0
  53. statuspro_public_api_client/models/progress_timeline_item.py +93 -0
  54. statuspro_public_api_client/models/set_due_date_request.py +95 -0
  55. statuspro_public_api_client/models/status.py +190 -0
  56. statuspro_public_api_client/models/status_definition.py +82 -0
  57. statuspro_public_api_client/models/status_translations.py +62 -0
  58. statuspro_public_api_client/models/update_order_status_request.py +92 -0
  59. statuspro_public_api_client/models/validation_error_response.py +81 -0
  60. statuspro_public_api_client/models/validation_error_response_errors.py +54 -0
  61. statuspro_public_api_client/models/viable_status.py +82 -0
  62. statuspro_public_api_client/models_pydantic/__init__.py +122 -0
  63. statuspro_public_api_client/models_pydantic/_auto_registry.py +115 -0
  64. statuspro_public_api_client/models_pydantic/_base.py +349 -0
  65. statuspro_public_api_client/models_pydantic/_generated/__init__.py +53 -0
  66. statuspro_public_api_client/models_pydantic/_generated/errors.py +24 -0
  67. statuspro_public_api_client/models_pydantic/_generated/orders.py +136 -0
  68. statuspro_public_api_client/models_pydantic/_generated/statuses.py +25 -0
  69. statuspro_public_api_client/models_pydantic/_registry.py +171 -0
  70. statuspro_public_api_client/models_pydantic/converters.py +184 -0
  71. statuspro_public_api_client/py.typed +1 -0
  72. statuspro_public_api_client/statuspro-openapi.yaml +859 -0
  73. statuspro_public_api_client/statuspro_client.py +1156 -0
  74. statuspro_public_api_client/utils.py +290 -0
@@ -0,0 +1,66 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar
5
+
6
+ from attrs import (
7
+ define as _attrs_define,
8
+ field as _attrs_field,
9
+ )
10
+
11
+ from ..client_types import UNSET, Unset
12
+
13
+ T = TypeVar("T", bound="LocaleTranslation")
14
+
15
+
16
+ @_attrs_define
17
+ class LocaleTranslation:
18
+ name: str | Unset = UNSET
19
+ description: str | Unset = UNSET
20
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
21
+
22
+ def to_dict(self) -> dict[str, Any]:
23
+ name = self.name
24
+
25
+ description = self.description
26
+
27
+ field_dict: dict[str, Any] = {}
28
+ field_dict.update(self.additional_properties)
29
+ field_dict.update({})
30
+ if name is not UNSET:
31
+ field_dict["name"] = name
32
+ if description is not UNSET:
33
+ field_dict["description"] = description
34
+
35
+ return field_dict
36
+
37
+ @classmethod
38
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
39
+ d = dict(src_dict)
40
+ name = d.pop("name", UNSET)
41
+
42
+ description = d.pop("description", UNSET)
43
+
44
+ locale_translation = cls(
45
+ name=name,
46
+ description=description,
47
+ )
48
+
49
+ locale_translation.additional_properties = d
50
+ return locale_translation
51
+
52
+ @property
53
+ def additional_keys(self) -> list[str]:
54
+ return list(self.additional_properties.keys())
55
+
56
+ def __getitem__(self, key: str) -> Any:
57
+ return self.additional_properties[key]
58
+
59
+ def __setitem__(self, key: str, value: Any) -> None:
60
+ self.additional_properties[key] = value
61
+
62
+ def __delitem__(self, key: str) -> None:
63
+ del self.additional_properties[key]
64
+
65
+ def __contains__(self, key: str) -> bool:
66
+ return key in self.additional_properties
@@ -0,0 +1,82 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar
5
+
6
+ from attrs import (
7
+ define as _attrs_define,
8
+ field as _attrs_field,
9
+ )
10
+
11
+ from ..client_types import UNSET, Unset
12
+
13
+ T = TypeVar("T", bound="MailLog")
14
+
15
+
16
+ @_attrs_define
17
+ class MailLog:
18
+ from_: str | Unset = UNSET
19
+ to: str | Unset = UNSET
20
+ subject: str | Unset = UNSET
21
+ delivery_status: str | Unset = UNSET
22
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
23
+
24
+ def to_dict(self) -> dict[str, Any]:
25
+ from_ = self.from_
26
+
27
+ to = self.to
28
+
29
+ subject = self.subject
30
+
31
+ delivery_status = self.delivery_status
32
+
33
+ field_dict: dict[str, Any] = {}
34
+ field_dict.update(self.additional_properties)
35
+ field_dict.update({})
36
+ if from_ is not UNSET:
37
+ field_dict["from"] = from_
38
+ if to is not UNSET:
39
+ field_dict["to"] = to
40
+ if subject is not UNSET:
41
+ field_dict["subject"] = subject
42
+ if delivery_status is not UNSET:
43
+ field_dict["delivery_status"] = delivery_status
44
+
45
+ return field_dict
46
+
47
+ @classmethod
48
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
49
+ d = dict(src_dict)
50
+ from_ = d.pop("from", UNSET)
51
+
52
+ to = d.pop("to", UNSET)
53
+
54
+ subject = d.pop("subject", UNSET)
55
+
56
+ delivery_status = d.pop("delivery_status", UNSET)
57
+
58
+ mail_log = cls(
59
+ from_=from_,
60
+ to=to,
61
+ subject=subject,
62
+ delivery_status=delivery_status,
63
+ )
64
+
65
+ mail_log.additional_properties = d
66
+ return mail_log
67
+
68
+ @property
69
+ def additional_keys(self) -> list[str]:
70
+ return list(self.additional_properties.keys())
71
+
72
+ def __getitem__(self, key: str) -> Any:
73
+ return self.additional_properties[key]
74
+
75
+ def __setitem__(self, key: str, value: Any) -> None:
76
+ self.additional_properties[key] = value
77
+
78
+ def __delitem__(self, key: str) -> None:
79
+ del self.additional_properties[key]
80
+
81
+ def __contains__(self, key: str) -> bool:
82
+ return key in self.additional_properties
@@ -0,0 +1,58 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar
5
+
6
+ from attrs import (
7
+ define as _attrs_define,
8
+ field as _attrs_field,
9
+ )
10
+
11
+ T = TypeVar("T", bound="MessageResponse")
12
+
13
+
14
+ @_attrs_define
15
+ class MessageResponse:
16
+ message: str
17
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
18
+
19
+ def to_dict(self) -> dict[str, Any]:
20
+ message = self.message
21
+
22
+ field_dict: dict[str, Any] = {}
23
+ field_dict.update(self.additional_properties)
24
+ field_dict.update(
25
+ {
26
+ "message": message,
27
+ }
28
+ )
29
+
30
+ return field_dict
31
+
32
+ @classmethod
33
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
34
+ d = dict(src_dict)
35
+ message = d.pop("message")
36
+
37
+ message_response = cls(
38
+ message=message,
39
+ )
40
+
41
+ message_response.additional_properties = d
42
+ return message_response
43
+
44
+ @property
45
+ def additional_keys(self) -> list[str]:
46
+ return list(self.additional_properties.keys())
47
+
48
+ def __getitem__(self, key: str) -> Any:
49
+ return self.additional_properties[key]
50
+
51
+ def __setitem__(self, key: str, value: Any) -> None:
52
+ self.additional_properties[key] = value
53
+
54
+ def __delitem__(self, key: str) -> None:
55
+ del self.additional_properties[key]
56
+
57
+ def __contains__(self, key: str) -> bool:
58
+ return key in self.additional_properties
@@ -0,0 +1,180 @@
1
+ from __future__ import annotations
2
+
3
+ import datetime
4
+ from collections.abc import Mapping
5
+ from typing import TYPE_CHECKING, Any, TypeVar, cast
6
+
7
+ from attrs import (
8
+ define as _attrs_define,
9
+ field as _attrs_field,
10
+ )
11
+ from dateutil.parser import isoparse
12
+
13
+ from ..client_types import UNSET, Unset
14
+
15
+ if TYPE_CHECKING:
16
+ from ..models.customer import Customer
17
+ from ..models.status import Status
18
+
19
+
20
+ T = TypeVar("T", bound="OrderListItem")
21
+
22
+
23
+ @_attrs_define
24
+ class OrderListItem:
25
+ id: int | Unset = UNSET
26
+ name: str | Unset = UNSET
27
+ order_number: str | Unset = UNSET
28
+ customer: Customer | Unset = UNSET
29
+ status: Status | Unset = UNSET
30
+ due_date: datetime.datetime | None | Unset = UNSET
31
+ due_date_to: datetime.datetime | None | Unset = UNSET
32
+ history_count: int | Unset = UNSET
33
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
34
+
35
+ def to_dict(self) -> dict[str, Any]:
36
+ id = self.id
37
+
38
+ name = self.name
39
+
40
+ order_number = self.order_number
41
+
42
+ customer: dict[str, Any] | Unset = UNSET
43
+ if not isinstance(self.customer, Unset):
44
+ customer = self.customer.to_dict()
45
+
46
+ status: dict[str, Any] | Unset = UNSET
47
+ if not isinstance(self.status, Unset):
48
+ status = self.status.to_dict()
49
+
50
+ due_date: None | str | Unset
51
+ if isinstance(self.due_date, Unset):
52
+ due_date = UNSET
53
+ elif isinstance(self.due_date, datetime.datetime):
54
+ due_date = self.due_date.isoformat()
55
+ else:
56
+ due_date = self.due_date
57
+
58
+ due_date_to: None | str | Unset
59
+ if isinstance(self.due_date_to, Unset):
60
+ due_date_to = UNSET
61
+ elif isinstance(self.due_date_to, datetime.datetime):
62
+ due_date_to = self.due_date_to.isoformat()
63
+ else:
64
+ due_date_to = self.due_date_to
65
+
66
+ history_count = self.history_count
67
+
68
+ field_dict: dict[str, Any] = {}
69
+ field_dict.update(self.additional_properties)
70
+ field_dict.update({})
71
+ if id is not UNSET:
72
+ field_dict["id"] = id
73
+ if name is not UNSET:
74
+ field_dict["name"] = name
75
+ if order_number is not UNSET:
76
+ field_dict["order_number"] = order_number
77
+ if customer is not UNSET:
78
+ field_dict["customer"] = customer
79
+ if status is not UNSET:
80
+ field_dict["status"] = status
81
+ if due_date is not UNSET:
82
+ field_dict["due_date"] = due_date
83
+ if due_date_to is not UNSET:
84
+ field_dict["due_date_to"] = due_date_to
85
+ if history_count is not UNSET:
86
+ field_dict["history_count"] = history_count
87
+
88
+ return field_dict
89
+
90
+ @classmethod
91
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
92
+ from ..models.customer import Customer
93
+ from ..models.status import Status
94
+
95
+ d = dict(src_dict)
96
+ id = d.pop("id", UNSET)
97
+
98
+ name = d.pop("name", UNSET)
99
+
100
+ order_number = d.pop("order_number", UNSET)
101
+
102
+ _customer = d.pop("customer", UNSET)
103
+ customer: Customer | Unset
104
+ if isinstance(_customer, Unset):
105
+ customer = UNSET
106
+ else:
107
+ customer = Customer.from_dict(_customer)
108
+
109
+ _status = d.pop("status", UNSET)
110
+ status: Status | Unset
111
+ if isinstance(_status, Unset):
112
+ status = UNSET
113
+ else:
114
+ status = Status.from_dict(_status)
115
+
116
+ def _parse_due_date(data: object) -> datetime.datetime | None | Unset:
117
+ if data is None:
118
+ return data
119
+ if isinstance(data, Unset):
120
+ return data
121
+ try:
122
+ if not isinstance(data, str):
123
+ raise TypeError()
124
+ due_date_type_0 = isoparse(data)
125
+
126
+ return due_date_type_0
127
+ except (TypeError, ValueError, AttributeError, KeyError):
128
+ pass
129
+ return cast(datetime.datetime | None | Unset, data)
130
+
131
+ due_date = _parse_due_date(d.pop("due_date", UNSET))
132
+
133
+ def _parse_due_date_to(data: object) -> datetime.datetime | None | Unset:
134
+ if data is None:
135
+ return data
136
+ if isinstance(data, Unset):
137
+ return data
138
+ try:
139
+ if not isinstance(data, str):
140
+ raise TypeError()
141
+ due_date_to_type_0 = isoparse(data)
142
+
143
+ return due_date_to_type_0
144
+ except (TypeError, ValueError, AttributeError, KeyError):
145
+ pass
146
+ return cast(datetime.datetime | None | Unset, data)
147
+
148
+ due_date_to = _parse_due_date_to(d.pop("due_date_to", UNSET))
149
+
150
+ history_count = d.pop("history_count", UNSET)
151
+
152
+ order_list_item = cls(
153
+ id=id,
154
+ name=name,
155
+ order_number=order_number,
156
+ customer=customer,
157
+ status=status,
158
+ due_date=due_date,
159
+ due_date_to=due_date_to,
160
+ history_count=history_count,
161
+ )
162
+
163
+ order_list_item.additional_properties = d
164
+ return order_list_item
165
+
166
+ @property
167
+ def additional_keys(self) -> list[str]:
168
+ return list(self.additional_properties.keys())
169
+
170
+ def __getitem__(self, key: str) -> Any:
171
+ return self.additional_properties[key]
172
+
173
+ def __setitem__(self, key: str, value: Any) -> None:
174
+ self.additional_properties[key] = value
175
+
176
+ def __delitem__(self, key: str) -> None:
177
+ del self.additional_properties[key]
178
+
179
+ def __contains__(self, key: str) -> bool:
180
+ return key in self.additional_properties
@@ -0,0 +1,120 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar, cast
5
+
6
+ from attrs import (
7
+ define as _attrs_define,
8
+ field as _attrs_field,
9
+ )
10
+
11
+ from ..client_types import UNSET, Unset
12
+
13
+ T = TypeVar("T", bound="OrderListMeta")
14
+
15
+
16
+ @_attrs_define
17
+ class OrderListMeta:
18
+ current_page: int | Unset = UNSET
19
+ from_: int | None | Unset = UNSET
20
+ last_page: int | Unset = UNSET
21
+ per_page: int | Unset = UNSET
22
+ to: int | None | Unset = UNSET
23
+ total: int | Unset = UNSET
24
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
25
+
26
+ def to_dict(self) -> dict[str, Any]:
27
+ current_page = self.current_page
28
+
29
+ from_: int | None | Unset
30
+ if isinstance(self.from_, Unset):
31
+ from_ = UNSET
32
+ else:
33
+ from_ = self.from_
34
+
35
+ last_page = self.last_page
36
+
37
+ per_page = self.per_page
38
+
39
+ to: int | None | Unset
40
+ if isinstance(self.to, Unset):
41
+ to = UNSET
42
+ else:
43
+ to = self.to
44
+
45
+ total = self.total
46
+
47
+ field_dict: dict[str, Any] = {}
48
+ field_dict.update(self.additional_properties)
49
+ field_dict.update({})
50
+ if current_page is not UNSET:
51
+ field_dict["current_page"] = current_page
52
+ if from_ is not UNSET:
53
+ field_dict["from"] = from_
54
+ if last_page is not UNSET:
55
+ field_dict["last_page"] = last_page
56
+ if per_page is not UNSET:
57
+ field_dict["per_page"] = per_page
58
+ if to is not UNSET:
59
+ field_dict["to"] = to
60
+ if total is not UNSET:
61
+ field_dict["total"] = total
62
+
63
+ return field_dict
64
+
65
+ @classmethod
66
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
67
+ d = dict(src_dict)
68
+ current_page = d.pop("current_page", UNSET)
69
+
70
+ def _parse_from_(data: object) -> int | None | Unset:
71
+ if data is None:
72
+ return data
73
+ if isinstance(data, Unset):
74
+ return data
75
+ return cast(int | None | Unset, data)
76
+
77
+ from_ = _parse_from_(d.pop("from", UNSET))
78
+
79
+ last_page = d.pop("last_page", UNSET)
80
+
81
+ per_page = d.pop("per_page", UNSET)
82
+
83
+ def _parse_to(data: object) -> int | None | Unset:
84
+ if data is None:
85
+ return data
86
+ if isinstance(data, Unset):
87
+ return data
88
+ return cast(int | None | Unset, data)
89
+
90
+ to = _parse_to(d.pop("to", UNSET))
91
+
92
+ total = d.pop("total", UNSET)
93
+
94
+ order_list_meta = cls(
95
+ current_page=current_page,
96
+ from_=from_,
97
+ last_page=last_page,
98
+ per_page=per_page,
99
+ to=to,
100
+ total=total,
101
+ )
102
+
103
+ order_list_meta.additional_properties = d
104
+ return order_list_meta
105
+
106
+ @property
107
+ def additional_keys(self) -> list[str]:
108
+ return list(self.additional_properties.keys())
109
+
110
+ def __getitem__(self, key: str) -> Any:
111
+ return self.additional_properties[key]
112
+
113
+ def __setitem__(self, key: str, value: Any) -> None:
114
+ self.additional_properties[key] = value
115
+
116
+ def __delitem__(self, key: str) -> None:
117
+ del self.additional_properties[key]
118
+
119
+ def __contains__(self, key: str) -> bool:
120
+ return key in self.additional_properties
@@ -0,0 +1,81 @@
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 (
7
+ define as _attrs_define,
8
+ field as _attrs_field,
9
+ )
10
+
11
+ if TYPE_CHECKING:
12
+ from ..models.order_list_item import OrderListItem
13
+ from ..models.order_list_meta import OrderListMeta
14
+
15
+
16
+ T = TypeVar("T", bound="OrderListResponse")
17
+
18
+
19
+ @_attrs_define
20
+ class OrderListResponse:
21
+ data: list[OrderListItem]
22
+ meta: OrderListMeta
23
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
24
+
25
+ def to_dict(self) -> dict[str, Any]:
26
+ data = []
27
+ for data_item_data in self.data:
28
+ data_item = data_item_data.to_dict()
29
+ data.append(data_item)
30
+
31
+ meta = self.meta.to_dict()
32
+
33
+ field_dict: dict[str, Any] = {}
34
+ field_dict.update(self.additional_properties)
35
+ field_dict.update(
36
+ {
37
+ "data": data,
38
+ "meta": meta,
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.order_list_item import OrderListItem
47
+ from ..models.order_list_meta import OrderListMeta
48
+
49
+ d = dict(src_dict)
50
+ data = []
51
+ _data = d.pop("data")
52
+ for data_item_data in _data:
53
+ data_item = OrderListItem.from_dict(data_item_data)
54
+
55
+ data.append(data_item)
56
+
57
+ meta = OrderListMeta.from_dict(d.pop("meta"))
58
+
59
+ order_list_response = cls(
60
+ data=data,
61
+ meta=meta,
62
+ )
63
+
64
+ order_list_response.additional_properties = d
65
+ return order_list_response
66
+
67
+ @property
68
+ def additional_keys(self) -> list[str]:
69
+ return list(self.additional_properties.keys())
70
+
71
+ def __getitem__(self, key: str) -> Any:
72
+ return self.additional_properties[key]
73
+
74
+ def __setitem__(self, key: str, value: Any) -> None:
75
+ self.additional_properties[key] = value
76
+
77
+ def __delitem__(self, key: str) -> None:
78
+ del self.additional_properties[key]
79
+
80
+ def __contains__(self, key: str) -> bool:
81
+ return key in self.additional_properties