dart-tools 0.8.4__py3-none-any.whl → 0.8.8__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.
Files changed (29) hide show
  1. dart/dart.py +12 -96
  2. dart/generated/api/__init__.py +1 -1
  3. dart/generated/api/doc/list_docs.py +30 -0
  4. dart/generated/api/task/add_task_time_tracking.py +190 -0
  5. dart/generated/api/task/list_tasks.py +206 -0
  6. dart/generated/api/task/move_task.py +190 -0
  7. dart/generated/models/__init__.py +24 -0
  8. dart/generated/models/concise_task.py +58 -0
  9. dart/generated/models/custom_properties.py +8 -8
  10. dart/generated/models/list_docs_o_item.py +6 -4
  11. dart/generated/models/list_tasks_o_item.py +17 -0
  12. dart/generated/models/paginated_comment_list.py +42 -0
  13. dart/generated/models/paginated_comment_list_meta_type_0.py +109 -0
  14. dart/generated/models/paginated_comment_list_meta_type_0_applied_default_filters.py +44 -0
  15. dart/generated/models/paginated_concise_doc_list.py +42 -0
  16. dart/generated/models/paginated_concise_doc_list_meta_type_0.py +109 -0
  17. dart/generated/models/paginated_concise_doc_list_meta_type_0_applied_default_filters.py +44 -0
  18. dart/generated/models/paginated_concise_task_list.py +42 -0
  19. dart/generated/models/paginated_concise_task_list_meta_type_0.py +109 -0
  20. dart/generated/models/paginated_concise_task_list_meta_type_0_applied_default_filters.py +44 -0
  21. dart/generated/models/task.py +58 -0
  22. dart/generated/models/task_move.py +94 -0
  23. dart/generated/models/task_time_tracking_create.py +84 -0
  24. {dart_tools-0.8.4.dist-info → dart_tools-0.8.8.dist-info}/METADATA +2 -46
  25. {dart_tools-0.8.4.dist-info → dart_tools-0.8.8.dist-info}/RECORD +29 -18
  26. {dart_tools-0.8.4.dist-info → dart_tools-0.8.8.dist-info}/WHEEL +0 -0
  27. {dart_tools-0.8.4.dist-info → dart_tools-0.8.8.dist-info}/entry_points.txt +0 -0
  28. {dart_tools-0.8.4.dist-info → dart_tools-0.8.8.dist-info}/licenses/LICENSE +0 -0
  29. {dart_tools-0.8.4.dist-info → dart_tools-0.8.8.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,109 @@
1
+ from collections.abc import Mapping
2
+ from typing import TYPE_CHECKING, Any, TypeVar, Union, cast
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ from ..types import UNSET, Unset
8
+
9
+ if TYPE_CHECKING:
10
+ from ..models.paginated_concise_doc_list_meta_type_0_applied_default_filters import (
11
+ PaginatedConciseDocListMetaType0AppliedDefaultFilters,
12
+ )
13
+
14
+
15
+ T = TypeVar("T", bound="PaginatedConciseDocListMetaType0")
16
+
17
+
18
+ @_attrs_define
19
+ class PaginatedConciseDocListMetaType0:
20
+ """
21
+ Attributes:
22
+ defaults_applied (Union[Unset, bool]): Whether default filters or ordering were applied to the response.
23
+ applied_default_filters (Union[Unset, PaginatedConciseDocListMetaType0AppliedDefaultFilters]): The default
24
+ filters that were applied automatically, if any.
25
+ applied_default_sorts (Union[Unset, list[str]]): The default ordering fields that were applied automatically, if
26
+ any.
27
+ instructions (Union[Unset, str]): Guidance on how to disable or override default filters and ordering.
28
+ """
29
+
30
+ defaults_applied: Union[Unset, bool] = UNSET
31
+ applied_default_filters: Union[Unset, "PaginatedConciseDocListMetaType0AppliedDefaultFilters"] = UNSET
32
+ applied_default_sorts: Union[Unset, list[str]] = UNSET
33
+ instructions: Union[Unset, str] = UNSET
34
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
35
+
36
+ def to_dict(self) -> dict[str, Any]:
37
+ defaults_applied = self.defaults_applied
38
+
39
+ applied_default_filters: Union[Unset, dict[str, Any]] = UNSET
40
+ if not isinstance(self.applied_default_filters, Unset):
41
+ applied_default_filters = self.applied_default_filters.to_dict()
42
+
43
+ applied_default_sorts: Union[Unset, list[str]] = UNSET
44
+ if not isinstance(self.applied_default_sorts, Unset):
45
+ applied_default_sorts = self.applied_default_sorts
46
+
47
+ instructions = self.instructions
48
+
49
+ field_dict: dict[str, Any] = {}
50
+ field_dict.update(self.additional_properties)
51
+ field_dict.update({})
52
+ if defaults_applied is not UNSET:
53
+ field_dict["defaultsApplied"] = defaults_applied
54
+ if applied_default_filters is not UNSET:
55
+ field_dict["appliedDefaultFilters"] = applied_default_filters
56
+ if applied_default_sorts is not UNSET:
57
+ field_dict["appliedDefaultSorts"] = applied_default_sorts
58
+ if instructions is not UNSET:
59
+ field_dict["instructions"] = instructions
60
+
61
+ return field_dict
62
+
63
+ @classmethod
64
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
65
+ from ..models.paginated_concise_doc_list_meta_type_0_applied_default_filters import (
66
+ PaginatedConciseDocListMetaType0AppliedDefaultFilters,
67
+ )
68
+
69
+ d = dict(src_dict)
70
+ defaults_applied = d.pop("defaultsApplied", UNSET)
71
+
72
+ _applied_default_filters = d.pop("appliedDefaultFilters", UNSET)
73
+ applied_default_filters: Union[Unset, PaginatedConciseDocListMetaType0AppliedDefaultFilters]
74
+ if isinstance(_applied_default_filters, Unset):
75
+ applied_default_filters = UNSET
76
+ else:
77
+ applied_default_filters = PaginatedConciseDocListMetaType0AppliedDefaultFilters.from_dict(
78
+ _applied_default_filters
79
+ )
80
+
81
+ applied_default_sorts = cast(list[str], d.pop("appliedDefaultSorts", UNSET))
82
+
83
+ instructions = d.pop("instructions", UNSET)
84
+
85
+ paginated_concise_doc_list_meta_type_0 = cls(
86
+ defaults_applied=defaults_applied,
87
+ applied_default_filters=applied_default_filters,
88
+ applied_default_sorts=applied_default_sorts,
89
+ instructions=instructions,
90
+ )
91
+
92
+ paginated_concise_doc_list_meta_type_0.additional_properties = d
93
+ return paginated_concise_doc_list_meta_type_0
94
+
95
+ @property
96
+ def additional_keys(self) -> list[str]:
97
+ return list(self.additional_properties.keys())
98
+
99
+ def __getitem__(self, key: str) -> Any:
100
+ return self.additional_properties[key]
101
+
102
+ def __setitem__(self, key: str, value: Any) -> None:
103
+ self.additional_properties[key] = value
104
+
105
+ def __delitem__(self, key: str) -> None:
106
+ del self.additional_properties[key]
107
+
108
+ def __contains__(self, key: str) -> bool:
109
+ return key in self.additional_properties
@@ -0,0 +1,44 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ T = TypeVar("T", bound="PaginatedConciseDocListMetaType0AppliedDefaultFilters")
8
+
9
+
10
+ @_attrs_define
11
+ class PaginatedConciseDocListMetaType0AppliedDefaultFilters:
12
+ """The default filters that were applied automatically, if any."""
13
+
14
+ additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict)
15
+
16
+ def to_dict(self) -> dict[str, Any]:
17
+ field_dict: dict[str, Any] = {}
18
+ field_dict.update(self.additional_properties)
19
+
20
+ return field_dict
21
+
22
+ @classmethod
23
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
24
+ d = dict(src_dict)
25
+ paginated_concise_doc_list_meta_type_0_applied_default_filters = cls()
26
+
27
+ paginated_concise_doc_list_meta_type_0_applied_default_filters.additional_properties = d
28
+ return paginated_concise_doc_list_meta_type_0_applied_default_filters
29
+
30
+ @property
31
+ def additional_keys(self) -> list[str]:
32
+ return list(self.additional_properties.keys())
33
+
34
+ def __getitem__(self, key: str) -> str:
35
+ return self.additional_properties[key]
36
+
37
+ def __setitem__(self, key: str, value: str) -> None:
38
+ self.additional_properties[key] = value
39
+
40
+ def __delitem__(self, key: str) -> None:
41
+ del self.additional_properties[key]
42
+
43
+ def __contains__(self, key: str) -> bool:
44
+ return key in self.additional_properties
@@ -8,6 +8,9 @@ from ..types import UNSET, Unset
8
8
 
9
9
  if TYPE_CHECKING:
10
10
  from ..models.concise_task import ConciseTask
11
+ from ..models.paginated_concise_task_list_meta_type_0 import (
12
+ PaginatedConciseTaskListMetaType0,
13
+ )
11
14
 
12
15
 
13
16
  T = TypeVar("T", bound="PaginatedConciseTaskList")
@@ -21,15 +24,21 @@ class PaginatedConciseTaskList:
21
24
  results (list['ConciseTask']):
22
25
  next_ (Union[None, Unset, str]): Example: http://api.example.org/accounts/?offset=400&limit=100.
23
26
  previous (Union[None, Unset, str]): Example: http://api.example.org/accounts/?offset=200&limit=100.
27
+ meta (Union['PaginatedConciseTaskListMetaType0', None, Unset]):
24
28
  """
25
29
 
26
30
  count: int
27
31
  results: list["ConciseTask"]
28
32
  next_: Union[None, Unset, str] = UNSET
29
33
  previous: Union[None, Unset, str] = UNSET
34
+ meta: Union["PaginatedConciseTaskListMetaType0", None, Unset] = UNSET
30
35
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
31
36
 
32
37
  def to_dict(self) -> dict[str, Any]:
38
+ from ..models.paginated_concise_task_list_meta_type_0 import (
39
+ PaginatedConciseTaskListMetaType0,
40
+ )
41
+
33
42
  count = self.count
34
43
 
35
44
  results = []
@@ -49,6 +58,14 @@ class PaginatedConciseTaskList:
49
58
  else:
50
59
  previous = self.previous
51
60
 
61
+ meta: Union[None, Unset, dict[str, Any]]
62
+ if isinstance(self.meta, Unset):
63
+ meta = UNSET
64
+ elif isinstance(self.meta, PaginatedConciseTaskListMetaType0):
65
+ meta = self.meta.to_dict()
66
+ else:
67
+ meta = self.meta
68
+
52
69
  field_dict: dict[str, Any] = {}
53
70
  field_dict.update(self.additional_properties)
54
71
  field_dict.update(
@@ -61,12 +78,17 @@ class PaginatedConciseTaskList:
61
78
  field_dict["next"] = next_
62
79
  if previous is not UNSET:
63
80
  field_dict["previous"] = previous
81
+ if meta is not UNSET:
82
+ field_dict["meta"] = meta
64
83
 
65
84
  return field_dict
66
85
 
67
86
  @classmethod
68
87
  def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
69
88
  from ..models.concise_task import ConciseTask
89
+ from ..models.paginated_concise_task_list_meta_type_0 import (
90
+ PaginatedConciseTaskListMetaType0,
91
+ )
70
92
 
71
93
  d = dict(src_dict)
72
94
  count = d.pop("count")
@@ -96,11 +118,31 @@ class PaginatedConciseTaskList:
96
118
 
97
119
  previous = _parse_previous(d.pop("previous", UNSET))
98
120
 
121
+ def _parse_meta(
122
+ data: object,
123
+ ) -> Union["PaginatedConciseTaskListMetaType0", None, Unset]:
124
+ if data is None:
125
+ return data
126
+ if isinstance(data, Unset):
127
+ return data
128
+ try:
129
+ if not isinstance(data, dict):
130
+ raise TypeError()
131
+ meta_type_0 = PaginatedConciseTaskListMetaType0.from_dict(data)
132
+
133
+ return meta_type_0
134
+ except: # noqa: E722
135
+ pass
136
+ return cast(Union["PaginatedConciseTaskListMetaType0", None, Unset], data)
137
+
138
+ meta = _parse_meta(d.pop("meta", UNSET))
139
+
99
140
  paginated_concise_task_list = cls(
100
141
  count=count,
101
142
  results=results,
102
143
  next_=next_,
103
144
  previous=previous,
145
+ meta=meta,
104
146
  )
105
147
 
106
148
  paginated_concise_task_list.additional_properties = d
@@ -0,0 +1,109 @@
1
+ from collections.abc import Mapping
2
+ from typing import TYPE_CHECKING, Any, TypeVar, Union, cast
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ from ..types import UNSET, Unset
8
+
9
+ if TYPE_CHECKING:
10
+ from ..models.paginated_concise_task_list_meta_type_0_applied_default_filters import (
11
+ PaginatedConciseTaskListMetaType0AppliedDefaultFilters,
12
+ )
13
+
14
+
15
+ T = TypeVar("T", bound="PaginatedConciseTaskListMetaType0")
16
+
17
+
18
+ @_attrs_define
19
+ class PaginatedConciseTaskListMetaType0:
20
+ """
21
+ Attributes:
22
+ defaults_applied (Union[Unset, bool]): Whether default filters or ordering were applied to the response.
23
+ applied_default_filters (Union[Unset, PaginatedConciseTaskListMetaType0AppliedDefaultFilters]): The default
24
+ filters that were applied automatically, if any.
25
+ applied_default_sorts (Union[Unset, list[str]]): The default ordering fields that were applied automatically, if
26
+ any.
27
+ instructions (Union[Unset, str]): Guidance on how to disable or override default filters and ordering.
28
+ """
29
+
30
+ defaults_applied: Union[Unset, bool] = UNSET
31
+ applied_default_filters: Union[Unset, "PaginatedConciseTaskListMetaType0AppliedDefaultFilters"] = UNSET
32
+ applied_default_sorts: Union[Unset, list[str]] = UNSET
33
+ instructions: Union[Unset, str] = UNSET
34
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
35
+
36
+ def to_dict(self) -> dict[str, Any]:
37
+ defaults_applied = self.defaults_applied
38
+
39
+ applied_default_filters: Union[Unset, dict[str, Any]] = UNSET
40
+ if not isinstance(self.applied_default_filters, Unset):
41
+ applied_default_filters = self.applied_default_filters.to_dict()
42
+
43
+ applied_default_sorts: Union[Unset, list[str]] = UNSET
44
+ if not isinstance(self.applied_default_sorts, Unset):
45
+ applied_default_sorts = self.applied_default_sorts
46
+
47
+ instructions = self.instructions
48
+
49
+ field_dict: dict[str, Any] = {}
50
+ field_dict.update(self.additional_properties)
51
+ field_dict.update({})
52
+ if defaults_applied is not UNSET:
53
+ field_dict["defaultsApplied"] = defaults_applied
54
+ if applied_default_filters is not UNSET:
55
+ field_dict["appliedDefaultFilters"] = applied_default_filters
56
+ if applied_default_sorts is not UNSET:
57
+ field_dict["appliedDefaultSorts"] = applied_default_sorts
58
+ if instructions is not UNSET:
59
+ field_dict["instructions"] = instructions
60
+
61
+ return field_dict
62
+
63
+ @classmethod
64
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
65
+ from ..models.paginated_concise_task_list_meta_type_0_applied_default_filters import (
66
+ PaginatedConciseTaskListMetaType0AppliedDefaultFilters,
67
+ )
68
+
69
+ d = dict(src_dict)
70
+ defaults_applied = d.pop("defaultsApplied", UNSET)
71
+
72
+ _applied_default_filters = d.pop("appliedDefaultFilters", UNSET)
73
+ applied_default_filters: Union[Unset, PaginatedConciseTaskListMetaType0AppliedDefaultFilters]
74
+ if isinstance(_applied_default_filters, Unset):
75
+ applied_default_filters = UNSET
76
+ else:
77
+ applied_default_filters = PaginatedConciseTaskListMetaType0AppliedDefaultFilters.from_dict(
78
+ _applied_default_filters
79
+ )
80
+
81
+ applied_default_sorts = cast(list[str], d.pop("appliedDefaultSorts", UNSET))
82
+
83
+ instructions = d.pop("instructions", UNSET)
84
+
85
+ paginated_concise_task_list_meta_type_0 = cls(
86
+ defaults_applied=defaults_applied,
87
+ applied_default_filters=applied_default_filters,
88
+ applied_default_sorts=applied_default_sorts,
89
+ instructions=instructions,
90
+ )
91
+
92
+ paginated_concise_task_list_meta_type_0.additional_properties = d
93
+ return paginated_concise_task_list_meta_type_0
94
+
95
+ @property
96
+ def additional_keys(self) -> list[str]:
97
+ return list(self.additional_properties.keys())
98
+
99
+ def __getitem__(self, key: str) -> Any:
100
+ return self.additional_properties[key]
101
+
102
+ def __setitem__(self, key: str, value: Any) -> None:
103
+ self.additional_properties[key] = value
104
+
105
+ def __delitem__(self, key: str) -> None:
106
+ del self.additional_properties[key]
107
+
108
+ def __contains__(self, key: str) -> bool:
109
+ return key in self.additional_properties
@@ -0,0 +1,44 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ T = TypeVar("T", bound="PaginatedConciseTaskListMetaType0AppliedDefaultFilters")
8
+
9
+
10
+ @_attrs_define
11
+ class PaginatedConciseTaskListMetaType0AppliedDefaultFilters:
12
+ """The default filters that were applied automatically, if any."""
13
+
14
+ additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict)
15
+
16
+ def to_dict(self) -> dict[str, Any]:
17
+ field_dict: dict[str, Any] = {}
18
+ field_dict.update(self.additional_properties)
19
+
20
+ return field_dict
21
+
22
+ @classmethod
23
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
24
+ d = dict(src_dict)
25
+ paginated_concise_task_list_meta_type_0_applied_default_filters = cls()
26
+
27
+ paginated_concise_task_list_meta_type_0_applied_default_filters.additional_properties = d
28
+ return paginated_concise_task_list_meta_type_0_applied_default_filters
29
+
30
+ @property
31
+ def additional_keys(self) -> list[str]:
32
+ return list(self.additional_properties.keys())
33
+
34
+ def __getitem__(self, key: str) -> str:
35
+ return self.additional_properties[key]
36
+
37
+ def __setitem__(self, key: str, value: str) -> None:
38
+ self.additional_properties[key] = value
39
+
40
+ def __delitem__(self, key: str) -> None:
41
+ del self.additional_properties[key]
42
+
43
+ def __contains__(self, key: str) -> bool:
44
+ return key in self.additional_properties
@@ -1,8 +1,10 @@
1
+ import datetime
1
2
  from collections.abc import Mapping
2
3
  from typing import TYPE_CHECKING, Any, TypeVar, Union, cast
3
4
 
4
5
  from attrs import define as _attrs_define
5
6
  from attrs import field as _attrs_field
7
+ from dateutil.parser import isoparse
6
8
 
7
9
  from ..models.priority import Priority
8
10
  from ..types import UNSET, Unset
@@ -32,6 +34,8 @@ class Task:
32
34
  description (str): A longer description of the task, which can include markdown formatting.
33
35
  attachments (list['Attachment']): The attachments, which is a list of attachments that are associated with the
34
36
  task.
37
+ created_at (datetime.datetime): The date and time when the task was created in ISO format.
38
+ updated_at (datetime.datetime): The date and time when the task was last updated in ISO format.
35
39
  assignees (Union[None, Unset, list[str]]): The names or emails of the users that the task is assigned to. Either
36
40
  this or assignee must be included, depending on whether the workspaces allows multiple assignees or not.
37
41
  assignee (Union[None, Unset, str]): The name or email of the user that the task is assigned to. Either this or
@@ -52,6 +56,8 @@ class Task:
52
56
  custom_properties (Union['CustomProperties', None, Unset]): The custom properties, which is a dict of custom
53
57
  properties that are associated with the task.
54
58
  task_relationships (Union['TaskRelationshipsType0', None, Unset]): The relationships associated with the task.
59
+ created_by (Union[None, Unset, str]): The name or email (moniker) of the user that created the task.
60
+ updated_by (Union[None, Unset, str]): The name or email (moniker) of the user that last updated the task.
55
61
  """
56
62
 
57
63
  id: str
@@ -63,6 +69,8 @@ class Task:
63
69
  status: str
64
70
  description: str
65
71
  attachments: list["Attachment"]
72
+ created_at: datetime.datetime
73
+ updated_at: datetime.datetime
66
74
  assignees: Union[None, Unset, list[str]] = UNSET
67
75
  assignee: Union[None, Unset, str] = UNSET
68
76
  tags: Union[Unset, list[str]] = UNSET
@@ -73,6 +81,8 @@ class Task:
73
81
  time_tracking: Union[Unset, str] = UNSET
74
82
  custom_properties: Union["CustomProperties", None, Unset] = UNSET
75
83
  task_relationships: Union["TaskRelationshipsType0", None, Unset] = UNSET
84
+ created_by: Union[None, Unset, str] = UNSET
85
+ updated_by: Union[None, Unset, str] = UNSET
76
86
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
77
87
 
78
88
  def to_dict(self) -> dict[str, Any]:
@@ -101,6 +111,10 @@ class Task:
101
111
  attachments_item = attachments_item_data.to_dict()
102
112
  attachments.append(attachments_item)
103
113
 
114
+ created_at = self.created_at.isoformat()
115
+
116
+ updated_at = self.updated_at.isoformat()
117
+
104
118
  assignees: Union[None, Unset, list[str]]
105
119
  if isinstance(self.assignees, Unset):
106
120
  assignees = UNSET
@@ -164,6 +178,18 @@ class Task:
164
178
  else:
165
179
  task_relationships = self.task_relationships
166
180
 
181
+ created_by: Union[None, Unset, str]
182
+ if isinstance(self.created_by, Unset):
183
+ created_by = UNSET
184
+ else:
185
+ created_by = self.created_by
186
+
187
+ updated_by: Union[None, Unset, str]
188
+ if isinstance(self.updated_by, Unset):
189
+ updated_by = UNSET
190
+ else:
191
+ updated_by = self.updated_by
192
+
167
193
  field_dict: dict[str, Any] = {}
168
194
  field_dict.update(self.additional_properties)
169
195
  field_dict.update(
@@ -177,6 +203,8 @@ class Task:
177
203
  "status": status,
178
204
  "description": description,
179
205
  "attachments": attachments,
206
+ "createdAt": created_at,
207
+ "updatedAt": updated_at,
180
208
  }
181
209
  )
182
210
  if assignees is not UNSET:
@@ -199,6 +227,10 @@ class Task:
199
227
  field_dict["customProperties"] = custom_properties
200
228
  if task_relationships is not UNSET:
201
229
  field_dict["taskRelationships"] = task_relationships
230
+ if created_by is not UNSET:
231
+ field_dict["createdBy"] = created_by
232
+ if updated_by is not UNSET:
233
+ field_dict["updatedBy"] = updated_by
202
234
 
203
235
  return field_dict
204
236
 
@@ -237,6 +269,10 @@ class Task:
237
269
 
238
270
  attachments.append(attachments_item)
239
271
 
272
+ created_at = isoparse(d.pop("createdAt"))
273
+
274
+ updated_at = isoparse(d.pop("updatedAt"))
275
+
240
276
  def _parse_assignees(data: object) -> Union[None, Unset, list[str]]:
241
277
  if data is None:
242
278
  return data
@@ -349,6 +385,24 @@ class Task:
349
385
 
350
386
  task_relationships = _parse_task_relationships(d.pop("taskRelationships", UNSET))
351
387
 
388
+ def _parse_created_by(data: object) -> Union[None, Unset, str]:
389
+ if data is None:
390
+ return data
391
+ if isinstance(data, Unset):
392
+ return data
393
+ return cast(Union[None, Unset, str], data)
394
+
395
+ created_by = _parse_created_by(d.pop("createdBy", UNSET))
396
+
397
+ def _parse_updated_by(data: object) -> Union[None, Unset, str]:
398
+ if data is None:
399
+ return data
400
+ if isinstance(data, Unset):
401
+ return data
402
+ return cast(Union[None, Unset, str], data)
403
+
404
+ updated_by = _parse_updated_by(d.pop("updatedBy", UNSET))
405
+
352
406
  task = cls(
353
407
  id=id,
354
408
  html_url=html_url,
@@ -359,6 +413,8 @@ class Task:
359
413
  status=status,
360
414
  description=description,
361
415
  attachments=attachments,
416
+ created_at=created_at,
417
+ updated_at=updated_at,
362
418
  assignees=assignees,
363
419
  assignee=assignee,
364
420
  tags=tags,
@@ -369,6 +425,8 @@ class Task:
369
425
  time_tracking=time_tracking,
370
426
  custom_properties=custom_properties,
371
427
  task_relationships=task_relationships,
428
+ created_by=created_by,
429
+ updated_by=updated_by,
372
430
  )
373
431
 
374
432
  task.additional_properties = d
@@ -0,0 +1,94 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar, Union, cast
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ from ..types import UNSET, Unset
8
+
9
+ T = TypeVar("T", bound="TaskMove")
10
+
11
+
12
+ @_attrs_define
13
+ class TaskMove:
14
+ """
15
+ Attributes:
16
+ before_task_id (Union[None, Unset, str]): Move the task immediately before this task. For example: if tasks are
17
+ [A, B, C], then beforeTaskId=B produces [A, moved_task, B, C]. Use null to move to the beginning (first
18
+ position).
19
+ after_task_id (Union[None, Unset, str]): Move the task immediately after this task. For example: if tasks are
20
+ [A, B, C], then afterTaskId=B produces [A, B, moved_task, C]. Use null to move to the end (last position).
21
+ """
22
+
23
+ before_task_id: Union[None, Unset, str] = UNSET
24
+ after_task_id: Union[None, Unset, str] = UNSET
25
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
26
+
27
+ def to_dict(self) -> dict[str, Any]:
28
+ before_task_id: Union[None, Unset, str]
29
+ if isinstance(self.before_task_id, Unset):
30
+ before_task_id = UNSET
31
+ else:
32
+ before_task_id = self.before_task_id
33
+
34
+ after_task_id: Union[None, Unset, str]
35
+ if isinstance(self.after_task_id, Unset):
36
+ after_task_id = UNSET
37
+ else:
38
+ after_task_id = self.after_task_id
39
+
40
+ field_dict: dict[str, Any] = {}
41
+ field_dict.update(self.additional_properties)
42
+ field_dict.update({})
43
+ if before_task_id is not UNSET:
44
+ field_dict["beforeTaskId"] = before_task_id
45
+ if after_task_id is not UNSET:
46
+ field_dict["afterTaskId"] = after_task_id
47
+
48
+ return field_dict
49
+
50
+ @classmethod
51
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
52
+ d = dict(src_dict)
53
+
54
+ def _parse_before_task_id(data: object) -> Union[None, Unset, str]:
55
+ if data is None:
56
+ return data
57
+ if isinstance(data, Unset):
58
+ return data
59
+ return cast(Union[None, Unset, str], data)
60
+
61
+ before_task_id = _parse_before_task_id(d.pop("beforeTaskId", UNSET))
62
+
63
+ def _parse_after_task_id(data: object) -> Union[None, Unset, str]:
64
+ if data is None:
65
+ return data
66
+ if isinstance(data, Unset):
67
+ return data
68
+ return cast(Union[None, Unset, str], data)
69
+
70
+ after_task_id = _parse_after_task_id(d.pop("afterTaskId", UNSET))
71
+
72
+ task_move = cls(
73
+ before_task_id=before_task_id,
74
+ after_task_id=after_task_id,
75
+ )
76
+
77
+ task_move.additional_properties = d
78
+ return task_move
79
+
80
+ @property
81
+ def additional_keys(self) -> list[str]:
82
+ return list(self.additional_properties.keys())
83
+
84
+ def __getitem__(self, key: str) -> Any:
85
+ return self.additional_properties[key]
86
+
87
+ def __setitem__(self, key: str, value: Any) -> None:
88
+ self.additional_properties[key] = value
89
+
90
+ def __delitem__(self, key: str) -> None:
91
+ del self.additional_properties[key]
92
+
93
+ def __contains__(self, key: str) -> bool:
94
+ return key in self.additional_properties