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,90 @@
|
|
|
1
|
+
from collections.abc import Mapping
|
|
2
|
+
from typing import TYPE_CHECKING, Any, TypeVar, Union
|
|
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.build_config import BuildConfig
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
T = TypeVar("T", bound="WorkflowUpdate")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@_attrs_define
|
|
17
|
+
class WorkflowUpdate:
|
|
18
|
+
"""
|
|
19
|
+
Attributes:
|
|
20
|
+
name (Union[Unset, str]):
|
|
21
|
+
build_config (Union[Unset, BuildConfig]):
|
|
22
|
+
run_command (Union[Unset, str]): The command to run the workflow
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
name: Union[Unset, str] = UNSET
|
|
26
|
+
build_config: Union[Unset, "BuildConfig"] = UNSET
|
|
27
|
+
run_command: Union[Unset, str] = UNSET
|
|
28
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
29
|
+
|
|
30
|
+
def to_dict(self) -> dict[str, Any]:
|
|
31
|
+
name = self.name
|
|
32
|
+
|
|
33
|
+
build_config: Union[Unset, dict[str, Any]] = UNSET
|
|
34
|
+
if not isinstance(self.build_config, Unset):
|
|
35
|
+
build_config = self.build_config.to_dict()
|
|
36
|
+
|
|
37
|
+
run_command = self.run_command
|
|
38
|
+
|
|
39
|
+
field_dict: dict[str, Any] = {}
|
|
40
|
+
field_dict.update(self.additional_properties)
|
|
41
|
+
field_dict.update({})
|
|
42
|
+
if name is not UNSET:
|
|
43
|
+
field_dict["name"] = name
|
|
44
|
+
if build_config is not UNSET:
|
|
45
|
+
field_dict["buildConfig"] = build_config
|
|
46
|
+
if run_command is not UNSET:
|
|
47
|
+
field_dict["runCommand"] = run_command
|
|
48
|
+
|
|
49
|
+
return field_dict
|
|
50
|
+
|
|
51
|
+
@classmethod
|
|
52
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
53
|
+
from ..models.build_config import BuildConfig
|
|
54
|
+
|
|
55
|
+
d = dict(src_dict)
|
|
56
|
+
name = d.pop("name", UNSET)
|
|
57
|
+
|
|
58
|
+
_build_config = d.pop("buildConfig", UNSET)
|
|
59
|
+
build_config: Union[Unset, BuildConfig]
|
|
60
|
+
if isinstance(_build_config, Unset):
|
|
61
|
+
build_config = UNSET
|
|
62
|
+
else:
|
|
63
|
+
build_config = BuildConfig.from_dict(_build_config)
|
|
64
|
+
|
|
65
|
+
run_command = d.pop("runCommand", UNSET)
|
|
66
|
+
|
|
67
|
+
workflow_update = cls(
|
|
68
|
+
name=name,
|
|
69
|
+
build_config=build_config,
|
|
70
|
+
run_command=run_command,
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
workflow_update.additional_properties = d
|
|
74
|
+
return workflow_update
|
|
75
|
+
|
|
76
|
+
@property
|
|
77
|
+
def additional_keys(self) -> list[str]:
|
|
78
|
+
return list(self.additional_properties.keys())
|
|
79
|
+
|
|
80
|
+
def __getitem__(self, key: str) -> Any:
|
|
81
|
+
return self.additional_properties[key]
|
|
82
|
+
|
|
83
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
84
|
+
self.additional_properties[key] = value
|
|
85
|
+
|
|
86
|
+
def __delitem__(self, key: str) -> None:
|
|
87
|
+
del self.additional_properties[key]
|
|
88
|
+
|
|
89
|
+
def __contains__(self, key: str) -> bool:
|
|
90
|
+
return key in self.additional_properties
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import datetime
|
|
2
2
|
from collections.abc import Mapping
|
|
3
|
-
from typing import
|
|
3
|
+
from typing import Any, TypeVar
|
|
4
4
|
|
|
5
5
|
from attrs import define as _attrs_define
|
|
6
6
|
from attrs import field as _attrs_field
|
|
7
7
|
from dateutil.parser import isoparse
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
from ..models.image_version import ImageVersion
|
|
11
|
-
|
|
9
|
+
from ..models.workflow_version_status import WorkflowVersionStatus
|
|
12
10
|
|
|
13
11
|
T = TypeVar("T", bound="WorkflowVersion")
|
|
14
12
|
|
|
@@ -20,15 +18,15 @@ class WorkflowVersion:
|
|
|
20
18
|
id (str):
|
|
21
19
|
workflow_id (str):
|
|
22
20
|
name (str):
|
|
23
|
-
image (ImageVersion):
|
|
24
21
|
created_at (datetime.datetime):
|
|
22
|
+
status (WorkflowVersionStatus):
|
|
25
23
|
"""
|
|
26
24
|
|
|
27
25
|
id: str
|
|
28
26
|
workflow_id: str
|
|
29
27
|
name: str
|
|
30
|
-
image: "ImageVersion"
|
|
31
28
|
created_at: datetime.datetime
|
|
29
|
+
status: WorkflowVersionStatus
|
|
32
30
|
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
33
31
|
|
|
34
32
|
def to_dict(self) -> dict[str, Any]:
|
|
@@ -38,10 +36,10 @@ class WorkflowVersion:
|
|
|
38
36
|
|
|
39
37
|
name = self.name
|
|
40
38
|
|
|
41
|
-
image = self.image.to_dict()
|
|
42
|
-
|
|
43
39
|
created_at = self.created_at.isoformat()
|
|
44
40
|
|
|
41
|
+
status = self.status.value
|
|
42
|
+
|
|
45
43
|
field_dict: dict[str, Any] = {}
|
|
46
44
|
field_dict.update(self.additional_properties)
|
|
47
45
|
field_dict.update(
|
|
@@ -49,8 +47,8 @@ class WorkflowVersion:
|
|
|
49
47
|
"id": id,
|
|
50
48
|
"workflowId": workflow_id,
|
|
51
49
|
"name": name,
|
|
52
|
-
"image": image,
|
|
53
50
|
"createdAt": created_at,
|
|
51
|
+
"status": status,
|
|
54
52
|
}
|
|
55
53
|
)
|
|
56
54
|
|
|
@@ -58,8 +56,6 @@ class WorkflowVersion:
|
|
|
58
56
|
|
|
59
57
|
@classmethod
|
|
60
58
|
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
61
|
-
from ..models.image_version import ImageVersion
|
|
62
|
-
|
|
63
59
|
d = dict(src_dict)
|
|
64
60
|
id = d.pop("id")
|
|
65
61
|
|
|
@@ -67,16 +63,16 @@ class WorkflowVersion:
|
|
|
67
63
|
|
|
68
64
|
name = d.pop("name")
|
|
69
65
|
|
|
70
|
-
image = ImageVersion.from_dict(d.pop("image"))
|
|
71
|
-
|
|
72
66
|
created_at = isoparse(d.pop("createdAt"))
|
|
73
67
|
|
|
68
|
+
status = WorkflowVersionStatus(d.pop("status"))
|
|
69
|
+
|
|
74
70
|
workflow_version = cls(
|
|
75
71
|
id=id,
|
|
76
72
|
workflow_id=workflow_id,
|
|
77
73
|
name=name,
|
|
78
|
-
image=image,
|
|
79
74
|
created_at=created_at,
|
|
75
|
+
status=status,
|
|
80
76
|
)
|
|
81
77
|
|
|
82
78
|
workflow_version.additional_properties = d
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class WorkflowVersionStatus(str, Enum):
|
|
5
|
+
BUILDING = "building"
|
|
6
|
+
BUILD_FAILED = "build_failed"
|
|
7
|
+
CREATED = "created"
|
|
8
|
+
READY = "ready"
|
|
9
|
+
REGISTERING = "registering"
|
|
10
|
+
REGISTRATION_FAILED = "registration_failed"
|
|
11
|
+
|
|
12
|
+
def __str__(self) -> str:
|
|
13
|
+
return str(self.value)
|
|
@@ -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.workflow_version import WorkflowVersion
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
T = TypeVar("T", bound="WorkflowVersionWithCursor")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@_attrs_define
|
|
15
|
+
class WorkflowVersionWithCursor:
|
|
16
|
+
"""
|
|
17
|
+
Attributes:
|
|
18
|
+
workflow_version (WorkflowVersion):
|
|
19
|
+
cursor (str):
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
workflow_version: "WorkflowVersion"
|
|
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
|
+
workflow_version = self.workflow_version.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
|
+
"workflowVersion": workflow_version,
|
|
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.workflow_version import WorkflowVersion
|
|
45
|
+
|
|
46
|
+
d = dict(src_dict)
|
|
47
|
+
workflow_version = WorkflowVersion.from_dict(d.pop("workflowVersion"))
|
|
48
|
+
|
|
49
|
+
cursor = d.pop("cursor")
|
|
50
|
+
|
|
51
|
+
workflow_version_with_cursor = cls(
|
|
52
|
+
workflow_version=workflow_version,
|
|
53
|
+
cursor=cursor,
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
workflow_version_with_cursor.additional_properties = d
|
|
57
|
+
return workflow_version_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
|
|
@@ -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.workflow import Workflow
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
T = TypeVar("T", bound="WorkflowWithCursor")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@_attrs_define
|
|
15
|
+
class WorkflowWithCursor:
|
|
16
|
+
"""
|
|
17
|
+
Attributes:
|
|
18
|
+
workflow (Workflow):
|
|
19
|
+
cursor (str):
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
workflow: "Workflow"
|
|
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
|
+
workflow = self.workflow.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
|
+
"workflow": workflow,
|
|
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.workflow import Workflow
|
|
45
|
+
|
|
46
|
+
d = dict(src_dict)
|
|
47
|
+
workflow = Workflow.from_dict(d.pop("workflow"))
|
|
48
|
+
|
|
49
|
+
cursor = d.pop("cursor")
|
|
50
|
+
|
|
51
|
+
workflow_with_cursor = cls(
|
|
52
|
+
workflow=workflow,
|
|
53
|
+
cursor=cursor,
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
workflow_with_cursor.additional_properties = d
|
|
57
|
+
return workflow_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
|
render_sdk/render.py
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"""Unified REST API client for Render services."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
6
|
+
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from render_sdk.client import Client
|
|
9
|
+
from render_sdk.client.workflows import WorkflowsService
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class Render:
|
|
13
|
+
"""
|
|
14
|
+
Unified REST API client for all Render services.
|
|
15
|
+
|
|
16
|
+
This is the primary entry point for interacting with Render's APIs.
|
|
17
|
+
|
|
18
|
+
Example:
|
|
19
|
+
render = Render() # Uses RENDER_API_KEY from environment
|
|
20
|
+
|
|
21
|
+
# Run a task
|
|
22
|
+
result = await render.workflows.run_task("my-workflow/my-task", [42])
|
|
23
|
+
|
|
24
|
+
# Direct client access for advanced use cases
|
|
25
|
+
render.client.workflows.run_task(...)
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
_client: Client
|
|
29
|
+
|
|
30
|
+
def __init__(
|
|
31
|
+
self,
|
|
32
|
+
*,
|
|
33
|
+
token: str | None = None,
|
|
34
|
+
base_url: str = "https://api.render.com",
|
|
35
|
+
) -> None:
|
|
36
|
+
"""
|
|
37
|
+
Initialize the Render SDK.
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
token: API token. If not provided, uses RENDER_API_KEY env var.
|
|
41
|
+
base_url: API base URL (rarely needed).
|
|
42
|
+
"""
|
|
43
|
+
from render_sdk.client import Client
|
|
44
|
+
|
|
45
|
+
self._client = Client(token=token, base_url=base_url)
|
|
46
|
+
|
|
47
|
+
@property
|
|
48
|
+
def client(self) -> Client:
|
|
49
|
+
"""
|
|
50
|
+
Access to the underlying API client.
|
|
51
|
+
|
|
52
|
+
Use this for fine-grained control or advanced use cases.
|
|
53
|
+
|
|
54
|
+
Example:
|
|
55
|
+
render = Render()
|
|
56
|
+
|
|
57
|
+
# Access client directly
|
|
58
|
+
render.client.workflows.run_task(...)
|
|
59
|
+
"""
|
|
60
|
+
return self._client
|
|
61
|
+
|
|
62
|
+
@property
|
|
63
|
+
def workflows(self) -> WorkflowsService:
|
|
64
|
+
"""REST API for workflow operations (run tasks, get status)."""
|
|
65
|
+
return self._client.workflows
|
render_sdk/version.py
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"""Version information for the Render SDK."""
|
|
2
|
+
|
|
3
|
+
import importlib.metadata
|
|
4
|
+
import platform
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def get_version() -> str:
|
|
8
|
+
"""Get the SDK version from package metadata."""
|
|
9
|
+
try:
|
|
10
|
+
return importlib.metadata.version("render_sdk")
|
|
11
|
+
except importlib.metadata.PackageNotFoundError:
|
|
12
|
+
return "unknown"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def get_user_agent() -> str:
|
|
16
|
+
"""Get the User-Agent string for the SDK.
|
|
17
|
+
|
|
18
|
+
Returns a string like:
|
|
19
|
+
render-sdk-python/0.1.3 (cpython/3.11.4; darwin/arm64)
|
|
20
|
+
"""
|
|
21
|
+
version = get_version()
|
|
22
|
+
impl = platform.python_implementation().lower()
|
|
23
|
+
py_version = platform.python_version()
|
|
24
|
+
os_name = platform.system().lower()
|
|
25
|
+
arch = platform.machine().lower()
|
|
26
|
+
|
|
27
|
+
return f"render-sdk-python/{version} ({impl}/{py_version}; {os_name}/{arch})"
|
render_sdk/workflows/__init__.py
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
"""Render SDK - Durable Workflows Task Definition"""
|
|
2
|
+
|
|
3
|
+
from render_sdk.workflows.app import Workflows
|
|
1
4
|
from render_sdk.workflows.runner import start
|
|
2
5
|
from render_sdk.workflows.task import Options, Retry, TaskRegistry, task
|
|
3
6
|
|
|
@@ -5,7 +8,8 @@ __all__ = [
|
|
|
5
8
|
"Options",
|
|
6
9
|
"Retry",
|
|
7
10
|
"TaskRegistry",
|
|
8
|
-
"
|
|
11
|
+
"Workflows",
|
|
12
|
+
# Deprecated: use Workflows.task and Workflows.start() instead
|
|
9
13
|
"start",
|
|
10
14
|
"task",
|
|
11
15
|
]
|