dart-tools 0.6.16__py3-none-any.whl → 0.7.0__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 +421 -698
- 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.0.dist-info}/METADATA +15 -75
- dart_tools-0.7.0.dist-info/RECORD +71 -0
- {dart_tools-0.6.16.dist-info → dart_tools-0.7.0.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.0.dist-info}/entry_points.txt +0 -0
- {dart_tools-0.6.16.dist-info → dart_tools-0.7.0.dist-info/licenses}/LICENSE +0 -0
- {dart_tools-0.6.16.dist-info → dart_tools-0.7.0.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
|
|
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: str | None = None,
|
|
99
|
+
abrev: str | None = None,
|
|
100
|
+
color_hex: str | None = None,
|
|
101
|
+
accessible_by_team: bool | None = None,
|
|
102
|
+
accessor_duids: 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: 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: str | None = None, color_hex: 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: bool = 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: str | None = None, color_hex: 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,40 +1,18 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: dart-tools
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.0
|
|
4
4
|
Summary: The Dart CLI and Python Library
|
|
5
|
-
Author-email: Dart
|
|
6
|
-
License: MIT
|
|
7
|
-
|
|
8
|
-
Copyright (c) 2023 Dart
|
|
9
|
-
|
|
10
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
12
|
-
in the Software without restriction, including without limitation the rights
|
|
13
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
15
|
-
furnished to do so, subject to the following conditions:
|
|
16
|
-
|
|
17
|
-
The above copyright notice and this permission notice shall be included in all
|
|
18
|
-
copies or substantial portions of the Software.
|
|
19
|
-
|
|
20
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
|
-
SOFTWARE.
|
|
27
|
-
|
|
5
|
+
Author-email: Dart <software@itsdart.com>
|
|
6
|
+
License-Expression: MIT
|
|
28
7
|
Project-URL: Homepage, https://www.itsdart.com/?nr=1
|
|
29
8
|
Project-URL: Web App, https://app.itsdart.com/
|
|
30
9
|
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/
|
|
10
|
+
Project-URL: Bugs and Features, https://github.com/its-dart/dart-tools-py/issues
|
|
11
|
+
Project-URL: Library Source, https://github.com/its-dart/dart-tools-py/
|
|
33
12
|
Keywords: dart,cli,projectmanagement,taskmanagement
|
|
34
13
|
Classifier: Development Status :: 4 - Beta
|
|
35
14
|
Classifier: Environment :: Console
|
|
36
15
|
Classifier: Intended Audience :: Developers
|
|
37
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
38
16
|
Classifier: Natural Language :: English
|
|
39
17
|
Classifier: Operating System :: OS Independent
|
|
40
18
|
Classifier: Programming Language :: Python
|
|
@@ -59,14 +37,14 @@ Requires-Dist: dateparser
|
|
|
59
37
|
Requires-Dist: httpx
|
|
60
38
|
Requires-Dist: pick
|
|
61
39
|
Requires-Dist: platformdirs
|
|
62
|
-
|
|
40
|
+
Dynamic: license-file
|
|
63
41
|
|
|
64
42
|
<div align="center">
|
|
65
43
|
<h1>Dart Tools</h1>
|
|
66
44
|
<p>
|
|
67
45
|
<a href="https://pypi.org/project/dart-tools"><img src="https://img.shields.io/pypi/v/dart-tools" alt="PyPI"></a>
|
|
68
46
|
<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>
|
|
47
|
+
<a href="LICENSE"><img src="https://img.shields.io/github/license/its-dart/dart-tools-py" alt="License"></a>
|
|
70
48
|
</p>
|
|
71
49
|
</div>
|
|
72
50
|
|
|
@@ -102,22 +80,22 @@ dart login
|
|
|
102
80
|
|
|
103
81
|
Then, you can create a new task with a command along the lines of
|
|
104
82
|
```sh
|
|
105
|
-
dart
|
|
83
|
+
dart task-create "Update the landing page" -p0 --tag marketing
|
|
106
84
|
```
|
|
107
85
|
which will make a new task called 'Update the landing page' with priority 'Critical' (i.e. P0) and with the 'marketing' tag.
|
|
108
86
|
|
|
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
|
|
87
|
+
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
88
|
|
|
111
89
|
Another common workflow is to updating a preexisting task. To do this, run something like
|
|
112
90
|
```sh
|
|
113
|
-
dart
|
|
91
|
+
dart task-update [ID] -s Done
|
|
114
92
|
```
|
|
115
|
-
This command will mark the referenced task 'Done'. Here `[
|
|
93
|
+
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'.
|
|
116
94
|
|
|
117
95
|
|
|
118
96
|
## Using the Python Library
|
|
119
97
|
|
|
120
|
-
First, set up authentication. Run `dart login` in the terminal for an interactive process,
|
|
98
|
+
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
99
|
|
|
122
100
|
Then, you can run something like
|
|
123
101
|
```python
|
|
@@ -133,7 +111,7 @@ new_task = create_task(
|
|
|
133
111
|
)
|
|
134
112
|
|
|
135
113
|
# Update the task to be 'Done'
|
|
136
|
-
update_task(new_task.
|
|
114
|
+
update_task(new_task.id, status_title="Done")
|
|
137
115
|
```
|
|
138
116
|
|
|
139
117
|
|
|
@@ -175,51 +153,13 @@ To use the `dart-tools` Python library in an AWS Lambda function, you need to pa
|
|
|
175
153
|
By following these steps, you can use the `dart-tools` Python library within your AWS Lambda functions.
|
|
176
154
|
|
|
177
155
|
|
|
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
156
|
## Help and Resources
|
|
217
157
|
|
|
218
158
|
- [Homepage](https://www.itsdart.com/?nr=1)
|
|
219
159
|
- [Web App](https://app.itsdart.com/)
|
|
220
160
|
- [Help Center](https://help.itsdart.com/)
|
|
221
161
|
- [Bugs and Features](https://app.itsdart.com/p/r/JFyPnhL9En61)
|
|
222
|
-
- [Library Source](https://github.com/its-dart/dart-tools/)
|
|
162
|
+
- [Library Source](https://github.com/its-dart/dart-tools-py/)
|
|
223
163
|
- [Chat on Discord](https://discord.gg/RExv8jEkSh)
|
|
224
164
|
- Email us at [support@itsdart.com](mailto:support@itsdart.com)
|
|
225
165
|
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
dart/__init__.py,sha256=M4oDY_DtfE7s50jXziRxVuL95hE1EKEaWOEmWxy8_Ig,523
|
|
2
|
+
dart/dart.py,sha256=Syu6-JTBGKoX2EEcuBmeLhGidVbFcWaCvjJMFdTqr6g,26584
|
|
3
|
+
dart/exception.py,sha256=evN1SFV7Bal5dQIIOnhYA0cRu6jSa0cOCiG7AkHZD5A,85
|
|
4
|
+
dart/old.py,sha256=sKCJV0rSqKx0acIEvrV-Up6mOTKtJ14qf2vmeDzJ3vA,6973
|
|
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.0.dist-info/licenses/LICENSE,sha256=4ZrQkL_PyaBC3paDrqLnD3knKAXS2i8HwJGyUgRUxls,1061
|
|
67
|
+
dart_tools-0.7.0.dist-info/METADATA,sha256=ohVLSItmRPxYievflAulCLqEF4cnUGCdxh7ClLq3x9Q,6780
|
|
68
|
+
dart_tools-0.7.0.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
|
|
69
|
+
dart_tools-0.7.0.dist-info/entry_points.txt,sha256=KOVAnDWJbSKn9HoXWQ7x6NfACYzSMGHBBaBxonHEv6w,34
|
|
70
|
+
dart_tools-0.7.0.dist-info/top_level.txt,sha256=ZwUQ6QjCyi1i32BJOAkbOA7UfgitLmIwToJGJwZXPrg,5
|
|
71
|
+
dart_tools-0.7.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|