dart-tools 0.6.16__py3-none-any.whl → 0.7.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of dart-tools might be problematic. Click here for more details.
- dart/__init__.py +8 -6
- dart/dart.py +423 -702
- dart/generated/__init__.py +1 -1
- dart/generated/api/__init__.py +8 -0
- dart/generated/api/comment/__init__.py +1 -0
- dart/generated/api/{transactions/transactions_create.py → comment/create_comment.py} +57 -58
- dart/generated/api/config/__init__.py +1 -0
- dart/generated/api/config/get_config.py +141 -0
- dart/generated/api/dartboard/__init__.py +1 -0
- dart/generated/api/{attachments/attachments_list.py → dartboard/retrieve_dartboard.py} +58 -62
- dart/generated/api/doc/__init__.py +1 -0
- dart/generated/api/doc/create_doc.py +179 -0
- dart/generated/api/doc/delete_doc.py +165 -0
- dart/generated/api/{comments/comments_list.py → doc/list_docs.py} +115 -111
- dart/generated/api/{forms/forms_list.py → doc/retrieve_doc.py} +58 -62
- dart/generated/api/doc/update_doc.py +188 -0
- dart/generated/api/folder/__init__.py +1 -0
- dart/generated/api/{webhooks/webhooks_list.py → folder/retrieve_folder.py} +58 -62
- dart/generated/api/task/__init__.py +1 -0
- dart/generated/api/task/create_task.py +172 -0
- dart/generated/api/task/delete_task.py +165 -0
- dart/generated/api/task/list_tasks.py +497 -0
- dart/generated/api/{layouts/layouts_list.py → task/retrieve_task.py} +58 -62
- dart/generated/api/task/update_task.py +188 -0
- dart/generated/api/view/__init__.py +1 -0
- dart/generated/api/{tenants/tenants_list.py → view/retrieve_view.py} +58 -62
- dart/generated/client.py +13 -13
- dart/generated/models/__init__.py +34 -342
- dart/generated/models/comment.py +34 -150
- dart/generated/models/comment_create.py +18 -97
- dart/generated/models/concise_doc.py +84 -0
- dart/generated/models/concise_task.py +267 -0
- dart/generated/models/dartboard.py +37 -237
- dart/generated/models/doc.py +31 -183
- dart/generated/models/doc_create.py +22 -238
- dart/generated/models/doc_update.py +26 -233
- dart/generated/models/folder.py +39 -84
- dart/generated/models/list_docs_o_item.py +15 -0
- dart/generated/models/{paginated_attachment_list.py → paginated_concise_doc_list.py} +18 -17
- dart/generated/models/{paginated_dartboard_list.py → paginated_concise_task_list.py} +18 -17
- dart/generated/models/task.py +149 -406
- dart/generated/models/task_create.py +113 -428
- dart/generated/models/task_update.py +113 -421
- dart/generated/models/user.py +14 -192
- dart/generated/models/user_space_configuration.py +147 -0
- dart/generated/models/view.py +39 -149
- dart/generated/models/wrapped_comment.py +65 -0
- dart/generated/models/wrapped_comment_create.py +65 -0
- dart/generated/models/wrapped_dartboard.py +65 -0
- dart/generated/models/wrapped_doc.py +65 -0
- dart/generated/models/wrapped_doc_create.py +65 -0
- dart/generated/models/wrapped_doc_update.py +65 -0
- dart/generated/models/wrapped_folder.py +65 -0
- dart/generated/models/wrapped_task.py +65 -0
- dart/generated/models/wrapped_task_create.py +65 -0
- dart/generated/models/wrapped_task_update.py +65 -0
- dart/generated/models/wrapped_view.py +65 -0
- dart/generated/types.py +4 -3
- dart/old.py +216 -0
- dart/order_manager.py +4 -15
- dart/webhook.py +2 -7
- {dart_tools-0.6.16.dist-info → dart_tools-0.7.1.dist-info}/METADATA +33 -62
- dart_tools-0.7.1.dist-info/RECORD +71 -0
- {dart_tools-0.6.16.dist-info → dart_tools-0.7.1.dist-info}/WHEEL +1 -1
- dart/generated/api/attachments/__init__.py +0 -0
- dart/generated/api/comments/__init__.py +0 -0
- dart/generated/api/dartboards/__init__.py +0 -0
- dart/generated/api/dartboards/dartboards_list.py +0 -286
- dart/generated/api/dashboards/__init__.py +0 -0
- dart/generated/api/dashboards/dashboards_list.py +0 -199
- dart/generated/api/docs/__init__.py +0 -0
- dart/generated/api/docs/docs_list.py +0 -387
- dart/generated/api/folders/__init__.py +0 -0
- dart/generated/api/folders/folders_list.py +0 -249
- dart/generated/api/form_fields/__init__.py +0 -0
- dart/generated/api/form_fields/form_fields_list.py +0 -169
- dart/generated/api/forms/__init__.py +0 -0
- dart/generated/api/layouts/__init__.py +0 -0
- dart/generated/api/links/__init__.py +0 -0
- dart/generated/api/links/links_list.py +0 -169
- dart/generated/api/options/__init__.py +0 -0
- dart/generated/api/options/options_list.py +0 -244
- dart/generated/api/properties/__init__.py +0 -0
- dart/generated/api/properties/properties_list.py +0 -219
- dart/generated/api/reactions/__init__.py +0 -0
- dart/generated/api/reactions/reactions_list.py +0 -169
- dart/generated/api/relationship_kinds/__init__.py +0 -0
- dart/generated/api/relationship_kinds/relationship_kinds_list.py +0 -169
- dart/generated/api/relationships/__init__.py +0 -0
- dart/generated/api/relationships/relationships_list.py +0 -169
- dart/generated/api/spaces/__init__.py +0 -0
- dart/generated/api/spaces/spaces_list.py +0 -229
- dart/generated/api/statuses/__init__.py +0 -0
- dart/generated/api/statuses/statuses_list.py +0 -264
- dart/generated/api/task_doc_relationships/__init__.py +0 -0
- dart/generated/api/task_doc_relationships/task_doc_relationships_list.py +0 -169
- dart/generated/api/task_kinds/__init__.py +0 -0
- dart/generated/api/task_kinds/task_kinds_list.py +0 -219
- dart/generated/api/tasks/__init__.py +0 -0
- dart/generated/api/tasks/tasks_list.py +0 -461
- dart/generated/api/tenants/__init__.py +0 -0
- dart/generated/api/transactions/__init__.py +0 -0
- dart/generated/api/user_dartboard_layouts/__init__.py +0 -0
- dart/generated/api/user_dartboard_layouts/user_dartboard_layouts_list.py +0 -169
- dart/generated/api/user_data/__init__.py +0 -0
- dart/generated/api/user_data/user_data_entity_retrieve.py +0 -580
- dart/generated/api/users/__init__.py +0 -0
- dart/generated/api/users/users_list.py +0 -229
- dart/generated/api/views/__init__.py +0 -0
- dart/generated/api/views/views_list.py +0 -199
- dart/generated/api/webhooks/__init__.py +0 -0
- dart/generated/models/attachment.py +0 -112
- dart/generated/models/attachment_create.py +0 -121
- dart/generated/models/attachment_update.py +0 -125
- dart/generated/models/bar_chart_adtl.py +0 -98
- dart/generated/models/brainstorm.py +0 -149
- dart/generated/models/brainstorm_create.py +0 -134
- dart/generated/models/brainstorm_state.py +0 -10
- dart/generated/models/brainstorm_update.py +0 -153
- dart/generated/models/burn_up_chart_adtl.py +0 -103
- dart/generated/models/chart.py +0 -208
- dart/generated/models/chart_aggregation.py +0 -10
- dart/generated/models/chart_type.py +0 -14
- dart/generated/models/comment_reaction.py +0 -84
- dart/generated/models/comment_reaction_create.py +0 -82
- dart/generated/models/comment_reaction_update.py +0 -87
- dart/generated/models/comment_update.py +0 -148
- dart/generated/models/dartboard_create.py +0 -315
- dart/generated/models/dartboard_kind.py +0 -12
- dart/generated/models/dartboard_update.py +0 -317
- dart/generated/models/dartboards_list_kind.py +0 -12
- dart/generated/models/dashboard.py +0 -185
- dart/generated/models/dashboard_create.py +0 -171
- dart/generated/models/dashboard_update.py +0 -173
- dart/generated/models/discord_integration.py +0 -72
- dart/generated/models/doc_source_type.py +0 -13
- dart/generated/models/docs_list_o_item.py +0 -15
- dart/generated/models/entity_name.py +0 -22
- dart/generated/models/event.py +0 -420
- dart/generated/models/event_actor.py +0 -19
- dart/generated/models/event_create.py +0 -158
- dart/generated/models/event_kind.py +0 -88
- dart/generated/models/event_subscription.py +0 -74
- dart/generated/models/event_subscription_update.py +0 -173
- dart/generated/models/filter_applicability.py +0 -22
- dart/generated/models/filter_assignee.py +0 -116
- dart/generated/models/filter_connector.py +0 -9
- dart/generated/models/filter_group.py +0 -112
- dart/generated/models/filter_search.py +0 -82
- dart/generated/models/filter_set.py +0 -116
- dart/generated/models/folder_create.py +0 -150
- dart/generated/models/folder_kind.py +0 -10
- dart/generated/models/folder_update.py +0 -152
- dart/generated/models/folders_list_kind.py +0 -10
- dart/generated/models/form.py +0 -147
- dart/generated/models/form_create.py +0 -141
- dart/generated/models/form_field.py +0 -144
- dart/generated/models/form_field_create.py +0 -129
- dart/generated/models/form_field_update.py +0 -132
- dart/generated/models/form_update.py +0 -142
- dart/generated/models/github_integration.py +0 -163
- dart/generated/models/github_integration_tenant_extension_status.py +0 -11
- dart/generated/models/google_data.py +0 -94
- dart/generated/models/icon_kind.py +0 -10
- dart/generated/models/layout.py +0 -167
- dart/generated/models/layout_config.py +0 -70
- dart/generated/models/layout_create.py +0 -130
- dart/generated/models/layout_kind.py +0 -11
- dart/generated/models/layout_kind_config_map.py +0 -56
- dart/generated/models/layout_update.py +0 -130
- dart/generated/models/line_chart_adtl.py +0 -72
- dart/generated/models/models_response.py +0 -671
- dart/generated/models/notification.py +0 -120
- dart/generated/models/notification_update.py +0 -100
- dart/generated/models/notion_integration.py +0 -90
- dart/generated/models/notion_integration_tenant_extension_status.py +0 -10
- dart/generated/models/number_chart_adtl.py +0 -77
- dart/generated/models/operation.py +0 -874
- dart/generated/models/operation_kind.py +0 -12
- dart/generated/models/operation_model_kind.py +0 -36
- dart/generated/models/option.py +0 -118
- dart/generated/models/option_create.py +0 -105
- dart/generated/models/option_update.py +0 -107
- dart/generated/models/paginated_comment_list.py +0 -122
- dart/generated/models/paginated_comment_reaction_list.py +0 -122
- dart/generated/models/paginated_dashboard_list.py +0 -122
- dart/generated/models/paginated_doc_list.py +0 -122
- dart/generated/models/paginated_folder_list.py +0 -122
- dart/generated/models/paginated_form_field_list.py +0 -122
- dart/generated/models/paginated_form_list.py +0 -122
- dart/generated/models/paginated_layout_list.py +0 -122
- dart/generated/models/paginated_option_list.py +0 -122
- dart/generated/models/paginated_property_list.py +0 -122
- dart/generated/models/paginated_relationship_kind_list.py +0 -122
- dart/generated/models/paginated_relationship_list.py +0 -122
- dart/generated/models/paginated_space_list.py +0 -122
- dart/generated/models/paginated_status_list.py +0 -122
- dart/generated/models/paginated_task_doc_relationship_list.py +0 -122
- dart/generated/models/paginated_task_kind_list.py +0 -122
- dart/generated/models/paginated_task_link_list.py +0 -122
- dart/generated/models/paginated_task_list.py +0 -122
- dart/generated/models/paginated_tenant_list.py +0 -122
- dart/generated/models/paginated_user_dartboard_layout_list.py +0 -122
- dart/generated/models/paginated_user_list.py +0 -122
- dart/generated/models/paginated_view_list.py +0 -122
- dart/generated/models/paginated_webhook_list.py +0 -122
- dart/generated/models/pie_chart_adtl.py +0 -69
- dart/generated/models/pie_chart_display_metric.py +0 -9
- dart/generated/models/properties_list_kind.py +0 -32
- dart/generated/models/property_.py +0 -153
- dart/generated/models/property_create.py +0 -137
- dart/generated/models/property_kind.py +0 -32
- dart/generated/models/property_update.py +0 -146
- dart/generated/models/relationship.py +0 -74
- dart/generated/models/relationship_create.py +0 -93
- dart/generated/models/relationship_kind.py +0 -123
- dart/generated/models/relationship_kind_create.py +0 -117
- dart/generated/models/relationship_kind_kind.py +0 -12
- dart/generated/models/relationship_kind_update.py +0 -119
- dart/generated/models/report_kind.py +0 -9
- dart/generated/models/request_body.py +0 -83
- dart/generated/models/response_body.py +0 -72
- dart/generated/models/saml_config.py +0 -77
- dart/generated/models/saml_config_tenant_extension_status.py +0 -9
- dart/generated/models/slack_integration.py +0 -90
- dart/generated/models/slack_integration_tenant_extension_status.py +0 -10
- dart/generated/models/sort.py +0 -66
- dart/generated/models/space.py +0 -311
- dart/generated/models/space_create.py +0 -340
- dart/generated/models/space_kind.py +0 -10
- dart/generated/models/space_update.py +0 -341
- dart/generated/models/sprint_mode.py +0 -9
- dart/generated/models/status.py +0 -141
- dart/generated/models/status_create.py +0 -125
- dart/generated/models/status_kind.py +0 -12
- dart/generated/models/status_update.py +0 -135
- dart/generated/models/statuses_list_kind.py +0 -12
- dart/generated/models/subscription.py +0 -9
- dart/generated/models/subtask_display_mode.py +0 -10
- dart/generated/models/summary_statistic_kind.py +0 -14
- dart/generated/models/table_chart_adtl.py +0 -98
- dart/generated/models/task_detail_mode.py +0 -10
- dart/generated/models/task_doc_relationship.py +0 -96
- dart/generated/models/task_doc_relationship_create.py +0 -74
- dart/generated/models/task_kind.py +0 -149
- dart/generated/models/task_kind_create.py +0 -144
- dart/generated/models/task_kind_kind.py +0 -9
- dart/generated/models/task_kind_update.py +0 -153
- dart/generated/models/task_kinds_list_kind.py +0 -9
- dart/generated/models/task_link.py +0 -131
- dart/generated/models/task_link_create.py +0 -152
- dart/generated/models/task_link_kind.py +0 -19
- dart/generated/models/task_link_update.py +0 -155
- dart/generated/models/task_notion_document.py +0 -196
- dart/generated/models/task_notion_document_block_children_map_type_0.py +0 -43
- dart/generated/models/task_notion_document_block_map_type_0.py +0 -43
- dart/generated/models/task_notion_document_page_map_type_0.py +0 -43
- dart/generated/models/task_properties.py +0 -43
- dart/generated/models/task_source_type.py +0 -31
- dart/generated/models/tenant.py +0 -386
- dart/generated/models/tenant_update.py +0 -166
- dart/generated/models/theme.py +0 -10
- dart/generated/models/transaction.py +0 -158
- dart/generated/models/transaction_kind.py +0 -74
- dart/generated/models/transaction_response.py +0 -96
- dart/generated/models/user_dartboard_layout.py +0 -66
- dart/generated/models/user_dartboard_layout_create.py +0 -74
- dart/generated/models/user_data_entity_retrieve_entity_kind.py +0 -32
- dart/generated/models/user_role.py +0 -12
- dart/generated/models/user_status.py +0 -12
- dart/generated/models/user_update.py +0 -210
- dart/generated/models/validation_error_response.py +0 -64
- dart/generated/models/validation_error_response_items.py +0 -43
- dart/generated/models/view_create.py +0 -213
- dart/generated/models/view_kind.py +0 -11
- dart/generated/models/view_update.py +0 -215
- dart/generated/models/webhook.py +0 -96
- dart/generated/models/webhook_create.py +0 -77
- dart/generated/models/webhook_update.py +0 -78
- dart/generated/models/zapier_integration.py +0 -66
- dart_tools-0.6.16.dist-info/RECORD +0 -257
- dart_tools-0.6.16.dist-info/dist/dart-tools-0.3.3.tar.gz +0 -0
- {dart_tools-0.6.16.dist-info → dart_tools-0.7.1.dist-info}/entry_points.txt +0 -0
- {dart_tools-0.6.16.dist-info → dart_tools-0.7.1.dist-info/licenses}/LICENSE +0 -0
- {dart_tools-0.6.16.dist-info → dart_tools-0.7.1.dist-info}/top_level.txt +0 -0
dart/old.py
ADDED
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
|
|
4
|
+
"""These are legacy components that still rely on private API, moved out of dart.py."""
|
|
5
|
+
|
|
6
|
+
# Required for type hinting compatibility when using Python 3.9
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from functools import wraps
|
|
10
|
+
from typing import Any, Callable, Union
|
|
11
|
+
|
|
12
|
+
import httpx
|
|
13
|
+
|
|
14
|
+
from .dart import (
|
|
15
|
+
Dart,
|
|
16
|
+
_auth_failure_exit,
|
|
17
|
+
_handle_request_errors,
|
|
18
|
+
_log,
|
|
19
|
+
_make_id,
|
|
20
|
+
_unknown_failure_exit,
|
|
21
|
+
)
|
|
22
|
+
from .exception import DartException
|
|
23
|
+
|
|
24
|
+
_CREATE_TRANSACTION_URL_FRAG = "/transactions/create"
|
|
25
|
+
_LIST_DARTBOARDS_URL_FRAG = "/dartboards"
|
|
26
|
+
_LIST_FOLDERS_URL_FRAG = "/folders"
|
|
27
|
+
_REPLICATE_DARTBOARD_URL_FRAG_FMT = "/dartboards/replicate/{dartboard_id}"
|
|
28
|
+
_REPLICATE_SPACE_URL_FRAG_FMT = "/spaces/replicate/{space_id}"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def _get_space_url(host: str, space_id: str) -> str:
|
|
32
|
+
return f"{host}/s/{space_id}"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _get_dartboard_url(host: str, dartboard_id: str) -> str:
|
|
36
|
+
return f"{host}/d/{dartboard_id}"
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def _get_folder_url(host: str, folder_id: str) -> str:
|
|
40
|
+
return f"{host}/f/{folder_id}"
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def _handle_api_errors(fn: Callable[..., httpx.Response]) -> Callable[..., httpx.Response]:
|
|
44
|
+
@wraps(fn)
|
|
45
|
+
def wrapper(*args, **kwargs):
|
|
46
|
+
response = fn(*args, **kwargs)
|
|
47
|
+
if response.status_code in {401, 403}:
|
|
48
|
+
_auth_failure_exit()
|
|
49
|
+
return response
|
|
50
|
+
|
|
51
|
+
return wrapper
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def _parse_transaction_response_and_maybe_exit(response: dict, model_kind: str, model_id: str) -> Any:
|
|
55
|
+
if (
|
|
56
|
+
response is None
|
|
57
|
+
or "results" not in response
|
|
58
|
+
or not response["results"]
|
|
59
|
+
or not response["results"][0]["success"]
|
|
60
|
+
):
|
|
61
|
+
_unknown_failure_exit()
|
|
62
|
+
models = response["results"][0]["models"][f"{model_kind}s"]
|
|
63
|
+
model = next((e for e in models if e["duid"] == model_id), None)
|
|
64
|
+
if model is None:
|
|
65
|
+
_unknown_failure_exit()
|
|
66
|
+
return model
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
class DartOld(Dart):
|
|
70
|
+
@_handle_api_errors
|
|
71
|
+
@_handle_request_errors
|
|
72
|
+
def transact(self, operations: list[dict], kind: str) -> httpx.Response:
|
|
73
|
+
transaction = {
|
|
74
|
+
"duid": _make_id(),
|
|
75
|
+
"kind": kind,
|
|
76
|
+
"operations": operations,
|
|
77
|
+
}
|
|
78
|
+
request_body = {
|
|
79
|
+
"client_duid": self.get_client_id(),
|
|
80
|
+
"items": [transaction],
|
|
81
|
+
}
|
|
82
|
+
return self._private_api.get_httpx_client().post(_CREATE_TRANSACTION_URL_FRAG, json=request_body)
|
|
83
|
+
|
|
84
|
+
@_handle_api_errors
|
|
85
|
+
@_handle_request_errors
|
|
86
|
+
def get(self, url_frag, *args, **kwargs) -> httpx.Response:
|
|
87
|
+
return self._private_api.get_httpx_client().get(url_frag, *args, **kwargs)
|
|
88
|
+
|
|
89
|
+
@_handle_api_errors
|
|
90
|
+
@_handle_request_errors
|
|
91
|
+
def post(self, url_frag, *args, **kwargs) -> httpx.Response:
|
|
92
|
+
return self._private_api.get_httpx_client().post(url_frag, *args, **kwargs)
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def replicate_space(
|
|
96
|
+
space_id: str,
|
|
97
|
+
*,
|
|
98
|
+
title: Union[str, None] = None,
|
|
99
|
+
abrev: Union[str, None] = None,
|
|
100
|
+
color_hex: Union[str, None] = None,
|
|
101
|
+
accessible_by_team: Union[bool, None] = None,
|
|
102
|
+
accessor_duids: Union[list[str], None] = None,
|
|
103
|
+
) -> str:
|
|
104
|
+
dart = DartOld()
|
|
105
|
+
content = {}
|
|
106
|
+
if title is not None:
|
|
107
|
+
content["title"] = title
|
|
108
|
+
if abrev is not None:
|
|
109
|
+
content["abrev"] = abrev
|
|
110
|
+
if color_hex is not None:
|
|
111
|
+
content["colorHex"] = color_hex
|
|
112
|
+
if accessible_by_team is not None:
|
|
113
|
+
content["accessibleByTeam"] = accessible_by_team
|
|
114
|
+
if accessor_duids is not None:
|
|
115
|
+
content["accessorIds"] = accessor_duids
|
|
116
|
+
response = dart.post(_REPLICATE_SPACE_URL_FRAG_FMT.format(space_id=space_id), json=content)
|
|
117
|
+
space_id = response.json()["duid"]
|
|
118
|
+
|
|
119
|
+
_log(f"Replicated space at {_get_space_url(dart.get_base_url(), space_id)}")
|
|
120
|
+
_log("Done.")
|
|
121
|
+
return space_id
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
def get_dartboards(space_id: str, include_special: bool = False) -> list[dict]:
|
|
125
|
+
dart = DartOld()
|
|
126
|
+
|
|
127
|
+
response = dart.get(_LIST_DARTBOARDS_URL_FRAG, params={"space_duid": space_id})
|
|
128
|
+
response_json = response.json()
|
|
129
|
+
dartboards = response_json["results"] if response_json is not None else []
|
|
130
|
+
if not include_special:
|
|
131
|
+
dartboards = [e for e in dartboards if e["kind"] == "Custom"]
|
|
132
|
+
|
|
133
|
+
_log(f"Got {len(dartboards)} dartboards")
|
|
134
|
+
_log("Done.")
|
|
135
|
+
return dartboards
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
def replicate_dartboard(dartboard_id: str, *, title: Union[str, None] = None) -> str:
|
|
139
|
+
dart = DartOld()
|
|
140
|
+
content = {}
|
|
141
|
+
if title is not None:
|
|
142
|
+
content["title"] = title
|
|
143
|
+
response = dart.post(_REPLICATE_DARTBOARD_URL_FRAG_FMT.format(dartboard_id=dartboard_id), json=content)
|
|
144
|
+
dartboard_id = response.json()["duid"]
|
|
145
|
+
|
|
146
|
+
_log(f"Replicated dartboard at {_get_dartboard_url(dart.get_base_url(), dartboard_id)}")
|
|
147
|
+
_log("Done.")
|
|
148
|
+
return dartboard_id
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def update_dartboard(dartboard_id: str, *, title: Union[str, None] = None, color_hex: Union[str, None] = None) -> dict:
|
|
152
|
+
dart = DartOld()
|
|
153
|
+
dartboard_update = {}
|
|
154
|
+
|
|
155
|
+
if title is not None:
|
|
156
|
+
dartboard_update["title"] = title
|
|
157
|
+
if color_hex is not None:
|
|
158
|
+
dartboard_update["color_hex"] = color_hex
|
|
159
|
+
|
|
160
|
+
if not dartboard_update:
|
|
161
|
+
raise DartException("At least one of 'title' or 'color_hex' must be provided to update a dartboard.")
|
|
162
|
+
|
|
163
|
+
dartboard_update["duid"] = dartboard_id
|
|
164
|
+
dartboard_update_op = {
|
|
165
|
+
"model": "dartboard",
|
|
166
|
+
"kind": "update",
|
|
167
|
+
"data": dartboard_update,
|
|
168
|
+
}
|
|
169
|
+
response = dart.transact([dartboard_update_op], "dartboard_update")
|
|
170
|
+
response_json = response.json()
|
|
171
|
+
dartboard = _parse_transaction_response_and_maybe_exit(response_json, "dartboard", dartboard_id)
|
|
172
|
+
|
|
173
|
+
_log(f"Updated dartboard {dartboard['title']} at {_get_dartboard_url(dart.get_base_url(), dartboard['duid'])}")
|
|
174
|
+
_log("Done.")
|
|
175
|
+
return dartboard
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
def get_folders(space_id: str, *, include_special: Union[bool, None] = False) -> list[dict]:
|
|
179
|
+
dart = DartOld()
|
|
180
|
+
|
|
181
|
+
response = dart.get(_LIST_FOLDERS_URL_FRAG, params={"space_duid": space_id})
|
|
182
|
+
response_json = response.json()
|
|
183
|
+
folders = response_json["results"] if response_json is not None else []
|
|
184
|
+
if not include_special:
|
|
185
|
+
folders = [e for e in folders if e["kind"] == "Other"]
|
|
186
|
+
|
|
187
|
+
_log(f"Got {len(folders)} folders")
|
|
188
|
+
_log("Done.")
|
|
189
|
+
return folders
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
def update_folder(folder_id: str, *, title: Union[str, None] = None, color_hex: Union[str, None] = None) -> dict:
|
|
193
|
+
dart = DartOld()
|
|
194
|
+
folder_update = {}
|
|
195
|
+
|
|
196
|
+
if title is not None:
|
|
197
|
+
folder_update["title"] = title
|
|
198
|
+
if color_hex is not None:
|
|
199
|
+
folder_update["color_hex"] = color_hex
|
|
200
|
+
|
|
201
|
+
if not folder_update:
|
|
202
|
+
raise DartException("At least one of 'title' or 'color_hex' must be provided to update a folder.")
|
|
203
|
+
|
|
204
|
+
folder_update["duid"] = folder_id
|
|
205
|
+
folder_update_op = {
|
|
206
|
+
"model": "folder",
|
|
207
|
+
"kind": "update",
|
|
208
|
+
"data": folder_update,
|
|
209
|
+
}
|
|
210
|
+
response = dart.transact([folder_update_op], "folder_update")
|
|
211
|
+
response_json = response.json()
|
|
212
|
+
folder = _parse_transaction_response_and_maybe_exit(response_json, "folder", folder_id)
|
|
213
|
+
|
|
214
|
+
_log(f"Updated folder {folder['title']} at {_get_folder_url(dart.get_base_url(), folder['duid'])}")
|
|
215
|
+
_log("Done.")
|
|
216
|
+
return folder
|
dart/order_manager.py
CHANGED
|
@@ -6,7 +6,6 @@ from random import choices
|
|
|
6
6
|
|
|
7
7
|
from .exception import OrderException
|
|
8
8
|
|
|
9
|
-
|
|
10
9
|
_MIN_ORD = 1
|
|
11
10
|
_MAX_ORD = 256
|
|
12
11
|
|
|
@@ -28,12 +27,8 @@ def _get_orders_between_recursive(start: str, end: str, count: int):
|
|
|
28
27
|
prefix = start[:i].ljust(i, chr(_MIN_ORD))
|
|
29
28
|
if diff > count:
|
|
30
29
|
frac = diff / (count + 1)
|
|
31
|
-
return [
|
|
32
|
-
|
|
33
|
-
]
|
|
34
|
-
segs = (
|
|
35
|
-
[start[i:]] + [chr(start_ord + j + 1) for j in range(diff - 1)] + [end[i:]]
|
|
36
|
-
)
|
|
30
|
+
return [prefix + chr(start_ord + round(frac * (j + 1))) for j in range(0, count)]
|
|
31
|
+
segs = [start[i:]] + [chr(start_ord + j + 1) for j in range(diff - 1)] + [end[i:]]
|
|
37
32
|
tot_amount = 0
|
|
38
33
|
amounts = []
|
|
39
34
|
for j in range(diff):
|
|
@@ -42,10 +37,7 @@ def _get_orders_between_recursive(start: str, end: str, count: int):
|
|
|
42
37
|
tot_amount += next_amount
|
|
43
38
|
res = []
|
|
44
39
|
for j in range(diff):
|
|
45
|
-
res += [
|
|
46
|
-
prefix + e
|
|
47
|
-
for e in _get_orders_between_recursive(segs[j], segs[j + 1], amounts[j])
|
|
48
|
-
]
|
|
40
|
+
res += [prefix + e for e in _get_orders_between_recursive(segs[j], segs[j + 1], amounts[j])]
|
|
49
41
|
return res
|
|
50
42
|
raise OrderException(f"failed to get {count} values between {start} and {end}")
|
|
51
43
|
|
|
@@ -56,7 +48,4 @@ def get_orders_between(start: str | None, end: str | None, count: int = 1):
|
|
|
56
48
|
if bool(start) and bool(end) and start >= end:
|
|
57
49
|
print(f"invalid request for {count} values between {start} and {end}")
|
|
58
50
|
return [start] * count
|
|
59
|
-
return [
|
|
60
|
-
e + _make_order_suffix()
|
|
61
|
-
for e in _get_orders_between_recursive(start or "", end or "", count)
|
|
62
|
-
]
|
|
51
|
+
return [e + _make_order_suffix() for e in _get_orders_between_recursive(start or "", end or "", count)]
|
dart/webhook.py
CHANGED
|
@@ -2,19 +2,14 @@ import hashlib
|
|
|
2
2
|
import hmac
|
|
3
3
|
import os
|
|
4
4
|
|
|
5
|
-
|
|
6
5
|
_WEBHOOK_SECRET = os.environ.get("DART_WEBHOOK_SECRET")
|
|
7
|
-
_ENCODED_WEBHOOK_SECRET = (
|
|
8
|
-
_WEBHOOK_SECRET.encode() if _WEBHOOK_SECRET is not None else None
|
|
9
|
-
)
|
|
6
|
+
_ENCODED_WEBHOOK_SECRET = _WEBHOOK_SECRET.encode() if _WEBHOOK_SECRET is not None else None
|
|
10
7
|
|
|
11
8
|
|
|
12
9
|
def is_signature_correct(payload: bytes, signature: str) -> bool:
|
|
13
10
|
if _ENCODED_WEBHOOK_SECRET is None:
|
|
14
11
|
raise RuntimeError("DART_WEBHOOK_SECRET environment variable is not set")
|
|
15
|
-
expected_signature = hmac.new(
|
|
16
|
-
_ENCODED_WEBHOOK_SECRET, payload, hashlib.sha256
|
|
17
|
-
).hexdigest()
|
|
12
|
+
expected_signature = hmac.new(_ENCODED_WEBHOOK_SECRET, payload, hashlib.sha256).hexdigest()
|
|
18
13
|
try:
|
|
19
14
|
return hmac.compare_digest(expected_signature, signature)
|
|
20
15
|
except TypeError:
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: dart-tools
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.1
|
|
4
4
|
Summary: The Dart CLI and Python Library
|
|
5
|
-
Author-email: Dart
|
|
5
|
+
Author-email: Dart <software@itsdart.com>
|
|
6
6
|
License: MIT License
|
|
7
7
|
|
|
8
8
|
Copyright (c) 2023 Dart
|
|
@@ -28,8 +28,8 @@ License: MIT License
|
|
|
28
28
|
Project-URL: Homepage, https://www.itsdart.com/?nr=1
|
|
29
29
|
Project-URL: Web App, https://app.itsdart.com/
|
|
30
30
|
Project-URL: Help Center, https://help.itsdart.com/
|
|
31
|
-
Project-URL: Bugs and Features, https://github.com/its-dart/dart-tools/issues
|
|
32
|
-
Project-URL: Library Source, https://github.com/its-dart/dart-tools/
|
|
31
|
+
Project-URL: Bugs and Features, https://github.com/its-dart/dart-tools-py/issues
|
|
32
|
+
Project-URL: Library Source, https://github.com/its-dart/dart-tools-py/
|
|
33
33
|
Keywords: dart,cli,projectmanagement,taskmanagement
|
|
34
34
|
Classifier: Development Status :: 4 - Beta
|
|
35
35
|
Classifier: Environment :: Console
|
|
@@ -59,14 +59,14 @@ Requires-Dist: dateparser
|
|
|
59
59
|
Requires-Dist: httpx
|
|
60
60
|
Requires-Dist: pick
|
|
61
61
|
Requires-Dist: platformdirs
|
|
62
|
-
|
|
62
|
+
Dynamic: license-file
|
|
63
63
|
|
|
64
64
|
<div align="center">
|
|
65
65
|
<h1>Dart Tools</h1>
|
|
66
66
|
<p>
|
|
67
67
|
<a href="https://pypi.org/project/dart-tools"><img src="https://img.shields.io/pypi/v/dart-tools" alt="PyPI"></a>
|
|
68
68
|
<a href="pyproject.toml"><img src="https://img.shields.io/pypi/pyversions/dart-tools" alt="Supported Python Versions"></a>
|
|
69
|
-
<a href="LICENSE"><img src="https://img.shields.io/github/license/its-dart/dart-tools" alt="License"></a>
|
|
69
|
+
<a href="LICENSE"><img src="https://img.shields.io/github/license/its-dart/dart-tools-py" alt="License"></a>
|
|
70
70
|
</p>
|
|
71
71
|
</div>
|
|
72
72
|
|
|
@@ -74,52 +74,63 @@ Requires-Dist: requests
|
|
|
74
74
|
|
|
75
75
|
`dart-tools` is the Dart CLI and Python Library. It enables direct integration with Dart through a terminal CLI or through Python.
|
|
76
76
|
|
|
77
|
-
|
|
78
77
|
- [Installation](#installation)
|
|
78
|
+
- [Naming conflicts](#naming-conflicts)
|
|
79
79
|
- [Using the CLI](#using-the-cli)
|
|
80
80
|
- [Using the Python Library](#using-the-python-library)
|
|
81
81
|
- [Using the Python Library in AWS Lambda Functions](#using-the-python-library-in-aws-lambda-functions)
|
|
82
|
-
- [
|
|
82
|
+
- [Navigate to the directory containing your `lambda_function.py` source file. In this example, the directory is named `my_function`.](#navigate-to-the-directory-containing-your-lambda_functionpy-source-file-in-this-example-the-directory-is-named-my_function)
|
|
83
|
+
- [Create a Deployment Package](#create-a-deployment-package)
|
|
84
|
+
- [Zip the contents of the `package` directory along with your `lambda_function.py`](#zip-the-contents-of-the-package-directory-along-with-your-lambda_functionpy)
|
|
85
|
+
- [Deploy the Lambda function](#deploy-the-lambda-function)
|
|
83
86
|
- [Help and Resources](#help-and-resources)
|
|
84
87
|
- [Contributing](#contributing)
|
|
85
88
|
- [License](#license)
|
|
86
89
|
|
|
87
|
-
|
|
88
90
|
## Installation
|
|
89
91
|
|
|
90
92
|
In the terminal, install by running
|
|
93
|
+
|
|
91
94
|
```sh
|
|
92
95
|
pip install dart-tools
|
|
93
96
|
```
|
|
94
97
|
|
|
98
|
+
### Naming conflicts
|
|
99
|
+
|
|
100
|
+
If you have a preexisting shell command named `dart`, a quick fix is to run `which -a dart` and fine the path for this `dart` application. Then you can create an alias and add it to your shell profile file (`.zshrc`, `.bashrc`, etc.). For example, open `~/.zshrc` and add a line like `alias dartai="/path/to/dart"`, save it, and restart your terminal.
|
|
95
101
|
|
|
96
102
|
## Using the CLI
|
|
97
103
|
|
|
98
104
|
Start off by setting up authentication with
|
|
105
|
+
|
|
99
106
|
```sh
|
|
100
107
|
dart login
|
|
101
108
|
```
|
|
102
109
|
|
|
103
110
|
Then, you can create a new task with a command along the lines of
|
|
111
|
+
|
|
104
112
|
```sh
|
|
105
|
-
dart
|
|
113
|
+
dart task-create "Update the landing page" -p0 --tag marketing
|
|
106
114
|
```
|
|
115
|
+
|
|
107
116
|
which will make a new task called 'Update the landing page' with priority 'Critical' (i.e. P0) and with the 'marketing' tag.
|
|
108
117
|
|
|
109
|
-
You can explore all of these options and many more with `dart --help` or the more specific help for subcommands, in this case `dart
|
|
118
|
+
You can explore all of these options and many more with `dart --help` or the more specific help for subcommands, in this case `dart task-create --help`.
|
|
110
119
|
|
|
111
120
|
Another common workflow is to updating a preexisting task. To do this, run something like
|
|
121
|
+
|
|
112
122
|
```sh
|
|
113
|
-
dart
|
|
123
|
+
dart task-update [ID] -s Done
|
|
114
124
|
```
|
|
115
|
-
This command will mark the referenced task 'Done'. Here `[DUID]` is meant to be replaced (including the brackets) with the 'Dart ID' of an existing task. You can get a DUID from any existing task in a number of ways, such as by copying it from the end of a task's URL or by clicking the '...' button in a task page in Dart and then choosing 'Copy ID'.
|
|
116
125
|
|
|
126
|
+
This command will mark the referenced task 'Done'. Here `[ID]` is meant to be replaced (including the brackets) with the ID of an existing task. You can get a ID from any existing task in a number of ways, such as by copying it from the end of a task's URL or by clicking the '...' button in a task page in Dart and then choosing 'Copy ID'.
|
|
117
127
|
|
|
118
128
|
## Using the Python Library
|
|
119
129
|
|
|
120
|
-
First, set up authentication. Run `dart login` in the terminal for an interactive process,
|
|
130
|
+
First, set up authentication. Run `dart login` in the terminal for an interactive process. Alternatively, copy your authentication token from [your Dart profile](https://app.itsdart.com/?settings=account) and save that as the `DART_TOKEN` environment variable.
|
|
121
131
|
|
|
122
132
|
Then, you can run something like
|
|
133
|
+
|
|
123
134
|
```python
|
|
124
135
|
import os
|
|
125
136
|
from dart import create_task, is_logged_in, update_task
|
|
@@ -133,21 +144,20 @@ new_task = create_task(
|
|
|
133
144
|
)
|
|
134
145
|
|
|
135
146
|
# Update the task to be 'Done'
|
|
136
|
-
update_task(new_task.
|
|
147
|
+
update_task(new_task.id, status_title="Done")
|
|
137
148
|
```
|
|
138
149
|
|
|
139
|
-
|
|
140
150
|
## Using the Python Library in AWS Lambda Functions
|
|
141
151
|
|
|
142
152
|
To use the `dart-tools` Python library in an AWS Lambda function, you need to package the library with your Lambda deployment package (see more details at [Working with .zip file archives for Python Lambda functions](https://docs.aws.amazon.com/lambda/latest/dg/python-package.html)). Follow these steps:
|
|
143
153
|
|
|
144
|
-
|
|
154
|
+
### Navigate to the directory containing your `lambda_function.py` source file. In this example, the directory is named `my_function`.
|
|
145
155
|
|
|
146
156
|
```sh
|
|
147
157
|
cd my_function
|
|
148
158
|
```
|
|
149
159
|
|
|
150
|
-
|
|
160
|
+
### Create a Deployment Package
|
|
151
161
|
|
|
152
162
|
Use Docker to create a deployment package that includes the `dart-tools` library. Run the following commands in your terminal, ensuring that the `RUNTIME_PYTHON_VERSION` and `RUNTIME_ARCHITECTURE` environment variables match the runtime settings of your Lambda function:
|
|
153
163
|
|
|
@@ -159,7 +169,7 @@ To use the `dart-tools` Python library in an AWS Lambda function, you need to pa
|
|
|
159
169
|
|
|
160
170
|
This command installs the `dart-tools` library into a directory named `package` in your current working directory.
|
|
161
171
|
|
|
162
|
-
|
|
172
|
+
### Zip the contents of the `package` directory along with your `lambda_function.py`
|
|
163
173
|
|
|
164
174
|
```sh
|
|
165
175
|
cd package
|
|
@@ -168,58 +178,19 @@ To use the `dart-tools` Python library in an AWS Lambda function, you need to pa
|
|
|
168
178
|
zip -r my_deployment_package.zip lambda_function.py
|
|
169
179
|
```
|
|
170
180
|
|
|
171
|
-
|
|
181
|
+
### Deploy the Lambda function
|
|
172
182
|
|
|
173
183
|
Upload the `my_deployment_package.zip` file to AWS Lambda using the AWS Management Console or the AWS CLI.
|
|
174
184
|
|
|
175
185
|
By following these steps, you can use the `dart-tools` Python library within your AWS Lambda functions.
|
|
176
186
|
|
|
177
|
-
|
|
178
|
-
## Advanced Usage
|
|
179
|
-
|
|
180
|
-
Almost anything that can be done in Dart can be done with the Python library, but there are not convenient wrapper functions for everything.
|
|
181
|
-
For most advanced usage, the best thing to do is to [get in touch with us](mailto:support@itsdart.com) and we can help.
|
|
182
|
-
|
|
183
|
-
However, if you want to explore on your own, the client is well-typed, so you can simply explore the code to see what is possible.
|
|
184
|
-
All updates will go through the the `dart.transact` function.
|
|
185
|
-
|
|
186
|
-
As an example, you could run something akin to `update_task` with
|
|
187
|
-
```python
|
|
188
|
-
from dart import (
|
|
189
|
-
Dart,
|
|
190
|
-
Operation,
|
|
191
|
-
OperationKind,
|
|
192
|
-
OperationModelKind,
|
|
193
|
-
TaskUpdate,
|
|
194
|
-
TransactionKind,
|
|
195
|
-
)
|
|
196
|
-
|
|
197
|
-
# Initialize the inner client
|
|
198
|
-
dart = Dart()
|
|
199
|
-
|
|
200
|
-
# Prepare the update operation
|
|
201
|
-
task_update = TaskUpdate(
|
|
202
|
-
duid="[DUID]",
|
|
203
|
-
size=5,
|
|
204
|
-
)
|
|
205
|
-
task_update_op = Operation(
|
|
206
|
-
model=OperationModelKind.TASK,
|
|
207
|
-
kind=OperationKind.UPDATE,
|
|
208
|
-
data=task_update,
|
|
209
|
-
)
|
|
210
|
-
|
|
211
|
-
# Call the operation transactionally to perform the update
|
|
212
|
-
response = dart.transact([task_update_op], TransactionKind.TASK_UPDATE)
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
|
|
216
187
|
## Help and Resources
|
|
217
188
|
|
|
218
|
-
- [Homepage](https://
|
|
189
|
+
- [Homepage](https://itsdart.com/?nr=1)
|
|
219
190
|
- [Web App](https://app.itsdart.com/)
|
|
220
191
|
- [Help Center](https://help.itsdart.com/)
|
|
221
192
|
- [Bugs and Features](https://app.itsdart.com/p/r/JFyPnhL9En61)
|
|
222
|
-
- [Library Source](https://github.com/its-dart/dart-tools/)
|
|
193
|
+
- [Library Source](https://github.com/its-dart/dart-tools-py/)
|
|
223
194
|
- [Chat on Discord](https://discord.gg/RExv8jEkSh)
|
|
224
195
|
- Email us at [support@itsdart.com](mailto:support@itsdart.com)
|
|
225
196
|
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
dart/__init__.py,sha256=M4oDY_DtfE7s50jXziRxVuL95hE1EKEaWOEmWxy8_Ig,523
|
|
2
|
+
dart/dart.py,sha256=avemWyqsBrGGCtmxzronUj3vVfJmiKFh4t9vI-Hlu0s,26765
|
|
3
|
+
dart/exception.py,sha256=evN1SFV7Bal5dQIIOnhYA0cRu6jSa0cOCiG7AkHZD5A,85
|
|
4
|
+
dart/old.py,sha256=LqwFKYDpNwHlp_0NT9UACmAsx8PwYLyogLmY7YcuzVg,7053
|
|
5
|
+
dart/order_manager.py,sha256=WI8YEjdOuEFDNcRCm30INAA5lY8016ttt0yXElGIeUU,1882
|
|
6
|
+
dart/webhook.py,sha256=1_8m1ik4k7yOHi1mBKUQrTy6RIXCFCuq0QJkoloZEGY,590
|
|
7
|
+
dart/generated/__init__.py,sha256=8fO-FKZzuZzOUUaqtlgw7k08MUwNLf8Ll-cAt7BgmAU,158
|
|
8
|
+
dart/generated/client.py,sha256=o_mdLqyBCQstu5tS1WZFwqIEbGwkvWQ7eQjuCJw_5VY,12419
|
|
9
|
+
dart/generated/errors.py,sha256=gO8GBmKqmSNgAg-E5oT-oOyxztvp7V_6XG7OUTT15q0,546
|
|
10
|
+
dart/generated/py.typed,sha256=8ZJUsxZiuOy1oJeVhsTWQhTG_6pTVHVXk5hJL79ebTk,25
|
|
11
|
+
dart/generated/types.py,sha256=E1hhDh_zXfsSQ0NCt9-uw90_Mr5iIlsdfnfvxv5HarU,1005
|
|
12
|
+
dart/generated/api/__init__.py,sha256=LmRMQNOJjUSyQhrOaV7YNBf0HDM0BHQ_O5TVEaG9aqc,383
|
|
13
|
+
dart/generated/api/comment/__init__.py,sha256=5vd9uJWAjRqa9xzxzYkLD1yoZ12Ld_bAaNB5WX4fbE8,56
|
|
14
|
+
dart/generated/api/comment/create_comment.py,sha256=G9kpQ60IrMC4cxXP--wsPvVtYPMmByy-t55wV4WkvbI,4757
|
|
15
|
+
dart/generated/api/config/__init__.py,sha256=5vd9uJWAjRqa9xzxzYkLD1yoZ12Ld_bAaNB5WX4fbE8,56
|
|
16
|
+
dart/generated/api/config/get_config.py,sha256=TPjumTzM0OvcALAGId_ieDltRIdFWKM-CQ1RXwdSKSo,4142
|
|
17
|
+
dart/generated/api/dartboard/__init__.py,sha256=5vd9uJWAjRqa9xzxzYkLD1yoZ12Ld_bAaNB5WX4fbE8,56
|
|
18
|
+
dart/generated/api/dartboard/retrieve_dartboard.py,sha256=z7dmuyPurhv_fnaMo_viKW88kYmvB_nBViHOoQBJbD0,4445
|
|
19
|
+
dart/generated/api/doc/__init__.py,sha256=5vd9uJWAjRqa9xzxzYkLD1yoZ12Ld_bAaNB5WX4fbE8,56
|
|
20
|
+
dart/generated/api/doc/create_doc.py,sha256=IK0FDGTzdjT_b5uDCJbtbBZygGt_Lh_0XyJBBVFDorc,4993
|
|
21
|
+
dart/generated/api/doc/delete_doc.py,sha256=RjN1-d4Zp_1xPAJLiDIzX9gXNrh9KV9O4ksDTnlP05w,4216
|
|
22
|
+
dart/generated/api/doc/list_docs.py,sha256=cezHhq91h23ZdIGVwc8XQKx1ZsV268LXfzNX08jnCms,8365
|
|
23
|
+
dart/generated/api/doc/retrieve_doc.py,sha256=8y6zayJRj5WYxK23wVE_0qWfRfiZhH2DHEdwuQtSGRA,4205
|
|
24
|
+
dart/generated/api/doc/update_doc.py,sha256=VcjUwgcnrcQSi-YqLVJM08s_11MKWbMa1FQPtbVPWBY,5007
|
|
25
|
+
dart/generated/api/folder/__init__.py,sha256=5vd9uJWAjRqa9xzxzYkLD1yoZ12Ld_bAaNB5WX4fbE8,56
|
|
26
|
+
dart/generated/api/folder/retrieve_folder.py,sha256=jWLOw7ygMWxFKlttZjwSXkyExEvswVRCXaN-X3WOkWc,4363
|
|
27
|
+
dart/generated/api/task/__init__.py,sha256=5vd9uJWAjRqa9xzxzYkLD1yoZ12Ld_bAaNB5WX4fbE8,56
|
|
28
|
+
dart/generated/api/task/create_task.py,sha256=0qLps0cHZE6LqA9cUQEExEpnhT4k83AHrz8nm1TzS0Q,5057
|
|
29
|
+
dart/generated/api/task/delete_task.py,sha256=4m1bvIMdGwDXEJNu-NqEUZj6T9eVzYdG75n2B7TjZ_Q,4242
|
|
30
|
+
dart/generated/api/task/list_tasks.py,sha256=faEoASEwPN2uL0lFVRIUOkOX7BkGDkFO1DJK_spl2D0,16444
|
|
31
|
+
dart/generated/api/task/retrieve_task.py,sha256=aKdsZm6gphHytBCT03xjb8Y_2qCVGeAkd1uTrLiaFV4,4303
|
|
32
|
+
dart/generated/api/task/update_task.py,sha256=5wVrhwZnkugA7TA1DgF2V9RYed3iQ058yVNaUtyiI9c,5044
|
|
33
|
+
dart/generated/api/view/__init__.py,sha256=5vd9uJWAjRqa9xzxzYkLD1yoZ12Ld_bAaNB5WX4fbE8,56
|
|
34
|
+
dart/generated/api/view/retrieve_view.py,sha256=0xv1SlZtvIixiz84HTz2gp9PKT2GNTQioIHriF8Yu3w,4315
|
|
35
|
+
dart/generated/models/__init__.py,sha256=xeAXd32Gh87pe5sYlCMlp7DdUMcHr74VlgQkfR6QdZk,1878
|
|
36
|
+
dart/generated/models/comment.py,sha256=xxjnssdNxXO3iO8cHH5TYDEmsL9ItvH9OM-F0TeljjQ,2361
|
|
37
|
+
dart/generated/models/comment_create.py,sha256=n_Q3riMI0U17rzpp7SKvhnA3YhtyJxXMuXumtVRgZpw,1764
|
|
38
|
+
dart/generated/models/concise_doc.py,sha256=xrJIJr4rm_iG0DlmpemBtzDaOxroHC2NgsG-V9CNsX8,2200
|
|
39
|
+
dart/generated/models/concise_task.py,sha256=qxSC6v_yXt6bM2zDdhmcCOzFtFfd5USeUAAPIEHieeE,9434
|
|
40
|
+
dart/generated/models/dartboard.py,sha256=QWRy37OFBrlloUAk4_eG9E_pMZgFNAWejYmA1UwL32I,2789
|
|
41
|
+
dart/generated/models/doc.py,sha256=f_1aVMo7aCQTGOhH19IjrkucIbINj7n_OkbaZnbJ9tc,2298
|
|
42
|
+
dart/generated/models/doc_create.py,sha256=HOpiuuDg7fNEkwoUvXqceXKI59cDVBS5PzTR08iYE7E,2134
|
|
43
|
+
dart/generated/models/doc_update.py,sha256=Wv565KyrxMWxUCvqDJjcfzk2lalOj987o69RgBYF8wc,2376
|
|
44
|
+
dart/generated/models/folder.py,sha256=G0uGZqOgnj6ehkEsIMDjU5EGeDzIMp6H4KDreg6PfsI,2729
|
|
45
|
+
dart/generated/models/list_docs_o_item.py,sha256=owGxTljNQTi1KAHkfTknrSTMEome1x75vUbHRVO12JM,320
|
|
46
|
+
dart/generated/models/paginated_concise_doc_list.py,sha256=Y7YbOwd7TaHm7b9rHJvVKEynHEp-xgCyN0Kw5gEZ4i8,3665
|
|
47
|
+
dart/generated/models/paginated_concise_task_list.py,sha256=Yu-r-WvWBH3LfMWGm3YNQ30w1-B0mdxjx5jykKFFQlY,3677
|
|
48
|
+
dart/generated/models/priority.py,sha256=eupjzXQndyaia8svwVmylisIGwl6OQ_0g8pgcsm8118,195
|
|
49
|
+
dart/generated/models/task.py,sha256=7ZDqWPSNYoPpJOhIQea8HlirtsTe93xQnvCI8a9tIPM,9605
|
|
50
|
+
dart/generated/models/task_create.py,sha256=TuroQ0M3f6nXm0k9g0O8CF2VBJFfdmaXkSTfvYO9YMU,9828
|
|
51
|
+
dart/generated/models/task_update.py,sha256=od22McUNcFIcVo6hlVbMz4yPYa6xbnaqUsGhCesJRKY,10071
|
|
52
|
+
dart/generated/models/user.py,sha256=Vl63zDoadat1k5NtTq3AAI0NMTp5T3DOIAcM5zZXD3o,1552
|
|
53
|
+
dart/generated/models/user_space_configuration.py,sha256=iEP7IP99eUdpEwrE-Cul6kD1OQukXcYPvZu9xoiDluQ,3846
|
|
54
|
+
dart/generated/models/view.py,sha256=X7w6hH387LTAY8nbjGDNdf0hbho2O2al8kVOhCZi4Pg,2739
|
|
55
|
+
dart/generated/models/wrapped_comment.py,sha256=tjMBU-NZYQ6n_jSn6LOT00JPWGcJjFjAWSlz77cDIT8,1613
|
|
56
|
+
dart/generated/models/wrapped_comment_create.py,sha256=g_t09rNShbqDpdkUBSGY0jS5tO0qaPtoJR_VfewTZq0,1690
|
|
57
|
+
dart/generated/models/wrapped_dartboard.py,sha256=hzAJ4OJkw-gjOW-V1asqvSDKs-K3XHSSmVqX_GhnNyw,1637
|
|
58
|
+
dart/generated/models/wrapped_doc.py,sha256=gNrcTOEjLtHV7slg7mTnDmwBfYSp_yrpeIvH_fR8hdo,1565
|
|
59
|
+
dart/generated/models/wrapped_doc_create.py,sha256=pEkc0VTFYZNUKVKpldFBI5V514y6gS6KKURrfDIsRrk,1642
|
|
60
|
+
dart/generated/models/wrapped_doc_update.py,sha256=Yei-8TEavX1bWBZpC4ZndacCaosGXSlXX1RYtIyOgHA,1642
|
|
61
|
+
dart/generated/models/wrapped_folder.py,sha256=KDXM4fQQTg5kjwZmEwpLtPde0BOPMRU-vCQ-6psAm60,1601
|
|
62
|
+
dart/generated/models/wrapped_task.py,sha256=TRlVMxIGhDwSaJlXdMH6q7Vx2hpz7EdiGnsd06XZN1Y,1577
|
|
63
|
+
dart/generated/models/wrapped_task_create.py,sha256=Oxdot2EwfEuC3l4uo0fAvmyjRNVkXALmWCvfgHI7BcI,1654
|
|
64
|
+
dart/generated/models/wrapped_task_update.py,sha256=_erGSSR_k6ahF_RFjgLKdyitx5TDQiFw_Ml77zHQdJM,1654
|
|
65
|
+
dart/generated/models/wrapped_view.py,sha256=zflJxA4UnITM8w-0EObw4AF54yS-c_e5UL6vaikXyG8,1577
|
|
66
|
+
dart_tools-0.7.1.dist-info/licenses/LICENSE,sha256=4ZrQkL_PyaBC3paDrqLnD3knKAXS2i8HwJGyUgRUxls,1061
|
|
67
|
+
dart_tools-0.7.1.dist-info/METADATA,sha256=fAis7N2uQC9zJkJOVrtbFeo_wyaBABTPDDK5iWfG7HA,8981
|
|
68
|
+
dart_tools-0.7.1.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91
|
|
69
|
+
dart_tools-0.7.1.dist-info/entry_points.txt,sha256=KOVAnDWJbSKn9HoXWQ7x6NfACYzSMGHBBaBxonHEv6w,34
|
|
70
|
+
dart_tools-0.7.1.dist-info/top_level.txt,sha256=ZwUQ6QjCyi1i32BJOAkbOA7UfgitLmIwToJGJwZXPrg,5
|
|
71
|
+
dart_tools-0.7.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|