dart-tools 0.5.12__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.12/dart_tools.egg-info → dart_tools-0.6.0}/PKG-INFO +2 -2
  2. {dart_tools-0.5.12 → dart_tools-0.6.0}/README.md +1 -1
  3. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/dart.py +56 -51
  4. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/task.py +10 -14
  5. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/task_create.py +7 -5
  6. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/task_kind.py +2 -0
  7. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/task_update.py +7 -5
  8. {dart_tools-0.5.12 → dart_tools-0.6.0/dart_tools.egg-info}/PKG-INFO +2 -2
  9. {dart_tools-0.5.12 → dart_tools-0.6.0}/pyproject.toml +1 -1
  10. {dart_tools-0.5.12 → dart_tools-0.6.0}/LICENSE +0 -0
  11. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/__init__.py +0 -0
  12. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/exception.py +0 -0
  13. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/__init__.py +0 -0
  14. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/api/__init__.py +0 -0
  15. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/api/transactions/__init__.py +0 -0
  16. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/api/transactions/transactions_create.py +0 -0
  17. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/client.py +0 -0
  18. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/errors.py +0 -0
  19. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/__init__.py +0 -0
  20. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/attachment.py +0 -0
  21. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/attachment_create.py +0 -0
  22. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/attachment_update.py +0 -0
  23. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/brainstorm.py +0 -0
  24. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/brainstorm_create.py +0 -0
  25. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/brainstorm_state.py +0 -0
  26. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/brainstorm_update.py +0 -0
  27. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/color_name.py +0 -0
  28. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/comment.py +0 -0
  29. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/comment_create.py +0 -0
  30. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/comment_reaction.py +0 -0
  31. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/comment_reaction_create.py +0 -0
  32. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/comment_reaction_update.py +0 -0
  33. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/comment_update.py +0 -0
  34. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/dartboard.py +0 -0
  35. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/dartboard_create.py +0 -0
  36. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/dartboard_kind.py +0 -0
  37. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/dartboard_update.py +0 -0
  38. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/dartboards_list_kind.py +0 -0
  39. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/discord_integration.py +0 -0
  40. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/doc.py +0 -0
  41. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/doc_create.py +0 -0
  42. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/doc_source_type.py +0 -0
  43. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/doc_update.py +0 -0
  44. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/entity_name.py +0 -0
  45. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/event.py +0 -0
  46. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/event_actor.py +0 -0
  47. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/event_create.py +0 -0
  48. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/event_kind.py +0 -0
  49. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/event_subscription.py +0 -0
  50. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/event_subscription_update.py +0 -0
  51. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/filter_applicability.py +0 -0
  52. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/filter_assignee.py +0 -0
  53. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/filter_connector.py +0 -0
  54. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/filter_group.py +0 -0
  55. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/filter_search.py +0 -0
  56. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/filter_set.py +0 -0
  57. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/folder.py +0 -0
  58. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/folder_create.py +0 -0
  59. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/folder_kind.py +0 -0
  60. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/folder_update.py +0 -0
  61. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/folders_list_kind.py +0 -0
  62. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/form.py +0 -0
  63. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/form_create.py +0 -0
  64. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/form_field.py +0 -0
  65. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/form_field_create.py +0 -0
  66. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/form_field_update.py +0 -0
  67. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/form_update.py +0 -0
  68. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/github_integration.py +0 -0
  69. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/github_integration_tenant_extension_status.py +0 -0
  70. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/google_data.py +0 -0
  71. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/icon_kind.py +0 -0
  72. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/layout.py +0 -0
  73. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/layout_config.py +0 -0
  74. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/layout_create.py +0 -0
  75. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/layout_kind.py +0 -0
  76. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/layout_kind_config_map.py +0 -0
  77. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/layout_update.py +0 -0
  78. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/models_response.py +0 -0
  79. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/notification.py +0 -0
  80. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/notification_update.py +0 -0
  81. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/notion_integration.py +0 -0
  82. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/notion_integration_tenant_extension_status.py +0 -0
  83. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/operation.py +0 -0
  84. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/operation_kind.py +0 -0
  85. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/operation_model_kind.py +0 -0
  86. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/option.py +0 -0
  87. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/option_create.py +0 -0
  88. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/option_update.py +0 -0
  89. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_attachment_list.py +0 -0
  90. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_comment_list.py +0 -0
  91. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_comment_reaction_list.py +0 -0
  92. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_dartboard_list.py +0 -0
  93. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_doc_list.py +0 -0
  94. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_folder_list.py +0 -0
  95. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_form_field_list.py +0 -0
  96. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_form_list.py +0 -0
  97. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_layout_list.py +0 -0
  98. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_option_list.py +0 -0
  99. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_property_list.py +0 -0
  100. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_relationship_kind_list.py +0 -0
  101. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_relationship_list.py +0 -0
  102. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_space_list.py +0 -0
  103. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_status_list.py +0 -0
  104. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_task_doc_relationship_list.py +0 -0
  105. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_task_link_list.py +0 -0
  106. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_task_list.py +0 -0
  107. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_tenant_list.py +0 -0
  108. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_user_dartboard_layout_list.py +0 -0
  109. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_user_list.py +0 -0
  110. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/paginated_view_list.py +0 -0
  111. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/priority.py +0 -0
  112. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/properties_list_kind.py +0 -0
  113. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/property_.py +0 -0
  114. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/property_create.py +0 -0
  115. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/property_kind.py +0 -0
  116. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/property_update.py +0 -0
  117. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/relationship.py +0 -0
  118. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/relationship_create.py +0 -0
  119. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/relationship_kind.py +0 -0
  120. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/relationship_kind_create.py +0 -0
  121. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/relationship_kind_kind.py +0 -0
  122. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/relationship_kind_update.py +0 -0
  123. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/report_kind.py +0 -0
  124. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/request_body.py +0 -0
  125. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/response_body.py +0 -0
  126. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/slack_integration.py +0 -0
  127. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/slack_integration_tenant_extension_status.py +0 -0
  128. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/sort.py +0 -0
  129. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/space.py +0 -0
  130. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/space_create.py +0 -0
  131. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/space_kind.py +0 -0
  132. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/space_update.py +0 -0
  133. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/sprint_mode.py +0 -0
  134. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/status.py +0 -0
  135. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/status_create.py +0 -0
  136. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/status_kind.py +0 -0
  137. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/status_update.py +0 -0
  138. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/statuses_list_kind.py +0 -0
  139. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/subscription.py +0 -0
  140. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/subtask_display_mode.py +0 -0
  141. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/summary_statistic_kind.py +0 -0
  142. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/task_detail_mode.py +0 -0
  143. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/task_doc_relationship.py +0 -0
  144. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/task_doc_relationship_create.py +0 -0
  145. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/task_link.py +0 -0
  146. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/task_link_create.py +0 -0
  147. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/task_link_kind.py +0 -0
  148. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/task_link_update.py +0 -0
  149. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/task_notion_document.py +0 -0
  150. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/task_notion_document_block_children_map_type_0.py +0 -0
  151. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/task_notion_document_block_map_type_0.py +0 -0
  152. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/task_notion_document_page_map_type_0.py +0 -0
  153. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/task_properties.py +0 -0
  154. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/task_source_type.py +0 -0
  155. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/tenant.py +0 -0
  156. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/tenant_update.py +0 -0
  157. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/theme.py +0 -0
  158. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/transaction.py +0 -0
  159. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/transaction_kind.py +0 -0
  160. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/transaction_response.py +0 -0
  161. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/user.py +0 -0
  162. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/user_dartboard_layout.py +0 -0
  163. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/user_dartboard_layout_create.py +0 -0
  164. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/user_data_entity_retrieve_entity_kind.py +0 -0
  165. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/user_role.py +0 -0
  166. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/user_status.py +0 -0
  167. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/user_update.py +0 -0
  168. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/validation_error_response.py +0 -0
  169. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/validation_error_response_items.py +0 -0
  170. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/view.py +0 -0
  171. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/view_create.py +0 -0
  172. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/view_kind.py +0 -0
  173. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/view_update.py +0 -0
  174. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/models/zapier_integration.py +0 -0
  175. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/py.typed +0 -0
  176. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/generated/types.py +0 -0
  177. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/order_manager.py +0 -0
  178. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart/webhook.py +0 -0
  179. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart_tools.egg-info/SOURCES.txt +0 -0
  180. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart_tools.egg-info/dependency_links.txt +0 -0
  181. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart_tools.egg-info/dist/dart-tools-0.3.3.tar.gz +0 -0
  182. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart_tools.egg-info/entry_points.txt +0 -0
  183. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart_tools.egg-info/requires.txt +0 -0
  184. {dart_tools-0.5.12 → dart_tools-0.6.0}/dart_tools.egg-info/top_level.txt +0 -0
  185. {dart_tools-0.5.12 → 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.12
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")
@@ -58,16 +58,18 @@ class Task:
58
58
  dartboard_duid (str):
59
59
  order (str):
60
60
  expanded (bool):
61
- kind (TaskKind): * `Task` - TASK
61
+ kind (TaskKind): * `Project` - PROJECT
62
+ * `Milestone` - MILESTONE
63
+ * `Task` - TASK
62
64
  * `Subtask` - SUBTASK
63
- * `Project` - PROJECT
65
+ * `Epic` - EPIC
66
+ * `Story` - STORY
64
67
  * `Issue` - ISSUE
65
68
  * `Subissue` - SUBISSUE
66
- * `Epic` - EPIC
69
+ * `Bug` - BUG
70
+ * `Spike` - SPIKE
67
71
  * `Item` - ITEM
68
72
  * `Client` - CLIENT
69
- * `Milestone` - MILESTONE
70
- * `Bug` - BUG
71
73
  title (str):
72
74
  description (Any):
73
75
  notion_document (Union['TaskNotionDocument', None]):
@@ -84,7 +86,7 @@ class Task:
84
86
  size (Union[None, int]):
85
87
  start_at (Union[None, datetime.datetime]):
86
88
  due_at (Union[None, datetime.datetime]):
87
- time_tracking (Union[Any, None]):
89
+ time_tracking (Any):
88
90
  remind_at (Union[None, datetime.datetime]):
89
91
  recurrence (Union[Any, None]):
90
92
  recurs_next_at (Union[None, datetime.datetime]):
@@ -120,7 +122,7 @@ class Task:
120
122
  size: Union[None, int]
121
123
  start_at: Union[None, datetime.datetime]
122
124
  due_at: Union[None, datetime.datetime]
123
- time_tracking: Union[Any, None]
125
+ time_tracking: Any
124
126
  remind_at: Union[None, datetime.datetime]
125
127
  recurrence: Union[Any, None]
126
128
  recurs_next_at: Union[None, datetime.datetime]
@@ -214,7 +216,6 @@ class Task:
214
216
  else:
215
217
  due_at = self.due_at
216
218
 
217
- time_tracking: Union[Any, None]
218
219
  time_tracking = self.time_tracking
219
220
 
220
221
  remind_at: Union[None, str]
@@ -435,12 +436,7 @@ class Task:
435
436
 
436
437
  due_at = _parse_due_at(d.pop("dueAt"))
437
438
 
438
- def _parse_time_tracking(data: object) -> Union[Any, None]:
439
- if data is None:
440
- return data
441
- return cast(Union[Any, None], data)
442
-
443
- time_tracking = _parse_time_tracking(d.pop("timeTracking"))
439
+ time_tracking = d.pop("timeTracking")
444
440
 
445
441
  def _parse_remind_at(data: object) -> Union[None, datetime.datetime]:
446
442
  if data is None:
@@ -52,16 +52,18 @@ class TaskCreate:
52
52
  dartboard_duid (Union[Unset, str]):
53
53
  order (Union[Unset, str]):
54
54
  expanded (Union[Unset, bool]):
55
- kind (Union[Unset, TaskKind]): * `Task` - TASK
55
+ kind (Union[Unset, TaskKind]): * `Project` - PROJECT
56
+ * `Milestone` - MILESTONE
57
+ * `Task` - TASK
56
58
  * `Subtask` - SUBTASK
57
- * `Project` - PROJECT
59
+ * `Epic` - EPIC
60
+ * `Story` - STORY
58
61
  * `Issue` - ISSUE
59
62
  * `Subissue` - SUBISSUE
60
- * `Epic` - EPIC
63
+ * `Bug` - BUG
64
+ * `Spike` - SPIKE
61
65
  * `Item` - ITEM
62
66
  * `Client` - CLIENT
63
- * `Milestone` - MILESTONE
64
- * `Bug` - BUG
65
67
  title (Union[Unset, str]):
66
68
  description (Union[Unset, Any]):
67
69
  description_markdown (Union[Unset, str]):
@@ -9,6 +9,8 @@ class TaskKind(str, Enum):
9
9
  ITEM = "Item"
10
10
  MILESTONE = "Milestone"
11
11
  PROJECT = "Project"
12
+ SPIKE = "Spike"
13
+ STORY = "Story"
12
14
  SUBISSUE = "Subissue"
13
15
  SUBTASK = "Subtask"
14
16
  TASK = "Task"
@@ -52,16 +52,18 @@ class TaskUpdate:
52
52
  dartboard_duid (Union[Unset, str]):
53
53
  order (Union[Unset, str]):
54
54
  expanded (Union[Unset, bool]):
55
- kind (Union[Unset, TaskKind]): * `Task` - TASK
55
+ kind (Union[Unset, TaskKind]): * `Project` - PROJECT
56
+ * `Milestone` - MILESTONE
57
+ * `Task` - TASK
56
58
  * `Subtask` - SUBTASK
57
- * `Project` - PROJECT
59
+ * `Epic` - EPIC
60
+ * `Story` - STORY
58
61
  * `Issue` - ISSUE
59
62
  * `Subissue` - SUBISSUE
60
- * `Epic` - EPIC
63
+ * `Bug` - BUG
64
+ * `Spike` - SPIKE
61
65
  * `Item` - ITEM
62
66
  * `Client` - CLIENT
63
- * `Milestone` - MILESTONE
64
- * `Bug` - BUG
65
67
  title (Union[Unset, str]):
66
68
  description (Union[Unset, Any]):
67
69
  description_markdown (Union[Unset, str]):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dart-tools
3
- Version: 0.5.12
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
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "dart-tools"
3
- version = "0.5.12"
3
+ version = "0.6.0"
4
4
  description = "The Dart CLI and Python Library"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.8"
File without changes
File without changes
File without changes
File without changes