dart-tools 0.6.11__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 (257) hide show
  1. dart/__init__.py +20 -0
  2. dart/dart.py +1144 -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 +372 -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 +373 -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 +208 -0
  73. dart/generated/models/chart_aggregation.py +10 -0
  74. dart/generated/models/chart_type.py +14 -0
  75. dart/generated/models/comment.py +207 -0
  76. dart/generated/models/comment_create.py +146 -0
  77. dart/generated/models/comment_reaction.py +84 -0
  78. dart/generated/models/comment_reaction_create.py +82 -0
  79. dart/generated/models/comment_reaction_update.py +87 -0
  80. dart/generated/models/comment_update.py +148 -0
  81. dart/generated/models/dartboard.py +280 -0
  82. dart/generated/models/dartboard_create.py +285 -0
  83. dart/generated/models/dartboard_kind.py +12 -0
  84. dart/generated/models/dartboard_update.py +287 -0
  85. dart/generated/models/dartboards_list_kind.py +12 -0
  86. dart/generated/models/dashboard.py +185 -0
  87. dart/generated/models/dashboard_create.py +171 -0
  88. dart/generated/models/dashboard_update.py +173 -0
  89. dart/generated/models/discord_integration.py +72 -0
  90. dart/generated/models/doc.py +243 -0
  91. dart/generated/models/doc_create.py +295 -0
  92. dart/generated/models/doc_source_type.py +13 -0
  93. dart/generated/models/doc_update.py +295 -0
  94. dart/generated/models/docs_list_o_item.py +11 -0
  95. dart/generated/models/entity_name.py +22 -0
  96. dart/generated/models/event.py +420 -0
  97. dart/generated/models/event_actor.py +19 -0
  98. dart/generated/models/event_create.py +158 -0
  99. dart/generated/models/event_kind.py +88 -0
  100. dart/generated/models/event_subscription.py +74 -0
  101. dart/generated/models/event_subscription_update.py +173 -0
  102. dart/generated/models/filter_applicability.py +22 -0
  103. dart/generated/models/filter_assignee.py +116 -0
  104. dart/generated/models/filter_connector.py +9 -0
  105. dart/generated/models/filter_group.py +112 -0
  106. dart/generated/models/filter_search.py +82 -0
  107. dart/generated/models/filter_set.py +116 -0
  108. dart/generated/models/folder.py +150 -0
  109. dart/generated/models/folder_create.py +150 -0
  110. dart/generated/models/folder_kind.py +10 -0
  111. dart/generated/models/folder_update.py +152 -0
  112. dart/generated/models/folders_list_kind.py +10 -0
  113. dart/generated/models/form.py +147 -0
  114. dart/generated/models/form_create.py +141 -0
  115. dart/generated/models/form_field.py +144 -0
  116. dart/generated/models/form_field_create.py +129 -0
  117. dart/generated/models/form_field_update.py +132 -0
  118. dart/generated/models/form_update.py +142 -0
  119. dart/generated/models/github_integration.py +163 -0
  120. dart/generated/models/github_integration_tenant_extension_status.py +11 -0
  121. dart/generated/models/google_data.py +94 -0
  122. dart/generated/models/icon_kind.py +10 -0
  123. dart/generated/models/layout.py +167 -0
  124. dart/generated/models/layout_config.py +70 -0
  125. dart/generated/models/layout_create.py +130 -0
  126. dart/generated/models/layout_kind.py +11 -0
  127. dart/generated/models/layout_kind_config_map.py +56 -0
  128. dart/generated/models/layout_update.py +130 -0
  129. dart/generated/models/line_chart_adtl.py +72 -0
  130. dart/generated/models/models_response.py +671 -0
  131. dart/generated/models/notification.py +120 -0
  132. dart/generated/models/notification_update.py +100 -0
  133. dart/generated/models/notion_integration.py +90 -0
  134. dart/generated/models/notion_integration_tenant_extension_status.py +10 -0
  135. dart/generated/models/number_chart_adtl.py +77 -0
  136. dart/generated/models/operation.py +874 -0
  137. dart/generated/models/operation_kind.py +12 -0
  138. dart/generated/models/operation_model_kind.py +36 -0
  139. dart/generated/models/option.py +118 -0
  140. dart/generated/models/option_create.py +105 -0
  141. dart/generated/models/option_update.py +107 -0
  142. dart/generated/models/paginated_attachment_list.py +122 -0
  143. dart/generated/models/paginated_comment_list.py +122 -0
  144. dart/generated/models/paginated_comment_reaction_list.py +122 -0
  145. dart/generated/models/paginated_dartboard_list.py +122 -0
  146. dart/generated/models/paginated_dashboard_list.py +122 -0
  147. dart/generated/models/paginated_doc_list.py +122 -0
  148. dart/generated/models/paginated_folder_list.py +122 -0
  149. dart/generated/models/paginated_form_field_list.py +122 -0
  150. dart/generated/models/paginated_form_list.py +122 -0
  151. dart/generated/models/paginated_layout_list.py +122 -0
  152. dart/generated/models/paginated_option_list.py +122 -0
  153. dart/generated/models/paginated_property_list.py +122 -0
  154. dart/generated/models/paginated_relationship_kind_list.py +122 -0
  155. dart/generated/models/paginated_relationship_list.py +122 -0
  156. dart/generated/models/paginated_space_list.py +122 -0
  157. dart/generated/models/paginated_status_list.py +122 -0
  158. dart/generated/models/paginated_task_doc_relationship_list.py +122 -0
  159. dart/generated/models/paginated_task_kind_list.py +122 -0
  160. dart/generated/models/paginated_task_link_list.py +122 -0
  161. dart/generated/models/paginated_task_list.py +122 -0
  162. dart/generated/models/paginated_tenant_list.py +122 -0
  163. dart/generated/models/paginated_user_dartboard_layout_list.py +122 -0
  164. dart/generated/models/paginated_user_list.py +122 -0
  165. dart/generated/models/paginated_view_list.py +122 -0
  166. dart/generated/models/paginated_webhook_list.py +122 -0
  167. dart/generated/models/pie_chart_adtl.py +69 -0
  168. dart/generated/models/pie_chart_display_metric.py +9 -0
  169. dart/generated/models/priority.py +11 -0
  170. dart/generated/models/properties_list_kind.py +32 -0
  171. dart/generated/models/property_.py +153 -0
  172. dart/generated/models/property_create.py +137 -0
  173. dart/generated/models/property_kind.py +32 -0
  174. dart/generated/models/property_update.py +146 -0
  175. dart/generated/models/relationship.py +74 -0
  176. dart/generated/models/relationship_create.py +93 -0
  177. dart/generated/models/relationship_kind.py +123 -0
  178. dart/generated/models/relationship_kind_create.py +117 -0
  179. dart/generated/models/relationship_kind_kind.py +12 -0
  180. dart/generated/models/relationship_kind_update.py +119 -0
  181. dart/generated/models/report_kind.py +9 -0
  182. dart/generated/models/request_body.py +80 -0
  183. dart/generated/models/response_body.py +72 -0
  184. dart/generated/models/saml_config.py +77 -0
  185. dart/generated/models/saml_config_tenant_extension_status.py +9 -0
  186. dart/generated/models/slack_integration.py +90 -0
  187. dart/generated/models/slack_integration_tenant_extension_status.py +10 -0
  188. dart/generated/models/sort.py +66 -0
  189. dart/generated/models/space.py +325 -0
  190. dart/generated/models/space_create.py +360 -0
  191. dart/generated/models/space_kind.py +10 -0
  192. dart/generated/models/space_update.py +361 -0
  193. dart/generated/models/sprint_mode.py +9 -0
  194. dart/generated/models/status.py +141 -0
  195. dart/generated/models/status_create.py +125 -0
  196. dart/generated/models/status_kind.py +12 -0
  197. dart/generated/models/status_update.py +135 -0
  198. dart/generated/models/statuses_list_kind.py +12 -0
  199. dart/generated/models/subscription.py +9 -0
  200. dart/generated/models/subtask_display_mode.py +10 -0
  201. dart/generated/models/summary_statistic_kind.py +14 -0
  202. dart/generated/models/table_chart_adtl.py +98 -0
  203. dart/generated/models/task.py +531 -0
  204. dart/generated/models/task_create.py +585 -0
  205. dart/generated/models/task_detail_mode.py +10 -0
  206. dart/generated/models/task_doc_relationship.py +96 -0
  207. dart/generated/models/task_doc_relationship_create.py +74 -0
  208. dart/generated/models/task_kind.py +149 -0
  209. dart/generated/models/task_kind_create.py +144 -0
  210. dart/generated/models/task_kind_kind.py +9 -0
  211. dart/generated/models/task_kind_update.py +153 -0
  212. dart/generated/models/task_kinds_list_kind.py +9 -0
  213. dart/generated/models/task_link.py +131 -0
  214. dart/generated/models/task_link_create.py +152 -0
  215. dart/generated/models/task_link_kind.py +19 -0
  216. dart/generated/models/task_link_update.py +155 -0
  217. dart/generated/models/task_notion_document.py +196 -0
  218. dart/generated/models/task_notion_document_block_children_map_type_0.py +43 -0
  219. dart/generated/models/task_notion_document_block_map_type_0.py +43 -0
  220. dart/generated/models/task_notion_document_page_map_type_0.py +43 -0
  221. dart/generated/models/task_properties.py +43 -0
  222. dart/generated/models/task_source_type.py +31 -0
  223. dart/generated/models/task_update.py +585 -0
  224. dart/generated/models/tenant.py +378 -0
  225. dart/generated/models/tenant_update.py +157 -0
  226. dart/generated/models/theme.py +10 -0
  227. dart/generated/models/transaction.py +156 -0
  228. dart/generated/models/transaction_kind.py +74 -0
  229. dart/generated/models/transaction_response.py +96 -0
  230. dart/generated/models/user.py +245 -0
  231. dart/generated/models/user_dartboard_layout.py +66 -0
  232. dart/generated/models/user_dartboard_layout_create.py +74 -0
  233. dart/generated/models/user_data_entity_retrieve_entity_kind.py +32 -0
  234. dart/generated/models/user_role.py +12 -0
  235. dart/generated/models/user_status.py +12 -0
  236. dart/generated/models/user_update.py +210 -0
  237. dart/generated/models/validation_error_response.py +64 -0
  238. dart/generated/models/validation_error_response_items.py +43 -0
  239. dart/generated/models/view.py +215 -0
  240. dart/generated/models/view_create.py +213 -0
  241. dart/generated/models/view_kind.py +11 -0
  242. dart/generated/models/view_update.py +215 -0
  243. dart/generated/models/webhook.py +96 -0
  244. dart/generated/models/webhook_create.py +77 -0
  245. dart/generated/models/webhook_update.py +78 -0
  246. dart/generated/models/zapier_integration.py +66 -0
  247. dart/generated/py.typed +1 -0
  248. dart/generated/types.py +45 -0
  249. dart/order_manager.py +62 -0
  250. dart/webhook.py +21 -0
  251. dart_tools-0.6.11.dist-info/LICENSE +21 -0
  252. dart_tools-0.6.11.dist-info/METADATA +221 -0
  253. dart_tools-0.6.11.dist-info/RECORD +257 -0
  254. dart_tools-0.6.11.dist-info/WHEEL +5 -0
  255. dart_tools-0.6.11.dist-info/dist/dart-tools-0.3.3.tar.gz +0 -0
  256. dart_tools-0.6.11.dist-info/entry_points.txt +2 -0
  257. dart_tools-0.6.11.dist-info/top_level.txt +1 -0
@@ -0,0 +1,325 @@
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
+ rollover_recurrence (Union[Any, None]):
45
+ rollover_recurs_next_at (Union[None, datetime.datetime]):
46
+ updated_by_client_duid (Union[None, Unset, str]):
47
+ """
48
+
49
+ duid: str
50
+ drafter_duid: Union[None, str]
51
+ kind: SpaceKind
52
+ accessible_by_team: bool
53
+ accessible_by_user_duids: List[str]
54
+ order: str
55
+ title: str
56
+ abrev: str
57
+ description: str
58
+ icon_kind: IconKind
59
+ icon_name_or_emoji: str
60
+ color_hex: str
61
+ sprint_mode: SprintMode
62
+ sprint_replicate_on_rollover: bool
63
+ sprint_name_fmt: str
64
+ standup_recurrence: Union[Any, None]
65
+ standup_recurs_next_at: Union[None, datetime.datetime]
66
+ changelog_recurrence: Union[Any, None]
67
+ changelog_recurs_next_at: Union[None, datetime.datetime]
68
+ rollover_recurrence: Union[Any, None]
69
+ rollover_recurs_next_at: Union[None, datetime.datetime]
70
+ updated_by_client_duid: Union[None, Unset, str] = UNSET
71
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
72
+
73
+ def to_dict(self) -> Dict[str, Any]:
74
+ duid = self.duid
75
+
76
+ drafter_duid: Union[None, str]
77
+ drafter_duid = self.drafter_duid
78
+
79
+ kind = self.kind.value
80
+
81
+ accessible_by_team = self.accessible_by_team
82
+
83
+ accessible_by_user_duids = self.accessible_by_user_duids
84
+
85
+ order = self.order
86
+
87
+ title = self.title
88
+
89
+ abrev = self.abrev
90
+
91
+ description = self.description
92
+
93
+ icon_kind = self.icon_kind.value
94
+
95
+ icon_name_or_emoji = self.icon_name_or_emoji
96
+
97
+ color_hex = self.color_hex
98
+
99
+ sprint_mode = self.sprint_mode.value
100
+
101
+ sprint_replicate_on_rollover = self.sprint_replicate_on_rollover
102
+
103
+ sprint_name_fmt = self.sprint_name_fmt
104
+
105
+ standup_recurrence: Union[Any, None]
106
+ standup_recurrence = self.standup_recurrence
107
+
108
+ standup_recurs_next_at: Union[None, str]
109
+ if isinstance(self.standup_recurs_next_at, datetime.datetime):
110
+ standup_recurs_next_at = self.standup_recurs_next_at.isoformat()
111
+ else:
112
+ standup_recurs_next_at = self.standup_recurs_next_at
113
+
114
+ changelog_recurrence: Union[Any, None]
115
+ changelog_recurrence = self.changelog_recurrence
116
+
117
+ changelog_recurs_next_at: Union[None, str]
118
+ if isinstance(self.changelog_recurs_next_at, datetime.datetime):
119
+ changelog_recurs_next_at = self.changelog_recurs_next_at.isoformat()
120
+ else:
121
+ changelog_recurs_next_at = self.changelog_recurs_next_at
122
+
123
+ rollover_recurrence: Union[Any, None]
124
+ rollover_recurrence = self.rollover_recurrence
125
+
126
+ rollover_recurs_next_at: Union[None, str]
127
+ if isinstance(self.rollover_recurs_next_at, datetime.datetime):
128
+ rollover_recurs_next_at = self.rollover_recurs_next_at.isoformat()
129
+ else:
130
+ rollover_recurs_next_at = self.rollover_recurs_next_at
131
+
132
+ updated_by_client_duid: Union[None, Unset, str]
133
+ if isinstance(self.updated_by_client_duid, Unset):
134
+ updated_by_client_duid = UNSET
135
+ else:
136
+ updated_by_client_duid = self.updated_by_client_duid
137
+
138
+ field_dict: Dict[str, Any] = {}
139
+ field_dict.update(self.additional_properties)
140
+ field_dict.update(
141
+ {
142
+ "duid": duid,
143
+ "drafterDuid": drafter_duid,
144
+ "kind": kind,
145
+ "accessibleByTeam": accessible_by_team,
146
+ "accessibleByUserDuids": accessible_by_user_duids,
147
+ "order": order,
148
+ "title": title,
149
+ "abrev": abrev,
150
+ "description": description,
151
+ "iconKind": icon_kind,
152
+ "iconNameOrEmoji": icon_name_or_emoji,
153
+ "colorHex": color_hex,
154
+ "sprintMode": sprint_mode,
155
+ "sprintReplicateOnRollover": sprint_replicate_on_rollover,
156
+ "sprintNameFmt": sprint_name_fmt,
157
+ "standupRecurrence": standup_recurrence,
158
+ "standupRecursNextAt": standup_recurs_next_at,
159
+ "changelogRecurrence": changelog_recurrence,
160
+ "changelogRecursNextAt": changelog_recurs_next_at,
161
+ "rolloverRecurrence": rollover_recurrence,
162
+ "rolloverRecursNextAt": rollover_recurs_next_at,
163
+ }
164
+ )
165
+ if updated_by_client_duid is not UNSET:
166
+ field_dict["updatedByClientDuid"] = updated_by_client_duid
167
+
168
+ return field_dict
169
+
170
+ @classmethod
171
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
172
+ d = src_dict.copy()
173
+ duid = d.pop("duid")
174
+
175
+ def _parse_drafter_duid(data: object) -> Union[None, str]:
176
+ if data is None:
177
+ return data
178
+ return cast(Union[None, str], data)
179
+
180
+ drafter_duid = _parse_drafter_duid(d.pop("drafterDuid"))
181
+
182
+ kind = SpaceKind(d.pop("kind"))
183
+
184
+ accessible_by_team = d.pop("accessibleByTeam")
185
+
186
+ accessible_by_user_duids = cast(List[str], d.pop("accessibleByUserDuids"))
187
+
188
+ order = d.pop("order")
189
+
190
+ title = d.pop("title")
191
+
192
+ abrev = d.pop("abrev")
193
+
194
+ description = d.pop("description")
195
+
196
+ icon_kind = IconKind(d.pop("iconKind"))
197
+
198
+ icon_name_or_emoji = d.pop("iconNameOrEmoji")
199
+
200
+ color_hex = d.pop("colorHex")
201
+
202
+ sprint_mode = SprintMode(d.pop("sprintMode"))
203
+
204
+ sprint_replicate_on_rollover = d.pop("sprintReplicateOnRollover")
205
+
206
+ sprint_name_fmt = d.pop("sprintNameFmt")
207
+
208
+ def _parse_standup_recurrence(data: object) -> Union[Any, None]:
209
+ if data is None:
210
+ return data
211
+ return cast(Union[Any, None], data)
212
+
213
+ standup_recurrence = _parse_standup_recurrence(d.pop("standupRecurrence"))
214
+
215
+ def _parse_standup_recurs_next_at(data: object) -> Union[None, datetime.datetime]:
216
+ if data is None:
217
+ return data
218
+ try:
219
+ if not isinstance(data, str):
220
+ raise TypeError()
221
+ standup_recurs_next_at_type_0 = isoparse(data)
222
+
223
+ return standup_recurs_next_at_type_0
224
+ except: # noqa: E722
225
+ pass
226
+ return cast(Union[None, datetime.datetime], data)
227
+
228
+ standup_recurs_next_at = _parse_standup_recurs_next_at(d.pop("standupRecursNextAt"))
229
+
230
+ def _parse_changelog_recurrence(data: object) -> Union[Any, None]:
231
+ if data is None:
232
+ return data
233
+ return cast(Union[Any, None], data)
234
+
235
+ changelog_recurrence = _parse_changelog_recurrence(d.pop("changelogRecurrence"))
236
+
237
+ def _parse_changelog_recurs_next_at(data: object) -> Union[None, datetime.datetime]:
238
+ if data is None:
239
+ return data
240
+ try:
241
+ if not isinstance(data, str):
242
+ raise TypeError()
243
+ changelog_recurs_next_at_type_0 = isoparse(data)
244
+
245
+ return changelog_recurs_next_at_type_0
246
+ except: # noqa: E722
247
+ pass
248
+ return cast(Union[None, datetime.datetime], data)
249
+
250
+ changelog_recurs_next_at = _parse_changelog_recurs_next_at(d.pop("changelogRecursNextAt"))
251
+
252
+ def _parse_rollover_recurrence(data: object) -> Union[Any, None]:
253
+ if data is None:
254
+ return data
255
+ return cast(Union[Any, None], data)
256
+
257
+ rollover_recurrence = _parse_rollover_recurrence(d.pop("rolloverRecurrence"))
258
+
259
+ def _parse_rollover_recurs_next_at(data: object) -> Union[None, datetime.datetime]:
260
+ if data is None:
261
+ return data
262
+ try:
263
+ if not isinstance(data, str):
264
+ raise TypeError()
265
+ rollover_recurs_next_at_type_0 = isoparse(data)
266
+
267
+ return rollover_recurs_next_at_type_0
268
+ except: # noqa: E722
269
+ pass
270
+ return cast(Union[None, datetime.datetime], data)
271
+
272
+ rollover_recurs_next_at = _parse_rollover_recurs_next_at(d.pop("rolloverRecursNextAt"))
273
+
274
+ def _parse_updated_by_client_duid(data: object) -> Union[None, Unset, str]:
275
+ if data is None:
276
+ return data
277
+ if isinstance(data, Unset):
278
+ return data
279
+ return cast(Union[None, Unset, str], data)
280
+
281
+ updated_by_client_duid = _parse_updated_by_client_duid(d.pop("updatedByClientDuid", UNSET))
282
+
283
+ space = cls(
284
+ duid=duid,
285
+ drafter_duid=drafter_duid,
286
+ kind=kind,
287
+ accessible_by_team=accessible_by_team,
288
+ accessible_by_user_duids=accessible_by_user_duids,
289
+ order=order,
290
+ title=title,
291
+ abrev=abrev,
292
+ description=description,
293
+ icon_kind=icon_kind,
294
+ icon_name_or_emoji=icon_name_or_emoji,
295
+ color_hex=color_hex,
296
+ sprint_mode=sprint_mode,
297
+ sprint_replicate_on_rollover=sprint_replicate_on_rollover,
298
+ sprint_name_fmt=sprint_name_fmt,
299
+ standup_recurrence=standup_recurrence,
300
+ standup_recurs_next_at=standup_recurs_next_at,
301
+ changelog_recurrence=changelog_recurrence,
302
+ changelog_recurs_next_at=changelog_recurs_next_at,
303
+ rollover_recurrence=rollover_recurrence,
304
+ rollover_recurs_next_at=rollover_recurs_next_at,
305
+ updated_by_client_duid=updated_by_client_duid,
306
+ )
307
+
308
+ space.additional_properties = d
309
+ return space
310
+
311
+ @property
312
+ def additional_keys(self) -> List[str]:
313
+ return list(self.additional_properties.keys())
314
+
315
+ def __getitem__(self, key: str) -> Any:
316
+ return self.additional_properties[key]
317
+
318
+ def __setitem__(self, key: str, value: Any) -> None:
319
+ self.additional_properties[key] = value
320
+
321
+ def __delitem__(self, key: str) -> None:
322
+ del self.additional_properties[key]
323
+
324
+ def __contains__(self, key: str) -> bool:
325
+ return key in self.additional_properties
@@ -0,0 +1,360 @@
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
+ rollover_recurrence (Union[Any, None, Unset]):
41
+ rollover_recurs_next_at (Union[None, Unset, datetime.datetime]):
42
+ """
43
+
44
+ duid: str
45
+ order: str
46
+ drafter_duid: Union[None, Unset, str] = UNSET
47
+ accessible_by_team: Union[Unset, bool] = UNSET
48
+ accessible_by_user_duids: Union[Unset, List[str]] = UNSET
49
+ title: Union[Unset, str] = UNSET
50
+ abrev: Union[Unset, str] = UNSET
51
+ description: Union[Unset, str] = UNSET
52
+ icon_kind: Union[Unset, IconKind] = UNSET
53
+ icon_name_or_emoji: Union[Unset, str] = UNSET
54
+ color_hex: Union[Unset, str] = UNSET
55
+ sprint_mode: Union[Unset, SprintMode] = UNSET
56
+ sprint_replicate_on_rollover: Union[Unset, bool] = UNSET
57
+ sprint_name_fmt: Union[Unset, str] = UNSET
58
+ standup_recurrence: Union[Any, None, Unset] = UNSET
59
+ standup_recurs_next_at: Union[None, Unset, datetime.datetime] = UNSET
60
+ changelog_recurrence: Union[Any, None, Unset] = UNSET
61
+ changelog_recurs_next_at: Union[None, Unset, datetime.datetime] = UNSET
62
+ rollover_recurrence: Union[Any, None, Unset] = UNSET
63
+ rollover_recurs_next_at: Union[None, Unset, datetime.datetime] = UNSET
64
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
65
+
66
+ def to_dict(self) -> Dict[str, Any]:
67
+ duid = self.duid
68
+
69
+ order = self.order
70
+
71
+ drafter_duid: Union[None, Unset, str]
72
+ if isinstance(self.drafter_duid, Unset):
73
+ drafter_duid = UNSET
74
+ else:
75
+ drafter_duid = self.drafter_duid
76
+
77
+ accessible_by_team = self.accessible_by_team
78
+
79
+ accessible_by_user_duids: Union[Unset, List[str]] = UNSET
80
+ if not isinstance(self.accessible_by_user_duids, Unset):
81
+ accessible_by_user_duids = self.accessible_by_user_duids
82
+
83
+ title = self.title
84
+
85
+ abrev = self.abrev
86
+
87
+ description = self.description
88
+
89
+ icon_kind: Union[Unset, str] = UNSET
90
+ if not isinstance(self.icon_kind, Unset):
91
+ icon_kind = self.icon_kind.value
92
+
93
+ icon_name_or_emoji = self.icon_name_or_emoji
94
+
95
+ color_hex = self.color_hex
96
+
97
+ sprint_mode: Union[Unset, str] = UNSET
98
+ if not isinstance(self.sprint_mode, Unset):
99
+ sprint_mode = self.sprint_mode.value
100
+
101
+ sprint_replicate_on_rollover = self.sprint_replicate_on_rollover
102
+
103
+ sprint_name_fmt = self.sprint_name_fmt
104
+
105
+ standup_recurrence: Union[Any, None, Unset]
106
+ if isinstance(self.standup_recurrence, Unset):
107
+ standup_recurrence = UNSET
108
+ else:
109
+ standup_recurrence = self.standup_recurrence
110
+
111
+ standup_recurs_next_at: Union[None, Unset, str]
112
+ if isinstance(self.standup_recurs_next_at, Unset):
113
+ standup_recurs_next_at = UNSET
114
+ elif isinstance(self.standup_recurs_next_at, datetime.datetime):
115
+ standup_recurs_next_at = self.standup_recurs_next_at.isoformat()
116
+ else:
117
+ standup_recurs_next_at = self.standup_recurs_next_at
118
+
119
+ changelog_recurrence: Union[Any, None, Unset]
120
+ if isinstance(self.changelog_recurrence, Unset):
121
+ changelog_recurrence = UNSET
122
+ else:
123
+ changelog_recurrence = self.changelog_recurrence
124
+
125
+ changelog_recurs_next_at: Union[None, Unset, str]
126
+ if isinstance(self.changelog_recurs_next_at, Unset):
127
+ changelog_recurs_next_at = UNSET
128
+ elif isinstance(self.changelog_recurs_next_at, datetime.datetime):
129
+ changelog_recurs_next_at = self.changelog_recurs_next_at.isoformat()
130
+ else:
131
+ changelog_recurs_next_at = self.changelog_recurs_next_at
132
+
133
+ rollover_recurrence: Union[Any, None, Unset]
134
+ if isinstance(self.rollover_recurrence, Unset):
135
+ rollover_recurrence = UNSET
136
+ else:
137
+ rollover_recurrence = self.rollover_recurrence
138
+
139
+ rollover_recurs_next_at: Union[None, Unset, str]
140
+ if isinstance(self.rollover_recurs_next_at, Unset):
141
+ rollover_recurs_next_at = UNSET
142
+ elif isinstance(self.rollover_recurs_next_at, datetime.datetime):
143
+ rollover_recurs_next_at = self.rollover_recurs_next_at.isoformat()
144
+ else:
145
+ rollover_recurs_next_at = self.rollover_recurs_next_at
146
+
147
+ field_dict: Dict[str, Any] = {}
148
+ field_dict.update(self.additional_properties)
149
+ field_dict.update(
150
+ {
151
+ "duid": duid,
152
+ "order": order,
153
+ }
154
+ )
155
+ if drafter_duid is not UNSET:
156
+ field_dict["drafterDuid"] = drafter_duid
157
+ if accessible_by_team is not UNSET:
158
+ field_dict["accessibleByTeam"] = accessible_by_team
159
+ if accessible_by_user_duids is not UNSET:
160
+ field_dict["accessibleByUserDuids"] = accessible_by_user_duids
161
+ if title is not UNSET:
162
+ field_dict["title"] = title
163
+ if abrev is not UNSET:
164
+ field_dict["abrev"] = abrev
165
+ if description is not UNSET:
166
+ field_dict["description"] = description
167
+ if icon_kind is not UNSET:
168
+ field_dict["iconKind"] = icon_kind
169
+ if icon_name_or_emoji is not UNSET:
170
+ field_dict["iconNameOrEmoji"] = icon_name_or_emoji
171
+ if color_hex is not UNSET:
172
+ field_dict["colorHex"] = color_hex
173
+ if sprint_mode is not UNSET:
174
+ field_dict["sprintMode"] = sprint_mode
175
+ if sprint_replicate_on_rollover is not UNSET:
176
+ field_dict["sprintReplicateOnRollover"] = sprint_replicate_on_rollover
177
+ if sprint_name_fmt is not UNSET:
178
+ field_dict["sprintNameFmt"] = sprint_name_fmt
179
+ if standup_recurrence is not UNSET:
180
+ field_dict["standupRecurrence"] = standup_recurrence
181
+ if standup_recurs_next_at is not UNSET:
182
+ field_dict["standupRecursNextAt"] = standup_recurs_next_at
183
+ if changelog_recurrence is not UNSET:
184
+ field_dict["changelogRecurrence"] = changelog_recurrence
185
+ if changelog_recurs_next_at is not UNSET:
186
+ field_dict["changelogRecursNextAt"] = changelog_recurs_next_at
187
+ if rollover_recurrence is not UNSET:
188
+ field_dict["rolloverRecurrence"] = rollover_recurrence
189
+ if rollover_recurs_next_at is not UNSET:
190
+ field_dict["rolloverRecursNextAt"] = rollover_recurs_next_at
191
+
192
+ return field_dict
193
+
194
+ @classmethod
195
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
196
+ d = src_dict.copy()
197
+ duid = d.pop("duid")
198
+
199
+ order = d.pop("order")
200
+
201
+ def _parse_drafter_duid(data: object) -> Union[None, Unset, str]:
202
+ if data is None:
203
+ return data
204
+ if isinstance(data, Unset):
205
+ return data
206
+ return cast(Union[None, Unset, str], data)
207
+
208
+ drafter_duid = _parse_drafter_duid(d.pop("drafterDuid", UNSET))
209
+
210
+ accessible_by_team = d.pop("accessibleByTeam", UNSET)
211
+
212
+ accessible_by_user_duids = cast(List[str], d.pop("accessibleByUserDuids", UNSET))
213
+
214
+ title = d.pop("title", UNSET)
215
+
216
+ abrev = d.pop("abrev", UNSET)
217
+
218
+ description = d.pop("description", UNSET)
219
+
220
+ _icon_kind = d.pop("iconKind", UNSET)
221
+ icon_kind: Union[Unset, IconKind]
222
+ if isinstance(_icon_kind, Unset):
223
+ icon_kind = UNSET
224
+ else:
225
+ icon_kind = IconKind(_icon_kind)
226
+
227
+ icon_name_or_emoji = d.pop("iconNameOrEmoji", UNSET)
228
+
229
+ color_hex = d.pop("colorHex", UNSET)
230
+
231
+ _sprint_mode = d.pop("sprintMode", UNSET)
232
+ sprint_mode: Union[Unset, SprintMode]
233
+ if isinstance(_sprint_mode, Unset):
234
+ sprint_mode = UNSET
235
+ else:
236
+ sprint_mode = SprintMode(_sprint_mode)
237
+
238
+ sprint_replicate_on_rollover = d.pop("sprintReplicateOnRollover", UNSET)
239
+
240
+ sprint_name_fmt = d.pop("sprintNameFmt", UNSET)
241
+
242
+ def _parse_standup_recurrence(data: object) -> Union[Any, None, Unset]:
243
+ if data is None:
244
+ return data
245
+ if isinstance(data, Unset):
246
+ return data
247
+ return cast(Union[Any, None, Unset], data)
248
+
249
+ standup_recurrence = _parse_standup_recurrence(d.pop("standupRecurrence", UNSET))
250
+
251
+ def _parse_standup_recurs_next_at(data: object) -> Union[None, Unset, datetime.datetime]:
252
+ if data is None:
253
+ return data
254
+ if isinstance(data, Unset):
255
+ return data
256
+ try:
257
+ if not isinstance(data, str):
258
+ raise TypeError()
259
+ standup_recurs_next_at_type_0 = isoparse(data)
260
+
261
+ return standup_recurs_next_at_type_0
262
+ except: # noqa: E722
263
+ pass
264
+ return cast(Union[None, Unset, datetime.datetime], data)
265
+
266
+ standup_recurs_next_at = _parse_standup_recurs_next_at(d.pop("standupRecursNextAt", UNSET))
267
+
268
+ def _parse_changelog_recurrence(data: object) -> Union[Any, None, Unset]:
269
+ if data is None:
270
+ return data
271
+ if isinstance(data, Unset):
272
+ return data
273
+ return cast(Union[Any, None, Unset], data)
274
+
275
+ changelog_recurrence = _parse_changelog_recurrence(d.pop("changelogRecurrence", UNSET))
276
+
277
+ def _parse_changelog_recurs_next_at(data: object) -> Union[None, Unset, datetime.datetime]:
278
+ if data is None:
279
+ return data
280
+ if isinstance(data, Unset):
281
+ return data
282
+ try:
283
+ if not isinstance(data, str):
284
+ raise TypeError()
285
+ changelog_recurs_next_at_type_0 = isoparse(data)
286
+
287
+ return changelog_recurs_next_at_type_0
288
+ except: # noqa: E722
289
+ pass
290
+ return cast(Union[None, Unset, datetime.datetime], data)
291
+
292
+ changelog_recurs_next_at = _parse_changelog_recurs_next_at(d.pop("changelogRecursNextAt", UNSET))
293
+
294
+ def _parse_rollover_recurrence(data: object) -> Union[Any, None, Unset]:
295
+ if data is None:
296
+ return data
297
+ if isinstance(data, Unset):
298
+ return data
299
+ return cast(Union[Any, None, Unset], data)
300
+
301
+ rollover_recurrence = _parse_rollover_recurrence(d.pop("rolloverRecurrence", UNSET))
302
+
303
+ def _parse_rollover_recurs_next_at(data: object) -> Union[None, Unset, datetime.datetime]:
304
+ if data is None:
305
+ return data
306
+ if isinstance(data, Unset):
307
+ return data
308
+ try:
309
+ if not isinstance(data, str):
310
+ raise TypeError()
311
+ rollover_recurs_next_at_type_0 = isoparse(data)
312
+
313
+ return rollover_recurs_next_at_type_0
314
+ except: # noqa: E722
315
+ pass
316
+ return cast(Union[None, Unset, datetime.datetime], data)
317
+
318
+ rollover_recurs_next_at = _parse_rollover_recurs_next_at(d.pop("rolloverRecursNextAt", UNSET))
319
+
320
+ space_create = cls(
321
+ duid=duid,
322
+ order=order,
323
+ drafter_duid=drafter_duid,
324
+ accessible_by_team=accessible_by_team,
325
+ accessible_by_user_duids=accessible_by_user_duids,
326
+ title=title,
327
+ abrev=abrev,
328
+ description=description,
329
+ icon_kind=icon_kind,
330
+ icon_name_or_emoji=icon_name_or_emoji,
331
+ color_hex=color_hex,
332
+ sprint_mode=sprint_mode,
333
+ sprint_replicate_on_rollover=sprint_replicate_on_rollover,
334
+ sprint_name_fmt=sprint_name_fmt,
335
+ standup_recurrence=standup_recurrence,
336
+ standup_recurs_next_at=standup_recurs_next_at,
337
+ changelog_recurrence=changelog_recurrence,
338
+ changelog_recurs_next_at=changelog_recurs_next_at,
339
+ rollover_recurrence=rollover_recurrence,
340
+ rollover_recurs_next_at=rollover_recurs_next_at,
341
+ )
342
+
343
+ space_create.additional_properties = d
344
+ return space_create
345
+
346
+ @property
347
+ def additional_keys(self) -> List[str]:
348
+ return list(self.additional_properties.keys())
349
+
350
+ def __getitem__(self, key: str) -> Any:
351
+ return self.additional_properties[key]
352
+
353
+ def __setitem__(self, key: str, value: Any) -> None:
354
+ self.additional_properties[key] = value
355
+
356
+ def __delitem__(self, key: str) -> None:
357
+ del self.additional_properties[key]
358
+
359
+ def __contains__(self, key: str) -> bool:
360
+ 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)