render_sdk 0.1.2__py3-none-any.whl → 0.2.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.
- render_sdk/__init__.py +41 -4
- render_sdk/client/__init__.py +25 -0
- render_sdk/client/client.py +5 -0
- render_sdk/client/sse.py +5 -1
- render_sdk/client/tests/test_client.py +6 -4
- render_sdk/client/tests/test_sse.py +1 -0
- render_sdk/client/types.py +2 -1
- render_sdk/client/workflows.py +13 -3
- render_sdk/experimental/__init__.py +31 -0
- render_sdk/experimental/experimental.py +71 -0
- render_sdk/experimental/object/__init__.py +30 -0
- render_sdk/experimental/object/api.py +260 -0
- render_sdk/experimental/object/client.py +475 -0
- render_sdk/experimental/object/types.py +87 -0
- render_sdk/public_api/api/audit_logs/list_organization_audit_logs.py +303 -0
- render_sdk/public_api/api/audit_logs/list_owner_audit_logs.py +303 -0
- render_sdk/public_api/api/blob_storage/delete_blob.py +215 -0
- render_sdk/public_api/api/blob_storage/get_blob.py +221 -0
- render_sdk/public_api/api/{workflows/list_workflow_versions.py → blob_storage/list_blobs.py} +52 -30
- render_sdk/public_api/api/blob_storage/put_blob.py +248 -0
- render_sdk/public_api/api/blueprints/validate_blueprint.py +212 -0
- render_sdk/public_api/api/key_value/resume_key_value.py +203 -0
- render_sdk/public_api/api/key_value/suspend_key_value.py +203 -0
- render_sdk/public_api/api/metrics/get_bandwidth_sources.py +251 -0
- render_sdk/public_api/api/postgres/create_postgres_user.py +229 -0
- render_sdk/public_api/api/postgres/delete_postgres_user.py +201 -0
- render_sdk/public_api/api/postgres/list_postgres_users.py +195 -0
- render_sdk/public_api/api/redis_deprecated/__init__.py +1 -0
- render_sdk/public_api/api/{redis → redis_deprecated}/create_redis.py +4 -4
- render_sdk/public_api/api/{redis → redis_deprecated}/delete_redis.py +4 -4
- render_sdk/public_api/api/{redis → redis_deprecated}/list_redis.py +4 -0
- render_sdk/public_api/api/{redis → redis_deprecated}/retrieve_redis.py +4 -4
- render_sdk/public_api/api/{redis → redis_deprecated}/retrieve_redis_connection_info.py +4 -0
- render_sdk/public_api/api/{redis → redis_deprecated}/update_redis.py +4 -4
- render_sdk/public_api/api/services/create_service.py +4 -4
- render_sdk/public_api/api/workflow_tasks_ea/__init__.py +1 -0
- render_sdk/public_api/api/{workflows → workflow_tasks_ea}/cancel_task_run.py +12 -4
- render_sdk/public_api/api/{workflows → workflow_tasks_ea}/create_task.py +12 -4
- render_sdk/public_api/api/{workflows → workflow_tasks_ea}/get_task.py +12 -4
- render_sdk/public_api/api/{workflows → workflow_tasks_ea}/get_task_run.py +12 -4
- render_sdk/public_api/api/{workflows → workflow_tasks_ea}/list_task_runs.py +12 -0
- render_sdk/public_api/api/{workflows → workflow_tasks_ea}/list_tasks.py +24 -12
- render_sdk/public_api/api/workflows_ea/__init__.py +1 -0
- render_sdk/public_api/api/workflows_ea/create_workflow.py +199 -0
- render_sdk/public_api/api/{workflows/deploy_workflow.py → workflows_ea/create_workflow_version.py} +31 -14
- render_sdk/public_api/api/{workflows → workflows_ea}/delete_workflow.py +12 -4
- render_sdk/public_api/api/{workflows → workflows_ea}/get_workflow.py +32 -14
- render_sdk/public_api/api/{workflows → workflows_ea}/get_workflow_version.py +12 -4
- render_sdk/public_api/api/workflows_ea/list_workflow_versions.py +275 -0
- render_sdk/public_api/api/{workflows → workflows_ea}/list_workflows.py +41 -14
- render_sdk/public_api/api/workflows_ea/update_workflow.py +212 -0
- render_sdk/public_api/api/workspaces/remove_workspace_member.py +206 -0
- render_sdk/public_api/api/workspaces/update_workspace_member.py +235 -0
- render_sdk/public_api/models/__init__.py +82 -4
- render_sdk/public_api/models/audit_log.py +113 -0
- render_sdk/public_api/models/audit_log_actor.py +80 -0
- render_sdk/public_api/models/audit_log_actor_type.py +10 -0
- render_sdk/public_api/models/audit_log_event.py +80 -0
- render_sdk/public_api/models/audit_log_metadata.py +49 -0
- render_sdk/public_api/models/audit_log_status.py +9 -0
- render_sdk/public_api/models/audit_log_with_cursor.py +73 -0
- render_sdk/public_api/models/background_worker_details.py +2 -2
- render_sdk/public_api/models/background_worker_details_patch.py +1 -1
- render_sdk/public_api/models/background_worker_details_post.py +1 -1
- render_sdk/public_api/models/blob_metadata.py +85 -0
- render_sdk/public_api/models/blob_with_cursor.py +73 -0
- render_sdk/public_api/models/cache.py +6 -4
- render_sdk/public_api/models/cache_profile.py +10 -0
- render_sdk/public_api/models/create_deploy_body.py +23 -0
- render_sdk/public_api/models/create_version.py +70 -0
- render_sdk/public_api/models/credential_create_input.py +59 -0
- render_sdk/public_api/models/cron_job_details.py +2 -2
- render_sdk/public_api/models/cron_job_details_patch.py +1 -1
- render_sdk/public_api/models/cron_job_details_post.py +1 -1
- render_sdk/public_api/models/deploy_mode.py +9 -0
- render_sdk/public_api/models/event.py +11 -27
- render_sdk/public_api/models/event_type.py +1 -1
- render_sdk/public_api/models/get_bandwidth_sources_response_200.py +75 -0
- render_sdk/public_api/models/get_bandwidth_sources_response_200_data_item.py +101 -0
- render_sdk/public_api/models/get_bandwidth_sources_response_200_data_item_labels.py +78 -0
- render_sdk/public_api/models/get_bandwidth_sources_response_200_data_item_labels_traffic_source.py +12 -0
- render_sdk/public_api/models/get_bandwidth_sources_response_200_data_item_values_item.py +68 -0
- render_sdk/public_api/models/{server_unhealthy.py → get_bandwidth_sources_response_400.py} +12 -12
- render_sdk/public_api/models/get_blob_output.py +71 -0
- render_sdk/public_api/models/list_postgres_users_response_200_item.py +86 -0
- render_sdk/public_api/models/otel_provider_type.py +2 -0
- render_sdk/public_api/models/postgres.py +8 -0
- render_sdk/public_api/models/postgres_detail.py +26 -0
- render_sdk/public_api/models/postgres_parameter_overrides.py +44 -0
- render_sdk/public_api/models/postgres_patch_input.py +27 -0
- render_sdk/public_api/models/postgres_post_input.py +27 -0
- render_sdk/public_api/models/postgres_version.py +1 -0
- render_sdk/public_api/models/preview_input.py +2 -2
- render_sdk/public_api/models/private_service_details.py +2 -2
- render_sdk/public_api/models/private_service_details_patch.py +1 -1
- render_sdk/public_api/models/private_service_details_post.py +1 -1
- render_sdk/public_api/models/project_post_environment_input.py +26 -1
- render_sdk/public_api/models/put_blob_input.py +59 -0
- render_sdk/public_api/models/put_blob_output.py +79 -0
- render_sdk/public_api/models/read_replica.py +25 -1
- render_sdk/public_api/models/read_replica_input.py +25 -1
- render_sdk/public_api/models/run_task.py +35 -7
- render_sdk/public_api/models/service_event.py +12 -27
- render_sdk/public_api/models/service_event_type.py +0 -1
- render_sdk/public_api/models/service_post.py +9 -6
- render_sdk/public_api/models/task_attempt.py +88 -0
- render_sdk/public_api/models/task_attempt_details.py +108 -0
- render_sdk/public_api/models/task_data_type_1.py +44 -0
- render_sdk/public_api/models/task_run.py +23 -1
- render_sdk/public_api/models/task_run_details.py +50 -5
- render_sdk/public_api/models/task_run_status.py +1 -0
- render_sdk/public_api/models/task_with_cursor.py +73 -0
- render_sdk/public_api/models/team_member.py +5 -4
- render_sdk/public_api/models/team_member_role.py +12 -0
- render_sdk/public_api/models/update_workspace_member_body.py +61 -0
- render_sdk/public_api/models/validate_blueprint_request.py +84 -0
- render_sdk/public_api/models/validate_blueprint_response.py +105 -0
- render_sdk/public_api/models/validation_error.py +88 -0
- render_sdk/public_api/models/validation_plan_summary.py +107 -0
- render_sdk/public_api/models/web_service_details.py +2 -2
- render_sdk/public_api/models/web_service_details_patch.py +6 -5
- render_sdk/public_api/models/web_service_details_post.py +6 -5
- render_sdk/public_api/models/workflow.py +144 -0
- render_sdk/public_api/models/workflow_create.py +99 -0
- render_sdk/public_api/models/workflow_update.py +90 -0
- render_sdk/public_api/models/workflow_version.py +10 -14
- render_sdk/public_api/models/workflow_version_status.py +13 -0
- render_sdk/public_api/models/workflow_version_with_cursor.py +73 -0
- render_sdk/public_api/models/workflow_with_cursor.py +73 -0
- render_sdk/render.py +65 -0
- render_sdk/version.py +27 -0
- render_sdk/workflows/__init__.py +5 -1
- render_sdk/workflows/app.py +262 -0
- render_sdk/workflows/callback_api/models/__init__.py +2 -0
- render_sdk/workflows/callback_api/models/task.py +21 -0
- render_sdk/workflows/callback_api/models/task_options.py +18 -0
- render_sdk/workflows/callback_api/models/task_parameter.py +88 -0
- render_sdk/workflows/callback_api/py.typed +1 -1
- render_sdk/workflows/cli.py +58 -0
- render_sdk/workflows/client.py +8 -9
- render_sdk/workflows/executor.py +19 -7
- render_sdk/workflows/runner.py +43 -10
- render_sdk/workflows/task.py +84 -5
- render_sdk/workflows/tests/test_app.py +412 -0
- render_sdk/workflows/tests/test_cli.py +134 -0
- render_sdk/workflows/tests/test_end_to_end.py +71 -1
- render_sdk/workflows/tests/test_registration.py +58 -1
- {render_sdk-0.1.2.dist-info → render_sdk-0.2.0.dist-info}/METADATA +4 -3
- {render_sdk-0.1.2.dist-info → render_sdk-0.2.0.dist-info}/RECORD +155 -83
- {render_sdk-0.1.2.dist-info → render_sdk-0.2.0.dist-info}/WHEEL +1 -1
- render_sdk-0.2.0.dist-info/entry_points.txt +3 -0
- render_sdk/public_api/models/image_version.py +0 -79
- /render_sdk/public_api/api/{redis → audit_logs}/__init__.py +0 -0
- /render_sdk/public_api/api/{workflows → blob_storage}/__init__.py +0 -0
- /render_sdk/public_api/api/{workflows → workflow_tasks_ea}/stream_task_runs_events.py +0 -0
- {render_sdk-0.1.2.dist-info → render_sdk-0.2.0.dist-info/licenses}/LICENSE +0 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import datetime
|
|
2
|
+
from collections.abc import Mapping
|
|
3
|
+
from typing import Any, TypeVar, Union, cast
|
|
4
|
+
|
|
5
|
+
from attrs import define as _attrs_define
|
|
6
|
+
from attrs import field as _attrs_field
|
|
7
|
+
from dateutil.parser import isoparse
|
|
8
|
+
|
|
9
|
+
from ..models.task_run_status import TaskRunStatus
|
|
10
|
+
from ..types import UNSET, Unset
|
|
11
|
+
|
|
12
|
+
T = TypeVar("T", bound="TaskAttemptDetails")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@_attrs_define
|
|
16
|
+
class TaskAttemptDetails:
|
|
17
|
+
"""
|
|
18
|
+
Attributes:
|
|
19
|
+
status (TaskRunStatus):
|
|
20
|
+
started_at (datetime.datetime):
|
|
21
|
+
completed_at (Union[Unset, datetime.datetime]):
|
|
22
|
+
error (Union[Unset, str]): Error message if the task attempt failed.
|
|
23
|
+
results (Union[Unset, list[Any]]):
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
status: TaskRunStatus
|
|
27
|
+
started_at: datetime.datetime
|
|
28
|
+
completed_at: Union[Unset, datetime.datetime] = UNSET
|
|
29
|
+
error: Union[Unset, str] = UNSET
|
|
30
|
+
results: Union[Unset, list[Any]] = UNSET
|
|
31
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
32
|
+
|
|
33
|
+
def to_dict(self) -> dict[str, Any]:
|
|
34
|
+
status = self.status.value
|
|
35
|
+
|
|
36
|
+
started_at = self.started_at.isoformat()
|
|
37
|
+
|
|
38
|
+
completed_at: Union[Unset, str] = UNSET
|
|
39
|
+
if not isinstance(self.completed_at, Unset):
|
|
40
|
+
completed_at = self.completed_at.isoformat()
|
|
41
|
+
|
|
42
|
+
error = self.error
|
|
43
|
+
|
|
44
|
+
results: Union[Unset, list[Any]] = UNSET
|
|
45
|
+
if not isinstance(self.results, Unset):
|
|
46
|
+
results = self.results
|
|
47
|
+
|
|
48
|
+
field_dict: dict[str, Any] = {}
|
|
49
|
+
field_dict.update(self.additional_properties)
|
|
50
|
+
field_dict.update(
|
|
51
|
+
{
|
|
52
|
+
"status": status,
|
|
53
|
+
"startedAt": started_at,
|
|
54
|
+
}
|
|
55
|
+
)
|
|
56
|
+
if completed_at is not UNSET:
|
|
57
|
+
field_dict["completedAt"] = completed_at
|
|
58
|
+
if error is not UNSET:
|
|
59
|
+
field_dict["error"] = error
|
|
60
|
+
if results is not UNSET:
|
|
61
|
+
field_dict["results"] = results
|
|
62
|
+
|
|
63
|
+
return field_dict
|
|
64
|
+
|
|
65
|
+
@classmethod
|
|
66
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
67
|
+
d = dict(src_dict)
|
|
68
|
+
status = TaskRunStatus(d.pop("status"))
|
|
69
|
+
|
|
70
|
+
started_at = isoparse(d.pop("startedAt"))
|
|
71
|
+
|
|
72
|
+
_completed_at = d.pop("completedAt", UNSET)
|
|
73
|
+
completed_at: Union[Unset, datetime.datetime]
|
|
74
|
+
if isinstance(_completed_at, Unset):
|
|
75
|
+
completed_at = UNSET
|
|
76
|
+
else:
|
|
77
|
+
completed_at = isoparse(_completed_at)
|
|
78
|
+
|
|
79
|
+
error = d.pop("error", UNSET)
|
|
80
|
+
|
|
81
|
+
results = cast(list[Any], d.pop("results", UNSET))
|
|
82
|
+
|
|
83
|
+
task_attempt_details = cls(
|
|
84
|
+
status=status,
|
|
85
|
+
started_at=started_at,
|
|
86
|
+
completed_at=completed_at,
|
|
87
|
+
error=error,
|
|
88
|
+
results=results,
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
task_attempt_details.additional_properties = d
|
|
92
|
+
return task_attempt_details
|
|
93
|
+
|
|
94
|
+
@property
|
|
95
|
+
def additional_keys(self) -> list[str]:
|
|
96
|
+
return list(self.additional_properties.keys())
|
|
97
|
+
|
|
98
|
+
def __getitem__(self, key: str) -> Any:
|
|
99
|
+
return self.additional_properties[key]
|
|
100
|
+
|
|
101
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
102
|
+
self.additional_properties[key] = value
|
|
103
|
+
|
|
104
|
+
def __delitem__(self, key: str) -> None:
|
|
105
|
+
del self.additional_properties[key]
|
|
106
|
+
|
|
107
|
+
def __contains__(self, key: str) -> bool:
|
|
108
|
+
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="TaskDataType1")
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@_attrs_define
|
|
11
|
+
class TaskDataType1:
|
|
12
|
+
"""Named parameters passed to the task function as keyword arguments"""
|
|
13
|
+
|
|
14
|
+
additional_properties: dict[str, Any] = _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
|
+
task_data_type_1 = cls()
|
|
26
|
+
|
|
27
|
+
task_data_type_1.additional_properties = d
|
|
28
|
+
return task_data_type_1
|
|
29
|
+
|
|
30
|
+
@property
|
|
31
|
+
def additional_keys(self) -> list[str]:
|
|
32
|
+
return list(self.additional_properties.keys())
|
|
33
|
+
|
|
34
|
+
def __getitem__(self, key: str) -> Any:
|
|
35
|
+
return self.additional_properties[key]
|
|
36
|
+
|
|
37
|
+
def __setitem__(self, key: str, value: Any) -> 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,6 +1,6 @@
|
|
|
1
1
|
import datetime
|
|
2
2
|
from collections.abc import Mapping
|
|
3
|
-
from typing import Any, TypeVar, Union
|
|
3
|
+
from typing import TYPE_CHECKING, Any, TypeVar, Union
|
|
4
4
|
|
|
5
5
|
from attrs import define as _attrs_define
|
|
6
6
|
from attrs import field as _attrs_field
|
|
@@ -9,6 +9,10 @@ from dateutil.parser import isoparse
|
|
|
9
9
|
from ..models.task_run_status import TaskRunStatus
|
|
10
10
|
from ..types import UNSET, Unset
|
|
11
11
|
|
|
12
|
+
if TYPE_CHECKING:
|
|
13
|
+
from ..models.task_attempt import TaskAttempt
|
|
14
|
+
|
|
15
|
+
|
|
12
16
|
T = TypeVar("T", bound="TaskRun")
|
|
13
17
|
|
|
14
18
|
|
|
@@ -22,6 +26,7 @@ class TaskRun:
|
|
|
22
26
|
parent_task_run_id (str):
|
|
23
27
|
root_task_run_id (str):
|
|
24
28
|
retries (int):
|
|
29
|
+
attempts (list['TaskAttempt']):
|
|
25
30
|
started_at (Union[Unset, datetime.datetime]):
|
|
26
31
|
completed_at (Union[Unset, datetime.datetime]):
|
|
27
32
|
"""
|
|
@@ -32,6 +37,7 @@ class TaskRun:
|
|
|
32
37
|
parent_task_run_id: str
|
|
33
38
|
root_task_run_id: str
|
|
34
39
|
retries: int
|
|
40
|
+
attempts: list["TaskAttempt"]
|
|
35
41
|
started_at: Union[Unset, datetime.datetime] = UNSET
|
|
36
42
|
completed_at: Union[Unset, datetime.datetime] = UNSET
|
|
37
43
|
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
@@ -49,6 +55,11 @@ class TaskRun:
|
|
|
49
55
|
|
|
50
56
|
retries = self.retries
|
|
51
57
|
|
|
58
|
+
attempts = []
|
|
59
|
+
for attempts_item_data in self.attempts:
|
|
60
|
+
attempts_item = attempts_item_data.to_dict()
|
|
61
|
+
attempts.append(attempts_item)
|
|
62
|
+
|
|
52
63
|
started_at: Union[Unset, str] = UNSET
|
|
53
64
|
if not isinstance(self.started_at, Unset):
|
|
54
65
|
started_at = self.started_at.isoformat()
|
|
@@ -67,6 +78,7 @@ class TaskRun:
|
|
|
67
78
|
"parentTaskRunId": parent_task_run_id,
|
|
68
79
|
"rootTaskRunId": root_task_run_id,
|
|
69
80
|
"retries": retries,
|
|
81
|
+
"attempts": attempts,
|
|
70
82
|
}
|
|
71
83
|
)
|
|
72
84
|
if started_at is not UNSET:
|
|
@@ -78,6 +90,8 @@ class TaskRun:
|
|
|
78
90
|
|
|
79
91
|
@classmethod
|
|
80
92
|
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
93
|
+
from ..models.task_attempt import TaskAttempt
|
|
94
|
+
|
|
81
95
|
d = dict(src_dict)
|
|
82
96
|
id = d.pop("id")
|
|
83
97
|
|
|
@@ -91,6 +105,13 @@ class TaskRun:
|
|
|
91
105
|
|
|
92
106
|
retries = d.pop("retries")
|
|
93
107
|
|
|
108
|
+
attempts = []
|
|
109
|
+
_attempts = d.pop("attempts")
|
|
110
|
+
for attempts_item_data in _attempts:
|
|
111
|
+
attempts_item = TaskAttempt.from_dict(attempts_item_data)
|
|
112
|
+
|
|
113
|
+
attempts.append(attempts_item)
|
|
114
|
+
|
|
94
115
|
_started_at = d.pop("startedAt", UNSET)
|
|
95
116
|
started_at: Union[Unset, datetime.datetime]
|
|
96
117
|
if isinstance(_started_at, Unset):
|
|
@@ -112,6 +133,7 @@ class TaskRun:
|
|
|
112
133
|
parent_task_run_id=parent_task_run_id,
|
|
113
134
|
root_task_run_id=root_task_run_id,
|
|
114
135
|
retries=retries,
|
|
136
|
+
attempts=attempts,
|
|
115
137
|
started_at=started_at,
|
|
116
138
|
completed_at=completed_at,
|
|
117
139
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import datetime
|
|
2
2
|
from collections.abc import Mapping
|
|
3
|
-
from typing import Any, TypeVar, Union, cast
|
|
3
|
+
from typing import TYPE_CHECKING, Any, TypeVar, Union, cast
|
|
4
4
|
|
|
5
5
|
from attrs import define as _attrs_define
|
|
6
6
|
from attrs import field as _attrs_field
|
|
@@ -9,6 +9,11 @@ from dateutil.parser import isoparse
|
|
|
9
9
|
from ..models.task_run_status import TaskRunStatus
|
|
10
10
|
from ..types import UNSET, Unset
|
|
11
11
|
|
|
12
|
+
if TYPE_CHECKING:
|
|
13
|
+
from ..models.task_attempt_details import TaskAttemptDetails
|
|
14
|
+
from ..models.task_data_type_1 import TaskDataType1
|
|
15
|
+
|
|
16
|
+
|
|
12
17
|
T = TypeVar("T", bound="TaskRunDetails")
|
|
13
18
|
|
|
14
19
|
|
|
@@ -20,10 +25,12 @@ class TaskRunDetails:
|
|
|
20
25
|
task_id (str):
|
|
21
26
|
status (TaskRunStatus):
|
|
22
27
|
results (list[Any]):
|
|
23
|
-
input_ (list[Any]):
|
|
28
|
+
input_ (Union['TaskDataType1', list[Any]]): Input data for a task. Can be either an array (for positional
|
|
29
|
+
arguments) or an object (for named parameters).
|
|
24
30
|
parent_task_run_id (str):
|
|
25
31
|
root_task_run_id (str):
|
|
26
32
|
retries (int):
|
|
33
|
+
attempts (list['TaskAttemptDetails']):
|
|
27
34
|
error (Union[Unset, str]): Error message if the task run failed.
|
|
28
35
|
started_at (Union[Unset, datetime.datetime]):
|
|
29
36
|
completed_at (Union[Unset, datetime.datetime]):
|
|
@@ -33,10 +40,11 @@ class TaskRunDetails:
|
|
|
33
40
|
task_id: str
|
|
34
41
|
status: TaskRunStatus
|
|
35
42
|
results: list[Any]
|
|
36
|
-
input_: list[Any]
|
|
43
|
+
input_: Union["TaskDataType1", list[Any]]
|
|
37
44
|
parent_task_run_id: str
|
|
38
45
|
root_task_run_id: str
|
|
39
46
|
retries: int
|
|
47
|
+
attempts: list["TaskAttemptDetails"]
|
|
40
48
|
error: Union[Unset, str] = UNSET
|
|
41
49
|
started_at: Union[Unset, datetime.datetime] = UNSET
|
|
42
50
|
completed_at: Union[Unset, datetime.datetime] = UNSET
|
|
@@ -51,7 +59,12 @@ class TaskRunDetails:
|
|
|
51
59
|
|
|
52
60
|
results = self.results
|
|
53
61
|
|
|
54
|
-
input_
|
|
62
|
+
input_: Union[dict[str, Any], list[Any]]
|
|
63
|
+
if isinstance(self.input_, list):
|
|
64
|
+
input_ = self.input_
|
|
65
|
+
|
|
66
|
+
else:
|
|
67
|
+
input_ = self.input_.to_dict()
|
|
55
68
|
|
|
56
69
|
parent_task_run_id = self.parent_task_run_id
|
|
57
70
|
|
|
@@ -59,6 +72,11 @@ class TaskRunDetails:
|
|
|
59
72
|
|
|
60
73
|
retries = self.retries
|
|
61
74
|
|
|
75
|
+
attempts = []
|
|
76
|
+
for attempts_item_data in self.attempts:
|
|
77
|
+
attempts_item = attempts_item_data.to_dict()
|
|
78
|
+
attempts.append(attempts_item)
|
|
79
|
+
|
|
62
80
|
error = self.error
|
|
63
81
|
|
|
64
82
|
started_at: Union[Unset, str] = UNSET
|
|
@@ -81,6 +99,7 @@ class TaskRunDetails:
|
|
|
81
99
|
"parentTaskRunId": parent_task_run_id,
|
|
82
100
|
"rootTaskRunId": root_task_run_id,
|
|
83
101
|
"retries": retries,
|
|
102
|
+
"attempts": attempts,
|
|
84
103
|
}
|
|
85
104
|
)
|
|
86
105
|
if error is not UNSET:
|
|
@@ -94,6 +113,9 @@ class TaskRunDetails:
|
|
|
94
113
|
|
|
95
114
|
@classmethod
|
|
96
115
|
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
116
|
+
from ..models.task_attempt_details import TaskAttemptDetails
|
|
117
|
+
from ..models.task_data_type_1 import TaskDataType1
|
|
118
|
+
|
|
97
119
|
d = dict(src_dict)
|
|
98
120
|
id = d.pop("id")
|
|
99
121
|
|
|
@@ -103,7 +125,22 @@ class TaskRunDetails:
|
|
|
103
125
|
|
|
104
126
|
results = cast(list[Any], d.pop("results"))
|
|
105
127
|
|
|
106
|
-
|
|
128
|
+
def _parse_input_(data: object) -> Union["TaskDataType1", list[Any]]:
|
|
129
|
+
try:
|
|
130
|
+
if not isinstance(data, list):
|
|
131
|
+
raise TypeError()
|
|
132
|
+
componentsschemas_task_data_type_0 = cast(list[Any], data)
|
|
133
|
+
|
|
134
|
+
return componentsschemas_task_data_type_0
|
|
135
|
+
except: # noqa: E722
|
|
136
|
+
pass
|
|
137
|
+
if not isinstance(data, dict):
|
|
138
|
+
raise TypeError()
|
|
139
|
+
componentsschemas_task_data_type_1 = TaskDataType1.from_dict(data)
|
|
140
|
+
|
|
141
|
+
return componentsschemas_task_data_type_1
|
|
142
|
+
|
|
143
|
+
input_ = _parse_input_(d.pop("input"))
|
|
107
144
|
|
|
108
145
|
parent_task_run_id = d.pop("parentTaskRunId")
|
|
109
146
|
|
|
@@ -111,6 +148,13 @@ class TaskRunDetails:
|
|
|
111
148
|
|
|
112
149
|
retries = d.pop("retries")
|
|
113
150
|
|
|
151
|
+
attempts = []
|
|
152
|
+
_attempts = d.pop("attempts")
|
|
153
|
+
for attempts_item_data in _attempts:
|
|
154
|
+
attempts_item = TaskAttemptDetails.from_dict(attempts_item_data)
|
|
155
|
+
|
|
156
|
+
attempts.append(attempts_item)
|
|
157
|
+
|
|
114
158
|
error = d.pop("error", UNSET)
|
|
115
159
|
|
|
116
160
|
_started_at = d.pop("startedAt", UNSET)
|
|
@@ -136,6 +180,7 @@ class TaskRunDetails:
|
|
|
136
180
|
parent_task_run_id=parent_task_run_id,
|
|
137
181
|
root_task_run_id=root_task_run_id,
|
|
138
182
|
retries=retries,
|
|
183
|
+
attempts=attempts,
|
|
139
184
|
error=error,
|
|
140
185
|
started_at=started_at,
|
|
141
186
|
completed_at=completed_at,
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
from collections.abc import Mapping
|
|
2
|
+
from typing import TYPE_CHECKING, Any, TypeVar
|
|
3
|
+
|
|
4
|
+
from attrs import define as _attrs_define
|
|
5
|
+
from attrs import field as _attrs_field
|
|
6
|
+
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from ..models.task import Task
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
T = TypeVar("T", bound="TaskWithCursor")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@_attrs_define
|
|
15
|
+
class TaskWithCursor:
|
|
16
|
+
"""
|
|
17
|
+
Attributes:
|
|
18
|
+
task (Task):
|
|
19
|
+
cursor (str):
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
task: "Task"
|
|
23
|
+
cursor: str
|
|
24
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
25
|
+
|
|
26
|
+
def to_dict(self) -> dict[str, Any]:
|
|
27
|
+
task = self.task.to_dict()
|
|
28
|
+
|
|
29
|
+
cursor = self.cursor
|
|
30
|
+
|
|
31
|
+
field_dict: dict[str, Any] = {}
|
|
32
|
+
field_dict.update(self.additional_properties)
|
|
33
|
+
field_dict.update(
|
|
34
|
+
{
|
|
35
|
+
"task": task,
|
|
36
|
+
"cursor": cursor,
|
|
37
|
+
}
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
return field_dict
|
|
41
|
+
|
|
42
|
+
@classmethod
|
|
43
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
44
|
+
from ..models.task import Task
|
|
45
|
+
|
|
46
|
+
d = dict(src_dict)
|
|
47
|
+
task = Task.from_dict(d.pop("task"))
|
|
48
|
+
|
|
49
|
+
cursor = d.pop("cursor")
|
|
50
|
+
|
|
51
|
+
task_with_cursor = cls(
|
|
52
|
+
task=task,
|
|
53
|
+
cursor=cursor,
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
task_with_cursor.additional_properties = d
|
|
57
|
+
return task_with_cursor
|
|
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
|
|
@@ -4,6 +4,7 @@ from typing import Any, TypeVar
|
|
|
4
4
|
from attrs import define as _attrs_define
|
|
5
5
|
from attrs import field as _attrs_field
|
|
6
6
|
|
|
7
|
+
from ..models.team_member_role import TeamMemberRole
|
|
7
8
|
from ..models.team_member_status import TeamMemberStatus
|
|
8
9
|
|
|
9
10
|
T = TypeVar("T", bound="TeamMember")
|
|
@@ -17,7 +18,7 @@ class TeamMember:
|
|
|
17
18
|
name (str):
|
|
18
19
|
email (str):
|
|
19
20
|
status (TeamMemberStatus):
|
|
20
|
-
role (
|
|
21
|
+
role (TeamMemberRole): The member's workspace role. Values are always returned in uppercase. Example: DEVELOPER.
|
|
21
22
|
mfa_enabled (bool):
|
|
22
23
|
"""
|
|
23
24
|
|
|
@@ -25,7 +26,7 @@ class TeamMember:
|
|
|
25
26
|
name: str
|
|
26
27
|
email: str
|
|
27
28
|
status: TeamMemberStatus
|
|
28
|
-
role:
|
|
29
|
+
role: TeamMemberRole
|
|
29
30
|
mfa_enabled: bool
|
|
30
31
|
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
31
32
|
|
|
@@ -38,7 +39,7 @@ class TeamMember:
|
|
|
38
39
|
|
|
39
40
|
status = self.status.value
|
|
40
41
|
|
|
41
|
-
role = self.role
|
|
42
|
+
role = self.role.value
|
|
42
43
|
|
|
43
44
|
mfa_enabled = self.mfa_enabled
|
|
44
45
|
|
|
@@ -68,7 +69,7 @@ class TeamMember:
|
|
|
68
69
|
|
|
69
70
|
status = TeamMemberStatus(d.pop("status"))
|
|
70
71
|
|
|
71
|
-
role = d.pop("role")
|
|
72
|
+
role = TeamMemberRole(d.pop("role"))
|
|
72
73
|
|
|
73
74
|
mfa_enabled = d.pop("mfaEnabled")
|
|
74
75
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class TeamMemberRole(str, Enum):
|
|
5
|
+
ADMIN = "ADMIN"
|
|
6
|
+
DEVELOPER = "DEVELOPER"
|
|
7
|
+
WORKSPACE_BILLING = "WORKSPACE_BILLING"
|
|
8
|
+
WORKSPACE_CONTRIBUTOR = "WORKSPACE_CONTRIBUTOR"
|
|
9
|
+
WORKSPACE_VIEWER = "WORKSPACE_VIEWER"
|
|
10
|
+
|
|
11
|
+
def __str__(self) -> str:
|
|
12
|
+
return str(self.value)
|
|
@@ -0,0 +1,61 @@
|
|
|
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
|
+
from ..models.team_member_role import TeamMemberRole
|
|
8
|
+
|
|
9
|
+
T = TypeVar("T", bound="UpdateWorkspaceMemberBody")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@_attrs_define
|
|
13
|
+
class UpdateWorkspaceMemberBody:
|
|
14
|
+
"""
|
|
15
|
+
Attributes:
|
|
16
|
+
role (TeamMemberRole): The member's workspace role. Values are always returned in uppercase. Example: DEVELOPER.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
role: TeamMemberRole
|
|
20
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
21
|
+
|
|
22
|
+
def to_dict(self) -> dict[str, Any]:
|
|
23
|
+
role = self.role.value
|
|
24
|
+
|
|
25
|
+
field_dict: dict[str, Any] = {}
|
|
26
|
+
field_dict.update(self.additional_properties)
|
|
27
|
+
field_dict.update(
|
|
28
|
+
{
|
|
29
|
+
"role": role,
|
|
30
|
+
}
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
return field_dict
|
|
34
|
+
|
|
35
|
+
@classmethod
|
|
36
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
37
|
+
d = dict(src_dict)
|
|
38
|
+
role = TeamMemberRole(d.pop("role"))
|
|
39
|
+
|
|
40
|
+
update_workspace_member_body = cls(
|
|
41
|
+
role=role,
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
update_workspace_member_body.additional_properties = d
|
|
45
|
+
return update_workspace_member_body
|
|
46
|
+
|
|
47
|
+
@property
|
|
48
|
+
def additional_keys(self) -> list[str]:
|
|
49
|
+
return list(self.additional_properties.keys())
|
|
50
|
+
|
|
51
|
+
def __getitem__(self, key: str) -> Any:
|
|
52
|
+
return self.additional_properties[key]
|
|
53
|
+
|
|
54
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
55
|
+
self.additional_properties[key] = value
|
|
56
|
+
|
|
57
|
+
def __delitem__(self, key: str) -> None:
|
|
58
|
+
del self.additional_properties[key]
|
|
59
|
+
|
|
60
|
+
def __contains__(self, key: str) -> bool:
|
|
61
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
from collections.abc import Mapping
|
|
2
|
+
from io import BytesIO
|
|
3
|
+
from typing import Any, TypeVar
|
|
4
|
+
|
|
5
|
+
from attrs import define as _attrs_define
|
|
6
|
+
from attrs import field as _attrs_field
|
|
7
|
+
|
|
8
|
+
from .. import types
|
|
9
|
+
from ..types import File
|
|
10
|
+
|
|
11
|
+
T = TypeVar("T", bound="ValidateBlueprintRequest")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@_attrs_define
|
|
15
|
+
class ValidateBlueprintRequest:
|
|
16
|
+
"""
|
|
17
|
+
Attributes:
|
|
18
|
+
owner_id (str): The ID of the workspace to validate against. Obtain your workspace ID from its Settings page in
|
|
19
|
+
the Render Dashboard. Example: tea-cjnxpkdhshc73d12t9i0.
|
|
20
|
+
file (File): The render.yaml file to validate, as a binary file.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
owner_id: str
|
|
24
|
+
file: File
|
|
25
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
26
|
+
|
|
27
|
+
def to_dict(self) -> dict[str, Any]:
|
|
28
|
+
owner_id = self.owner_id
|
|
29
|
+
|
|
30
|
+
file = self.file.to_tuple()
|
|
31
|
+
|
|
32
|
+
field_dict: dict[str, Any] = {}
|
|
33
|
+
field_dict.update(self.additional_properties)
|
|
34
|
+
field_dict.update(
|
|
35
|
+
{
|
|
36
|
+
"ownerId": owner_id,
|
|
37
|
+
"file": file,
|
|
38
|
+
}
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
return field_dict
|
|
42
|
+
|
|
43
|
+
def to_multipart(self) -> types.RequestFiles:
|
|
44
|
+
files: types.RequestFiles = []
|
|
45
|
+
|
|
46
|
+
files.append(("ownerId", (None, str(self.owner_id).encode(), "text/plain")))
|
|
47
|
+
|
|
48
|
+
files.append(("file", self.file.to_tuple()))
|
|
49
|
+
|
|
50
|
+
for prop_name, prop in self.additional_properties.items():
|
|
51
|
+
files.append((prop_name, (None, str(prop).encode(), "text/plain")))
|
|
52
|
+
|
|
53
|
+
return files
|
|
54
|
+
|
|
55
|
+
@classmethod
|
|
56
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
57
|
+
d = dict(src_dict)
|
|
58
|
+
owner_id = d.pop("ownerId")
|
|
59
|
+
|
|
60
|
+
file = File(payload=BytesIO(d.pop("file")))
|
|
61
|
+
|
|
62
|
+
validate_blueprint_request = cls(
|
|
63
|
+
owner_id=owner_id,
|
|
64
|
+
file=file,
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
validate_blueprint_request.additional_properties = d
|
|
68
|
+
return validate_blueprint_request
|
|
69
|
+
|
|
70
|
+
@property
|
|
71
|
+
def additional_keys(self) -> list[str]:
|
|
72
|
+
return list(self.additional_properties.keys())
|
|
73
|
+
|
|
74
|
+
def __getitem__(self, key: str) -> Any:
|
|
75
|
+
return self.additional_properties[key]
|
|
76
|
+
|
|
77
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
78
|
+
self.additional_properties[key] = value
|
|
79
|
+
|
|
80
|
+
def __delitem__(self, key: str) -> None:
|
|
81
|
+
del self.additional_properties[key]
|
|
82
|
+
|
|
83
|
+
def __contains__(self, key: str) -> bool:
|
|
84
|
+
return key in self.additional_properties
|