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.
- {dart_tools-0.5.11/dart_tools.egg-info → dart_tools-0.6.0}/PKG-INFO +2 -2
- {dart_tools-0.5.11 → dart_tools-0.6.0}/README.md +1 -1
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/dart.py +56 -51
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/__init__.py +4 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/properties_list_kind.py +3 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/property_.py +4 -1
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/property_create.py +4 -1
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/property_kind.py +3 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/property_update.py +4 -1
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task.py +28 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_create.py +37 -0
- dart_tools-0.6.0/dart/generated/models/task_detail_mode.py +10 -0
- dart_tools-0.6.0/dart/generated/models/task_kind.py +19 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_update.py +37 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/tenant.py +8 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/tenant_update.py +9 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/user.py +11 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0/dart_tools.egg-info}/PKG-INFO +2 -2
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart_tools.egg-info/SOURCES.txt +2 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/pyproject.toml +1 -1
- {dart_tools-0.5.11 → dart_tools-0.6.0}/LICENSE +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/__init__.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/exception.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/__init__.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/api/__init__.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/api/transactions/__init__.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/api/transactions/transactions_create.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/client.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/errors.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/attachment.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/attachment_create.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/attachment_update.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/brainstorm.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/brainstorm_create.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/brainstorm_state.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/brainstorm_update.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/color_name.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/comment.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/comment_create.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/comment_reaction.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/comment_reaction_create.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/comment_reaction_update.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/comment_update.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/dartboard.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/dartboard_create.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/dartboard_kind.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/dartboard_update.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/dartboards_list_kind.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/discord_integration.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/doc.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/doc_create.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/doc_source_type.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/doc_update.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/entity_name.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/event.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/event_actor.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/event_create.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/event_kind.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/event_subscription.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/event_subscription_update.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/filter_applicability.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/filter_assignee.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/filter_connector.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/filter_group.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/filter_search.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/filter_set.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/folder.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/folder_create.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/folder_kind.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/folder_update.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/folders_list_kind.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/form.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/form_create.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/form_field.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/form_field_create.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/form_field_update.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/form_update.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/github_integration.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/github_integration_tenant_extension_status.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/google_data.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/icon_kind.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/layout.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/layout_config.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/layout_create.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/layout_kind.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/layout_kind_config_map.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/layout_update.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/models_response.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/notification.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/notification_update.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/notion_integration.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/notion_integration_tenant_extension_status.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/operation.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/operation_kind.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/operation_model_kind.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/option.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/option_create.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/option_update.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_attachment_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_comment_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_comment_reaction_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_dartboard_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_doc_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_folder_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_form_field_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_form_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_layout_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_option_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_property_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_relationship_kind_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_relationship_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_space_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_status_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_task_doc_relationship_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_task_link_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_task_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_tenant_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_user_dartboard_layout_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_user_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/paginated_view_list.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/priority.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/relationship.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/relationship_create.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/relationship_kind.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/relationship_kind_create.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/relationship_kind_kind.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/relationship_kind_update.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/report_kind.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/request_body.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/response_body.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/slack_integration.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/slack_integration_tenant_extension_status.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/sort.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/space.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/space_create.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/space_kind.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/space_update.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/sprint_mode.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/status.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/status_create.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/status_kind.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/status_update.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/statuses_list_kind.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/subscription.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/subtask_display_mode.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/summary_statistic_kind.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_doc_relationship.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_doc_relationship_create.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_link.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_link_create.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_link_kind.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_link_update.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_notion_document.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_notion_document_block_children_map_type_0.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_notion_document_block_map_type_0.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_notion_document_page_map_type_0.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_properties.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/task_source_type.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/theme.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/transaction.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/transaction_kind.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/transaction_response.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/user_dartboard_layout.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/user_dartboard_layout_create.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/user_data_entity_retrieve_entity_kind.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/user_role.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/user_status.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/user_update.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/validation_error_response.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/validation_error_response_items.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/view.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/view_create.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/view_kind.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/view_update.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/models/zapier_integration.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/py.typed +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/generated/types.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/order_manager.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart/webhook.py +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart_tools.egg-info/dependency_links.txt +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart_tools.egg-info/dist/dart-tools-0.3.3.tar.gz +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart_tools.egg-info/entry_points.txt +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart_tools.egg-info/requires.txt +0 -0
- {dart_tools-0.5.11 → dart_tools-0.6.0}/dart_tools.egg-info/top_level.txt +0 -0
- {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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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(
|
|
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 =
|
|
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:
|
|
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:
|
|
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:
|
|
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,
|