dart-tools 0.5.11__tar.gz → 0.6.0__tar.gz

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 (185) hide show
  1. {dart_tools-0.5.11/dart_tools.egg-info → dart_tools-0.6.0}/PKG-INFO +2 -2
  2. {dart_tools-0.5.11 → dart_tools-0.6.0}/README.md +1 -1
  3. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/dart.py +56 -51
  4. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/__init__.py +4 -0
  5. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/properties_list_kind.py +3 -0
  6. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/property_.py +4 -1
  7. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/property_create.py +4 -1
  8. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/property_kind.py +3 -0
  9. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/property_update.py +4 -1
  10. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task.py +28 -0
  11. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_create.py +37 -0
  12. dart_tools-0.6.0/dart/generated/models/task_detail_mode.py +10 -0
  13. dart_tools-0.6.0/dart/generated/models/task_kind.py +19 -0
  14. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_update.py +37 -0
  15. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/tenant.py +8 -0
  16. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/tenant_update.py +9 -0
  17. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/user.py +11 -0
  18. {dart_tools-0.5.11 → dart_tools-0.6.0/dart_tools.egg-info}/PKG-INFO +2 -2
  19. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart_tools.egg-info/SOURCES.txt +2 -0
  20. {dart_tools-0.5.11 → dart_tools-0.6.0}/pyproject.toml +1 -1
  21. {dart_tools-0.5.11 → dart_tools-0.6.0}/LICENSE +0 -0
  22. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/__init__.py +0 -0
  23. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/exception.py +0 -0
  24. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/__init__.py +0 -0
  25. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/api/__init__.py +0 -0
  26. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/api/transactions/__init__.py +0 -0
  27. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/api/transactions/transactions_create.py +0 -0
  28. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/client.py +0 -0
  29. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/errors.py +0 -0
  30. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/attachment.py +0 -0
  31. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/attachment_create.py +0 -0
  32. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/attachment_update.py +0 -0
  33. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/brainstorm.py +0 -0
  34. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/brainstorm_create.py +0 -0
  35. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/brainstorm_state.py +0 -0
  36. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/brainstorm_update.py +0 -0
  37. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/color_name.py +0 -0
  38. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/comment.py +0 -0
  39. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/comment_create.py +0 -0
  40. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/comment_reaction.py +0 -0
  41. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/comment_reaction_create.py +0 -0
  42. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/comment_reaction_update.py +0 -0
  43. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/comment_update.py +0 -0
  44. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/dartboard.py +0 -0
  45. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/dartboard_create.py +0 -0
  46. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/dartboard_kind.py +0 -0
  47. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/dartboard_update.py +0 -0
  48. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/dartboards_list_kind.py +0 -0
  49. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/discord_integration.py +0 -0
  50. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/doc.py +0 -0
  51. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/doc_create.py +0 -0
  52. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/doc_source_type.py +0 -0
  53. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/doc_update.py +0 -0
  54. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/entity_name.py +0 -0
  55. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/event.py +0 -0
  56. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/event_actor.py +0 -0
  57. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/event_create.py +0 -0
  58. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/event_kind.py +0 -0
  59. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/event_subscription.py +0 -0
  60. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/event_subscription_update.py +0 -0
  61. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/filter_applicability.py +0 -0
  62. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/filter_assignee.py +0 -0
  63. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/filter_connector.py +0 -0
  64. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/filter_group.py +0 -0
  65. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/filter_search.py +0 -0
  66. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/filter_set.py +0 -0
  67. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/folder.py +0 -0
  68. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/folder_create.py +0 -0
  69. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/folder_kind.py +0 -0
  70. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/folder_update.py +0 -0
  71. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/folders_list_kind.py +0 -0
  72. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/form.py +0 -0
  73. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/form_create.py +0 -0
  74. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/form_field.py +0 -0
  75. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/form_field_create.py +0 -0
  76. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/form_field_update.py +0 -0
  77. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/form_update.py +0 -0
  78. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/github_integration.py +0 -0
  79. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/github_integration_tenant_extension_status.py +0 -0
  80. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/google_data.py +0 -0
  81. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/icon_kind.py +0 -0
  82. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/layout.py +0 -0
  83. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/layout_config.py +0 -0
  84. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/layout_create.py +0 -0
  85. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/layout_kind.py +0 -0
  86. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/layout_kind_config_map.py +0 -0
  87. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/layout_update.py +0 -0
  88. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/models_response.py +0 -0
  89. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/notification.py +0 -0
  90. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/notification_update.py +0 -0
  91. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/notion_integration.py +0 -0
  92. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/notion_integration_tenant_extension_status.py +0 -0
  93. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/operation.py +0 -0
  94. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/operation_kind.py +0 -0
  95. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/operation_model_kind.py +0 -0
  96. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/option.py +0 -0
  97. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/option_create.py +0 -0
  98. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/option_update.py +0 -0
  99. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_attachment_list.py +0 -0
  100. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_comment_list.py +0 -0
  101. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_comment_reaction_list.py +0 -0
  102. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_dartboard_list.py +0 -0
  103. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_doc_list.py +0 -0
  104. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_folder_list.py +0 -0
  105. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_form_field_list.py +0 -0
  106. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_form_list.py +0 -0
  107. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_layout_list.py +0 -0
  108. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_option_list.py +0 -0
  109. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_property_list.py +0 -0
  110. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_relationship_kind_list.py +0 -0
  111. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_relationship_list.py +0 -0
  112. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_space_list.py +0 -0
  113. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_status_list.py +0 -0
  114. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_task_doc_relationship_list.py +0 -0
  115. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_task_link_list.py +0 -0
  116. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_task_list.py +0 -0
  117. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_tenant_list.py +0 -0
  118. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_user_dartboard_layout_list.py +0 -0
  119. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_user_list.py +0 -0
  120. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_view_list.py +0 -0
  121. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/priority.py +0 -0
  122. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/relationship.py +0 -0
  123. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/relationship_create.py +0 -0
  124. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/relationship_kind.py +0 -0
  125. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/relationship_kind_create.py +0 -0
  126. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/relationship_kind_kind.py +0 -0
  127. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/relationship_kind_update.py +0 -0
  128. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/report_kind.py +0 -0
  129. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/request_body.py +0 -0
  130. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/response_body.py +0 -0
  131. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/slack_integration.py +0 -0
  132. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/slack_integration_tenant_extension_status.py +0 -0
  133. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/sort.py +0 -0
  134. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/space.py +0 -0
  135. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/space_create.py +0 -0
  136. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/space_kind.py +0 -0
  137. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/space_update.py +0 -0
  138. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/sprint_mode.py +0 -0
  139. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/status.py +0 -0
  140. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/status_create.py +0 -0
  141. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/status_kind.py +0 -0
  142. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/status_update.py +0 -0
  143. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/statuses_list_kind.py +0 -0
  144. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/subscription.py +0 -0
  145. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/subtask_display_mode.py +0 -0
  146. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/summary_statistic_kind.py +0 -0
  147. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_doc_relationship.py +0 -0
  148. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_doc_relationship_create.py +0 -0
  149. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_link.py +0 -0
  150. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_link_create.py +0 -0
  151. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_link_kind.py +0 -0
  152. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_link_update.py +0 -0
  153. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_notion_document.py +0 -0
  154. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_notion_document_block_children_map_type_0.py +0 -0
  155. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_notion_document_block_map_type_0.py +0 -0
  156. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_notion_document_page_map_type_0.py +0 -0
  157. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_properties.py +0 -0
  158. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_source_type.py +0 -0
  159. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/theme.py +0 -0
  160. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/transaction.py +0 -0
  161. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/transaction_kind.py +0 -0
  162. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/transaction_response.py +0 -0
  163. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/user_dartboard_layout.py +0 -0
  164. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/user_dartboard_layout_create.py +0 -0
  165. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/user_data_entity_retrieve_entity_kind.py +0 -0
  166. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/user_role.py +0 -0
  167. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/user_status.py +0 -0
  168. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/user_update.py +0 -0
  169. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/validation_error_response.py +0 -0
  170. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/validation_error_response_items.py +0 -0
  171. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/view.py +0 -0
  172. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/view_create.py +0 -0
  173. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/view_kind.py +0 -0
  174. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/view_update.py +0 -0
  175. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/zapier_integration.py +0 -0
  176. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/py.typed +0 -0
  177. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/types.py +0 -0
  178. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/order_manager.py +0 -0
  179. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/webhook.py +0 -0
  180. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart_tools.egg-info/dependency_links.txt +0 -0
  181. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart_tools.egg-info/dist/dart-tools-0.3.3.tar.gz +0 -0
  182. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart_tools.egg-info/entry_points.txt +0 -0
  183. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart_tools.egg-info/requires.txt +0 -0
  184. {dart_tools-0.5.11 → dart_tools-0.6.0}/dart_tools.egg-info/top_level.txt +0 -0
  185. {dart_tools-0.5.11 → dart_tools-0.6.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dart-tools
3
- Version: 0.5.11
3
+ Version: 0.6.0
4
4
  Summary: The Dart CLI and Python Library
5
5
  Author-email: Dart Software Team <software@itsdart.com>
6
6
  License: MIT License
@@ -166,7 +166,7 @@ task_update_op = Operation(
166
166
  data=task_update,
167
167
  )
168
168
 
169
- # Call the operation transactionally to preform the update
169
+ # Call the operation transactionally to perform the update
170
170
  response = dart.transact([task_update_op], TransactionKind.TASK_UPDATE)
171
171
  ```
172
172
 
@@ -105,7 +105,7 @@ task_update_op = Operation(
105
105
  data=task_update,
106
106
  )
107
107
 
108
- # Call the operation transactionally to preform the update
108
+ # Call the operation transactionally to perform the update
109
109
  response = dart.transact([task_update_op], TransactionKind.TASK_UPDATE)
110
110
  ```
111
111
 
@@ -3,7 +3,7 @@
3
3
 
4
4
  """A CLI to interact with the Dart web app."""
5
5
 
6
- import argparse
6
+ from argparse import ArgumentParser
7
7
  from functools import wraps
8
8
  import json
9
9
  import os
@@ -16,7 +16,7 @@ import sys
16
16
  from collections import defaultdict
17
17
  from datetime import timezone
18
18
  from importlib.metadata import version
19
- from typing import Literal, NoReturn
19
+ from typing import Callable, Literal, NoReturn
20
20
  from webbrowser import open_new_tab
21
21
 
22
22
  import dateparser
@@ -51,8 +51,9 @@ _APP = "dart-tools"
51
51
  _PROG = "dart"
52
52
 
53
53
  _PROD_HOST = "https://app.itsdart.com"
54
+ _STAG_HOST = "https://stag.itsdart.com"
54
55
  _DEV_HOST = "http://localhost:5173"
55
- _HOST_MAP = {"prod": _PROD_HOST, "dev": _DEV_HOST}
56
+ _HOST_MAP = {"prod": _PROD_HOST, "stag": _STAG_HOST, "dev": _DEV_HOST}
56
57
 
57
58
  _VERSION_CMD = "--version"
58
59
  _SET_HOST_CMD = "sethost"
@@ -97,11 +98,11 @@ _is_cli = False
97
98
 
98
99
 
99
100
  # TODO dedupe these functions with other usages elsewhere
100
- def _make_duid():
101
+ def _make_duid() -> str:
101
102
  return "".join(random.choices(_DUID_CHARS, k=12))
102
103
 
103
104
 
104
- def trim_slug_str(s: str, length: int, max_under: int | None = None):
105
+ def trim_slug_str(s: str, length: int, max_under: int | None = None) -> str:
105
106
  max_under = max_under if max_under is not None else length // 6
106
107
  if len(s) <= length:
107
108
  return s
@@ -111,26 +112,30 @@ def trim_slug_str(s: str, length: int, max_under: int | None = None):
111
112
  return s[:length]
112
113
 
113
114
 
114
- def slugify_str(s: str, lower=False, trim_kwargs=None):
115
+ def slugify_str(s: str, lower: bool = False, trim_kwargs: dict = None) -> str:
115
116
  lowered = s.lower() if lower else s
116
117
  formatted = _NON_ALPHANUM_RE.sub("-", lowered.replace("'", ""))
117
118
  formatted = _REPEATED_DASH_RE.sub("-", formatted).strip("-")
118
- return trim_slug_str(formatted, **trim_kwargs) if trim_kwargs is not None else formatted
119
+ return (
120
+ trim_slug_str(formatted, **trim_kwargs)
121
+ if trim_kwargs is not None
122
+ else formatted
123
+ )
119
124
 
120
125
 
121
- def _run_cmd(cmd):
126
+ def _run_cmd(cmd: str) -> str:
122
127
  return subprocess.check_output(cmd, shell=True).decode()
123
128
 
124
129
 
125
- def _get_space_url(host, duid):
130
+ def _get_space_url(host: str, duid: str) -> str:
126
131
  return f"{host}/s/{duid}"
127
132
 
128
133
 
129
- def _get_task_url(host, duid):
134
+ def _get_task_url(host: str, duid: str) -> str:
130
135
  return f"{host}/t/{duid}"
131
136
 
132
137
 
133
- def _suppress_exception(fn):
138
+ def _suppress_exception(fn: Callable) -> Callable:
134
139
  @wraps(fn)
135
140
  def wrapper(*args, **kwargs):
136
141
  try:
@@ -141,7 +146,7 @@ def _suppress_exception(fn):
141
146
  return wrapper
142
147
 
143
148
 
144
- def _dart_exit(message):
149
+ def _dart_exit(message: str) -> NoReturn:
145
150
  if _is_cli:
146
151
  sys.exit(message)
147
152
  raise DartException(message)
@@ -151,7 +156,7 @@ def _exit_gracefully(_signal_received, _frame) -> None:
151
156
  _dart_exit("Quitting.")
152
157
 
153
158
 
154
- def _log(s):
159
+ def _log(s: str) -> None:
155
160
  if not _is_cli:
156
161
  return
157
162
  print(s)
@@ -279,7 +284,7 @@ class Dart(Client):
279
284
  return transactions_create.sync(
280
285
  client=self,
281
286
  x_csrftoken=self._session.get_csrf_token(),
282
- json_body=request_body,
287
+ body=request_body,
283
288
  )
284
289
 
285
290
 
@@ -411,7 +416,7 @@ class _Git:
411
416
  _run_cmd(f"git checkout -b {branch}")
412
417
 
413
418
 
414
- def set_host(host):
419
+ def set_host(host: str) -> bool:
415
420
  config = _Config()
416
421
 
417
422
  new_host = _HOST_MAP.get(host, host)
@@ -422,7 +427,7 @@ def set_host(host):
422
427
  return True
423
428
 
424
429
 
425
- def _auth_failure_exit():
430
+ def _auth_failure_exit() -> NoReturn:
426
431
  _dart_exit(f"Not logged in, run\n\n {_PROG} {_LOGIN_CMD}\n\nto log in.")
427
432
 
428
433
 
@@ -430,7 +435,7 @@ def _unknown_failure_exit() -> NoReturn:
430
435
  _dart_exit("Unknown failure, email\n\n support@itsdart.com\n\nfor help.")
431
436
 
432
437
 
433
- def _check_request_response_and_maybe_exit(response):
438
+ def _check_request_response_and_maybe_exit(response) -> None:
434
439
  try:
435
440
  response.raise_for_status()
436
441
  except requests.exceptions.HTTPError:
@@ -457,14 +462,14 @@ def _parse_transaction_response_and_maybe_exit(
457
462
  return model
458
463
 
459
464
 
460
- def print_version():
465
+ def print_version() -> str:
461
466
  result = f"dart-tools version {_VERSION}"
462
467
  _log(result)
463
468
  return result
464
469
 
465
470
 
466
471
  @_suppress_exception
467
- def print_version_update_message_maybe():
472
+ def print_version_update_message_maybe() -> None:
468
473
  latest = (
469
474
  _run_cmd("pip --disable-pip-version-check index versions dart-tools 2>&1")
470
475
  .rsplit("LATEST:", maxsplit=1)[-1]
@@ -481,12 +486,12 @@ def print_version_update_message_maybe():
481
486
  )
482
487
 
483
488
 
484
- def _get_is_logged_in(session):
489
+ def _get_is_logged_in(session: _Session) -> bool:
485
490
  response = session.get(_USER_STATUS_URL_FRAG)
486
491
  return response.json().get("isLoggedIn", False)
487
492
 
488
493
 
489
- def is_logged_in(should_raise=False):
494
+ def is_logged_in(should_raise: bool = False) -> bool:
490
495
  config = _Config()
491
496
  session = _Session(config)
492
497
 
@@ -498,7 +503,7 @@ def is_logged_in(should_raise=False):
498
503
  return result
499
504
 
500
505
 
501
- def login(token=None):
506
+ def login(token: str | None = None) -> bool:
502
507
  config = _Config()
503
508
  session = _Session(config)
504
509
 
@@ -522,7 +527,9 @@ def login(token=None):
522
527
  return True
523
528
 
524
529
 
525
- def _begin_task(config, session, user_email, get_task):
530
+ def _begin_task(
531
+ config: _Config, session: _Session, user_email: str, get_task: Callable
532
+ ) -> bool:
526
533
  _Git.ensure_in_repo()
527
534
  _Git.ensure_no_unstaged_changes()
528
535
  _Git.ensure_on_main_or_intended()
@@ -541,7 +548,7 @@ def _begin_task(config, session, user_email, get_task):
541
548
  return True
542
549
 
543
550
 
544
- def begin_task():
551
+ def begin_task() -> bool:
545
552
  config = _Config()
546
553
  session = _Session(config)
547
554
 
@@ -592,17 +599,17 @@ def begin_task():
592
599
 
593
600
 
594
601
  def create_task(
595
- title,
602
+ title: str,
596
603
  *,
597
- should_begin=False,
598
- dartboard_title=None,
599
- status_title=None,
600
- assignee_emails=None,
601
- tag_titles=None,
602
- priority_int=None,
603
- size_int=None,
604
- due_at_str=None,
605
- ):
604
+ should_begin: bool = False,
605
+ dartboard_title: str | None = None,
606
+ status_title: str | None = None,
607
+ assignee_emails: list[str] | None = None,
608
+ tag_titles: list[str] | None = None,
609
+ priority_int: int | None = None,
610
+ size_int: int | None = None,
611
+ due_at_str: str | None = None,
612
+ ) -> Task:
606
613
  config = _Config()
607
614
  session = _Session(config)
608
615
  dart = Dart(session)
@@ -726,17 +733,17 @@ def create_task(
726
733
 
727
734
 
728
735
  def update_task(
729
- duid,
736
+ duid: str,
730
737
  *,
731
- title=None,
732
- dartboard_title=None,
733
- status_title=None,
734
- assignee_emails=None,
735
- tag_titles=None,
736
- priority_int=None,
737
- size_int=None,
738
- due_at_str=None,
739
- ):
738
+ title: str | None = None,
739
+ dartboard_title: str | None = None,
740
+ status_title: str | None = None,
741
+ assignee_emails: list[str] | None = None,
742
+ tag_titles: list[str] | None = None,
743
+ priority_int: int | None = None,
744
+ size_int: int | None = None,
745
+ due_at_str: str | None = None,
746
+ ) -> Task:
740
747
  config = _Config()
741
748
  session = _Session(config)
742
749
  dart = Dart(session)
@@ -856,7 +863,7 @@ def update_task(
856
863
  return task
857
864
 
858
865
 
859
- def replicate_space(duid):
866
+ def replicate_space(duid: str) -> Space:
860
867
  config = _Config()
861
868
  session = _Session(config)
862
869
 
@@ -870,7 +877,7 @@ def replicate_space(duid):
870
877
  return space
871
878
 
872
879
 
873
- def _add_standard_task_arguments(parser):
880
+ def _add_standard_task_arguments(parser: ArgumentParser) -> None:
874
881
  parser.add_argument(
875
882
  "-d", "--dartboard", dest="dartboard_title", help="dartboard title"
876
883
  )
@@ -905,7 +912,7 @@ def _add_standard_task_arguments(parser):
905
912
  parser.add_argument("-r", "--duedate", dest="due_at_str", help="due date")
906
913
 
907
914
 
908
- def cli():
915
+ def cli() -> None:
909
916
  signal.signal(signal.SIGINT, _exit_gracefully)
910
917
  global _is_cli
911
918
  _is_cli = True
@@ -916,9 +923,7 @@ def cli():
916
923
  print_version()
917
924
  return
918
925
 
919
- parser = argparse.ArgumentParser(
920
- prog=_PROG, description="A CLI to interact with Dart"
921
- )
926
+ parser = ArgumentParser(prog=_PROG, description="A CLI to interact with Dart")
922
927
  subparsers = parser.add_subparsers(
923
928
  title="command",
924
929
  required=True,
@@ -926,7 +931,7 @@ def cli():
926
931
  )
927
932
 
928
933
  set_host_parser = subparsers.add_parser(_SET_HOST_CMD, aliases="s")
929
- set_host_parser.add_argument("host", help="the new host: {prod|dev|[URL]}")
934
+ set_host_parser.add_argument("host", help="the new host: {prod|stag|dev|[URL]}")
930
935
  set_host_parser.set_defaults(func=set_host)
931
936
 
932
937
  login_parser = subparsers.add_parser(_LOGIN_CMD, aliases="l", help="login")
@@ -124,8 +124,10 @@ from .subtask_display_mode import SubtaskDisplayMode
124
124
  from .summary_statistic_kind import SummaryStatisticKind
125
125
  from .task import Task
126
126
  from .task_create import TaskCreate
127
+ from .task_detail_mode import TaskDetailMode
127
128
  from .task_doc_relationship import TaskDocRelationship
128
129
  from .task_doc_relationship_create import TaskDocRelationshipCreate
130
+ from .task_kind import TaskKind
129
131
  from .task_link import TaskLink
130
132
  from .task_link_create import TaskLinkCreate
131
133
  from .task_link_kind import TaskLinkKind
@@ -283,8 +285,10 @@ __all__ = (
283
285
  "SummaryStatisticKind",
284
286
  "Task",
285
287
  "TaskCreate",
288
+ "TaskDetailMode",
286
289
  "TaskDocRelationship",
287
290
  "TaskDocRelationshipCreate",
291
+ "TaskKind",
288
292
  "TaskLink",
289
293
  "TaskLinkCreate",
290
294
  "TaskLinkKind",
@@ -17,12 +17,15 @@ class PropertiesListKind(str, Enum):
17
17
  DEFAULT_SIZE = "Default: Size"
18
18
  DEFAULT_STATUS = "Default: Status"
19
19
  DEFAULT_TAGS = "Default: Tags"
20
+ DEFAULT_TIME_TRACKING = "Default: Time tracking"
20
21
  DEFAULT_TITLE = "Default: Title"
22
+ DEFAULT_TYPE = "Default: Type"
21
23
  MULTISELECT = "Multiselect"
22
24
  NUMBER = "Number"
23
25
  SELECT = "Select"
24
26
  STATUS = "Status"
25
27
  TEXT = "Text"
28
+ TIME_TRACKING = "Time tracking"
26
29
  USER = "User"
27
30
 
28
31
  def __str__(self) -> str:
@@ -14,7 +14,8 @@ class Property:
14
14
  """
15
15
  Attributes:
16
16
  duid (str):
17
- kind (PropertyKind): * `Default: Title` - DEFAULT_TITLE
17
+ kind (PropertyKind): * `Default: Type` - DEFAULT_TYPE
18
+ * `Default: Title` - DEFAULT_TITLE
18
19
  * `Default: Description` - DEFAULT_DESCRIPTION
19
20
  * `Default: Dartboard` - DEFAULT_DARTBOARD
20
21
  * `Default: Status` - DEFAULT_STATUS
@@ -23,6 +24,7 @@ class Property:
23
24
  * `Default: Priority` - DEFAULT_PRIORITY
24
25
  * `Default: Tags` - DEFAULT_TAGS
25
26
  * `Default: Size` - DEFAULT_SIZE
27
+ * `Default: Time tracking` - DEFAULT_TIME_TRACKING
26
28
  * `Default: Attachments` - DEFAULT_ATTACHMENTS
27
29
  * `Default: Created` - DEFAULT_CREATED_AT
28
30
  * `Default: Created by` - DEFAULT_CREATED_BY
@@ -33,6 +35,7 @@ class Property:
33
35
  * `Status` - STATUS
34
36
  * `User` - USER
35
37
  * `Dates` - DATES
38
+ * `Time tracking` - TIME_TRACKING
36
39
  * `Text` - TEXT
37
40
  * `Number` - NUMBER
38
41
  * `Checkbox` - CHECKBOX
@@ -14,7 +14,8 @@ class PropertyCreate:
14
14
  """
15
15
  Attributes:
16
16
  duid (str):
17
- kind (PropertyKind): * `Default: Title` - DEFAULT_TITLE
17
+ kind (PropertyKind): * `Default: Type` - DEFAULT_TYPE
18
+ * `Default: Title` - DEFAULT_TITLE
18
19
  * `Default: Description` - DEFAULT_DESCRIPTION
19
20
  * `Default: Dartboard` - DEFAULT_DARTBOARD
20
21
  * `Default: Status` - DEFAULT_STATUS
@@ -23,6 +24,7 @@ class PropertyCreate:
23
24
  * `Default: Priority` - DEFAULT_PRIORITY
24
25
  * `Default: Tags` - DEFAULT_TAGS
25
26
  * `Default: Size` - DEFAULT_SIZE
27
+ * `Default: Time tracking` - DEFAULT_TIME_TRACKING
26
28
  * `Default: Attachments` - DEFAULT_ATTACHMENTS
27
29
  * `Default: Created` - DEFAULT_CREATED_AT
28
30
  * `Default: Created by` - DEFAULT_CREATED_BY
@@ -33,6 +35,7 @@ class PropertyCreate:
33
35
  * `Status` - STATUS
34
36
  * `User` - USER
35
37
  * `Dates` - DATES
38
+ * `Time tracking` - TIME_TRACKING
36
39
  * `Text` - TEXT
37
40
  * `Number` - NUMBER
38
41
  * `Checkbox` - CHECKBOX
@@ -17,12 +17,15 @@ class PropertyKind(str, Enum):
17
17
  DEFAULT_SIZE = "Default: Size"
18
18
  DEFAULT_STATUS = "Default: Status"
19
19
  DEFAULT_TAGS = "Default: Tags"
20
+ DEFAULT_TIME_TRACKING = "Default: Time tracking"
20
21
  DEFAULT_TITLE = "Default: Title"
22
+ DEFAULT_TYPE = "Default: Type"
21
23
  MULTISELECT = "Multiselect"
22
24
  NUMBER = "Number"
23
25
  SELECT = "Select"
24
26
  STATUS = "Status"
25
27
  TEXT = "Text"
28
+ TIME_TRACKING = "Time tracking"
26
29
  USER = "User"
27
30
 
28
31
  def __str__(self) -> str:
@@ -14,7 +14,8 @@ class PropertyUpdate:
14
14
  """
15
15
  Attributes:
16
16
  duid (str):
17
- kind (Union[Unset, PropertyKind]): * `Default: Title` - DEFAULT_TITLE
17
+ kind (Union[Unset, PropertyKind]): * `Default: Type` - DEFAULT_TYPE
18
+ * `Default: Title` - DEFAULT_TITLE
18
19
  * `Default: Description` - DEFAULT_DESCRIPTION
19
20
  * `Default: Dartboard` - DEFAULT_DARTBOARD
20
21
  * `Default: Status` - DEFAULT_STATUS
@@ -23,6 +24,7 @@ class PropertyUpdate:
23
24
  * `Default: Priority` - DEFAULT_PRIORITY
24
25
  * `Default: Tags` - DEFAULT_TAGS
25
26
  * `Default: Size` - DEFAULT_SIZE
27
+ * `Default: Time tracking` - DEFAULT_TIME_TRACKING
26
28
  * `Default: Attachments` - DEFAULT_ATTACHMENTS
27
29
  * `Default: Created` - DEFAULT_CREATED_AT
28
30
  * `Default: Created by` - DEFAULT_CREATED_BY
@@ -33,6 +35,7 @@ class PropertyUpdate:
33
35
  * `Status` - STATUS
34
36
  * `User` - USER
35
37
  * `Dates` - DATES
38
+ * `Time tracking` - TIME_TRACKING
36
39
  * `Text` - TEXT
37
40
  * `Number` - NUMBER
38
41
  * `Checkbox` - CHECKBOX
@@ -6,6 +6,7 @@ from attrs import field as _attrs_field
6
6
  from dateutil.parser import isoparse
7
7
 
8
8
  from ..models.priority import Priority
9
+ from ..models.task_kind import TaskKind
9
10
  from ..models.task_source_type import TaskSourceType
10
11
  from ..types import UNSET, Unset
11
12
 
@@ -57,6 +58,18 @@ class Task:
57
58
  dartboard_duid (str):
58
59
  order (str):
59
60
  expanded (bool):
61
+ kind (TaskKind): * `Project` - PROJECT
62
+ * `Milestone` - MILESTONE
63
+ * `Task` - TASK
64
+ * `Subtask` - SUBTASK
65
+ * `Epic` - EPIC
66
+ * `Story` - STORY
67
+ * `Issue` - ISSUE
68
+ * `Subissue` - SUBISSUE
69
+ * `Bug` - BUG
70
+ * `Spike` - SPIKE
71
+ * `Item` - ITEM
72
+ * `Client` - CLIENT
60
73
  title (str):
61
74
  description (Any):
62
75
  notion_document (Union['TaskNotionDocument', None]):
@@ -73,6 +86,7 @@ class Task:
73
86
  size (Union[None, int]):
74
87
  start_at (Union[None, datetime.datetime]):
75
88
  due_at (Union[None, datetime.datetime]):
89
+ time_tracking (Any):
76
90
  remind_at (Union[None, datetime.datetime]):
77
91
  recurrence (Union[Any, None]):
78
92
  recurs_next_at (Union[None, datetime.datetime]):
@@ -91,6 +105,7 @@ class Task:
91
105
  dartboard_duid: str
92
106
  order: str
93
107
  expanded: bool
108
+ kind: TaskKind
94
109
  title: str
95
110
  description: Any
96
111
  notion_document: Union["TaskNotionDocument", None]
@@ -107,6 +122,7 @@ class Task:
107
122
  size: Union[None, int]
108
123
  start_at: Union[None, datetime.datetime]
109
124
  due_at: Union[None, datetime.datetime]
125
+ time_tracking: Any
110
126
  remind_at: Union[None, datetime.datetime]
111
127
  recurrence: Union[Any, None]
112
128
  recurs_next_at: Union[None, datetime.datetime]
@@ -142,6 +158,8 @@ class Task:
142
158
 
143
159
  expanded = self.expanded
144
160
 
161
+ kind = self.kind.value
162
+
145
163
  title = self.title
146
164
 
147
165
  description = self.description
@@ -198,6 +216,8 @@ class Task:
198
216
  else:
199
217
  due_at = self.due_at
200
218
 
219
+ time_tracking = self.time_tracking
220
+
201
221
  remind_at: Union[None, str]
202
222
  if isinstance(self.remind_at, datetime.datetime):
203
223
  remind_at = self.remind_at.isoformat()
@@ -236,6 +256,7 @@ class Task:
236
256
  "dartboardDuid": dartboard_duid,
237
257
  "order": order,
238
258
  "expanded": expanded,
259
+ "kind": kind,
239
260
  "title": title,
240
261
  "description": description,
241
262
  "notionDocument": notion_document,
@@ -252,6 +273,7 @@ class Task:
252
273
  "size": size,
253
274
  "startAt": start_at,
254
275
  "dueAt": due_at,
276
+ "timeTracking": time_tracking,
255
277
  "remindAt": remind_at,
256
278
  "recurrence": recurrence,
257
279
  "recursNextAt": recurs_next_at,
@@ -308,6 +330,8 @@ class Task:
308
330
 
309
331
  expanded = d.pop("expanded")
310
332
 
333
+ kind = TaskKind(d.pop("kind"))
334
+
311
335
  title = d.pop("title")
312
336
 
313
337
  description = d.pop("description")
@@ -412,6 +436,8 @@ class Task:
412
436
 
413
437
  due_at = _parse_due_at(d.pop("dueAt"))
414
438
 
439
+ time_tracking = d.pop("timeTracking")
440
+
415
441
  def _parse_remind_at(data: object) -> Union[None, datetime.datetime]:
416
442
  if data is None:
417
443
  return data
@@ -472,6 +498,7 @@ class Task:
472
498
  dartboard_duid=dartboard_duid,
473
499
  order=order,
474
500
  expanded=expanded,
501
+ kind=kind,
475
502
  title=title,
476
503
  description=description,
477
504
  notion_document=notion_document,
@@ -488,6 +515,7 @@ class Task:
488
515
  size=size,
489
516
  start_at=start_at,
490
517
  due_at=due_at,
518
+ time_tracking=time_tracking,
491
519
  remind_at=remind_at,
492
520
  recurrence=recurrence,
493
521
  recurs_next_at=recurs_next_at,
@@ -6,6 +6,7 @@ from attrs import field as _attrs_field
6
6
  from dateutil.parser import isoparse
7
7
 
8
8
  from ..models.priority import Priority
9
+ from ..models.task_kind import TaskKind
9
10
  from ..models.task_source_type import TaskSourceType
10
11
  from ..types import UNSET, Unset
11
12
 
@@ -51,6 +52,18 @@ class TaskCreate:
51
52
  dartboard_duid (Union[Unset, str]):
52
53
  order (Union[Unset, str]):
53
54
  expanded (Union[Unset, bool]):
55
+ kind (Union[Unset, TaskKind]): * `Project` - PROJECT
56
+ * `Milestone` - MILESTONE
57
+ * `Task` - TASK
58
+ * `Subtask` - SUBTASK
59
+ * `Epic` - EPIC
60
+ * `Story` - STORY
61
+ * `Issue` - ISSUE
62
+ * `Subissue` - SUBISSUE
63
+ * `Bug` - BUG
64
+ * `Spike` - SPIKE
65
+ * `Item` - ITEM
66
+ * `Client` - CLIENT
54
67
  title (Union[Unset, str]):
55
68
  description (Union[Unset, Any]):
56
69
  description_markdown (Union[Unset, str]):
@@ -65,6 +78,7 @@ class TaskCreate:
65
78
  size (Union[None, Unset, int]):
66
79
  start_at (Union[None, Unset, datetime.datetime]):
67
80
  due_at (Union[None, Unset, datetime.datetime]):
81
+ time_tracking (Union[Unset, Any]):
68
82
  remind_at (Union[None, Unset, datetime.datetime]):
69
83
  recurrence (Union[Any, None, Unset]):
70
84
  recurs_next_at (Union[None, Unset, datetime.datetime]):
@@ -83,6 +97,7 @@ class TaskCreate:
83
97
  dartboard_duid: Union[Unset, str] = UNSET
84
98
  order: Union[Unset, str] = UNSET
85
99
  expanded: Union[Unset, bool] = UNSET
100
+ kind: Union[Unset, TaskKind] = UNSET
86
101
  title: Union[Unset, str] = UNSET
87
102
  description: Union[Unset, Any] = UNSET
88
103
  description_markdown: Union[Unset, str] = UNSET
@@ -97,6 +112,7 @@ class TaskCreate:
97
112
  size: Union[None, Unset, int] = UNSET
98
113
  start_at: Union[None, Unset, datetime.datetime] = UNSET
99
114
  due_at: Union[None, Unset, datetime.datetime] = UNSET
115
+ time_tracking: Union[Unset, Any] = UNSET
100
116
  remind_at: Union[None, Unset, datetime.datetime] = UNSET
101
117
  recurrence: Union[Any, None, Unset] = UNSET
102
118
  recurs_next_at: Union[None, Unset, datetime.datetime] = UNSET
@@ -154,6 +170,10 @@ class TaskCreate:
154
170
 
155
171
  expanded = self.expanded
156
172
 
173
+ kind: Union[Unset, str] = UNSET
174
+ if not isinstance(self.kind, Unset):
175
+ kind = self.kind.value
176
+
157
177
  title = self.title
158
178
 
159
179
  description = self.description
@@ -216,6 +236,8 @@ class TaskCreate:
216
236
  else:
217
237
  due_at = self.due_at
218
238
 
239
+ time_tracking = self.time_tracking
240
+
219
241
  remind_at: Union[None, Unset, str]
220
242
  if isinstance(self.remind_at, Unset):
221
243
  remind_at = UNSET
@@ -269,6 +291,8 @@ class TaskCreate:
269
291
  field_dict["order"] = order
270
292
  if expanded is not UNSET:
271
293
  field_dict["expanded"] = expanded
294
+ if kind is not UNSET:
295
+ field_dict["kind"] = kind
272
296
  if title is not UNSET:
273
297
  field_dict["title"] = title
274
298
  if description is not UNSET:
@@ -297,6 +321,8 @@ class TaskCreate:
297
321
  field_dict["startAt"] = start_at
298
322
  if due_at is not UNSET:
299
323
  field_dict["dueAt"] = due_at
324
+ if time_tracking is not UNSET:
325
+ field_dict["timeTracking"] = time_tracking
300
326
  if remind_at is not UNSET:
301
327
  field_dict["remindAt"] = remind_at
302
328
  if recurrence is not UNSET:
@@ -382,6 +408,13 @@ class TaskCreate:
382
408
 
383
409
  expanded = d.pop("expanded", UNSET)
384
410
 
411
+ _kind = d.pop("kind", UNSET)
412
+ kind: Union[Unset, TaskKind]
413
+ if isinstance(_kind, Unset):
414
+ kind = UNSET
415
+ else:
416
+ kind = TaskKind(_kind)
417
+
385
418
  title = d.pop("title", UNSET)
386
419
 
387
420
  description = d.pop("description", UNSET)
@@ -469,6 +502,8 @@ class TaskCreate:
469
502
 
470
503
  due_at = _parse_due_at(d.pop("dueAt", UNSET))
471
504
 
505
+ time_tracking = d.pop("timeTracking", UNSET)
506
+
472
507
  def _parse_remind_at(data: object) -> Union[None, Unset, datetime.datetime]:
473
508
  if data is None:
474
509
  return data
@@ -527,6 +562,7 @@ class TaskCreate:
527
562
  dartboard_duid=dartboard_duid,
528
563
  order=order,
529
564
  expanded=expanded,
565
+ kind=kind,
530
566
  title=title,
531
567
  description=description,
532
568
  description_markdown=description_markdown,
@@ -541,6 +577,7 @@ class TaskCreate:
541
577
  size=size,
542
578
  start_at=start_at,
543
579
  due_at=due_at,
580
+ time_tracking=time_tracking,
544
581
  remind_at=remind_at,
545
582
  recurrence=recurrence,
546
583
  recurs_next_at=recurs_next_at,