octostar-python-client 0.1.759__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.
- octostar/__init__.py +9 -0
- octostar/api/__init__.py +1 -0
- octostar/api/apps/__init__.py +0 -0
- octostar/api/apps/deploy_app.py +210 -0
- octostar/api/apps/execute_app_job.py +188 -0
- octostar/api/apps/get_app_logs.py +210 -0
- octostar/api/apps/get_apps_url.py +188 -0
- octostar/api/apps/get_job_logs.py +210 -0
- octostar/api/apps/get_job_progress.py +162 -0
- octostar/api/apps/kill_job.py +160 -0
- octostar/api/apps/list_app_jobs.py +276 -0
- octostar/api/apps/list_apps.py +251 -0
- octostar/api/apps/set_job_progress.py +216 -0
- octostar/api/apps/undeploy_app.py +160 -0
- octostar/api/metadata/__init__.py +0 -0
- octostar/api/metadata/get_version.py +232 -0
- octostar/api/metadata/get_whoami.py +232 -0
- octostar/api/notifications/__init__.py +0 -0
- octostar/api/notifications/delete_stream.py +222 -0
- octostar/api/notifications/get_subscriptions.py +240 -0
- octostar/api/notifications/publish_notification.py +275 -0
- octostar/api/notifications/pull_events_from_stream.py +282 -0
- octostar/api/notifications/push_event_to_stream.py +265 -0
- octostar/api/notifications/toast.py +264 -0
- octostar/api/ontology/__init__.py +0 -0
- octostar/api/ontology/fetch_ontology_data.py +275 -0
- octostar/api/ontology/get_ontologies.py +237 -0
- octostar/api/ontology/multi_query.py +297 -0
- octostar/api/ontology/query.py +276 -0
- octostar/api/pipeline/__init__.py +1 -0
- octostar/api/pipeline/get_processing_status.py +185 -0
- octostar/api/pipeline/update_processing_status.py +164 -0
- octostar/api/search/__init__.py +0 -0
- octostar/api/search/get_annotations.py +153 -0
- octostar/api/workspace_data/__init__.py +0 -0
- octostar/api/workspace_data/delete_blob.py +212 -0
- octostar/api/workspace_data/delete_entities.py +326 -0
- octostar/api/workspace_data/download_blob.py +235 -0
- octostar/api/workspace_data/get_attachment.py +336 -0
- octostar/api/workspace_data/get_files_tree.py +397 -0
- octostar/api/workspace_data/upload_blob.py +235 -0
- octostar/api/workspace_data/upsert_entities.py +284 -0
- octostar/api/workspace_permissions/__init__.py +0 -0
- octostar/api/workspace_permissions/get_permissions.py +325 -0
- octostar/api/workspace_tags/__init__.py +0 -0
- octostar/api/workspace_tags/delete_tag_from_entities.py +141 -0
- octostar/api/workspace_tags/tag_entities.py +180 -0
- octostar/client.py +492 -0
- octostar/errors.py +50 -0
- octostar/models/__init__.py +249 -0
- octostar/models/acknowledgement.py +74 -0
- octostar/models/acknowledgement_with_data.py +82 -0
- octostar/models/app_status.py +239 -0
- octostar/models/app_status_annotations.py +66 -0
- octostar/models/app_status_labels.py +69 -0
- octostar/models/app_with_url.py +82 -0
- octostar/models/child_processing_status.py +118 -0
- octostar/models/delete_entities_response_401.py +74 -0
- octostar/models/delete_entities_response_409.py +82 -0
- octostar/models/delete_entities_response_500.py +82 -0
- octostar/models/delete_stream_response_401.py +74 -0
- octostar/models/delete_tag_from_entities_response_401.py +74 -0
- octostar/models/deploy_app_json_body.py +90 -0
- octostar/models/deploy_app_json_body_secrets.py +65 -0
- octostar/models/deploy_app_response_200.py +98 -0
- octostar/models/deploy_app_response_200_data.py +60 -0
- octostar/models/deploy_app_response_400.py +82 -0
- octostar/models/deploy_app_response_403.py +82 -0
- octostar/models/deploy_app_response_404.py +82 -0
- octostar/models/deploy_app_response_409.py +82 -0
- octostar/models/deploy_app_response_500.py +82 -0
- octostar/models/entity.py +80 -0
- octostar/models/entity_response.py +99 -0
- octostar/models/entity_response_s3_urls.py +93 -0
- octostar/models/entity_response_s3_urls_additional_property.py +105 -0
- octostar/models/entity_response_s3_urls_additional_property_fields.py +114 -0
- octostar/models/execute_app_job_json_body.py +151 -0
- octostar/models/execute_app_job_json_body_annotation.py +65 -0
- octostar/models/execute_app_job_response_401.py +74 -0
- octostar/models/fetch_ontology_data_response_200.py +60 -0
- octostar/models/fetch_ontology_data_response_401.py +74 -0
- octostar/models/fetch_ontology_data_response_500.py +82 -0
- octostar/models/get_app_logs_response_401.py +74 -0
- octostar/models/get_app_logs_response_404.py +74 -0
- octostar/models/get_app_logs_response_500.py +82 -0
- octostar/models/get_apps_url_json_body.py +76 -0
- octostar/models/get_apps_url_response_401.py +74 -0
- octostar/models/get_apps_url_response_500.py +82 -0
- octostar/models/get_attachment_response_200.py +74 -0
- octostar/models/get_attachment_response_401.py +74 -0
- octostar/models/get_files_tree_response_200.py +106 -0
- octostar/models/get_files_tree_response_200_status.py +8 -0
- octostar/models/get_files_tree_response_400.py +111 -0
- octostar/models/get_files_tree_response_400_data.py +60 -0
- octostar/models/get_files_tree_response_400_status.py +8 -0
- octostar/models/get_files_tree_response_401.py +74 -0
- octostar/models/get_files_tree_response_500.py +111 -0
- octostar/models/get_files_tree_response_500_data.py +60 -0
- octostar/models/get_files_tree_response_500_status.py +8 -0
- octostar/models/get_job_logs_response_401.py +74 -0
- octostar/models/get_job_logs_response_404.py +74 -0
- octostar/models/get_job_logs_response_500.py +82 -0
- octostar/models/get_job_progress_response_401.py +74 -0
- octostar/models/get_object_response_401.py +74 -0
- octostar/models/get_ontologies_response_401.py +74 -0
- octostar/models/get_ontologies_response_500.py +81 -0
- octostar/models/get_permissions_response_200.py +98 -0
- octostar/models/get_permissions_response_400.py +82 -0
- octostar/models/get_permissions_response_401.py +74 -0
- octostar/models/get_permissions_response_500.py +82 -0
- octostar/models/get_processing_status_response_200.py +104 -0
- octostar/models/get_processing_status_response_200_data.py +87 -0
- octostar/models/get_processing_status_response_400.py +82 -0
- octostar/models/get_processing_status_response_500.py +82 -0
- octostar/models/get_subscriptions_response_200_item.py +74 -0
- octostar/models/get_version_response_200.py +74 -0
- octostar/models/get_version_response_404.py +74 -0
- octostar/models/get_whoami_response_200.py +129 -0
- octostar/models/get_whoami_response_401.py +74 -0
- octostar/models/insert_entity.py +114 -0
- octostar/models/insert_entity_base.py +266 -0
- octostar/models/insert_entity_relationships_item.py +107 -0
- octostar/models/insert_entity_request.py +94 -0
- octostar/models/internal_server_error.py +82 -0
- octostar/models/job_execution_result.py +146 -0
- octostar/models/job_status.py +196 -0
- octostar/models/job_status_labels.py +60 -0
- octostar/models/job_with_url.py +82 -0
- octostar/models/kill_job_response_401.py +74 -0
- octostar/models/list_app_jobs_response_401.py +74 -0
- octostar/models/list_app_jobs_response_500.py +82 -0
- octostar/models/list_apps_response_401.py +74 -0
- octostar/models/list_apps_response_500.py +82 -0
- octostar/models/multi_query_json_body.py +100 -0
- octostar/models/multi_query_json_body_queries_item.py +80 -0
- octostar/models/multi_query_response_400.py +82 -0
- octostar/models/multi_query_response_401.py +74 -0
- octostar/models/not_found_error.py +74 -0
- octostar/models/octostar_event.py +96 -0
- octostar/models/octostar_event_octostar_payload.py +100 -0
- octostar/models/octostar_event_octostar_payload_level.py +11 -0
- octostar/models/os_notification.py +122 -0
- octostar/models/processing_status.py +262 -0
- octostar/models/processing_status_code.py +14 -0
- octostar/models/progress_request.py +73 -0
- octostar/models/publish_notification_response_401.py +74 -0
- octostar/models/pull_events_from_stream_response_401.py +74 -0
- octostar/models/push_event_to_stream_response_401.py +74 -0
- octostar/models/query_json_body.py +101 -0
- octostar/models/query_json_body_params.py +60 -0
- octostar/models/query_response_400.py +82 -0
- octostar/models/query_response_401.py +74 -0
- octostar/models/set_job_progress_response_401.py +74 -0
- octostar/models/string_to_value_label_map.py +99 -0
- octostar/models/string_to_value_label_map_data.py +89 -0
- octostar/models/string_to_value_label_map_data_additional_property.py +80 -0
- octostar/models/successful_get_tags.py +103 -0
- octostar/models/successful_insertion.py +98 -0
- octostar/models/tag_entities_response_401.py +74 -0
- octostar/models/toast_level.py +11 -0
- octostar/models/toast_response_401.py +74 -0
- octostar/models/undeploy_app_response_401.py +74 -0
- octostar/models/update_processing_status_response_200.py +82 -0
- octostar/models/update_processing_status_response_400.py +82 -0
- octostar/models/update_processing_status_response_500.py +82 -0
- octostar/models/upsert_entities_response_401.py +74 -0
- octostar/models/upsert_entity.py +114 -0
- octostar/models/upsert_entity_base.py +266 -0
- octostar/models/upsert_entity_relationships_item.py +107 -0
- octostar/py.typed +1 -0
- octostar/types.py +54 -0
- octostar/utils/__init__.py +15 -0
- octostar/utils/chat/__init__.py +0 -0
- octostar/utils/chat/chat.py +513 -0
- octostar/utils/chat/detokenize.py +105 -0
- octostar/utils/chat/get_default_model.py +50 -0
- octostar/utils/chat/list_models.py +91 -0
- octostar/utils/chat/tokenize.py +105 -0
- octostar/utils/commons.py +226 -0
- octostar/utils/exceptions.py +134 -0
- octostar/utils/jobs/__init__.py +0 -0
- octostar/utils/jobs/apps/__init__.py +0 -0
- octostar/utils/jobs/apps/deploy_app.py +81 -0
- octostar/utils/jobs/apps/execute_app_job.py +114 -0
- octostar/utils/jobs/apps/get_app_logs.py +113 -0
- octostar/utils/jobs/apps/get_app_secret.py +102 -0
- octostar/utils/jobs/apps/get_apps_url.py +73 -0
- octostar/utils/jobs/apps/list_app_jobs.py +62 -0
- octostar/utils/jobs/apps/list_apps.py +126 -0
- octostar/utils/jobs/apps/undeploy_app.py +48 -0
- octostar/utils/jobs/get_job_logs.py +113 -0
- octostar/utils/jobs/get_job_progress.py +76 -0
- octostar/utils/jobs/kill_job.py +47 -0
- octostar/utils/jobs/set_job_progress.py +67 -0
- octostar/utils/meta/__init__.py +0 -0
- octostar/utils/meta/get_version.py +30 -0
- octostar/utils/meta/get_whoami.py +30 -0
- octostar/utils/notifications/__init__.py +0 -0
- octostar/utils/notifications/delete_stream.py +58 -0
- octostar/utils/notifications/get_my_subscriptions.py +49 -0
- octostar/utils/notifications/publish_notification.py +73 -0
- octostar/utils/notifications/pull_event_from_stream.py +63 -0
- octostar/utils/notifications/pull_events_from_stream.py +64 -0
- octostar/utils/notifications/push_event_to_stream.py +109 -0
- octostar/utils/notifications/push_events_to_stream.py +137 -0
- octostar/utils/notifications/toast.py +92 -0
- octostar/utils/ontology/__init__.py +10 -0
- octostar/utils/ontology/fetch_ontology_data.py +141 -0
- octostar/utils/ontology/get_ontologies.py +55 -0
- octostar/utils/ontology/multiquery_ontology.py +287 -0
- octostar/utils/ontology/query_ontology.py +186 -0
- octostar/utils/pipeline/__init__.py +1 -0
- octostar/utils/pipeline/get_processing_status.py +230 -0
- octostar/utils/pipeline/update_processing_status.py +286 -0
- octostar/utils/search/__init__.py +11 -0
- octostar/utils/search/bulk_update.py +138 -0
- octostar/utils/search/count.py +117 -0
- octostar/utils/search/get_entity_annotations.py +304 -0
- octostar/utils/search/get_index_definition.py +111 -0
- octostar/utils/search/multi_search.py +129 -0
- octostar/utils/workspace/__init__.py +0 -0
- octostar/utils/workspace/delete_entities.py +247 -0
- octostar/utils/workspace/delete_entity.py +81 -0
- octostar/utils/workspace/delete_relationship.py +78 -0
- octostar/utils/workspace/delete_relationships.py +85 -0
- octostar/utils/workspace/delete_temporary_blob.py +85 -0
- octostar/utils/workspace/extract_entities.py +140 -0
- octostar/utils/workspace/get_filepath_from_item.py +85 -0
- octostar/utils/workspace/get_filepaths_from_items.py +100 -0
- octostar/utils/workspace/get_files_tree.py +102 -0
- octostar/utils/workspace/get_item_from_filepath.py +102 -0
- octostar/utils/workspace/get_items_from_filepaths.py +108 -0
- octostar/utils/workspace/linkcharts/__init__.py +0 -0
- octostar/utils/workspace/linkcharts/create_linkchart.py +241 -0
- octostar/utils/workspace/permissions/PermissionLevel.py +8 -0
- octostar/utils/workspace/permissions/__init__.py +1 -0
- octostar/utils/workspace/permissions/get_permissions.py +81 -0
- octostar/utils/workspace/read_attachment.py +284 -0
- octostar/utils/workspace/read_file.py +113 -0
- octostar/utils/workspace/read_temporary_blob.py +428 -0
- octostar/utils/workspace/saved_searches/__init__.py +0 -0
- octostar/utils/workspace/saved_searches/create_saved_search.py +183 -0
- octostar/utils/workspace/tags/__init__.py +0 -0
- octostar/utils/workspace/tags/delete_tag_from_entities.py +96 -0
- octostar/utils/workspace/tags/tag_entities.py +175 -0
- octostar/utils/workspace/upsert_entities.py +268 -0
- octostar/utils/workspace/upsert_entity.py +110 -0
- octostar/utils/workspace/upsert_relationship.py +128 -0
- octostar/utils/workspace/upsert_relationships.py +194 -0
- octostar/utils/workspace/write_attachment.py +263 -0
- octostar/utils/workspace/write_file.py +335 -0
- octostar/utils/workspace/write_temporary_blob.py +218 -0
- octostar_python_client-0.1.759.dist-info/METADATA +159 -0
- octostar_python_client-0.1.759.dist-info/RECORD +257 -0
- octostar_python_client-0.1.759.dist-info/WHEEL +5 -0
- octostar_python_client-0.1.759.dist-info/licenses/LICENSE +21 -0
- octostar_python_client-0.1.759.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"""Set job progress via the FastAPI backend."""
|
|
2
|
+
|
|
3
|
+
from http import HTTPStatus
|
|
4
|
+
from typing import Any, Dict, Optional
|
|
5
|
+
from warnings import warn
|
|
6
|
+
|
|
7
|
+
import httpx
|
|
8
|
+
|
|
9
|
+
from ...client import Client, get_default_client
|
|
10
|
+
from ...types import Response
|
|
11
|
+
from ... import errors
|
|
12
|
+
from ...models.progress_request import ProgressRequest
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
client_missing_msg = """No client was passed to this function. The default admin client will be used, but this is deprecated and will be removed soon.
|
|
16
|
+
Please create a client using octostar.client.make_client() and run the function via client.execute()."""
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _parse_progress_string(progress_string: str) -> tuple[float, str]:
|
|
20
|
+
"""Parse a progress string into a float value and message.
|
|
21
|
+
|
|
22
|
+
Handles formats like:
|
|
23
|
+
- "0.5" -> (0.5, "0.5")
|
|
24
|
+
- "50%" -> (0.5, "50%")
|
|
25
|
+
- "50" -> (0.5, "50")
|
|
26
|
+
- "Processing: 75%" -> (0.75, "Processing: 75%")
|
|
27
|
+
|
|
28
|
+
Returns:
|
|
29
|
+
Tuple of (progress_float, message_string)
|
|
30
|
+
"""
|
|
31
|
+
import re
|
|
32
|
+
|
|
33
|
+
# Try to extract a percentage from the string
|
|
34
|
+
percent_match = re.search(r"(\d+(?:\.\d+)?)\s*%", progress_string)
|
|
35
|
+
if percent_match:
|
|
36
|
+
value = float(percent_match.group(1)) / 100.0
|
|
37
|
+
return (min(1.0, max(0.0, value)), progress_string)
|
|
38
|
+
|
|
39
|
+
# Try to parse as a plain float
|
|
40
|
+
try:
|
|
41
|
+
value = float(progress_string.strip())
|
|
42
|
+
# If > 1, assume it's a percentage
|
|
43
|
+
if value > 1.0:
|
|
44
|
+
value = value / 100.0
|
|
45
|
+
return (min(1.0, max(0.0, value)), progress_string)
|
|
46
|
+
except ValueError:
|
|
47
|
+
pass
|
|
48
|
+
|
|
49
|
+
# Can't parse, default to 0
|
|
50
|
+
return (0.0, progress_string)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def _get_kwargs(
|
|
54
|
+
job_id: str,
|
|
55
|
+
*,
|
|
56
|
+
client: Client = None,
|
|
57
|
+
json_body: ProgressRequest = None,
|
|
58
|
+
) -> Dict[str, Any]:
|
|
59
|
+
if not client:
|
|
60
|
+
warn(client_missing_msg, FutureWarning, stacklevel=2)
|
|
61
|
+
client = get_default_client()
|
|
62
|
+
|
|
63
|
+
base_url = client.get_base_url_v1()
|
|
64
|
+
url = f"{base_url}/api/v1/apps/jobs/{job_id}/progress"
|
|
65
|
+
|
|
66
|
+
headers: Dict[str, str] = client.get_headers()
|
|
67
|
+
headers["Content-Type"] = "application/json"
|
|
68
|
+
cookies: Dict[str, Any] = client.get_cookies()
|
|
69
|
+
|
|
70
|
+
if not json_body:
|
|
71
|
+
raise ValueError("json_body is required for setting job progress")
|
|
72
|
+
|
|
73
|
+
# Convert old ProgressRequest (string) to new format (float + message)
|
|
74
|
+
progress_float, message = _parse_progress_string(json_body.progress)
|
|
75
|
+
json_data = {
|
|
76
|
+
"progress": progress_float,
|
|
77
|
+
"message": message,
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return {
|
|
81
|
+
"method": "post",
|
|
82
|
+
"url": url,
|
|
83
|
+
"headers": headers,
|
|
84
|
+
"cookies": cookies,
|
|
85
|
+
"timeout": client.get_timeout(),
|
|
86
|
+
"follow_redirects": client.follow_redirects,
|
|
87
|
+
"json": json_data,
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def _parse_response(
|
|
92
|
+
*, client: Client = None, response: httpx.Response
|
|
93
|
+
) -> Optional[Dict[str, Any]]:
|
|
94
|
+
if not client:
|
|
95
|
+
warn(client_missing_msg, FutureWarning, stacklevel=2)
|
|
96
|
+
client = get_default_client()
|
|
97
|
+
|
|
98
|
+
if response.status_code == HTTPStatus.OK:
|
|
99
|
+
return response.json()
|
|
100
|
+
if client.raise_on_unexpected_status:
|
|
101
|
+
raise errors.UnexpectedStatus(response.status_code, response.content)
|
|
102
|
+
return None
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def _build_response(
|
|
106
|
+
*, client: Client = None, response: httpx.Response
|
|
107
|
+
) -> Response[Dict[str, Any]]:
|
|
108
|
+
if not client:
|
|
109
|
+
warn(client_missing_msg, FutureWarning, stacklevel=2)
|
|
110
|
+
client = get_default_client()
|
|
111
|
+
|
|
112
|
+
return Response(
|
|
113
|
+
status_code=HTTPStatus(response.status_code),
|
|
114
|
+
content=response.content,
|
|
115
|
+
headers=response.headers,
|
|
116
|
+
parsed=_parse_response(client=client, response=response),
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
def sync_detailed(
|
|
121
|
+
job_id: str,
|
|
122
|
+
*,
|
|
123
|
+
client: Client = None,
|
|
124
|
+
json_body: ProgressRequest = None,
|
|
125
|
+
) -> Response[Dict[str, Any]]:
|
|
126
|
+
"""Set job progress.
|
|
127
|
+
|
|
128
|
+
Args:
|
|
129
|
+
job_id: The job ID to set progress for.
|
|
130
|
+
client: The Client with which to connect to Octostar.
|
|
131
|
+
json_body: ProgressRequest with the progress string.
|
|
132
|
+
|
|
133
|
+
Returns:
|
|
134
|
+
Response with updated job progress data.
|
|
135
|
+
"""
|
|
136
|
+
if not client:
|
|
137
|
+
warn(client_missing_msg, FutureWarning, stacklevel=2)
|
|
138
|
+
client = get_default_client()
|
|
139
|
+
|
|
140
|
+
kwargs = _get_kwargs(job_id=job_id, client=client, json_body=json_body)
|
|
141
|
+
|
|
142
|
+
response = httpx.request(verify=client.verify_ssl, **kwargs)
|
|
143
|
+
if response.is_error:
|
|
144
|
+
print(
|
|
145
|
+
f"{response.status_code} Error: {response.text} for request",
|
|
146
|
+
str(kwargs),
|
|
147
|
+
)
|
|
148
|
+
return _build_response(client=client, response=response)
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def sync(
|
|
152
|
+
job_id: str,
|
|
153
|
+
*,
|
|
154
|
+
client: Client = None,
|
|
155
|
+
json_body: ProgressRequest = None,
|
|
156
|
+
) -> Optional[Dict[str, Any]]:
|
|
157
|
+
"""Set job progress.
|
|
158
|
+
|
|
159
|
+
Args:
|
|
160
|
+
job_id: The job ID to set progress for.
|
|
161
|
+
client: The Client with which to connect to Octostar.
|
|
162
|
+
json_body: ProgressRequest with the progress string.
|
|
163
|
+
|
|
164
|
+
Returns:
|
|
165
|
+
Updated job progress data or None if request failed.
|
|
166
|
+
"""
|
|
167
|
+
return sync_detailed(job_id=job_id, client=client, json_body=json_body).parsed
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
async def asyncio_detailed(
|
|
171
|
+
job_id: str,
|
|
172
|
+
*,
|
|
173
|
+
client: Client = None,
|
|
174
|
+
json_body: ProgressRequest = None,
|
|
175
|
+
) -> Response[Dict[str, Any]]:
|
|
176
|
+
"""Set job progress asynchronously.
|
|
177
|
+
|
|
178
|
+
Args:
|
|
179
|
+
job_id: The job ID to set progress for.
|
|
180
|
+
client: The Client with which to connect to Octostar.
|
|
181
|
+
json_body: ProgressRequest with the progress string.
|
|
182
|
+
|
|
183
|
+
Returns:
|
|
184
|
+
Response with updated job progress data.
|
|
185
|
+
"""
|
|
186
|
+
if not client:
|
|
187
|
+
warn(client_missing_msg, FutureWarning, stacklevel=2)
|
|
188
|
+
client = get_default_client()
|
|
189
|
+
|
|
190
|
+
kwargs = _get_kwargs(job_id=job_id, client=client, json_body=json_body)
|
|
191
|
+
|
|
192
|
+
async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
|
|
193
|
+
response = await _client.request(**kwargs)
|
|
194
|
+
|
|
195
|
+
return _build_response(client=client, response=response)
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
async def asyncio(
|
|
199
|
+
job_id: str,
|
|
200
|
+
*,
|
|
201
|
+
client: Client = None,
|
|
202
|
+
json_body: ProgressRequest = None,
|
|
203
|
+
) -> Optional[Dict[str, Any]]:
|
|
204
|
+
"""Set job progress asynchronously.
|
|
205
|
+
|
|
206
|
+
Args:
|
|
207
|
+
job_id: The job ID to set progress for.
|
|
208
|
+
client: The Client with which to connect to Octostar.
|
|
209
|
+
json_body: ProgressRequest with the progress string.
|
|
210
|
+
|
|
211
|
+
Returns:
|
|
212
|
+
Updated job progress data or None if request failed.
|
|
213
|
+
"""
|
|
214
|
+
return (
|
|
215
|
+
await asyncio_detailed(job_id=job_id, client=client, json_body=json_body)
|
|
216
|
+
).parsed
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"""Undeploy an app via the FastAPI backend."""
|
|
2
|
+
|
|
3
|
+
from http import HTTPStatus
|
|
4
|
+
from typing import Any, Dict, Optional
|
|
5
|
+
from warnings import warn
|
|
6
|
+
|
|
7
|
+
import httpx
|
|
8
|
+
|
|
9
|
+
from ...client import Client, get_default_client
|
|
10
|
+
from ...types import Response
|
|
11
|
+
from ... import errors
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
client_missing_msg = """No client was passed to this function. The default admin client will be used, but this is deprecated and will be removed soon.
|
|
15
|
+
Please create a client using octostar.client.make_client() and run the function via client.execute()."""
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def _get_kwargs(
|
|
19
|
+
app_id: str,
|
|
20
|
+
*,
|
|
21
|
+
client: Client = None,
|
|
22
|
+
) -> Dict[str, Any]:
|
|
23
|
+
if not client:
|
|
24
|
+
warn(client_missing_msg, FutureWarning, stacklevel=2)
|
|
25
|
+
client = get_default_client()
|
|
26
|
+
|
|
27
|
+
base_url = client.get_base_url_v1()
|
|
28
|
+
url = f"{base_url}/api/v1/apps/{app_id}"
|
|
29
|
+
|
|
30
|
+
headers: Dict[str, str] = client.get_headers()
|
|
31
|
+
cookies: Dict[str, Any] = client.get_cookies()
|
|
32
|
+
|
|
33
|
+
return {
|
|
34
|
+
"method": "delete",
|
|
35
|
+
"url": url,
|
|
36
|
+
"headers": headers,
|
|
37
|
+
"cookies": cookies,
|
|
38
|
+
"timeout": client.get_timeout(),
|
|
39
|
+
"follow_redirects": client.follow_redirects,
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def _parse_response(
|
|
44
|
+
*, client: Client = None, response: httpx.Response
|
|
45
|
+
) -> Optional[Dict[str, Any]]:
|
|
46
|
+
if not client:
|
|
47
|
+
warn(client_missing_msg, FutureWarning, stacklevel=2)
|
|
48
|
+
client = get_default_client()
|
|
49
|
+
|
|
50
|
+
if response.status_code == HTTPStatus.OK:
|
|
51
|
+
return response.json()
|
|
52
|
+
if client.raise_on_unexpected_status:
|
|
53
|
+
raise errors.UnexpectedStatus(response.status_code, response.content)
|
|
54
|
+
return None
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def _build_response(
|
|
58
|
+
*, client: Client = None, response: httpx.Response
|
|
59
|
+
) -> Response[Dict[str, Any]]:
|
|
60
|
+
if not client:
|
|
61
|
+
warn(client_missing_msg, FutureWarning, stacklevel=2)
|
|
62
|
+
client = get_default_client()
|
|
63
|
+
|
|
64
|
+
return Response(
|
|
65
|
+
status_code=HTTPStatus(response.status_code),
|
|
66
|
+
content=response.content,
|
|
67
|
+
headers=response.headers,
|
|
68
|
+
parsed=_parse_response(client=client, response=response),
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def sync_detailed(
|
|
73
|
+
app_id: str,
|
|
74
|
+
*,
|
|
75
|
+
client: Client = None,
|
|
76
|
+
) -> Response[Dict[str, Any]]:
|
|
77
|
+
"""Undeploy an app.
|
|
78
|
+
|
|
79
|
+
Args:
|
|
80
|
+
app_id: The app ID or alias to undeploy.
|
|
81
|
+
client: The Client with which to connect to Octostar.
|
|
82
|
+
|
|
83
|
+
Returns:
|
|
84
|
+
Response with undeploy confirmation including:
|
|
85
|
+
- status: Operation status
|
|
86
|
+
- app_id: The undeployed app ID
|
|
87
|
+
"""
|
|
88
|
+
if not client:
|
|
89
|
+
warn(client_missing_msg, FutureWarning, stacklevel=2)
|
|
90
|
+
client = get_default_client()
|
|
91
|
+
|
|
92
|
+
kwargs = _get_kwargs(app_id=app_id, client=client)
|
|
93
|
+
|
|
94
|
+
response = httpx.request(verify=client.verify_ssl, **kwargs)
|
|
95
|
+
if response.is_error:
|
|
96
|
+
print(
|
|
97
|
+
f"{response.status_code} Error: {response.text} for request",
|
|
98
|
+
str(kwargs),
|
|
99
|
+
)
|
|
100
|
+
return _build_response(client=client, response=response)
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def sync(
|
|
104
|
+
app_id: str,
|
|
105
|
+
*,
|
|
106
|
+
client: Client = None,
|
|
107
|
+
) -> Optional[Dict[str, Any]]:
|
|
108
|
+
"""Undeploy an app.
|
|
109
|
+
|
|
110
|
+
Args:
|
|
111
|
+
app_id: The app ID or alias to undeploy.
|
|
112
|
+
client: The Client with which to connect to Octostar.
|
|
113
|
+
|
|
114
|
+
Returns:
|
|
115
|
+
Undeploy confirmation data or None if request failed.
|
|
116
|
+
"""
|
|
117
|
+
return sync_detailed(app_id=app_id, client=client).parsed
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
async def asyncio_detailed(
|
|
121
|
+
app_id: str,
|
|
122
|
+
*,
|
|
123
|
+
client: Client = None,
|
|
124
|
+
) -> Response[Dict[str, Any]]:
|
|
125
|
+
"""Undeploy an app asynchronously.
|
|
126
|
+
|
|
127
|
+
Args:
|
|
128
|
+
app_id: The app ID or alias to undeploy.
|
|
129
|
+
client: The Client with which to connect to Octostar.
|
|
130
|
+
|
|
131
|
+
Returns:
|
|
132
|
+
Response with undeploy confirmation.
|
|
133
|
+
"""
|
|
134
|
+
if not client:
|
|
135
|
+
warn(client_missing_msg, FutureWarning, stacklevel=2)
|
|
136
|
+
client = get_default_client()
|
|
137
|
+
|
|
138
|
+
kwargs = _get_kwargs(app_id=app_id, client=client)
|
|
139
|
+
|
|
140
|
+
async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
|
|
141
|
+
response = await _client.request(**kwargs)
|
|
142
|
+
|
|
143
|
+
return _build_response(client=client, response=response)
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
async def asyncio(
|
|
147
|
+
app_id: str,
|
|
148
|
+
*,
|
|
149
|
+
client: Client = None,
|
|
150
|
+
) -> Optional[Dict[str, Any]]:
|
|
151
|
+
"""Undeploy an app asynchronously.
|
|
152
|
+
|
|
153
|
+
Args:
|
|
154
|
+
app_id: The app ID or alias to undeploy.
|
|
155
|
+
client: The Client with which to connect to Octostar.
|
|
156
|
+
|
|
157
|
+
Returns:
|
|
158
|
+
Undeploy confirmation data or None if request failed.
|
|
159
|
+
"""
|
|
160
|
+
return (await asyncio_detailed(app_id=app_id, client=client)).parsed
|
|
File without changes
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
from http import HTTPStatus
|
|
2
|
+
from typing import Any, Dict, List, Optional, Union, cast
|
|
3
|
+
from warnings import warn
|
|
4
|
+
|
|
5
|
+
import httpx
|
|
6
|
+
|
|
7
|
+
from ...client import AuthenticatedClient, Client, get_default_client
|
|
8
|
+
from ...types import Response, UNSET
|
|
9
|
+
from ... import errors
|
|
10
|
+
|
|
11
|
+
from ...models.get_version_response_200 import GetVersionResponse200
|
|
12
|
+
from ...types import UNSET, Unset
|
|
13
|
+
from typing import Union
|
|
14
|
+
from typing import cast
|
|
15
|
+
from typing import Dict
|
|
16
|
+
from ...models.get_version_response_404 import GetVersionResponse404
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
client_missing_msg = """No client was passed to this function. The default admin client will be used, but this is deprecated and will be removed soon.
|
|
20
|
+
Please create a client using octostar.client.make_client() and run the function via client.execute()."""
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _get_kwargs(
|
|
24
|
+
*,
|
|
25
|
+
client: Client = None,
|
|
26
|
+
accept: Union[Unset, str] = "application/json",
|
|
27
|
+
) -> Dict[str, Any]:
|
|
28
|
+
if not client:
|
|
29
|
+
warn(client_missing_msg, FutureWarning, stacklevel=2)
|
|
30
|
+
client = get_default_client()
|
|
31
|
+
# raise RuntimeError("Missing client!")
|
|
32
|
+
|
|
33
|
+
base_url = client.get_base_url_v1()
|
|
34
|
+
url = "{}/api/v1/meta/version".format(base_url)
|
|
35
|
+
|
|
36
|
+
headers: Dict[str, str] = client.get_headers()
|
|
37
|
+
cookies: Dict[str, Any] = client.get_cookies()
|
|
38
|
+
|
|
39
|
+
if not isinstance(accept, Unset):
|
|
40
|
+
headers["Accept"] = accept
|
|
41
|
+
|
|
42
|
+
return {
|
|
43
|
+
"method": "get",
|
|
44
|
+
"url": url,
|
|
45
|
+
"headers": headers,
|
|
46
|
+
"cookies": cookies,
|
|
47
|
+
"timeout": client.get_timeout(),
|
|
48
|
+
"follow_redirects": client.follow_redirects,
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def _parse_response(
|
|
53
|
+
*, client: Client = None, response: httpx.Response
|
|
54
|
+
) -> Optional[Union[GetVersionResponse200, GetVersionResponse404]]:
|
|
55
|
+
if not client:
|
|
56
|
+
warn(client_missing_msg, FutureWarning, stacklevel=2)
|
|
57
|
+
client = get_default_client()
|
|
58
|
+
# raise RuntimeError("Missing client!")
|
|
59
|
+
if response.status_code == HTTPStatus.OK:
|
|
60
|
+
response_200 = GetVersionResponse200.from_dict(response.json())
|
|
61
|
+
|
|
62
|
+
return response_200
|
|
63
|
+
if response.status_code == HTTPStatus.NOT_FOUND:
|
|
64
|
+
response_404 = GetVersionResponse404.from_dict(response.json())
|
|
65
|
+
|
|
66
|
+
return response_404
|
|
67
|
+
if client.raise_on_unexpected_status:
|
|
68
|
+
raise errors.UnexpectedStatus(response.status_code, response.content)
|
|
69
|
+
else:
|
|
70
|
+
return None
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def _build_response(
|
|
74
|
+
*, client: Client = None, response: httpx.Response
|
|
75
|
+
) -> Response[Union[GetVersionResponse200, GetVersionResponse404]]:
|
|
76
|
+
if not client:
|
|
77
|
+
warn(client_missing_msg, FutureWarning, stacklevel=2)
|
|
78
|
+
client = get_default_client()
|
|
79
|
+
# raise RuntimeError("Missing client!")
|
|
80
|
+
response_kwargs = {
|
|
81
|
+
"status_code": HTTPStatus(response.status_code),
|
|
82
|
+
"content": response.content,
|
|
83
|
+
"headers": response.headers,
|
|
84
|
+
"parsed": _parse_response(client=client, response=response),
|
|
85
|
+
}
|
|
86
|
+
return Response(**response_kwargs)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def _build_chunk_response(
|
|
90
|
+
*, client: Client = None, response: httpx.Response, chunk: bytes
|
|
91
|
+
) -> Response[Union[GetVersionResponse200, GetVersionResponse404]]:
|
|
92
|
+
if not client:
|
|
93
|
+
warn(client_missing_msg, FutureWarning, stacklevel=2)
|
|
94
|
+
client = get_default_client()
|
|
95
|
+
# raise RuntimeError("Missing client!")
|
|
96
|
+
response_kwargs = {
|
|
97
|
+
"status_code": HTTPStatus(response.status_code),
|
|
98
|
+
"content": chunk,
|
|
99
|
+
"headers": response.headers,
|
|
100
|
+
"parsed": None, # cannot parse incomplete chunks of data, we leave it to the user
|
|
101
|
+
}
|
|
102
|
+
return Response(**response_kwargs)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def sync_detailed(
|
|
106
|
+
*,
|
|
107
|
+
client: Client = None,
|
|
108
|
+
accept: Union[Unset, str] = "application/json",
|
|
109
|
+
) -> Response[Union[GetVersionResponse200, GetVersionResponse404]]:
|
|
110
|
+
"""## Get the current version of Octostar
|
|
111
|
+
|
|
112
|
+
Get the current version of Octostar
|
|
113
|
+
|
|
114
|
+
### Args:
|
|
115
|
+
* `Accept`: accept (Union[Unset, str]): Default: 'application/json'.
|
|
116
|
+
|
|
117
|
+
### Raises:
|
|
118
|
+
* `errors.UnexpectedStatus`: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
119
|
+
* `httpx.TimeoutException`: If the request takes longer than Client.timeout.
|
|
120
|
+
|
|
121
|
+
## Returns:
|
|
122
|
+
* `Response[Union[GetVersionResponse200, GetVersionResponse404]]`
|
|
123
|
+
"""
|
|
124
|
+
|
|
125
|
+
if not client:
|
|
126
|
+
warn(client_missing_msg, FutureWarning, stacklevel=2)
|
|
127
|
+
client = get_default_client()
|
|
128
|
+
# raise RuntimeError("Missing client!")
|
|
129
|
+
kwargs = _get_kwargs(
|
|
130
|
+
client=client,
|
|
131
|
+
accept=accept,
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
response = httpx.request(
|
|
135
|
+
verify=client.verify_ssl,
|
|
136
|
+
**kwargs,
|
|
137
|
+
)
|
|
138
|
+
if response.is_error:
|
|
139
|
+
print(
|
|
140
|
+
f"{str(response.status_code)} Error: {response.text} for request",
|
|
141
|
+
str(kwargs),
|
|
142
|
+
)
|
|
143
|
+
return _build_response(client=client, response=response)
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def sync(
|
|
147
|
+
*,
|
|
148
|
+
client: Client = None,
|
|
149
|
+
accept: Union[Unset, str] = "application/json",
|
|
150
|
+
) -> Optional[Union[GetVersionResponse200, GetVersionResponse404]]:
|
|
151
|
+
"""## Get the current version of Octostar
|
|
152
|
+
|
|
153
|
+
Get the current version of Octostar
|
|
154
|
+
|
|
155
|
+
### Args:
|
|
156
|
+
* `Accept`: accept (Union[Unset, str]): Default: 'application/json'.
|
|
157
|
+
|
|
158
|
+
### Raises:
|
|
159
|
+
* `errors.UnexpectedStatus`: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
160
|
+
* `httpx.TimeoutException`: If the request takes longer than Client.timeout.
|
|
161
|
+
|
|
162
|
+
## Returns:
|
|
163
|
+
* `Union[GetVersionResponse200, GetVersionResponse404]`
|
|
164
|
+
"""
|
|
165
|
+
|
|
166
|
+
return sync_detailed(
|
|
167
|
+
client=client,
|
|
168
|
+
accept=accept,
|
|
169
|
+
).parsed
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
async def asyncio_detailed(
|
|
173
|
+
*,
|
|
174
|
+
client: Client = None,
|
|
175
|
+
accept: Union[Unset, str] = "application/json",
|
|
176
|
+
) -> Response[Union[GetVersionResponse200, GetVersionResponse404]]:
|
|
177
|
+
"""## Get the current version of Octostar
|
|
178
|
+
|
|
179
|
+
Get the current version of Octostar
|
|
180
|
+
|
|
181
|
+
### Args:
|
|
182
|
+
* `Accept`: accept (Union[Unset, str]): Default: 'application/json'.
|
|
183
|
+
|
|
184
|
+
### Raises:
|
|
185
|
+
* `errors.UnexpectedStatus`: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
186
|
+
* `httpx.TimeoutException`: If the request takes longer than Client.timeout.
|
|
187
|
+
|
|
188
|
+
## Returns:
|
|
189
|
+
* `Response[Union[GetVersionResponse200, GetVersionResponse404]]`
|
|
190
|
+
"""
|
|
191
|
+
|
|
192
|
+
if not client:
|
|
193
|
+
warn(client_missing_msg, FutureWarning, stacklevel=2)
|
|
194
|
+
client = get_default_client()
|
|
195
|
+
# raise RuntimeError("Missing client!")
|
|
196
|
+
kwargs = _get_kwargs(
|
|
197
|
+
client=client,
|
|
198
|
+
accept=accept,
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
|
|
202
|
+
response = await _client.request(**kwargs)
|
|
203
|
+
|
|
204
|
+
return _build_response(client=client, response=response)
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
async def asyncio(
|
|
208
|
+
*,
|
|
209
|
+
client: Client = None,
|
|
210
|
+
accept: Union[Unset, str] = "application/json",
|
|
211
|
+
) -> Optional[Union[GetVersionResponse200, GetVersionResponse404]]:
|
|
212
|
+
"""## Get the current version of Octostar
|
|
213
|
+
|
|
214
|
+
Get the current version of Octostar
|
|
215
|
+
|
|
216
|
+
### Args:
|
|
217
|
+
* `Accept`: accept (Union[Unset, str]): Default: 'application/json'.
|
|
218
|
+
|
|
219
|
+
### Raises:
|
|
220
|
+
* `errors.UnexpectedStatus`: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
221
|
+
* `httpx.TimeoutException`: If the request takes longer than Client.timeout.
|
|
222
|
+
|
|
223
|
+
## Returns:
|
|
224
|
+
* `Union[GetVersionResponse200, GetVersionResponse404]`
|
|
225
|
+
"""
|
|
226
|
+
|
|
227
|
+
return (
|
|
228
|
+
await asyncio_detailed(
|
|
229
|
+
client=client,
|
|
230
|
+
accept=accept,
|
|
231
|
+
)
|
|
232
|
+
).parsed
|