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,10 @@
1
+ from enum import Enum
2
+
3
+
4
+ class BrainstormState(str, Enum):
5
+ PAUSED = "Paused"
6
+ RUNNING = "Running"
7
+ STOPPED = "Stopped"
8
+
9
+ def __str__(self) -> str:
10
+ return str(self.value)
@@ -0,0 +1,153 @@
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.brainstorm_state import BrainstormState
9
+ from ..types import UNSET, Unset
10
+
11
+ T = TypeVar("T", bound="BrainstormUpdate")
12
+
13
+
14
+ @_attrs_define
15
+ class BrainstormUpdate:
16
+ """
17
+ Attributes:
18
+ duid (str):
19
+ dartboard_duid (Union[Unset, str]):
20
+ subject (Union[Unset, str]):
21
+ ai (Union[Unset, bool]):
22
+ total_session_ms (Union[Unset, int]):
23
+ started_at (Union[Unset, datetime.datetime]):
24
+ state (Union[Unset, BrainstormState]): * `Running` - RUNNING
25
+ * `Paused` - PAUSED
26
+ * `Stopped` - STOPPED
27
+ after_start_ms (Union[Unset, int]):
28
+ created_tasks_duids (Union[Unset, List[str]]):
29
+ """
30
+
31
+ duid: str
32
+ dartboard_duid: Union[Unset, str] = UNSET
33
+ subject: Union[Unset, str] = UNSET
34
+ ai: Union[Unset, bool] = UNSET
35
+ total_session_ms: Union[Unset, int] = UNSET
36
+ started_at: Union[Unset, datetime.datetime] = UNSET
37
+ state: Union[Unset, BrainstormState] = UNSET
38
+ after_start_ms: Union[Unset, int] = UNSET
39
+ created_tasks_duids: Union[Unset, List[str]] = UNSET
40
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
41
+
42
+ def to_dict(self) -> Dict[str, Any]:
43
+ duid = self.duid
44
+
45
+ dartboard_duid = self.dartboard_duid
46
+
47
+ subject = self.subject
48
+
49
+ ai = self.ai
50
+
51
+ total_session_ms = self.total_session_ms
52
+
53
+ started_at: Union[Unset, str] = UNSET
54
+ if not isinstance(self.started_at, Unset):
55
+ started_at = self.started_at.isoformat()
56
+
57
+ state: Union[Unset, str] = UNSET
58
+ if not isinstance(self.state, Unset):
59
+ state = self.state.value
60
+
61
+ after_start_ms = self.after_start_ms
62
+
63
+ created_tasks_duids: Union[Unset, List[str]] = UNSET
64
+ if not isinstance(self.created_tasks_duids, Unset):
65
+ created_tasks_duids = self.created_tasks_duids
66
+
67
+ field_dict: Dict[str, Any] = {}
68
+ field_dict.update(self.additional_properties)
69
+ field_dict.update(
70
+ {
71
+ "duid": duid,
72
+ }
73
+ )
74
+ if dartboard_duid is not UNSET:
75
+ field_dict["dartboardDuid"] = dartboard_duid
76
+ if subject is not UNSET:
77
+ field_dict["subject"] = subject
78
+ if ai is not UNSET:
79
+ field_dict["ai"] = ai
80
+ if total_session_ms is not UNSET:
81
+ field_dict["totalSessionMs"] = total_session_ms
82
+ if started_at is not UNSET:
83
+ field_dict["startedAt"] = started_at
84
+ if state is not UNSET:
85
+ field_dict["state"] = state
86
+ if after_start_ms is not UNSET:
87
+ field_dict["afterStartMs"] = after_start_ms
88
+ if created_tasks_duids is not UNSET:
89
+ field_dict["createdTasksDuids"] = created_tasks_duids
90
+
91
+ return field_dict
92
+
93
+ @classmethod
94
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
95
+ d = src_dict.copy()
96
+ duid = d.pop("duid")
97
+
98
+ dartboard_duid = d.pop("dartboardDuid", UNSET)
99
+
100
+ subject = d.pop("subject", UNSET)
101
+
102
+ ai = d.pop("ai", UNSET)
103
+
104
+ total_session_ms = d.pop("totalSessionMs", UNSET)
105
+
106
+ _started_at = d.pop("startedAt", UNSET)
107
+ started_at: Union[Unset, datetime.datetime]
108
+ if isinstance(_started_at, Unset):
109
+ started_at = UNSET
110
+ else:
111
+ started_at = isoparse(_started_at)
112
+
113
+ _state = d.pop("state", UNSET)
114
+ state: Union[Unset, BrainstormState]
115
+ if isinstance(_state, Unset):
116
+ state = UNSET
117
+ else:
118
+ state = BrainstormState(_state)
119
+
120
+ after_start_ms = d.pop("afterStartMs", UNSET)
121
+
122
+ created_tasks_duids = cast(List[str], d.pop("createdTasksDuids", UNSET))
123
+
124
+ brainstorm_update = cls(
125
+ duid=duid,
126
+ dartboard_duid=dartboard_duid,
127
+ subject=subject,
128
+ ai=ai,
129
+ total_session_ms=total_session_ms,
130
+ started_at=started_at,
131
+ state=state,
132
+ after_start_ms=after_start_ms,
133
+ created_tasks_duids=created_tasks_duids,
134
+ )
135
+
136
+ brainstorm_update.additional_properties = d
137
+ return brainstorm_update
138
+
139
+ @property
140
+ def additional_keys(self) -> List[str]:
141
+ return list(self.additional_properties.keys())
142
+
143
+ def __getitem__(self, key: str) -> Any:
144
+ return self.additional_properties[key]
145
+
146
+ def __setitem__(self, key: str, value: Any) -> None:
147
+ self.additional_properties[key] = value
148
+
149
+ def __delitem__(self, key: str) -> None:
150
+ del self.additional_properties[key]
151
+
152
+ def __contains__(self, key: str) -> bool:
153
+ return key in self.additional_properties
@@ -0,0 +1,103 @@
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
+ T = TypeVar("T", bound="BurnUpChartAdtl")
9
+
10
+
11
+ @_attrs_define
12
+ class BurnUpChartAdtl:
13
+ """
14
+ Attributes:
15
+ start_date (Union[None, datetime.date]):
16
+ end_date (Union[None, datetime.date]):
17
+ """
18
+
19
+ start_date: Union[None, datetime.date]
20
+ end_date: Union[None, datetime.date]
21
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
22
+
23
+ def to_dict(self) -> Dict[str, Any]:
24
+ start_date: Union[None, str]
25
+ if isinstance(self.start_date, datetime.date):
26
+ start_date = self.start_date.isoformat()
27
+ else:
28
+ start_date = self.start_date
29
+
30
+ end_date: Union[None, str]
31
+ if isinstance(self.end_date, datetime.date):
32
+ end_date = self.end_date.isoformat()
33
+ else:
34
+ end_date = self.end_date
35
+
36
+ field_dict: Dict[str, Any] = {}
37
+ field_dict.update(self.additional_properties)
38
+ field_dict.update(
39
+ {
40
+ "startDate": start_date,
41
+ "endDate": end_date,
42
+ }
43
+ )
44
+
45
+ return field_dict
46
+
47
+ @classmethod
48
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
49
+ d = src_dict.copy()
50
+
51
+ def _parse_start_date(data: object) -> Union[None, datetime.date]:
52
+ if data is None:
53
+ return data
54
+ try:
55
+ if not isinstance(data, str):
56
+ raise TypeError()
57
+ start_date_type_0 = isoparse(data).date()
58
+
59
+ return start_date_type_0
60
+ except: # noqa: E722
61
+ pass
62
+ return cast(Union[None, datetime.date], data)
63
+
64
+ start_date = _parse_start_date(d.pop("startDate"))
65
+
66
+ def _parse_end_date(data: object) -> Union[None, datetime.date]:
67
+ if data is None:
68
+ return data
69
+ try:
70
+ if not isinstance(data, str):
71
+ raise TypeError()
72
+ end_date_type_0 = isoparse(data).date()
73
+
74
+ return end_date_type_0
75
+ except: # noqa: E722
76
+ pass
77
+ return cast(Union[None, datetime.date], data)
78
+
79
+ end_date = _parse_end_date(d.pop("endDate"))
80
+
81
+ burn_up_chart_adtl = cls(
82
+ start_date=start_date,
83
+ end_date=end_date,
84
+ )
85
+
86
+ burn_up_chart_adtl.additional_properties = d
87
+ return burn_up_chart_adtl
88
+
89
+ @property
90
+ def additional_keys(self) -> List[str]:
91
+ return list(self.additional_properties.keys())
92
+
93
+ def __getitem__(self, key: str) -> Any:
94
+ return self.additional_properties[key]
95
+
96
+ def __setitem__(self, key: str, value: Any) -> None:
97
+ self.additional_properties[key] = value
98
+
99
+ def __delitem__(self, key: str) -> None:
100
+ del self.additional_properties[key]
101
+
102
+ def __contains__(self, key: str) -> bool:
103
+ return key in self.additional_properties
@@ -0,0 +1,207 @@
1
+ from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..models.chart_type import ChartType
7
+
8
+ if TYPE_CHECKING:
9
+ from ..models.bar_chart_adtl import BarChartAdtl
10
+ from ..models.burn_up_chart_adtl import BurnUpChartAdtl
11
+ from ..models.line_chart_adtl import LineChartAdtl
12
+ from ..models.number_chart_adtl import NumberChartAdtl
13
+ from ..models.pie_chart_adtl import PieChartAdtl
14
+ from ..models.table_chart_adtl import TableChartAdtl
15
+
16
+
17
+ T = TypeVar("T", bound="Chart")
18
+
19
+
20
+ @_attrs_define
21
+ class Chart:
22
+ """
23
+ Attributes:
24
+ duid (str):
25
+ type (ChartType): * `bar` - BAR
26
+ * `burnup` - BURN_UP
27
+ * `line` - LINE
28
+ * `number` - NUMBER
29
+ * `pie` - PIE
30
+ * `table` - TABLE
31
+ title (str):
32
+ x (int):
33
+ y (int):
34
+ width (int):
35
+ height (int):
36
+ adtl (Union['BarChartAdtl', 'BurnUpChartAdtl', 'LineChartAdtl', 'NumberChartAdtl', 'PieChartAdtl',
37
+ 'TableChartAdtl']):
38
+ """
39
+
40
+ duid: str
41
+ type: ChartType
42
+ title: str
43
+ x: int
44
+ y: int
45
+ width: int
46
+ height: int
47
+ adtl: Union["BarChartAdtl", "BurnUpChartAdtl", "LineChartAdtl", "NumberChartAdtl", "PieChartAdtl", "TableChartAdtl"]
48
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
49
+
50
+ def to_dict(self) -> Dict[str, Any]:
51
+ from ..models.bar_chart_adtl import BarChartAdtl
52
+ from ..models.burn_up_chart_adtl import BurnUpChartAdtl
53
+ from ..models.line_chart_adtl import LineChartAdtl
54
+ from ..models.number_chart_adtl import NumberChartAdtl
55
+ from ..models.pie_chart_adtl import PieChartAdtl
56
+
57
+ duid = self.duid
58
+
59
+ type = self.type.value
60
+
61
+ title = self.title
62
+
63
+ x = self.x
64
+
65
+ y = self.y
66
+
67
+ width = self.width
68
+
69
+ height = self.height
70
+
71
+ adtl: Dict[str, Any]
72
+ if isinstance(self.adtl, BarChartAdtl):
73
+ adtl = self.adtl.to_dict()
74
+ elif isinstance(self.adtl, BurnUpChartAdtl):
75
+ adtl = self.adtl.to_dict()
76
+ elif isinstance(self.adtl, LineChartAdtl):
77
+ adtl = self.adtl.to_dict()
78
+ elif isinstance(self.adtl, NumberChartAdtl):
79
+ adtl = self.adtl.to_dict()
80
+ elif isinstance(self.adtl, PieChartAdtl):
81
+ adtl = self.adtl.to_dict()
82
+ else:
83
+ adtl = self.adtl.to_dict()
84
+
85
+ field_dict: Dict[str, Any] = {}
86
+ field_dict.update(self.additional_properties)
87
+ field_dict.update(
88
+ {
89
+ "duid": duid,
90
+ "type": type,
91
+ "title": title,
92
+ "x": x,
93
+ "y": y,
94
+ "width": width,
95
+ "height": height,
96
+ "adtl": adtl,
97
+ }
98
+ )
99
+
100
+ return field_dict
101
+
102
+ @classmethod
103
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
104
+ from ..models.bar_chart_adtl import BarChartAdtl
105
+ from ..models.burn_up_chart_adtl import BurnUpChartAdtl
106
+ from ..models.line_chart_adtl import LineChartAdtl
107
+ from ..models.number_chart_adtl import NumberChartAdtl
108
+ from ..models.pie_chart_adtl import PieChartAdtl
109
+ from ..models.table_chart_adtl import TableChartAdtl
110
+
111
+ d = src_dict.copy()
112
+ duid = d.pop("duid")
113
+
114
+ type = ChartType(d.pop("type"))
115
+
116
+ title = d.pop("title")
117
+
118
+ x = d.pop("x")
119
+
120
+ y = d.pop("y")
121
+
122
+ width = d.pop("width")
123
+
124
+ height = d.pop("height")
125
+
126
+ def _parse_adtl(
127
+ data: object,
128
+ ) -> Union[
129
+ "BarChartAdtl", "BurnUpChartAdtl", "LineChartAdtl", "NumberChartAdtl", "PieChartAdtl", "TableChartAdtl"
130
+ ]:
131
+ try:
132
+ if not isinstance(data, dict):
133
+ raise TypeError()
134
+ componentsschemas_chart_adtl_type_0 = BarChartAdtl.from_dict(data)
135
+
136
+ return componentsschemas_chart_adtl_type_0
137
+ except: # noqa: E722
138
+ pass
139
+ try:
140
+ if not isinstance(data, dict):
141
+ raise TypeError()
142
+ componentsschemas_chart_adtl_type_1 = BurnUpChartAdtl.from_dict(data)
143
+
144
+ return componentsschemas_chart_adtl_type_1
145
+ except: # noqa: E722
146
+ pass
147
+ try:
148
+ if not isinstance(data, dict):
149
+ raise TypeError()
150
+ componentsschemas_chart_adtl_type_2 = LineChartAdtl.from_dict(data)
151
+
152
+ return componentsschemas_chart_adtl_type_2
153
+ except: # noqa: E722
154
+ pass
155
+ try:
156
+ if not isinstance(data, dict):
157
+ raise TypeError()
158
+ componentsschemas_chart_adtl_type_3 = NumberChartAdtl.from_dict(data)
159
+
160
+ return componentsschemas_chart_adtl_type_3
161
+ except: # noqa: E722
162
+ pass
163
+ try:
164
+ if not isinstance(data, dict):
165
+ raise TypeError()
166
+ componentsschemas_chart_adtl_type_4 = PieChartAdtl.from_dict(data)
167
+
168
+ return componentsschemas_chart_adtl_type_4
169
+ except: # noqa: E722
170
+ pass
171
+ if not isinstance(data, dict):
172
+ raise TypeError()
173
+ componentsschemas_chart_adtl_type_5 = TableChartAdtl.from_dict(data)
174
+
175
+ return componentsschemas_chart_adtl_type_5
176
+
177
+ adtl = _parse_adtl(d.pop("adtl"))
178
+
179
+ chart = cls(
180
+ duid=duid,
181
+ type=type,
182
+ title=title,
183
+ x=x,
184
+ y=y,
185
+ width=width,
186
+ height=height,
187
+ adtl=adtl,
188
+ )
189
+
190
+ chart.additional_properties = d
191
+ return chart
192
+
193
+ @property
194
+ def additional_keys(self) -> List[str]:
195
+ return list(self.additional_properties.keys())
196
+
197
+ def __getitem__(self, key: str) -> Any:
198
+ return self.additional_properties[key]
199
+
200
+ def __setitem__(self, key: str, value: Any) -> None:
201
+ self.additional_properties[key] = value
202
+
203
+ def __delitem__(self, key: str) -> None:
204
+ del self.additional_properties[key]
205
+
206
+ def __contains__(self, key: str) -> bool:
207
+ return key in self.additional_properties
@@ -0,0 +1,13 @@
1
+ from enum import Enum
2
+
3
+
4
+ class ChartType(str, Enum):
5
+ BAR = "bar"
6
+ BURNUP = "burnup"
7
+ LINE = "line"
8
+ NUMBER = "number"
9
+ PIE = "pie"
10
+ TABLE = "table"
11
+
12
+ def __str__(self) -> str:
13
+ return str(self.value)
@@ -0,0 +1,207 @@
1
+ import datetime
2
+ from typing import TYPE_CHECKING, 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 ..types import UNSET, Unset
9
+
10
+ if TYPE_CHECKING:
11
+ from ..models.comment_reaction import CommentReaction
12
+
13
+
14
+ T = TypeVar("T", bound="Comment")
15
+
16
+
17
+ @_attrs_define
18
+ class Comment:
19
+ """
20
+ Attributes:
21
+ duid (str):
22
+ created_at (datetime.datetime):
23
+ updated_at (datetime.datetime):
24
+ task_duid (str):
25
+ root_duid (Union[None, str]):
26
+ authored_by_ai (bool):
27
+ author_duid (str):
28
+ text (Any):
29
+ published_at (Union[None, datetime.datetime]):
30
+ reactions (List['CommentReaction']):
31
+ is_draft (bool):
32
+ edited (bool):
33
+ updated_by_client_duid (Union[None, Unset, str]):
34
+ """
35
+
36
+ duid: str
37
+ created_at: datetime.datetime
38
+ updated_at: datetime.datetime
39
+ task_duid: str
40
+ root_duid: Union[None, str]
41
+ authored_by_ai: bool
42
+ author_duid: str
43
+ text: Any
44
+ published_at: Union[None, datetime.datetime]
45
+ reactions: List["CommentReaction"]
46
+ is_draft: bool
47
+ edited: bool
48
+ updated_by_client_duid: Union[None, Unset, str] = UNSET
49
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
50
+
51
+ def to_dict(self) -> Dict[str, Any]:
52
+ duid = self.duid
53
+
54
+ created_at = self.created_at.isoformat()
55
+
56
+ updated_at = self.updated_at.isoformat()
57
+
58
+ task_duid = self.task_duid
59
+
60
+ root_duid: Union[None, str]
61
+ root_duid = self.root_duid
62
+
63
+ authored_by_ai = self.authored_by_ai
64
+
65
+ author_duid = self.author_duid
66
+
67
+ text = self.text
68
+
69
+ published_at: Union[None, str]
70
+ if isinstance(self.published_at, datetime.datetime):
71
+ published_at = self.published_at.isoformat()
72
+ else:
73
+ published_at = self.published_at
74
+
75
+ reactions = []
76
+ for reactions_item_data in self.reactions:
77
+ reactions_item = reactions_item_data.to_dict()
78
+ reactions.append(reactions_item)
79
+
80
+ is_draft = self.is_draft
81
+
82
+ edited = self.edited
83
+
84
+ updated_by_client_duid: Union[None, Unset, str]
85
+ if isinstance(self.updated_by_client_duid, Unset):
86
+ updated_by_client_duid = UNSET
87
+ else:
88
+ updated_by_client_duid = self.updated_by_client_duid
89
+
90
+ field_dict: Dict[str, Any] = {}
91
+ field_dict.update(self.additional_properties)
92
+ field_dict.update(
93
+ {
94
+ "duid": duid,
95
+ "createdAt": created_at,
96
+ "updatedAt": updated_at,
97
+ "taskDuid": task_duid,
98
+ "rootDuid": root_duid,
99
+ "authoredByAi": authored_by_ai,
100
+ "authorDuid": author_duid,
101
+ "text": text,
102
+ "publishedAt": published_at,
103
+ "reactions": reactions,
104
+ "isDraft": is_draft,
105
+ "edited": edited,
106
+ }
107
+ )
108
+ if updated_by_client_duid is not UNSET:
109
+ field_dict["updatedByClientDuid"] = updated_by_client_duid
110
+
111
+ return field_dict
112
+
113
+ @classmethod
114
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
115
+ from ..models.comment_reaction import CommentReaction
116
+
117
+ d = src_dict.copy()
118
+ duid = d.pop("duid")
119
+
120
+ created_at = isoparse(d.pop("createdAt"))
121
+
122
+ updated_at = isoparse(d.pop("updatedAt"))
123
+
124
+ task_duid = d.pop("taskDuid")
125
+
126
+ def _parse_root_duid(data: object) -> Union[None, str]:
127
+ if data is None:
128
+ return data
129
+ return cast(Union[None, str], data)
130
+
131
+ root_duid = _parse_root_duid(d.pop("rootDuid"))
132
+
133
+ authored_by_ai = d.pop("authoredByAi")
134
+
135
+ author_duid = d.pop("authorDuid")
136
+
137
+ text = d.pop("text")
138
+
139
+ def _parse_published_at(data: object) -> Union[None, datetime.datetime]:
140
+ if data is None:
141
+ return data
142
+ try:
143
+ if not isinstance(data, str):
144
+ raise TypeError()
145
+ published_at_type_0 = isoparse(data)
146
+
147
+ return published_at_type_0
148
+ except: # noqa: E722
149
+ pass
150
+ return cast(Union[None, datetime.datetime], data)
151
+
152
+ published_at = _parse_published_at(d.pop("publishedAt"))
153
+
154
+ reactions = []
155
+ _reactions = d.pop("reactions")
156
+ for reactions_item_data in _reactions:
157
+ reactions_item = CommentReaction.from_dict(reactions_item_data)
158
+
159
+ reactions.append(reactions_item)
160
+
161
+ is_draft = d.pop("isDraft")
162
+
163
+ edited = d.pop("edited")
164
+
165
+ def _parse_updated_by_client_duid(data: object) -> Union[None, Unset, str]:
166
+ if data is None:
167
+ return data
168
+ if isinstance(data, Unset):
169
+ return data
170
+ return cast(Union[None, Unset, str], data)
171
+
172
+ updated_by_client_duid = _parse_updated_by_client_duid(d.pop("updatedByClientDuid", UNSET))
173
+
174
+ comment = cls(
175
+ duid=duid,
176
+ created_at=created_at,
177
+ updated_at=updated_at,
178
+ task_duid=task_duid,
179
+ root_duid=root_duid,
180
+ authored_by_ai=authored_by_ai,
181
+ author_duid=author_duid,
182
+ text=text,
183
+ published_at=published_at,
184
+ reactions=reactions,
185
+ is_draft=is_draft,
186
+ edited=edited,
187
+ updated_by_client_duid=updated_by_client_duid,
188
+ )
189
+
190
+ comment.additional_properties = d
191
+ return comment
192
+
193
+ @property
194
+ def additional_keys(self) -> List[str]:
195
+ return list(self.additional_properties.keys())
196
+
197
+ def __getitem__(self, key: str) -> Any:
198
+ return self.additional_properties[key]
199
+
200
+ def __setitem__(self, key: str, value: Any) -> None:
201
+ self.additional_properties[key] = value
202
+
203
+ def __delitem__(self, key: str) -> None:
204
+ del self.additional_properties[key]
205
+
206
+ def __contains__(self, key: str) -> bool:
207
+ return key in self.additional_properties