windmill-api 1.544.2__py3-none-any.whl → 1.546.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 windmill-api might be problematic. Click here for more details.

Files changed (129) hide show
  1. windmill_api/api/job/cancel_selection.py +20 -1
  2. windmill_api/api/{teams/sync_teams.py → job/get_started_at_by_ids.py} +64 -20
  3. windmill_api/api/workspace/list_available_teams_channels.py +40 -5
  4. windmill_api/api/workspace/list_available_teams_ids.py +21 -1
  5. windmill_api/models/completed_job_flow_status_failure_module.py +22 -0
  6. windmill_api/models/completed_job_flow_status_failure_module_flow_jobs_duration.py +71 -0
  7. windmill_api/models/completed_job_flow_status_modules_item.py +22 -0
  8. windmill_api/models/completed_job_flow_status_modules_item_flow_jobs_duration.py +71 -0
  9. windmill_api/models/completed_job_flow_status_preprocessor_module.py +22 -0
  10. windmill_api/models/completed_job_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  11. windmill_api/models/create_account_json_body.py +8 -8
  12. windmill_api/models/delete_completed_job_response_200_flow_status_failure_module.py +24 -0
  13. windmill_api/models/delete_completed_job_response_200_flow_status_failure_module_flow_jobs_duration.py +71 -0
  14. windmill_api/models/delete_completed_job_response_200_flow_status_modules_item.py +24 -0
  15. windmill_api/models/delete_completed_job_response_200_flow_status_modules_item_flow_jobs_duration.py +71 -0
  16. windmill_api/models/delete_completed_job_response_200_flow_status_preprocessor_module.py +26 -0
  17. windmill_api/models/delete_completed_job_response_200_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  18. windmill_api/models/extended_jobs_jobs_item_type_0_flow_status_failure_module.py +24 -0
  19. windmill_api/models/extended_jobs_jobs_item_type_0_flow_status_failure_module_flow_jobs_duration.py +71 -0
  20. windmill_api/models/extended_jobs_jobs_item_type_0_flow_status_modules_item.py +24 -0
  21. windmill_api/models/extended_jobs_jobs_item_type_0_flow_status_modules_item_flow_jobs_duration.py +71 -0
  22. windmill_api/models/extended_jobs_jobs_item_type_0_flow_status_preprocessor_module.py +24 -0
  23. windmill_api/models/extended_jobs_jobs_item_type_0_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  24. windmill_api/models/extended_jobs_jobs_item_type_1_flow_status_failure_module.py +24 -0
  25. windmill_api/models/extended_jobs_jobs_item_type_1_flow_status_failure_module_flow_jobs_duration.py +71 -0
  26. windmill_api/models/extended_jobs_jobs_item_type_1_flow_status_modules_item.py +24 -0
  27. windmill_api/models/extended_jobs_jobs_item_type_1_flow_status_modules_item_flow_jobs_duration.py +71 -0
  28. windmill_api/models/extended_jobs_jobs_item_type_1_flow_status_preprocessor_module.py +24 -0
  29. windmill_api/models/extended_jobs_jobs_item_type_1_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  30. windmill_api/models/flow_status_failure_module.py +18 -0
  31. windmill_api/models/flow_status_failure_module_flow_jobs_duration.py +71 -0
  32. windmill_api/models/flow_status_module.py +18 -0
  33. windmill_api/models/flow_status_module_flow_jobs_duration.py +71 -0
  34. windmill_api/models/flow_status_modules_item.py +18 -0
  35. windmill_api/models/flow_status_modules_item_flow_jobs_duration.py +71 -0
  36. windmill_api/models/flow_status_preprocessor_module.py +20 -0
  37. windmill_api/models/flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  38. windmill_api/models/get_completed_job_response_200_flow_status_failure_module.py +24 -0
  39. windmill_api/models/get_completed_job_response_200_flow_status_failure_module_flow_jobs_duration.py +71 -0
  40. windmill_api/models/get_completed_job_response_200_flow_status_modules_item.py +24 -0
  41. windmill_api/models/get_completed_job_response_200_flow_status_modules_item_flow_jobs_duration.py +71 -0
  42. windmill_api/models/get_completed_job_response_200_flow_status_preprocessor_module.py +24 -0
  43. windmill_api/models/get_completed_job_response_200_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  44. windmill_api/models/get_job_response_200_type_0_flow_status_failure_module.py +24 -0
  45. windmill_api/models/get_job_response_200_type_0_flow_status_failure_module_flow_jobs_duration.py +71 -0
  46. windmill_api/models/get_job_response_200_type_0_flow_status_modules_item.py +24 -0
  47. windmill_api/models/get_job_response_200_type_0_flow_status_modules_item_flow_jobs_duration.py +71 -0
  48. windmill_api/models/get_job_response_200_type_0_flow_status_preprocessor_module.py +24 -0
  49. windmill_api/models/get_job_response_200_type_0_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  50. windmill_api/models/get_job_response_200_type_1_flow_status_failure_module.py +24 -0
  51. windmill_api/models/get_job_response_200_type_1_flow_status_failure_module_flow_jobs_duration.py +71 -0
  52. windmill_api/models/get_job_response_200_type_1_flow_status_modules_item.py +24 -0
  53. windmill_api/models/get_job_response_200_type_1_flow_status_modules_item_flow_jobs_duration.py +71 -0
  54. windmill_api/models/get_job_response_200_type_1_flow_status_preprocessor_module.py +24 -0
  55. windmill_api/models/get_job_response_200_type_1_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  56. windmill_api/models/get_job_updates_response_200_flow_status_failure_module.py +24 -0
  57. windmill_api/models/get_job_updates_response_200_flow_status_failure_module_flow_jobs_duration.py +71 -0
  58. windmill_api/models/get_job_updates_response_200_flow_status_modules_item.py +24 -0
  59. windmill_api/models/get_job_updates_response_200_flow_status_modules_item_flow_jobs_duration.py +71 -0
  60. windmill_api/models/get_job_updates_response_200_flow_status_preprocessor_module.py +24 -0
  61. windmill_api/models/get_job_updates_response_200_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  62. windmill_api/models/get_suspended_job_flow_response_200_job_type_0_flow_status_failure_module.py +29 -0
  63. windmill_api/models/get_suspended_job_flow_response_200_job_type_0_flow_status_failure_module_flow_jobs_duration.py +73 -0
  64. windmill_api/models/get_suspended_job_flow_response_200_job_type_0_flow_status_modules_item.py +26 -0
  65. windmill_api/models/get_suspended_job_flow_response_200_job_type_0_flow_status_modules_item_flow_jobs_duration.py +73 -0
  66. windmill_api/models/get_suspended_job_flow_response_200_job_type_0_flow_status_preprocessor_module.py +31 -0
  67. windmill_api/models/get_suspended_job_flow_response_200_job_type_0_flow_status_preprocessor_module_flow_jobs_duration.py +73 -0
  68. windmill_api/models/get_suspended_job_flow_response_200_job_type_1_flow_status_failure_module.py +29 -0
  69. windmill_api/models/get_suspended_job_flow_response_200_job_type_1_flow_status_failure_module_flow_jobs_duration.py +73 -0
  70. windmill_api/models/get_suspended_job_flow_response_200_job_type_1_flow_status_modules_item.py +26 -0
  71. windmill_api/models/get_suspended_job_flow_response_200_job_type_1_flow_status_modules_item_flow_jobs_duration.py +73 -0
  72. windmill_api/models/get_suspended_job_flow_response_200_job_type_1_flow_status_preprocessor_module.py +31 -0
  73. windmill_api/models/get_suspended_job_flow_response_200_job_type_1_flow_status_preprocessor_module_flow_jobs_duration.py +73 -0
  74. windmill_api/models/job_type_0_flow_status_failure_module_flow_jobs_duration.py +71 -0
  75. windmill_api/models/job_type_0_flow_status_modules_item_flow_jobs_duration.py +71 -0
  76. windmill_api/models/job_type_0_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  77. windmill_api/models/job_type_1_flow_status_failure_module_flow_jobs_duration.py +71 -0
  78. windmill_api/models/job_type_1_flow_status_modules_item_flow_jobs_duration.py +71 -0
  79. windmill_api/models/job_type_1_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  80. windmill_api/models/list_available_teams_channels_response_200_item.py +0 -16
  81. windmill_api/models/list_completed_jobs_response_200_item_flow_status_failure_module.py +24 -0
  82. windmill_api/models/list_completed_jobs_response_200_item_flow_status_failure_module_flow_jobs_duration.py +71 -0
  83. windmill_api/models/list_completed_jobs_response_200_item_flow_status_modules_item.py +24 -0
  84. windmill_api/models/list_completed_jobs_response_200_item_flow_status_modules_item_flow_jobs_duration.py +71 -0
  85. windmill_api/models/list_completed_jobs_response_200_item_flow_status_preprocessor_module.py +26 -0
  86. windmill_api/models/list_completed_jobs_response_200_item_flow_status_preprocessor_module_flow_jobs_duration.py +73 -0
  87. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_0_flow_status_failure_module.py +31 -0
  88. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_0_flow_status_failure_module_flow_jobs_duration.py +73 -0
  89. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_0_flow_status_modules_item.py +29 -0
  90. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_0_flow_status_modules_item_flow_jobs_duration.py +73 -0
  91. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_0_flow_status_preprocessor_module.py +31 -0
  92. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_0_flow_status_preprocessor_module_flow_jobs_duration.py +73 -0
  93. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_1_flow_status_failure_module.py +31 -0
  94. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_1_flow_status_failure_module_flow_jobs_duration.py +73 -0
  95. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_1_flow_status_modules_item.py +29 -0
  96. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_1_flow_status_modules_item_flow_jobs_duration.py +73 -0
  97. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_1_flow_status_preprocessor_module.py +31 -0
  98. windmill_api/models/list_extended_jobs_response_200_jobs_item_type_1_flow_status_preprocessor_module_flow_jobs_duration.py +73 -0
  99. windmill_api/models/list_jobs_response_200_item_type_0_flow_status_failure_module.py +24 -0
  100. windmill_api/models/list_jobs_response_200_item_type_0_flow_status_failure_module_flow_jobs_duration.py +71 -0
  101. windmill_api/models/list_jobs_response_200_item_type_0_flow_status_modules_item.py +24 -0
  102. windmill_api/models/list_jobs_response_200_item_type_0_flow_status_modules_item_flow_jobs_duration.py +71 -0
  103. windmill_api/models/list_jobs_response_200_item_type_0_flow_status_preprocessor_module.py +24 -0
  104. windmill_api/models/list_jobs_response_200_item_type_0_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  105. windmill_api/models/list_jobs_response_200_item_type_1_flow_status_failure_module.py +24 -0
  106. windmill_api/models/list_jobs_response_200_item_type_1_flow_status_failure_module_flow_jobs_duration.py +71 -0
  107. windmill_api/models/list_jobs_response_200_item_type_1_flow_status_modules_item.py +24 -0
  108. windmill_api/models/list_jobs_response_200_item_type_1_flow_status_modules_item_flow_jobs_duration.py +71 -0
  109. windmill_api/models/list_jobs_response_200_item_type_1_flow_status_preprocessor_module.py +24 -0
  110. windmill_api/models/list_jobs_response_200_item_type_1_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  111. windmill_api/models/list_queue_response_200_item_flow_status_failure_module.py +24 -0
  112. windmill_api/models/list_queue_response_200_item_flow_status_failure_module_flow_jobs_duration.py +71 -0
  113. windmill_api/models/list_queue_response_200_item_flow_status_modules_item.py +24 -0
  114. windmill_api/models/list_queue_response_200_item_flow_status_modules_item_flow_jobs_duration.py +71 -0
  115. windmill_api/models/list_queue_response_200_item_flow_status_preprocessor_module.py +24 -0
  116. windmill_api/models/list_queue_response_200_item_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  117. windmill_api/models/queued_job_flow_status_failure_module.py +22 -0
  118. windmill_api/models/queued_job_flow_status_failure_module_flow_jobs_duration.py +71 -0
  119. windmill_api/models/queued_job_flow_status_modules_item.py +22 -0
  120. windmill_api/models/queued_job_flow_status_modules_item_flow_jobs_duration.py +71 -0
  121. windmill_api/models/queued_job_flow_status_preprocessor_module.py +22 -0
  122. windmill_api/models/queued_job_flow_status_preprocessor_module_flow_jobs_duration.py +71 -0
  123. {windmill_api-1.544.2.dist-info → windmill_api-1.546.0.dist-info}/METADATA +1 -1
  124. {windmill_api-1.544.2.dist-info → windmill_api-1.546.0.dist-info}/RECORD +126 -68
  125. windmill_api/models/sync_teams_response_200_item.py +0 -87
  126. windmill_api/models/sync_teams_response_200_item_channels_item.py +0 -80
  127. windmill_api/models/upload_file_part.py +0 -65
  128. {windmill_api-1.544.2.dist-info → windmill_api-1.546.0.dist-info}/LICENSE +0 -0
  129. {windmill_api-1.544.2.dist-info → windmill_api-1.546.0.dist-info}/WHEEL +0 -0
@@ -24,6 +24,9 @@ if TYPE_CHECKING:
24
24
  from ..models.get_job_updates_response_200_flow_status_modules_item_branchall import (
25
25
  GetJobUpdatesResponse200FlowStatusModulesItemBranchall,
26
26
  )
27
+ from ..models.get_job_updates_response_200_flow_status_modules_item_flow_jobs_duration import (
28
+ GetJobUpdatesResponse200FlowStatusModulesItemFlowJobsDuration,
29
+ )
27
30
  from ..models.get_job_updates_response_200_flow_status_modules_item_iterator import (
28
31
  GetJobUpdatesResponse200FlowStatusModulesItemIterator,
29
32
  )
@@ -44,6 +47,7 @@ class GetJobUpdatesResponse200FlowStatusModulesItem:
44
47
  iterator (Union[Unset, GetJobUpdatesResponse200FlowStatusModulesItemIterator]):
45
48
  flow_jobs (Union[Unset, List[str]]):
46
49
  flow_jobs_success (Union[Unset, List[bool]]):
50
+ flow_jobs_duration (Union[Unset, GetJobUpdatesResponse200FlowStatusModulesItemFlowJobsDuration]):
47
51
  branch_chosen (Union[Unset, GetJobUpdatesResponse200FlowStatusModulesItemBranchChosen]):
48
52
  branchall (Union[Unset, GetJobUpdatesResponse200FlowStatusModulesItemBranchall]):
49
53
  approvers (Union[Unset, List['GetJobUpdatesResponse200FlowStatusModulesItemApproversItem']]):
@@ -62,6 +66,7 @@ class GetJobUpdatesResponse200FlowStatusModulesItem:
62
66
  iterator: Union[Unset, "GetJobUpdatesResponse200FlowStatusModulesItemIterator"] = UNSET
63
67
  flow_jobs: Union[Unset, List[str]] = UNSET
64
68
  flow_jobs_success: Union[Unset, List[bool]] = UNSET
69
+ flow_jobs_duration: Union[Unset, "GetJobUpdatesResponse200FlowStatusModulesItemFlowJobsDuration"] = UNSET
65
70
  branch_chosen: Union[Unset, "GetJobUpdatesResponse200FlowStatusModulesItemBranchChosen"] = UNSET
66
71
  branchall: Union[Unset, "GetJobUpdatesResponse200FlowStatusModulesItemBranchall"] = UNSET
67
72
  approvers: Union[Unset, List["GetJobUpdatesResponse200FlowStatusModulesItemApproversItem"]] = UNSET
@@ -102,6 +107,10 @@ class GetJobUpdatesResponse200FlowStatusModulesItem:
102
107
  if not isinstance(self.flow_jobs_success, Unset):
103
108
  flow_jobs_success = self.flow_jobs_success
104
109
 
110
+ flow_jobs_duration: Union[Unset, Dict[str, Any]] = UNSET
111
+ if not isinstance(self.flow_jobs_duration, Unset):
112
+ flow_jobs_duration = self.flow_jobs_duration.to_dict()
113
+
105
114
  branch_chosen: Union[Unset, Dict[str, Any]] = UNSET
106
115
  if not isinstance(self.branch_chosen, Unset):
107
116
  branch_chosen = self.branch_chosen.to_dict()
@@ -164,6 +173,8 @@ class GetJobUpdatesResponse200FlowStatusModulesItem:
164
173
  field_dict["flow_jobs"] = flow_jobs
165
174
  if flow_jobs_success is not UNSET:
166
175
  field_dict["flow_jobs_success"] = flow_jobs_success
176
+ if flow_jobs_duration is not UNSET:
177
+ field_dict["flow_jobs_duration"] = flow_jobs_duration
167
178
  if branch_chosen is not UNSET:
168
179
  field_dict["branch_chosen"] = branch_chosen
169
180
  if branchall is not UNSET:
@@ -198,6 +209,9 @@ class GetJobUpdatesResponse200FlowStatusModulesItem:
198
209
  from ..models.get_job_updates_response_200_flow_status_modules_item_branchall import (
199
210
  GetJobUpdatesResponse200FlowStatusModulesItemBranchall,
200
211
  )
212
+ from ..models.get_job_updates_response_200_flow_status_modules_item_flow_jobs_duration import (
213
+ GetJobUpdatesResponse200FlowStatusModulesItemFlowJobsDuration,
214
+ )
201
215
  from ..models.get_job_updates_response_200_flow_status_modules_item_iterator import (
202
216
  GetJobUpdatesResponse200FlowStatusModulesItemIterator,
203
217
  )
@@ -224,6 +238,15 @@ class GetJobUpdatesResponse200FlowStatusModulesItem:
224
238
 
225
239
  flow_jobs_success = cast(List[bool], d.pop("flow_jobs_success", UNSET))
226
240
 
241
+ _flow_jobs_duration = d.pop("flow_jobs_duration", UNSET)
242
+ flow_jobs_duration: Union[Unset, GetJobUpdatesResponse200FlowStatusModulesItemFlowJobsDuration]
243
+ if isinstance(_flow_jobs_duration, Unset):
244
+ flow_jobs_duration = UNSET
245
+ else:
246
+ flow_jobs_duration = GetJobUpdatesResponse200FlowStatusModulesItemFlowJobsDuration.from_dict(
247
+ _flow_jobs_duration
248
+ )
249
+
227
250
  _branch_chosen = d.pop("branch_chosen", UNSET)
228
251
  branch_chosen: Union[Unset, GetJobUpdatesResponse200FlowStatusModulesItemBranchChosen]
229
252
  if isinstance(_branch_chosen, Unset):
@@ -292,6 +315,7 @@ class GetJobUpdatesResponse200FlowStatusModulesItem:
292
315
  iterator=iterator,
293
316
  flow_jobs=flow_jobs,
294
317
  flow_jobs_success=flow_jobs_success,
318
+ flow_jobs_duration=flow_jobs_duration,
295
319
  branch_chosen=branch_chosen,
296
320
  branchall=branchall,
297
321
  approvers=approvers,
@@ -0,0 +1,71 @@
1
+ from typing import Any, Dict, List, Type, TypeVar, Union, cast
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="GetJobUpdatesResponse200FlowStatusModulesItemFlowJobsDuration")
9
+
10
+
11
+ @_attrs_define
12
+ class GetJobUpdatesResponse200FlowStatusModulesItemFlowJobsDuration:
13
+ """
14
+ Attributes:
15
+ started_at (Union[Unset, List[str]]):
16
+ duration_ms (Union[Unset, List[int]]):
17
+ """
18
+
19
+ started_at: Union[Unset, List[str]] = UNSET
20
+ duration_ms: Union[Unset, List[int]] = UNSET
21
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
22
+
23
+ def to_dict(self) -> Dict[str, Any]:
24
+ started_at: Union[Unset, List[str]] = UNSET
25
+ if not isinstance(self.started_at, Unset):
26
+ started_at = self.started_at
27
+
28
+ duration_ms: Union[Unset, List[int]] = UNSET
29
+ if not isinstance(self.duration_ms, Unset):
30
+ duration_ms = self.duration_ms
31
+
32
+ field_dict: Dict[str, Any] = {}
33
+ field_dict.update(self.additional_properties)
34
+ field_dict.update({})
35
+ if started_at is not UNSET:
36
+ field_dict["started_at"] = started_at
37
+ if duration_ms is not UNSET:
38
+ field_dict["duration_ms"] = duration_ms
39
+
40
+ return field_dict
41
+
42
+ @classmethod
43
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
44
+ d = src_dict.copy()
45
+ started_at = cast(List[str], d.pop("started_at", UNSET))
46
+
47
+ duration_ms = cast(List[int], d.pop("duration_ms", UNSET))
48
+
49
+ get_job_updates_response_200_flow_status_modules_item_flow_jobs_duration = cls(
50
+ started_at=started_at,
51
+ duration_ms=duration_ms,
52
+ )
53
+
54
+ get_job_updates_response_200_flow_status_modules_item_flow_jobs_duration.additional_properties = d
55
+ return get_job_updates_response_200_flow_status_modules_item_flow_jobs_duration
56
+
57
+ @property
58
+ def additional_keys(self) -> List[str]:
59
+ return list(self.additional_properties.keys())
60
+
61
+ def __getitem__(self, key: str) -> Any:
62
+ return self.additional_properties[key]
63
+
64
+ def __setitem__(self, key: str, value: Any) -> None:
65
+ self.additional_properties[key] = value
66
+
67
+ def __delitem__(self, key: str) -> None:
68
+ del self.additional_properties[key]
69
+
70
+ def __contains__(self, key: str) -> bool:
71
+ return key in self.additional_properties
@@ -24,6 +24,9 @@ if TYPE_CHECKING:
24
24
  from ..models.get_job_updates_response_200_flow_status_preprocessor_module_branchall import (
25
25
  GetJobUpdatesResponse200FlowStatusPreprocessorModuleBranchall,
26
26
  )
27
+ from ..models.get_job_updates_response_200_flow_status_preprocessor_module_flow_jobs_duration import (
28
+ GetJobUpdatesResponse200FlowStatusPreprocessorModuleFlowJobsDuration,
29
+ )
27
30
  from ..models.get_job_updates_response_200_flow_status_preprocessor_module_iterator import (
28
31
  GetJobUpdatesResponse200FlowStatusPreprocessorModuleIterator,
29
32
  )
@@ -44,6 +47,7 @@ class GetJobUpdatesResponse200FlowStatusPreprocessorModule:
44
47
  iterator (Union[Unset, GetJobUpdatesResponse200FlowStatusPreprocessorModuleIterator]):
45
48
  flow_jobs (Union[Unset, List[str]]):
46
49
  flow_jobs_success (Union[Unset, List[bool]]):
50
+ flow_jobs_duration (Union[Unset, GetJobUpdatesResponse200FlowStatusPreprocessorModuleFlowJobsDuration]):
47
51
  branch_chosen (Union[Unset, GetJobUpdatesResponse200FlowStatusPreprocessorModuleBranchChosen]):
48
52
  branchall (Union[Unset, GetJobUpdatesResponse200FlowStatusPreprocessorModuleBranchall]):
49
53
  approvers (Union[Unset, List['GetJobUpdatesResponse200FlowStatusPreprocessorModuleApproversItem']]):
@@ -63,6 +67,7 @@ class GetJobUpdatesResponse200FlowStatusPreprocessorModule:
63
67
  iterator: Union[Unset, "GetJobUpdatesResponse200FlowStatusPreprocessorModuleIterator"] = UNSET
64
68
  flow_jobs: Union[Unset, List[str]] = UNSET
65
69
  flow_jobs_success: Union[Unset, List[bool]] = UNSET
70
+ flow_jobs_duration: Union[Unset, "GetJobUpdatesResponse200FlowStatusPreprocessorModuleFlowJobsDuration"] = UNSET
66
71
  branch_chosen: Union[Unset, "GetJobUpdatesResponse200FlowStatusPreprocessorModuleBranchChosen"] = UNSET
67
72
  branchall: Union[Unset, "GetJobUpdatesResponse200FlowStatusPreprocessorModuleBranchall"] = UNSET
68
73
  approvers: Union[Unset, List["GetJobUpdatesResponse200FlowStatusPreprocessorModuleApproversItem"]] = UNSET
@@ -103,6 +108,10 @@ class GetJobUpdatesResponse200FlowStatusPreprocessorModule:
103
108
  if not isinstance(self.flow_jobs_success, Unset):
104
109
  flow_jobs_success = self.flow_jobs_success
105
110
 
111
+ flow_jobs_duration: Union[Unset, Dict[str, Any]] = UNSET
112
+ if not isinstance(self.flow_jobs_duration, Unset):
113
+ flow_jobs_duration = self.flow_jobs_duration.to_dict()
114
+
106
115
  branch_chosen: Union[Unset, Dict[str, Any]] = UNSET
107
116
  if not isinstance(self.branch_chosen, Unset):
108
117
  branch_chosen = self.branch_chosen.to_dict()
@@ -165,6 +174,8 @@ class GetJobUpdatesResponse200FlowStatusPreprocessorModule:
165
174
  field_dict["flow_jobs"] = flow_jobs
166
175
  if flow_jobs_success is not UNSET:
167
176
  field_dict["flow_jobs_success"] = flow_jobs_success
177
+ if flow_jobs_duration is not UNSET:
178
+ field_dict["flow_jobs_duration"] = flow_jobs_duration
168
179
  if branch_chosen is not UNSET:
169
180
  field_dict["branch_chosen"] = branch_chosen
170
181
  if branchall is not UNSET:
@@ -199,6 +210,9 @@ class GetJobUpdatesResponse200FlowStatusPreprocessorModule:
199
210
  from ..models.get_job_updates_response_200_flow_status_preprocessor_module_branchall import (
200
211
  GetJobUpdatesResponse200FlowStatusPreprocessorModuleBranchall,
201
212
  )
213
+ from ..models.get_job_updates_response_200_flow_status_preprocessor_module_flow_jobs_duration import (
214
+ GetJobUpdatesResponse200FlowStatusPreprocessorModuleFlowJobsDuration,
215
+ )
202
216
  from ..models.get_job_updates_response_200_flow_status_preprocessor_module_iterator import (
203
217
  GetJobUpdatesResponse200FlowStatusPreprocessorModuleIterator,
204
218
  )
@@ -225,6 +239,15 @@ class GetJobUpdatesResponse200FlowStatusPreprocessorModule:
225
239
 
226
240
  flow_jobs_success = cast(List[bool], d.pop("flow_jobs_success", UNSET))
227
241
 
242
+ _flow_jobs_duration = d.pop("flow_jobs_duration", UNSET)
243
+ flow_jobs_duration: Union[Unset, GetJobUpdatesResponse200FlowStatusPreprocessorModuleFlowJobsDuration]
244
+ if isinstance(_flow_jobs_duration, Unset):
245
+ flow_jobs_duration = UNSET
246
+ else:
247
+ flow_jobs_duration = GetJobUpdatesResponse200FlowStatusPreprocessorModuleFlowJobsDuration.from_dict(
248
+ _flow_jobs_duration
249
+ )
250
+
228
251
  _branch_chosen = d.pop("branch_chosen", UNSET)
229
252
  branch_chosen: Union[Unset, GetJobUpdatesResponse200FlowStatusPreprocessorModuleBranchChosen]
230
253
  if isinstance(_branch_chosen, Unset):
@@ -295,6 +318,7 @@ class GetJobUpdatesResponse200FlowStatusPreprocessorModule:
295
318
  iterator=iterator,
296
319
  flow_jobs=flow_jobs,
297
320
  flow_jobs_success=flow_jobs_success,
321
+ flow_jobs_duration=flow_jobs_duration,
298
322
  branch_chosen=branch_chosen,
299
323
  branchall=branchall,
300
324
  approvers=approvers,
@@ -0,0 +1,71 @@
1
+ from typing import Any, Dict, List, Type, TypeVar, Union, cast
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="GetJobUpdatesResponse200FlowStatusPreprocessorModuleFlowJobsDuration")
9
+
10
+
11
+ @_attrs_define
12
+ class GetJobUpdatesResponse200FlowStatusPreprocessorModuleFlowJobsDuration:
13
+ """
14
+ Attributes:
15
+ started_at (Union[Unset, List[str]]):
16
+ duration_ms (Union[Unset, List[int]]):
17
+ """
18
+
19
+ started_at: Union[Unset, List[str]] = UNSET
20
+ duration_ms: Union[Unset, List[int]] = UNSET
21
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
22
+
23
+ def to_dict(self) -> Dict[str, Any]:
24
+ started_at: Union[Unset, List[str]] = UNSET
25
+ if not isinstance(self.started_at, Unset):
26
+ started_at = self.started_at
27
+
28
+ duration_ms: Union[Unset, List[int]] = UNSET
29
+ if not isinstance(self.duration_ms, Unset):
30
+ duration_ms = self.duration_ms
31
+
32
+ field_dict: Dict[str, Any] = {}
33
+ field_dict.update(self.additional_properties)
34
+ field_dict.update({})
35
+ if started_at is not UNSET:
36
+ field_dict["started_at"] = started_at
37
+ if duration_ms is not UNSET:
38
+ field_dict["duration_ms"] = duration_ms
39
+
40
+ return field_dict
41
+
42
+ @classmethod
43
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
44
+ d = src_dict.copy()
45
+ started_at = cast(List[str], d.pop("started_at", UNSET))
46
+
47
+ duration_ms = cast(List[int], d.pop("duration_ms", UNSET))
48
+
49
+ get_job_updates_response_200_flow_status_preprocessor_module_flow_jobs_duration = cls(
50
+ started_at=started_at,
51
+ duration_ms=duration_ms,
52
+ )
53
+
54
+ get_job_updates_response_200_flow_status_preprocessor_module_flow_jobs_duration.additional_properties = d
55
+ return get_job_updates_response_200_flow_status_preprocessor_module_flow_jobs_duration
56
+
57
+ @property
58
+ def additional_keys(self) -> List[str]:
59
+ return list(self.additional_properties.keys())
60
+
61
+ def __getitem__(self, key: str) -> Any:
62
+ return self.additional_properties[key]
63
+
64
+ def __setitem__(self, key: str, value: Any) -> None:
65
+ self.additional_properties[key] = value
66
+
67
+ def __delitem__(self, key: str) -> None:
68
+ del self.additional_properties[key]
69
+
70
+ def __contains__(self, key: str) -> bool:
71
+ return key in self.additional_properties
@@ -24,6 +24,9 @@ if TYPE_CHECKING:
24
24
  from ..models.get_suspended_job_flow_response_200_job_type_0_flow_status_failure_module_branchall import (
25
25
  GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModuleBranchall,
26
26
  )
27
+ from ..models.get_suspended_job_flow_response_200_job_type_0_flow_status_failure_module_flow_jobs_duration import (
28
+ GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModuleFlowJobsDuration,
29
+ )
27
30
  from ..models.get_suspended_job_flow_response_200_job_type_0_flow_status_failure_module_iterator import (
28
31
  GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModuleIterator,
29
32
  )
@@ -44,6 +47,8 @@ class GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModule:
44
47
  iterator (Union[Unset, GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModuleIterator]):
45
48
  flow_jobs (Union[Unset, List[str]]):
46
49
  flow_jobs_success (Union[Unset, List[bool]]):
50
+ flow_jobs_duration (Union[Unset,
51
+ GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModuleFlowJobsDuration]):
47
52
  branch_chosen (Union[Unset, GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModuleBranchChosen]):
48
53
  branchall (Union[Unset, GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModuleBranchall]):
49
54
  approvers (Union[Unset, List['GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModuleApproversItem']]):
@@ -64,6 +69,9 @@ class GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModule:
64
69
  iterator: Union[Unset, "GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModuleIterator"] = UNSET
65
70
  flow_jobs: Union[Unset, List[str]] = UNSET
66
71
  flow_jobs_success: Union[Unset, List[bool]] = UNSET
72
+ flow_jobs_duration: Union[
73
+ Unset, "GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModuleFlowJobsDuration"
74
+ ] = UNSET
67
75
  branch_chosen: Union[Unset, "GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModuleBranchChosen"] = UNSET
68
76
  branchall: Union[Unset, "GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModuleBranchall"] = UNSET
69
77
  approvers: Union[Unset, List["GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModuleApproversItem"]] = UNSET
@@ -105,6 +113,10 @@ class GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModule:
105
113
  if not isinstance(self.flow_jobs_success, Unset):
106
114
  flow_jobs_success = self.flow_jobs_success
107
115
 
116
+ flow_jobs_duration: Union[Unset, Dict[str, Any]] = UNSET
117
+ if not isinstance(self.flow_jobs_duration, Unset):
118
+ flow_jobs_duration = self.flow_jobs_duration.to_dict()
119
+
108
120
  branch_chosen: Union[Unset, Dict[str, Any]] = UNSET
109
121
  if not isinstance(self.branch_chosen, Unset):
110
122
  branch_chosen = self.branch_chosen.to_dict()
@@ -170,6 +182,8 @@ class GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModule:
170
182
  field_dict["flow_jobs"] = flow_jobs
171
183
  if flow_jobs_success is not UNSET:
172
184
  field_dict["flow_jobs_success"] = flow_jobs_success
185
+ if flow_jobs_duration is not UNSET:
186
+ field_dict["flow_jobs_duration"] = flow_jobs_duration
173
187
  if branch_chosen is not UNSET:
174
188
  field_dict["branch_chosen"] = branch_chosen
175
189
  if branchall is not UNSET:
@@ -206,6 +220,9 @@ class GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModule:
206
220
  from ..models.get_suspended_job_flow_response_200_job_type_0_flow_status_failure_module_branchall import (
207
221
  GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModuleBranchall,
208
222
  )
223
+ from ..models.get_suspended_job_flow_response_200_job_type_0_flow_status_failure_module_flow_jobs_duration import (
224
+ GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModuleFlowJobsDuration,
225
+ )
209
226
  from ..models.get_suspended_job_flow_response_200_job_type_0_flow_status_failure_module_iterator import (
210
227
  GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModuleIterator,
211
228
  )
@@ -232,6 +249,17 @@ class GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModule:
232
249
 
233
250
  flow_jobs_success = cast(List[bool], d.pop("flow_jobs_success", UNSET))
234
251
 
252
+ _flow_jobs_duration = d.pop("flow_jobs_duration", UNSET)
253
+ flow_jobs_duration: Union[Unset, GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModuleFlowJobsDuration]
254
+ if isinstance(_flow_jobs_duration, Unset):
255
+ flow_jobs_duration = UNSET
256
+ else:
257
+ flow_jobs_duration = (
258
+ GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModuleFlowJobsDuration.from_dict(
259
+ _flow_jobs_duration
260
+ )
261
+ )
262
+
235
263
  _branch_chosen = d.pop("branch_chosen", UNSET)
236
264
  branch_chosen: Union[Unset, GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModuleBranchChosen]
237
265
  if isinstance(_branch_chosen, Unset):
@@ -308,6 +336,7 @@ class GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModule:
308
336
  iterator=iterator,
309
337
  flow_jobs=flow_jobs,
310
338
  flow_jobs_success=flow_jobs_success,
339
+ flow_jobs_duration=flow_jobs_duration,
311
340
  branch_chosen=branch_chosen,
312
341
  branchall=branchall,
313
342
  approvers=approvers,
@@ -0,0 +1,73 @@
1
+ from typing import Any, Dict, List, Type, TypeVar, Union, cast
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModuleFlowJobsDuration")
9
+
10
+
11
+ @_attrs_define
12
+ class GetSuspendedJobFlowResponse200JobType0FlowStatusFailureModuleFlowJobsDuration:
13
+ """
14
+ Attributes:
15
+ started_at (Union[Unset, List[str]]):
16
+ duration_ms (Union[Unset, List[int]]):
17
+ """
18
+
19
+ started_at: Union[Unset, List[str]] = UNSET
20
+ duration_ms: Union[Unset, List[int]] = UNSET
21
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
22
+
23
+ def to_dict(self) -> Dict[str, Any]:
24
+ started_at: Union[Unset, List[str]] = UNSET
25
+ if not isinstance(self.started_at, Unset):
26
+ started_at = self.started_at
27
+
28
+ duration_ms: Union[Unset, List[int]] = UNSET
29
+ if not isinstance(self.duration_ms, Unset):
30
+ duration_ms = self.duration_ms
31
+
32
+ field_dict: Dict[str, Any] = {}
33
+ field_dict.update(self.additional_properties)
34
+ field_dict.update({})
35
+ if started_at is not UNSET:
36
+ field_dict["started_at"] = started_at
37
+ if duration_ms is not UNSET:
38
+ field_dict["duration_ms"] = duration_ms
39
+
40
+ return field_dict
41
+
42
+ @classmethod
43
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
44
+ d = src_dict.copy()
45
+ started_at = cast(List[str], d.pop("started_at", UNSET))
46
+
47
+ duration_ms = cast(List[int], d.pop("duration_ms", UNSET))
48
+
49
+ get_suspended_job_flow_response_200_job_type_0_flow_status_failure_module_flow_jobs_duration = cls(
50
+ started_at=started_at,
51
+ duration_ms=duration_ms,
52
+ )
53
+
54
+ get_suspended_job_flow_response_200_job_type_0_flow_status_failure_module_flow_jobs_duration.additional_properties = (
55
+ d
56
+ )
57
+ return get_suspended_job_flow_response_200_job_type_0_flow_status_failure_module_flow_jobs_duration
58
+
59
+ @property
60
+ def additional_keys(self) -> List[str]:
61
+ return list(self.additional_properties.keys())
62
+
63
+ def __getitem__(self, key: str) -> Any:
64
+ return self.additional_properties[key]
65
+
66
+ def __setitem__(self, key: str, value: Any) -> None:
67
+ self.additional_properties[key] = value
68
+
69
+ def __delitem__(self, key: str) -> None:
70
+ del self.additional_properties[key]
71
+
72
+ def __contains__(self, key: str) -> bool:
73
+ return key in self.additional_properties
@@ -24,6 +24,9 @@ if TYPE_CHECKING:
24
24
  from ..models.get_suspended_job_flow_response_200_job_type_0_flow_status_modules_item_branchall import (
25
25
  GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItemBranchall,
26
26
  )
27
+ from ..models.get_suspended_job_flow_response_200_job_type_0_flow_status_modules_item_flow_jobs_duration import (
28
+ GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItemFlowJobsDuration,
29
+ )
27
30
  from ..models.get_suspended_job_flow_response_200_job_type_0_flow_status_modules_item_iterator import (
28
31
  GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItemIterator,
29
32
  )
@@ -44,6 +47,7 @@ class GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItem:
44
47
  iterator (Union[Unset, GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItemIterator]):
45
48
  flow_jobs (Union[Unset, List[str]]):
46
49
  flow_jobs_success (Union[Unset, List[bool]]):
50
+ flow_jobs_duration (Union[Unset, GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItemFlowJobsDuration]):
47
51
  branch_chosen (Union[Unset, GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItemBranchChosen]):
48
52
  branchall (Union[Unset, GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItemBranchall]):
49
53
  approvers (Union[Unset, List['GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItemApproversItem']]):
@@ -63,6 +67,9 @@ class GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItem:
63
67
  iterator: Union[Unset, "GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItemIterator"] = UNSET
64
68
  flow_jobs: Union[Unset, List[str]] = UNSET
65
69
  flow_jobs_success: Union[Unset, List[bool]] = UNSET
70
+ flow_jobs_duration: Union[
71
+ Unset, "GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItemFlowJobsDuration"
72
+ ] = UNSET
66
73
  branch_chosen: Union[Unset, "GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItemBranchChosen"] = UNSET
67
74
  branchall: Union[Unset, "GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItemBranchall"] = UNSET
68
75
  approvers: Union[Unset, List["GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItemApproversItem"]] = UNSET
@@ -103,6 +110,10 @@ class GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItem:
103
110
  if not isinstance(self.flow_jobs_success, Unset):
104
111
  flow_jobs_success = self.flow_jobs_success
105
112
 
113
+ flow_jobs_duration: Union[Unset, Dict[str, Any]] = UNSET
114
+ if not isinstance(self.flow_jobs_duration, Unset):
115
+ flow_jobs_duration = self.flow_jobs_duration.to_dict()
116
+
106
117
  branch_chosen: Union[Unset, Dict[str, Any]] = UNSET
107
118
  if not isinstance(self.branch_chosen, Unset):
108
119
  branch_chosen = self.branch_chosen.to_dict()
@@ -166,6 +177,8 @@ class GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItem:
166
177
  field_dict["flow_jobs"] = flow_jobs
167
178
  if flow_jobs_success is not UNSET:
168
179
  field_dict["flow_jobs_success"] = flow_jobs_success
180
+ if flow_jobs_duration is not UNSET:
181
+ field_dict["flow_jobs_duration"] = flow_jobs_duration
169
182
  if branch_chosen is not UNSET:
170
183
  field_dict["branch_chosen"] = branch_chosen
171
184
  if branchall is not UNSET:
@@ -200,6 +213,9 @@ class GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItem:
200
213
  from ..models.get_suspended_job_flow_response_200_job_type_0_flow_status_modules_item_branchall import (
201
214
  GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItemBranchall,
202
215
  )
216
+ from ..models.get_suspended_job_flow_response_200_job_type_0_flow_status_modules_item_flow_jobs_duration import (
217
+ GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItemFlowJobsDuration,
218
+ )
203
219
  from ..models.get_suspended_job_flow_response_200_job_type_0_flow_status_modules_item_iterator import (
204
220
  GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItemIterator,
205
221
  )
@@ -226,6 +242,15 @@ class GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItem:
226
242
 
227
243
  flow_jobs_success = cast(List[bool], d.pop("flow_jobs_success", UNSET))
228
244
 
245
+ _flow_jobs_duration = d.pop("flow_jobs_duration", UNSET)
246
+ flow_jobs_duration: Union[Unset, GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItemFlowJobsDuration]
247
+ if isinstance(_flow_jobs_duration, Unset):
248
+ flow_jobs_duration = UNSET
249
+ else:
250
+ flow_jobs_duration = GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItemFlowJobsDuration.from_dict(
251
+ _flow_jobs_duration
252
+ )
253
+
229
254
  _branch_chosen = d.pop("branch_chosen", UNSET)
230
255
  branch_chosen: Union[Unset, GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItemBranchChosen]
231
256
  if isinstance(_branch_chosen, Unset):
@@ -298,6 +323,7 @@ class GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItem:
298
323
  iterator=iterator,
299
324
  flow_jobs=flow_jobs,
300
325
  flow_jobs_success=flow_jobs_success,
326
+ flow_jobs_duration=flow_jobs_duration,
301
327
  branch_chosen=branch_chosen,
302
328
  branchall=branchall,
303
329
  approvers=approvers,
@@ -0,0 +1,73 @@
1
+ from typing import Any, Dict, List, Type, TypeVar, Union, cast
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItemFlowJobsDuration")
9
+
10
+
11
+ @_attrs_define
12
+ class GetSuspendedJobFlowResponse200JobType0FlowStatusModulesItemFlowJobsDuration:
13
+ """
14
+ Attributes:
15
+ started_at (Union[Unset, List[str]]):
16
+ duration_ms (Union[Unset, List[int]]):
17
+ """
18
+
19
+ started_at: Union[Unset, List[str]] = UNSET
20
+ duration_ms: Union[Unset, List[int]] = UNSET
21
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
22
+
23
+ def to_dict(self) -> Dict[str, Any]:
24
+ started_at: Union[Unset, List[str]] = UNSET
25
+ if not isinstance(self.started_at, Unset):
26
+ started_at = self.started_at
27
+
28
+ duration_ms: Union[Unset, List[int]] = UNSET
29
+ if not isinstance(self.duration_ms, Unset):
30
+ duration_ms = self.duration_ms
31
+
32
+ field_dict: Dict[str, Any] = {}
33
+ field_dict.update(self.additional_properties)
34
+ field_dict.update({})
35
+ if started_at is not UNSET:
36
+ field_dict["started_at"] = started_at
37
+ if duration_ms is not UNSET:
38
+ field_dict["duration_ms"] = duration_ms
39
+
40
+ return field_dict
41
+
42
+ @classmethod
43
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
44
+ d = src_dict.copy()
45
+ started_at = cast(List[str], d.pop("started_at", UNSET))
46
+
47
+ duration_ms = cast(List[int], d.pop("duration_ms", UNSET))
48
+
49
+ get_suspended_job_flow_response_200_job_type_0_flow_status_modules_item_flow_jobs_duration = cls(
50
+ started_at=started_at,
51
+ duration_ms=duration_ms,
52
+ )
53
+
54
+ get_suspended_job_flow_response_200_job_type_0_flow_status_modules_item_flow_jobs_duration.additional_properties = (
55
+ d
56
+ )
57
+ return get_suspended_job_flow_response_200_job_type_0_flow_status_modules_item_flow_jobs_duration
58
+
59
+ @property
60
+ def additional_keys(self) -> List[str]:
61
+ return list(self.additional_properties.keys())
62
+
63
+ def __getitem__(self, key: str) -> Any:
64
+ return self.additional_properties[key]
65
+
66
+ def __setitem__(self, key: str, value: Any) -> None:
67
+ self.additional_properties[key] = value
68
+
69
+ def __delitem__(self, key: str) -> None:
70
+ del self.additional_properties[key]
71
+
72
+ def __contains__(self, key: str) -> bool:
73
+ return key in self.additional_properties