dart-tools 0.6.6__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.

Potentially problematic release.


This version of dart-tools might be problematic. Click here for more details.

Files changed (256) hide show
  1. dart/__init__.py +18 -0
  2. dart/dart.py +1134 -0
  3. dart/exception.py +6 -0
  4. dart/generated/__init__.py +8 -0
  5. dart/generated/api/__init__.py +1 -0
  6. dart/generated/api/attachments/__init__.py +0 -0
  7. dart/generated/api/attachments/attachments_list.py +169 -0
  8. dart/generated/api/comments/__init__.py +0 -0
  9. dart/generated/api/comments/comments_list.py +278 -0
  10. dart/generated/api/dartboards/__init__.py +0 -0
  11. dart/generated/api/dartboards/dartboards_list.py +271 -0
  12. dart/generated/api/dashboards/__init__.py +0 -0
  13. dart/generated/api/dashboards/dashboards_list.py +184 -0
  14. dart/generated/api/docs/__init__.py +0 -0
  15. dart/generated/api/docs/docs_list.py +334 -0
  16. dart/generated/api/folders/__init__.py +0 -0
  17. dart/generated/api/folders/folders_list.py +234 -0
  18. dart/generated/api/form_fields/__init__.py +0 -0
  19. dart/generated/api/form_fields/form_fields_list.py +169 -0
  20. dart/generated/api/forms/__init__.py +0 -0
  21. dart/generated/api/forms/forms_list.py +169 -0
  22. dart/generated/api/layouts/__init__.py +0 -0
  23. dart/generated/api/layouts/layouts_list.py +169 -0
  24. dart/generated/api/links/__init__.py +0 -0
  25. dart/generated/api/links/links_list.py +169 -0
  26. dart/generated/api/options/__init__.py +0 -0
  27. dart/generated/api/options/options_list.py +229 -0
  28. dart/generated/api/properties/__init__.py +0 -0
  29. dart/generated/api/properties/properties_list.py +204 -0
  30. dart/generated/api/reactions/__init__.py +0 -0
  31. dart/generated/api/reactions/reactions_list.py +169 -0
  32. dart/generated/api/relationship_kinds/__init__.py +0 -0
  33. dart/generated/api/relationship_kinds/relationship_kinds_list.py +169 -0
  34. dart/generated/api/relationships/__init__.py +0 -0
  35. dart/generated/api/relationships/relationships_list.py +169 -0
  36. dart/generated/api/spaces/__init__.py +0 -0
  37. dart/generated/api/spaces/spaces_list.py +214 -0
  38. dart/generated/api/statuses/__init__.py +0 -0
  39. dart/generated/api/statuses/statuses_list.py +249 -0
  40. dart/generated/api/task_doc_relationships/__init__.py +0 -0
  41. dart/generated/api/task_doc_relationships/task_doc_relationships_list.py +169 -0
  42. dart/generated/api/task_kinds/__init__.py +0 -0
  43. dart/generated/api/task_kinds/task_kinds_list.py +204 -0
  44. dart/generated/api/tasks/__init__.py +0 -0
  45. dart/generated/api/tasks/tasks_list.py +446 -0
  46. dart/generated/api/tenants/__init__.py +0 -0
  47. dart/generated/api/tenants/tenants_list.py +169 -0
  48. dart/generated/api/transactions/__init__.py +0 -0
  49. dart/generated/api/transactions/transactions_create.py +176 -0
  50. dart/generated/api/user_dartboard_layouts/__init__.py +0 -0
  51. dart/generated/api/user_dartboard_layouts/user_dartboard_layouts_list.py +169 -0
  52. dart/generated/api/user_data/__init__.py +0 -0
  53. dart/generated/api/user_data/user_data_entity_retrieve.py +580 -0
  54. dart/generated/api/users/__init__.py +0 -0
  55. dart/generated/api/users/users_list.py +214 -0
  56. dart/generated/api/views/__init__.py +0 -0
  57. dart/generated/api/views/views_list.py +184 -0
  58. dart/generated/api/webhooks/__init__.py +0 -0
  59. dart/generated/api/webhooks/webhooks_list.py +169 -0
  60. dart/generated/client.py +268 -0
  61. dart/generated/errors.py +16 -0
  62. dart/generated/models/__init__.py +371 -0
  63. dart/generated/models/attachment.py +112 -0
  64. dart/generated/models/attachment_create.py +121 -0
  65. dart/generated/models/attachment_update.py +125 -0
  66. dart/generated/models/bar_chart_adtl.py +72 -0
  67. dart/generated/models/brainstorm.py +149 -0
  68. dart/generated/models/brainstorm_create.py +134 -0
  69. dart/generated/models/brainstorm_state.py +10 -0
  70. dart/generated/models/brainstorm_update.py +153 -0
  71. dart/generated/models/burn_up_chart_adtl.py +103 -0
  72. dart/generated/models/chart.py +207 -0
  73. dart/generated/models/chart_type.py +13 -0
  74. dart/generated/models/comment.py +207 -0
  75. dart/generated/models/comment_create.py +146 -0
  76. dart/generated/models/comment_reaction.py +84 -0
  77. dart/generated/models/comment_reaction_create.py +82 -0
  78. dart/generated/models/comment_reaction_update.py +87 -0
  79. dart/generated/models/comment_update.py +148 -0
  80. dart/generated/models/dartboard.py +264 -0
  81. dart/generated/models/dartboard_create.py +267 -0
  82. dart/generated/models/dartboard_kind.py +12 -0
  83. dart/generated/models/dartboard_update.py +269 -0
  84. dart/generated/models/dartboards_list_kind.py +12 -0
  85. dart/generated/models/dashboard.py +185 -0
  86. dart/generated/models/dashboard_create.py +171 -0
  87. dart/generated/models/dashboard_update.py +173 -0
  88. dart/generated/models/discord_integration.py +72 -0
  89. dart/generated/models/doc.py +243 -0
  90. dart/generated/models/doc_create.py +295 -0
  91. dart/generated/models/doc_source_type.py +13 -0
  92. dart/generated/models/doc_update.py +295 -0
  93. dart/generated/models/entity_name.py +22 -0
  94. dart/generated/models/event.py +420 -0
  95. dart/generated/models/event_actor.py +18 -0
  96. dart/generated/models/event_create.py +158 -0
  97. dart/generated/models/event_kind.py +88 -0
  98. dart/generated/models/event_subscription.py +74 -0
  99. dart/generated/models/event_subscription_update.py +173 -0
  100. dart/generated/models/filter_applicability.py +22 -0
  101. dart/generated/models/filter_assignee.py +116 -0
  102. dart/generated/models/filter_connector.py +9 -0
  103. dart/generated/models/filter_group.py +112 -0
  104. dart/generated/models/filter_search.py +82 -0
  105. dart/generated/models/filter_set.py +116 -0
  106. dart/generated/models/folder.py +150 -0
  107. dart/generated/models/folder_create.py +150 -0
  108. dart/generated/models/folder_kind.py +10 -0
  109. dart/generated/models/folder_update.py +152 -0
  110. dart/generated/models/folders_list_kind.py +10 -0
  111. dart/generated/models/form.py +147 -0
  112. dart/generated/models/form_create.py +141 -0
  113. dart/generated/models/form_field.py +144 -0
  114. dart/generated/models/form_field_create.py +129 -0
  115. dart/generated/models/form_field_update.py +132 -0
  116. dart/generated/models/form_update.py +142 -0
  117. dart/generated/models/github_integration.py +163 -0
  118. dart/generated/models/github_integration_tenant_extension_status.py +11 -0
  119. dart/generated/models/google_data.py +94 -0
  120. dart/generated/models/icon_kind.py +10 -0
  121. dart/generated/models/layout.py +167 -0
  122. dart/generated/models/layout_config.py +70 -0
  123. dart/generated/models/layout_create.py +130 -0
  124. dart/generated/models/layout_kind.py +11 -0
  125. dart/generated/models/layout_kind_config_map.py +56 -0
  126. dart/generated/models/layout_update.py +130 -0
  127. dart/generated/models/line_chart_adtl.py +72 -0
  128. dart/generated/models/models_response.py +671 -0
  129. dart/generated/models/notification.py +120 -0
  130. dart/generated/models/notification_update.py +100 -0
  131. dart/generated/models/notion_integration.py +90 -0
  132. dart/generated/models/notion_integration_tenant_extension_status.py +10 -0
  133. dart/generated/models/number_chart_adtl.py +85 -0
  134. dart/generated/models/number_chart_aggregation.py +10 -0
  135. dart/generated/models/operation.py +874 -0
  136. dart/generated/models/operation_kind.py +12 -0
  137. dart/generated/models/operation_model_kind.py +36 -0
  138. dart/generated/models/option.py +118 -0
  139. dart/generated/models/option_create.py +105 -0
  140. dart/generated/models/option_update.py +107 -0
  141. dart/generated/models/paginated_attachment_list.py +122 -0
  142. dart/generated/models/paginated_comment_list.py +122 -0
  143. dart/generated/models/paginated_comment_reaction_list.py +122 -0
  144. dart/generated/models/paginated_dartboard_list.py +122 -0
  145. dart/generated/models/paginated_dashboard_list.py +122 -0
  146. dart/generated/models/paginated_doc_list.py +122 -0
  147. dart/generated/models/paginated_folder_list.py +122 -0
  148. dart/generated/models/paginated_form_field_list.py +122 -0
  149. dart/generated/models/paginated_form_list.py +122 -0
  150. dart/generated/models/paginated_layout_list.py +122 -0
  151. dart/generated/models/paginated_option_list.py +122 -0
  152. dart/generated/models/paginated_property_list.py +122 -0
  153. dart/generated/models/paginated_relationship_kind_list.py +122 -0
  154. dart/generated/models/paginated_relationship_list.py +122 -0
  155. dart/generated/models/paginated_space_list.py +122 -0
  156. dart/generated/models/paginated_status_list.py +122 -0
  157. dart/generated/models/paginated_task_doc_relationship_list.py +122 -0
  158. dart/generated/models/paginated_task_kind_list.py +122 -0
  159. dart/generated/models/paginated_task_link_list.py +122 -0
  160. dart/generated/models/paginated_task_list.py +122 -0
  161. dart/generated/models/paginated_tenant_list.py +122 -0
  162. dart/generated/models/paginated_user_dartboard_layout_list.py +122 -0
  163. dart/generated/models/paginated_user_list.py +122 -0
  164. dart/generated/models/paginated_view_list.py +122 -0
  165. dart/generated/models/paginated_webhook_list.py +122 -0
  166. dart/generated/models/pie_chart_adtl.py +69 -0
  167. dart/generated/models/pie_chart_display_metric.py +9 -0
  168. dart/generated/models/priority.py +11 -0
  169. dart/generated/models/properties_list_kind.py +32 -0
  170. dart/generated/models/property_.py +153 -0
  171. dart/generated/models/property_create.py +137 -0
  172. dart/generated/models/property_kind.py +32 -0
  173. dart/generated/models/property_update.py +146 -0
  174. dart/generated/models/relationship.py +74 -0
  175. dart/generated/models/relationship_create.py +93 -0
  176. dart/generated/models/relationship_kind.py +123 -0
  177. dart/generated/models/relationship_kind_create.py +117 -0
  178. dart/generated/models/relationship_kind_kind.py +12 -0
  179. dart/generated/models/relationship_kind_update.py +119 -0
  180. dart/generated/models/report_kind.py +9 -0
  181. dart/generated/models/request_body.py +80 -0
  182. dart/generated/models/response_body.py +72 -0
  183. dart/generated/models/saml_config.py +77 -0
  184. dart/generated/models/saml_config_tenant_extension_status.py +9 -0
  185. dart/generated/models/slack_integration.py +90 -0
  186. dart/generated/models/slack_integration_tenant_extension_status.py +10 -0
  187. dart/generated/models/sort.py +66 -0
  188. dart/generated/models/space.py +286 -0
  189. dart/generated/models/space_create.py +310 -0
  190. dart/generated/models/space_kind.py +10 -0
  191. dart/generated/models/space_update.py +311 -0
  192. dart/generated/models/sprint_mode.py +9 -0
  193. dart/generated/models/status.py +141 -0
  194. dart/generated/models/status_create.py +125 -0
  195. dart/generated/models/status_kind.py +12 -0
  196. dart/generated/models/status_update.py +135 -0
  197. dart/generated/models/statuses_list_kind.py +12 -0
  198. dart/generated/models/subscription.py +9 -0
  199. dart/generated/models/subtask_display_mode.py +10 -0
  200. dart/generated/models/summary_statistic_kind.py +14 -0
  201. dart/generated/models/table_chart_adtl.py +72 -0
  202. dart/generated/models/task.py +531 -0
  203. dart/generated/models/task_create.py +585 -0
  204. dart/generated/models/task_detail_mode.py +10 -0
  205. dart/generated/models/task_doc_relationship.py +96 -0
  206. dart/generated/models/task_doc_relationship_create.py +74 -0
  207. dart/generated/models/task_kind.py +149 -0
  208. dart/generated/models/task_kind_create.py +144 -0
  209. dart/generated/models/task_kind_kind.py +9 -0
  210. dart/generated/models/task_kind_update.py +153 -0
  211. dart/generated/models/task_kinds_list_kind.py +9 -0
  212. dart/generated/models/task_link.py +131 -0
  213. dart/generated/models/task_link_create.py +152 -0
  214. dart/generated/models/task_link_kind.py +19 -0
  215. dart/generated/models/task_link_update.py +155 -0
  216. dart/generated/models/task_notion_document.py +196 -0
  217. dart/generated/models/task_notion_document_block_children_map_type_0.py +43 -0
  218. dart/generated/models/task_notion_document_block_map_type_0.py +43 -0
  219. dart/generated/models/task_notion_document_page_map_type_0.py +43 -0
  220. dart/generated/models/task_properties.py +43 -0
  221. dart/generated/models/task_source_type.py +31 -0
  222. dart/generated/models/task_update.py +585 -0
  223. dart/generated/models/tenant.py +378 -0
  224. dart/generated/models/tenant_update.py +157 -0
  225. dart/generated/models/theme.py +10 -0
  226. dart/generated/models/transaction.py +155 -0
  227. dart/generated/models/transaction_kind.py +73 -0
  228. dart/generated/models/transaction_response.py +96 -0
  229. dart/generated/models/user.py +245 -0
  230. dart/generated/models/user_dartboard_layout.py +66 -0
  231. dart/generated/models/user_dartboard_layout_create.py +74 -0
  232. dart/generated/models/user_data_entity_retrieve_entity_kind.py +32 -0
  233. dart/generated/models/user_role.py +12 -0
  234. dart/generated/models/user_status.py +12 -0
  235. dart/generated/models/user_update.py +190 -0
  236. dart/generated/models/validation_error_response.py +64 -0
  237. dart/generated/models/validation_error_response_items.py +43 -0
  238. dart/generated/models/view.py +207 -0
  239. dart/generated/models/view_create.py +204 -0
  240. dart/generated/models/view_kind.py +11 -0
  241. dart/generated/models/view_update.py +206 -0
  242. dart/generated/models/webhook.py +96 -0
  243. dart/generated/models/webhook_create.py +77 -0
  244. dart/generated/models/webhook_update.py +78 -0
  245. dart/generated/models/zapier_integration.py +66 -0
  246. dart/generated/py.typed +1 -0
  247. dart/generated/types.py +45 -0
  248. dart/order_manager.py +59 -0
  249. dart/webhook.py +21 -0
  250. dart_tools-0.6.6.dist-info/LICENSE +21 -0
  251. dart_tools-0.6.6.dist-info/METADATA +183 -0
  252. dart_tools-0.6.6.dist-info/RECORD +256 -0
  253. dart_tools-0.6.6.dist-info/WHEEL +5 -0
  254. dart_tools-0.6.6.dist-info/dist/dart-tools-0.3.3.tar.gz +0 -0
  255. dart_tools-0.6.6.dist-info/entry_points.txt +2 -0
  256. dart_tools-0.6.6.dist-info/top_level.txt +1 -0
@@ -0,0 +1,286 @@
1
+ import datetime
2
+ from typing import Any, Dict, List, Type, TypeVar, Union, cast
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+ from dateutil.parser import isoparse
7
+
8
+ from ..models.icon_kind import IconKind
9
+ from ..models.space_kind import SpaceKind
10
+ from ..models.sprint_mode import SprintMode
11
+ from ..types import UNSET, Unset
12
+
13
+ T = TypeVar("T", bound="Space")
14
+
15
+
16
+ @_attrs_define
17
+ class Space:
18
+ """
19
+ Attributes:
20
+ duid (str):
21
+ drafter_duid (Union[None, str]):
22
+ kind (SpaceKind): * `Other` - OTHER
23
+ * `Workspace` - WORKSPACE
24
+ * `Personal` - PERSONAL
25
+ accessible_by_team (bool):
26
+ accessible_by_user_duids (List[str]):
27
+ order (str):
28
+ title (str):
29
+ abrev (str):
30
+ description (str):
31
+ icon_kind (IconKind): * `None` - NONE
32
+ * `Icon` - ICON
33
+ * `Emoji` - EMOJI
34
+ icon_name_or_emoji (str):
35
+ color_hex (str):
36
+ sprint_mode (SprintMode): * `None` - NONE
37
+ * `ANBA` - ANBA
38
+ sprint_replicate_on_rollover (bool):
39
+ sprint_name_fmt (str):
40
+ standup_recurrence (Union[Any, None]):
41
+ standup_recurs_next_at (Union[None, datetime.datetime]):
42
+ changelog_recurrence (Union[Any, None]):
43
+ changelog_recurs_next_at (Union[None, datetime.datetime]):
44
+ updated_by_client_duid (Union[None, Unset, str]):
45
+ """
46
+
47
+ duid: str
48
+ drafter_duid: Union[None, str]
49
+ kind: SpaceKind
50
+ accessible_by_team: bool
51
+ accessible_by_user_duids: List[str]
52
+ order: str
53
+ title: str
54
+ abrev: str
55
+ description: str
56
+ icon_kind: IconKind
57
+ icon_name_or_emoji: str
58
+ color_hex: str
59
+ sprint_mode: SprintMode
60
+ sprint_replicate_on_rollover: bool
61
+ sprint_name_fmt: str
62
+ standup_recurrence: Union[Any, None]
63
+ standup_recurs_next_at: Union[None, datetime.datetime]
64
+ changelog_recurrence: Union[Any, None]
65
+ changelog_recurs_next_at: Union[None, datetime.datetime]
66
+ updated_by_client_duid: Union[None, Unset, str] = UNSET
67
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
68
+
69
+ def to_dict(self) -> Dict[str, Any]:
70
+ duid = self.duid
71
+
72
+ drafter_duid: Union[None, str]
73
+ drafter_duid = self.drafter_duid
74
+
75
+ kind = self.kind.value
76
+
77
+ accessible_by_team = self.accessible_by_team
78
+
79
+ accessible_by_user_duids = self.accessible_by_user_duids
80
+
81
+ order = self.order
82
+
83
+ title = self.title
84
+
85
+ abrev = self.abrev
86
+
87
+ description = self.description
88
+
89
+ icon_kind = self.icon_kind.value
90
+
91
+ icon_name_or_emoji = self.icon_name_or_emoji
92
+
93
+ color_hex = self.color_hex
94
+
95
+ sprint_mode = self.sprint_mode.value
96
+
97
+ sprint_replicate_on_rollover = self.sprint_replicate_on_rollover
98
+
99
+ sprint_name_fmt = self.sprint_name_fmt
100
+
101
+ standup_recurrence: Union[Any, None]
102
+ standup_recurrence = self.standup_recurrence
103
+
104
+ standup_recurs_next_at: Union[None, str]
105
+ if isinstance(self.standup_recurs_next_at, datetime.datetime):
106
+ standup_recurs_next_at = self.standup_recurs_next_at.isoformat()
107
+ else:
108
+ standup_recurs_next_at = self.standup_recurs_next_at
109
+
110
+ changelog_recurrence: Union[Any, None]
111
+ changelog_recurrence = self.changelog_recurrence
112
+
113
+ changelog_recurs_next_at: Union[None, str]
114
+ if isinstance(self.changelog_recurs_next_at, datetime.datetime):
115
+ changelog_recurs_next_at = self.changelog_recurs_next_at.isoformat()
116
+ else:
117
+ changelog_recurs_next_at = self.changelog_recurs_next_at
118
+
119
+ updated_by_client_duid: Union[None, Unset, str]
120
+ if isinstance(self.updated_by_client_duid, Unset):
121
+ updated_by_client_duid = UNSET
122
+ else:
123
+ updated_by_client_duid = self.updated_by_client_duid
124
+
125
+ field_dict: Dict[str, Any] = {}
126
+ field_dict.update(self.additional_properties)
127
+ field_dict.update(
128
+ {
129
+ "duid": duid,
130
+ "drafterDuid": drafter_duid,
131
+ "kind": kind,
132
+ "accessibleByTeam": accessible_by_team,
133
+ "accessibleByUserDuids": accessible_by_user_duids,
134
+ "order": order,
135
+ "title": title,
136
+ "abrev": abrev,
137
+ "description": description,
138
+ "iconKind": icon_kind,
139
+ "iconNameOrEmoji": icon_name_or_emoji,
140
+ "colorHex": color_hex,
141
+ "sprintMode": sprint_mode,
142
+ "sprintReplicateOnRollover": sprint_replicate_on_rollover,
143
+ "sprintNameFmt": sprint_name_fmt,
144
+ "standupRecurrence": standup_recurrence,
145
+ "standupRecursNextAt": standup_recurs_next_at,
146
+ "changelogRecurrence": changelog_recurrence,
147
+ "changelogRecursNextAt": changelog_recurs_next_at,
148
+ }
149
+ )
150
+ if updated_by_client_duid is not UNSET:
151
+ field_dict["updatedByClientDuid"] = updated_by_client_duid
152
+
153
+ return field_dict
154
+
155
+ @classmethod
156
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
157
+ d = src_dict.copy()
158
+ duid = d.pop("duid")
159
+
160
+ def _parse_drafter_duid(data: object) -> Union[None, str]:
161
+ if data is None:
162
+ return data
163
+ return cast(Union[None, str], data)
164
+
165
+ drafter_duid = _parse_drafter_duid(d.pop("drafterDuid"))
166
+
167
+ kind = SpaceKind(d.pop("kind"))
168
+
169
+ accessible_by_team = d.pop("accessibleByTeam")
170
+
171
+ accessible_by_user_duids = cast(List[str], d.pop("accessibleByUserDuids"))
172
+
173
+ order = d.pop("order")
174
+
175
+ title = d.pop("title")
176
+
177
+ abrev = d.pop("abrev")
178
+
179
+ description = d.pop("description")
180
+
181
+ icon_kind = IconKind(d.pop("iconKind"))
182
+
183
+ icon_name_or_emoji = d.pop("iconNameOrEmoji")
184
+
185
+ color_hex = d.pop("colorHex")
186
+
187
+ sprint_mode = SprintMode(d.pop("sprintMode"))
188
+
189
+ sprint_replicate_on_rollover = d.pop("sprintReplicateOnRollover")
190
+
191
+ sprint_name_fmt = d.pop("sprintNameFmt")
192
+
193
+ def _parse_standup_recurrence(data: object) -> Union[Any, None]:
194
+ if data is None:
195
+ return data
196
+ return cast(Union[Any, None], data)
197
+
198
+ standup_recurrence = _parse_standup_recurrence(d.pop("standupRecurrence"))
199
+
200
+ def _parse_standup_recurs_next_at(data: object) -> Union[None, datetime.datetime]:
201
+ if data is None:
202
+ return data
203
+ try:
204
+ if not isinstance(data, str):
205
+ raise TypeError()
206
+ standup_recurs_next_at_type_0 = isoparse(data)
207
+
208
+ return standup_recurs_next_at_type_0
209
+ except: # noqa: E722
210
+ pass
211
+ return cast(Union[None, datetime.datetime], data)
212
+
213
+ standup_recurs_next_at = _parse_standup_recurs_next_at(d.pop("standupRecursNextAt"))
214
+
215
+ def _parse_changelog_recurrence(data: object) -> Union[Any, None]:
216
+ if data is None:
217
+ return data
218
+ return cast(Union[Any, None], data)
219
+
220
+ changelog_recurrence = _parse_changelog_recurrence(d.pop("changelogRecurrence"))
221
+
222
+ def _parse_changelog_recurs_next_at(data: object) -> Union[None, datetime.datetime]:
223
+ if data is None:
224
+ return data
225
+ try:
226
+ if not isinstance(data, str):
227
+ raise TypeError()
228
+ changelog_recurs_next_at_type_0 = isoparse(data)
229
+
230
+ return changelog_recurs_next_at_type_0
231
+ except: # noqa: E722
232
+ pass
233
+ return cast(Union[None, datetime.datetime], data)
234
+
235
+ changelog_recurs_next_at = _parse_changelog_recurs_next_at(d.pop("changelogRecursNextAt"))
236
+
237
+ def _parse_updated_by_client_duid(data: object) -> Union[None, Unset, str]:
238
+ if data is None:
239
+ return data
240
+ if isinstance(data, Unset):
241
+ return data
242
+ return cast(Union[None, Unset, str], data)
243
+
244
+ updated_by_client_duid = _parse_updated_by_client_duid(d.pop("updatedByClientDuid", UNSET))
245
+
246
+ space = cls(
247
+ duid=duid,
248
+ drafter_duid=drafter_duid,
249
+ kind=kind,
250
+ accessible_by_team=accessible_by_team,
251
+ accessible_by_user_duids=accessible_by_user_duids,
252
+ order=order,
253
+ title=title,
254
+ abrev=abrev,
255
+ description=description,
256
+ icon_kind=icon_kind,
257
+ icon_name_or_emoji=icon_name_or_emoji,
258
+ color_hex=color_hex,
259
+ sprint_mode=sprint_mode,
260
+ sprint_replicate_on_rollover=sprint_replicate_on_rollover,
261
+ sprint_name_fmt=sprint_name_fmt,
262
+ standup_recurrence=standup_recurrence,
263
+ standup_recurs_next_at=standup_recurs_next_at,
264
+ changelog_recurrence=changelog_recurrence,
265
+ changelog_recurs_next_at=changelog_recurs_next_at,
266
+ updated_by_client_duid=updated_by_client_duid,
267
+ )
268
+
269
+ space.additional_properties = d
270
+ return space
271
+
272
+ @property
273
+ def additional_keys(self) -> List[str]:
274
+ return list(self.additional_properties.keys())
275
+
276
+ def __getitem__(self, key: str) -> Any:
277
+ return self.additional_properties[key]
278
+
279
+ def __setitem__(self, key: str, value: Any) -> None:
280
+ self.additional_properties[key] = value
281
+
282
+ def __delitem__(self, key: str) -> None:
283
+ del self.additional_properties[key]
284
+
285
+ def __contains__(self, key: str) -> bool:
286
+ return key in self.additional_properties
@@ -0,0 +1,310 @@
1
+ import datetime
2
+ from typing import Any, Dict, List, Type, TypeVar, Union, cast
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+ from dateutil.parser import isoparse
7
+
8
+ from ..models.icon_kind import IconKind
9
+ from ..models.sprint_mode import SprintMode
10
+ from ..types import UNSET, Unset
11
+
12
+ T = TypeVar("T", bound="SpaceCreate")
13
+
14
+
15
+ @_attrs_define
16
+ class SpaceCreate:
17
+ """
18
+ Attributes:
19
+ duid (str):
20
+ order (str):
21
+ drafter_duid (Union[None, Unset, str]):
22
+ accessible_by_team (Union[Unset, bool]):
23
+ accessible_by_user_duids (Union[Unset, List[str]]):
24
+ title (Union[Unset, str]):
25
+ abrev (Union[Unset, str]):
26
+ description (Union[Unset, str]):
27
+ icon_kind (Union[Unset, IconKind]): * `None` - NONE
28
+ * `Icon` - ICON
29
+ * `Emoji` - EMOJI
30
+ icon_name_or_emoji (Union[Unset, str]):
31
+ color_hex (Union[Unset, str]):
32
+ sprint_mode (Union[Unset, SprintMode]): * `None` - NONE
33
+ * `ANBA` - ANBA
34
+ sprint_replicate_on_rollover (Union[Unset, bool]):
35
+ sprint_name_fmt (Union[Unset, str]):
36
+ standup_recurrence (Union[Any, None, Unset]):
37
+ standup_recurs_next_at (Union[None, Unset, datetime.datetime]):
38
+ changelog_recurrence (Union[Any, None, Unset]):
39
+ changelog_recurs_next_at (Union[None, Unset, datetime.datetime]):
40
+ """
41
+
42
+ duid: str
43
+ order: str
44
+ drafter_duid: Union[None, Unset, str] = UNSET
45
+ accessible_by_team: Union[Unset, bool] = UNSET
46
+ accessible_by_user_duids: Union[Unset, List[str]] = UNSET
47
+ title: Union[Unset, str] = UNSET
48
+ abrev: Union[Unset, str] = UNSET
49
+ description: Union[Unset, str] = UNSET
50
+ icon_kind: Union[Unset, IconKind] = UNSET
51
+ icon_name_or_emoji: Union[Unset, str] = UNSET
52
+ color_hex: Union[Unset, str] = UNSET
53
+ sprint_mode: Union[Unset, SprintMode] = UNSET
54
+ sprint_replicate_on_rollover: Union[Unset, bool] = UNSET
55
+ sprint_name_fmt: Union[Unset, str] = UNSET
56
+ standup_recurrence: Union[Any, None, Unset] = UNSET
57
+ standup_recurs_next_at: Union[None, Unset, datetime.datetime] = UNSET
58
+ changelog_recurrence: Union[Any, None, Unset] = UNSET
59
+ changelog_recurs_next_at: Union[None, Unset, datetime.datetime] = UNSET
60
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
61
+
62
+ def to_dict(self) -> Dict[str, Any]:
63
+ duid = self.duid
64
+
65
+ order = self.order
66
+
67
+ drafter_duid: Union[None, Unset, str]
68
+ if isinstance(self.drafter_duid, Unset):
69
+ drafter_duid = UNSET
70
+ else:
71
+ drafter_duid = self.drafter_duid
72
+
73
+ accessible_by_team = self.accessible_by_team
74
+
75
+ accessible_by_user_duids: Union[Unset, List[str]] = UNSET
76
+ if not isinstance(self.accessible_by_user_duids, Unset):
77
+ accessible_by_user_duids = self.accessible_by_user_duids
78
+
79
+ title = self.title
80
+
81
+ abrev = self.abrev
82
+
83
+ description = self.description
84
+
85
+ icon_kind: Union[Unset, str] = UNSET
86
+ if not isinstance(self.icon_kind, Unset):
87
+ icon_kind = self.icon_kind.value
88
+
89
+ icon_name_or_emoji = self.icon_name_or_emoji
90
+
91
+ color_hex = self.color_hex
92
+
93
+ sprint_mode: Union[Unset, str] = UNSET
94
+ if not isinstance(self.sprint_mode, Unset):
95
+ sprint_mode = self.sprint_mode.value
96
+
97
+ sprint_replicate_on_rollover = self.sprint_replicate_on_rollover
98
+
99
+ sprint_name_fmt = self.sprint_name_fmt
100
+
101
+ standup_recurrence: Union[Any, None, Unset]
102
+ if isinstance(self.standup_recurrence, Unset):
103
+ standup_recurrence = UNSET
104
+ else:
105
+ standup_recurrence = self.standup_recurrence
106
+
107
+ standup_recurs_next_at: Union[None, Unset, str]
108
+ if isinstance(self.standup_recurs_next_at, Unset):
109
+ standup_recurs_next_at = UNSET
110
+ elif isinstance(self.standup_recurs_next_at, datetime.datetime):
111
+ standup_recurs_next_at = self.standup_recurs_next_at.isoformat()
112
+ else:
113
+ standup_recurs_next_at = self.standup_recurs_next_at
114
+
115
+ changelog_recurrence: Union[Any, None, Unset]
116
+ if isinstance(self.changelog_recurrence, Unset):
117
+ changelog_recurrence = UNSET
118
+ else:
119
+ changelog_recurrence = self.changelog_recurrence
120
+
121
+ changelog_recurs_next_at: Union[None, Unset, str]
122
+ if isinstance(self.changelog_recurs_next_at, Unset):
123
+ changelog_recurs_next_at = UNSET
124
+ elif isinstance(self.changelog_recurs_next_at, datetime.datetime):
125
+ changelog_recurs_next_at = self.changelog_recurs_next_at.isoformat()
126
+ else:
127
+ changelog_recurs_next_at = self.changelog_recurs_next_at
128
+
129
+ field_dict: Dict[str, Any] = {}
130
+ field_dict.update(self.additional_properties)
131
+ field_dict.update(
132
+ {
133
+ "duid": duid,
134
+ "order": order,
135
+ }
136
+ )
137
+ if drafter_duid is not UNSET:
138
+ field_dict["drafterDuid"] = drafter_duid
139
+ if accessible_by_team is not UNSET:
140
+ field_dict["accessibleByTeam"] = accessible_by_team
141
+ if accessible_by_user_duids is not UNSET:
142
+ field_dict["accessibleByUserDuids"] = accessible_by_user_duids
143
+ if title is not UNSET:
144
+ field_dict["title"] = title
145
+ if abrev is not UNSET:
146
+ field_dict["abrev"] = abrev
147
+ if description is not UNSET:
148
+ field_dict["description"] = description
149
+ if icon_kind is not UNSET:
150
+ field_dict["iconKind"] = icon_kind
151
+ if icon_name_or_emoji is not UNSET:
152
+ field_dict["iconNameOrEmoji"] = icon_name_or_emoji
153
+ if color_hex is not UNSET:
154
+ field_dict["colorHex"] = color_hex
155
+ if sprint_mode is not UNSET:
156
+ field_dict["sprintMode"] = sprint_mode
157
+ if sprint_replicate_on_rollover is not UNSET:
158
+ field_dict["sprintReplicateOnRollover"] = sprint_replicate_on_rollover
159
+ if sprint_name_fmt is not UNSET:
160
+ field_dict["sprintNameFmt"] = sprint_name_fmt
161
+ if standup_recurrence is not UNSET:
162
+ field_dict["standupRecurrence"] = standup_recurrence
163
+ if standup_recurs_next_at is not UNSET:
164
+ field_dict["standupRecursNextAt"] = standup_recurs_next_at
165
+ if changelog_recurrence is not UNSET:
166
+ field_dict["changelogRecurrence"] = changelog_recurrence
167
+ if changelog_recurs_next_at is not UNSET:
168
+ field_dict["changelogRecursNextAt"] = changelog_recurs_next_at
169
+
170
+ return field_dict
171
+
172
+ @classmethod
173
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
174
+ d = src_dict.copy()
175
+ duid = d.pop("duid")
176
+
177
+ order = d.pop("order")
178
+
179
+ def _parse_drafter_duid(data: object) -> Union[None, Unset, str]:
180
+ if data is None:
181
+ return data
182
+ if isinstance(data, Unset):
183
+ return data
184
+ return cast(Union[None, Unset, str], data)
185
+
186
+ drafter_duid = _parse_drafter_duid(d.pop("drafterDuid", UNSET))
187
+
188
+ accessible_by_team = d.pop("accessibleByTeam", UNSET)
189
+
190
+ accessible_by_user_duids = cast(List[str], d.pop("accessibleByUserDuids", UNSET))
191
+
192
+ title = d.pop("title", UNSET)
193
+
194
+ abrev = d.pop("abrev", UNSET)
195
+
196
+ description = d.pop("description", UNSET)
197
+
198
+ _icon_kind = d.pop("iconKind", UNSET)
199
+ icon_kind: Union[Unset, IconKind]
200
+ if isinstance(_icon_kind, Unset):
201
+ icon_kind = UNSET
202
+ else:
203
+ icon_kind = IconKind(_icon_kind)
204
+
205
+ icon_name_or_emoji = d.pop("iconNameOrEmoji", UNSET)
206
+
207
+ color_hex = d.pop("colorHex", UNSET)
208
+
209
+ _sprint_mode = d.pop("sprintMode", UNSET)
210
+ sprint_mode: Union[Unset, SprintMode]
211
+ if isinstance(_sprint_mode, Unset):
212
+ sprint_mode = UNSET
213
+ else:
214
+ sprint_mode = SprintMode(_sprint_mode)
215
+
216
+ sprint_replicate_on_rollover = d.pop("sprintReplicateOnRollover", UNSET)
217
+
218
+ sprint_name_fmt = d.pop("sprintNameFmt", UNSET)
219
+
220
+ def _parse_standup_recurrence(data: object) -> Union[Any, None, Unset]:
221
+ if data is None:
222
+ return data
223
+ if isinstance(data, Unset):
224
+ return data
225
+ return cast(Union[Any, None, Unset], data)
226
+
227
+ standup_recurrence = _parse_standup_recurrence(d.pop("standupRecurrence", UNSET))
228
+
229
+ def _parse_standup_recurs_next_at(data: object) -> Union[None, Unset, datetime.datetime]:
230
+ if data is None:
231
+ return data
232
+ if isinstance(data, Unset):
233
+ return data
234
+ try:
235
+ if not isinstance(data, str):
236
+ raise TypeError()
237
+ standup_recurs_next_at_type_0 = isoparse(data)
238
+
239
+ return standup_recurs_next_at_type_0
240
+ except: # noqa: E722
241
+ pass
242
+ return cast(Union[None, Unset, datetime.datetime], data)
243
+
244
+ standup_recurs_next_at = _parse_standup_recurs_next_at(d.pop("standupRecursNextAt", UNSET))
245
+
246
+ def _parse_changelog_recurrence(data: object) -> Union[Any, None, Unset]:
247
+ if data is None:
248
+ return data
249
+ if isinstance(data, Unset):
250
+ return data
251
+ return cast(Union[Any, None, Unset], data)
252
+
253
+ changelog_recurrence = _parse_changelog_recurrence(d.pop("changelogRecurrence", UNSET))
254
+
255
+ def _parse_changelog_recurs_next_at(data: object) -> Union[None, Unset, datetime.datetime]:
256
+ if data is None:
257
+ return data
258
+ if isinstance(data, Unset):
259
+ return data
260
+ try:
261
+ if not isinstance(data, str):
262
+ raise TypeError()
263
+ changelog_recurs_next_at_type_0 = isoparse(data)
264
+
265
+ return changelog_recurs_next_at_type_0
266
+ except: # noqa: E722
267
+ pass
268
+ return cast(Union[None, Unset, datetime.datetime], data)
269
+
270
+ changelog_recurs_next_at = _parse_changelog_recurs_next_at(d.pop("changelogRecursNextAt", UNSET))
271
+
272
+ space_create = cls(
273
+ duid=duid,
274
+ order=order,
275
+ drafter_duid=drafter_duid,
276
+ accessible_by_team=accessible_by_team,
277
+ accessible_by_user_duids=accessible_by_user_duids,
278
+ title=title,
279
+ abrev=abrev,
280
+ description=description,
281
+ icon_kind=icon_kind,
282
+ icon_name_or_emoji=icon_name_or_emoji,
283
+ color_hex=color_hex,
284
+ sprint_mode=sprint_mode,
285
+ sprint_replicate_on_rollover=sprint_replicate_on_rollover,
286
+ sprint_name_fmt=sprint_name_fmt,
287
+ standup_recurrence=standup_recurrence,
288
+ standup_recurs_next_at=standup_recurs_next_at,
289
+ changelog_recurrence=changelog_recurrence,
290
+ changelog_recurs_next_at=changelog_recurs_next_at,
291
+ )
292
+
293
+ space_create.additional_properties = d
294
+ return space_create
295
+
296
+ @property
297
+ def additional_keys(self) -> List[str]:
298
+ return list(self.additional_properties.keys())
299
+
300
+ def __getitem__(self, key: str) -> Any:
301
+ return self.additional_properties[key]
302
+
303
+ def __setitem__(self, key: str, value: Any) -> None:
304
+ self.additional_properties[key] = value
305
+
306
+ def __delitem__(self, key: str) -> None:
307
+ del self.additional_properties[key]
308
+
309
+ def __contains__(self, key: str) -> bool:
310
+ return key in self.additional_properties
@@ -0,0 +1,10 @@
1
+ from enum import Enum
2
+
3
+
4
+ class SpaceKind(str, Enum):
5
+ OTHER = "Other"
6
+ PERSONAL = "Personal"
7
+ WORKSPACE = "Workspace"
8
+
9
+ def __str__(self) -> str:
10
+ return str(self.value)