digitalhub-runtime-python 0.14.2__tar.gz → 0.15.0b0__tar.gz
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.
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/.github/workflows/release.yml +1 -1
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/.github/workflows/run_local_test.yml +1 -1
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/PKG-INFO +6 -5
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/function/python/models.py +1 -1
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/function/python/spec.py +3 -3
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/run/_base/entity.py +0 -44
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/run/_base/spec.py +12 -23
- digitalhub_runtime_python-0.15.0b0/digitalhub_runtime_python/entities/run/serve/entity.py +86 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/task/build/spec.py +1 -11
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/task/serve/spec.py +3 -13
- digitalhub_runtime_python-0.15.0b0/digitalhub_runtime_python/utils/configuration.py +345 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/pyproject.toml +9 -8
- digitalhub_runtime_python-0.14.2/digitalhub_runtime_python/entities/run/serve/entity.py +0 -36
- digitalhub_runtime_python-0.14.2/digitalhub_runtime_python/utils/configuration.py +0 -212
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/.github/scripts/bump.sh +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/.github/scripts/changelog.sh +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/.github/scripts/cliff.toml +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/.github/workflows/test_release.yml +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/.gitignore +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/AUTHORS +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/CONTRIBUTING +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/COPYRIGHT +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/LICENSE +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/README.md +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/__init__.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/__init__.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/_base/__init__.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/_base/runtime_entity/__init__.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/_base/runtime_entity/builder.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/_commons/__init__.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/_commons/enums.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/function/__init__.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/function/python/__init__.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/function/python/builder.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/function/python/entity.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/function/python/status.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/function/python/utils.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/run/__init__.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/run/_base/__init__.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/run/_base/builder.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/run/_base/status.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/run/_base/utils.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/run/build/__init__.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/run/build/builder.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/run/build/entity.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/run/build/spec.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/run/build/status.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/run/job/__init__.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/run/job/builder.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/run/job/entity.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/run/job/spec.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/run/job/status.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/run/serve/__init__.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/run/serve/builder.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/run/serve/spec.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/run/serve/status.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/task/__init__.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/task/build/__init__.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/task/build/builder.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/task/build/entity.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/task/build/status.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/task/job/__init__.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/task/job/builder.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/task/job/entity.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/task/job/models.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/task/job/spec.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/task/job/status.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/task/serve/__init__.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/task/serve/builder.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/task/serve/entity.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/entities/task/serve/status.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/runtimes/__init__.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/runtimes/builder.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/runtimes/runtime.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/utils/inputs.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/utils/outputs.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/digitalhub_runtime_python/utils/utils.py +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/test/instances/entities/function/function-python-git.json +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/test/instances/entities/function/function-python-local.json +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/test/instances/entities/function/function-python-zip.json +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/test/instances/entities/run/run-python+build:run.json +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/test/instances/entities/run/run-python+job:run.json +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/test/instances/entities/run/run-python+serve:run.json +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/test/instances/entities/task/task-python+build.json +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/test/instances/entities/task/task-python+job.json +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/test/instances/entities/task/task-python+serve.json +0 -0
- {digitalhub_runtime_python-0.14.2 → digitalhub_runtime_python-0.15.0b0}/test/instances/test_validate.py +0 -0
|
@@ -132,7 +132,7 @@ jobs:
|
|
|
132
132
|
branch=${{ github.ref }}
|
|
133
133
|
|
|
134
134
|
# Define the repositories to trigger
|
|
135
|
-
repos=("digitalhub-
|
|
135
|
+
repos=("digitalhub-serverless" "digitalhub-sdk-wrapper-hera")
|
|
136
136
|
|
|
137
137
|
# Loop over the repositories and trigger the workflow
|
|
138
138
|
for repo in "${repos[@]}"; do
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: digitalhub-runtime-python
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.15.0b0
|
|
4
4
|
Summary: Python runtime for DHCore
|
|
5
5
|
Project-URL: Homepage, https://github.com/scc-digitalhub/digitalhub-sdk-runtime-python
|
|
6
6
|
Author-email: Fondazione Bruno Kessler <digitalhub@fbk.eu>, Matteo Martini <mmartini@fbk.eu>
|
|
@@ -209,15 +209,16 @@ License-File: AUTHORS
|
|
|
209
209
|
License-File: LICENSE
|
|
210
210
|
Keywords: data,dataops,kubernetes
|
|
211
211
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
212
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
213
212
|
Classifier: Programming Language :: Python :: 3.10
|
|
214
213
|
Classifier: Programming Language :: Python :: 3.11
|
|
215
214
|
Classifier: Programming Language :: Python :: 3.12
|
|
216
|
-
|
|
217
|
-
Requires-
|
|
215
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
216
|
+
Requires-Python: <3.14,>=3.10
|
|
217
|
+
Requires-Dist: digitalhub[full]<0.16,>=0.15.0b
|
|
218
|
+
Requires-Dist: msgpack
|
|
218
219
|
Requires-Dist: nuclio-sdk
|
|
219
220
|
Provides-Extra: dev
|
|
220
|
-
Requires-Dist: digitalhub[dev]<0.
|
|
221
|
+
Requires-Dist: digitalhub[dev]<0.16,>=0.15.0b; extra == 'dev'
|
|
221
222
|
Description-Content-Type: text/markdown
|
|
222
223
|
|
|
223
224
|
# DigitalHub SDK Runtime Python
|
|
@@ -42,11 +42,11 @@ class FunctionValidatorPython(FunctionValidator):
|
|
|
42
42
|
python_version: PythonVersion
|
|
43
43
|
"Python version"
|
|
44
44
|
|
|
45
|
-
image: str = None
|
|
45
|
+
image: str | None = None
|
|
46
46
|
"Image where the function will be executed"
|
|
47
47
|
|
|
48
|
-
base_image: str = None
|
|
48
|
+
base_image: str | None = None
|
|
49
49
|
"Base image used to build the image where the function will be executed"
|
|
50
50
|
|
|
51
|
-
requirements: list[str] = None
|
|
51
|
+
requirements: list[str] | None = None
|
|
52
52
|
"Requirements list to be installed in the image where the function will be executed"
|
|
@@ -8,12 +8,10 @@ import time
|
|
|
8
8
|
import typing
|
|
9
9
|
from typing import Any
|
|
10
10
|
|
|
11
|
-
import requests
|
|
12
11
|
from digitalhub.entities._commons.enums import Relationship, State
|
|
13
12
|
from digitalhub.entities._commons.utils import get_entity_type_from_key
|
|
14
13
|
from digitalhub.entities.run._base.entity import Run
|
|
15
14
|
from digitalhub.factory.entity import entity_factory
|
|
16
|
-
from digitalhub.utils.exceptions import EntityError
|
|
17
15
|
from digitalhub.utils.logger import LOGGER
|
|
18
16
|
|
|
19
17
|
from digitalhub_runtime_python.entities._commons.enums import Actions
|
|
@@ -225,45 +223,3 @@ class RunPythonRun(Run):
|
|
|
225
223
|
if self.status.results is None:
|
|
226
224
|
return {}
|
|
227
225
|
return self.status.results
|
|
228
|
-
|
|
229
|
-
def invoke(
|
|
230
|
-
self,
|
|
231
|
-
method: str = "POST",
|
|
232
|
-
url: str | None = None,
|
|
233
|
-
**kwargs,
|
|
234
|
-
) -> requests.Response:
|
|
235
|
-
"""
|
|
236
|
-
Invoke run.
|
|
237
|
-
|
|
238
|
-
Parameters
|
|
239
|
-
----------
|
|
240
|
-
method : str
|
|
241
|
-
Method of the request.
|
|
242
|
-
url : str
|
|
243
|
-
URL of the request.
|
|
244
|
-
**kwargs : dict
|
|
245
|
-
Keyword arguments to pass to the request.
|
|
246
|
-
|
|
247
|
-
Returns
|
|
248
|
-
-------
|
|
249
|
-
requests.Response
|
|
250
|
-
Response from service.
|
|
251
|
-
"""
|
|
252
|
-
try:
|
|
253
|
-
base_url: str = self.status.service.get("url")
|
|
254
|
-
except AttributeError:
|
|
255
|
-
raise EntityError(
|
|
256
|
-
"Url not specified and service not found on run status."
|
|
257
|
-
" If a service is deploying, use run.wait() or try again later."
|
|
258
|
-
)
|
|
259
|
-
|
|
260
|
-
if url is not None and not url.removeprefix("http://").removeprefix("https://").startswith(base_url):
|
|
261
|
-
raise EntityError(f"Invalid URL: {url}. It must start with the service URL: {base_url}")
|
|
262
|
-
|
|
263
|
-
if url is None:
|
|
264
|
-
url = f"http://{base_url}"
|
|
265
|
-
|
|
266
|
-
if "data" not in kwargs and "json" not in kwargs:
|
|
267
|
-
method = "GET"
|
|
268
|
-
|
|
269
|
-
return requests.request(method=method, url=url, **kwargs)
|
|
@@ -16,16 +16,11 @@ class RunSpecPythonRun(RunSpec):
|
|
|
16
16
|
local_execution: bool = False,
|
|
17
17
|
function: str | None = None,
|
|
18
18
|
workflow: str | None = None,
|
|
19
|
-
node_selector: list[dict] | None = None,
|
|
20
19
|
volumes: list[dict] | None = None,
|
|
21
20
|
resources: dict | None = None,
|
|
22
|
-
affinity: dict | None = None,
|
|
23
|
-
tolerations: list[dict] | None = None,
|
|
24
21
|
envs: list[dict] | None = None,
|
|
25
22
|
secrets: list[str] | None = None,
|
|
26
23
|
profile: str | None = None,
|
|
27
|
-
runtime_class: str | None = None,
|
|
28
|
-
priority_class: str | None = None,
|
|
29
24
|
source: dict | None = None,
|
|
30
25
|
image: str | None = None,
|
|
31
26
|
base_image: str | None = None,
|
|
@@ -45,16 +40,11 @@ class RunSpecPythonRun(RunSpec):
|
|
|
45
40
|
local_execution,
|
|
46
41
|
function,
|
|
47
42
|
workflow,
|
|
48
|
-
node_selector,
|
|
49
43
|
volumes,
|
|
50
44
|
resources,
|
|
51
|
-
affinity,
|
|
52
|
-
tolerations,
|
|
53
45
|
envs,
|
|
54
46
|
secrets,
|
|
55
47
|
profile,
|
|
56
|
-
runtime_class,
|
|
57
|
-
priority_class,
|
|
58
48
|
**kwargs,
|
|
59
49
|
)
|
|
60
50
|
self.source = source
|
|
@@ -62,7 +52,6 @@ class RunSpecPythonRun(RunSpec):
|
|
|
62
52
|
self.base_image = base_image
|
|
63
53
|
self.python_version = python_version
|
|
64
54
|
self.requirements = requirements
|
|
65
|
-
|
|
66
55
|
self.service_type = service_type
|
|
67
56
|
self.service_name = service_name
|
|
68
57
|
self.replicas = replicas
|
|
@@ -76,26 +65,26 @@ class RunValidatorPythonRun(RunValidator):
|
|
|
76
65
|
"""RunValidatorPythonRun validator."""
|
|
77
66
|
|
|
78
67
|
# Function parameters
|
|
79
|
-
source: dict = None
|
|
80
|
-
image: str = None
|
|
81
|
-
base_image: str = None
|
|
82
|
-
python_version: str = None
|
|
83
|
-
requirements: list = None
|
|
68
|
+
source: dict | None = None
|
|
69
|
+
image: str | None = None
|
|
70
|
+
base_image: str | None = None
|
|
71
|
+
python_version: str | None = None
|
|
72
|
+
requirements: list | None = None
|
|
84
73
|
|
|
85
74
|
# Task serve
|
|
86
|
-
service_type: str = None
|
|
87
|
-
service_name: str = None
|
|
88
|
-
replicas: int = None
|
|
75
|
+
service_type: str | None = None
|
|
76
|
+
service_name: str | None = None
|
|
77
|
+
replicas: int | None = None
|
|
89
78
|
|
|
90
79
|
# Task build
|
|
91
|
-
instructions: list[str] = None
|
|
80
|
+
instructions: list[str] | None = None
|
|
92
81
|
|
|
93
82
|
# Run parameters
|
|
94
|
-
inputs: dict = None
|
|
83
|
+
inputs: dict | None = None
|
|
95
84
|
"""Run inputs."""
|
|
96
85
|
|
|
97
|
-
parameters: dict = None
|
|
86
|
+
parameters: dict | None = None
|
|
98
87
|
"""Run parameters."""
|
|
99
88
|
|
|
100
|
-
init_parameters: dict = None
|
|
89
|
+
init_parameters: dict | None = None
|
|
101
90
|
"""Init function parameters."""
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: © 2025 DSLab - Fondazione Bruno Kessler
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
import typing
|
|
8
|
+
|
|
9
|
+
import requests
|
|
10
|
+
from digitalhub.utils.exceptions import EntityError
|
|
11
|
+
|
|
12
|
+
from digitalhub_runtime_python.entities.run._base.entity import RunPythonRun
|
|
13
|
+
|
|
14
|
+
if typing.TYPE_CHECKING:
|
|
15
|
+
from digitalhub.entities._base.entity.metadata import Metadata
|
|
16
|
+
|
|
17
|
+
from digitalhub_runtime_python.entities.run.serve.spec import RunSpecPythonRunServe
|
|
18
|
+
from digitalhub_runtime_python.entities.run.serve.status import RunStatusPythonRunServe
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class RunPythonRunServe(RunPythonRun):
|
|
22
|
+
"""
|
|
23
|
+
RunPythonRunServe class.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
def __init__(
|
|
27
|
+
self,
|
|
28
|
+
project: str,
|
|
29
|
+
uuid: str,
|
|
30
|
+
kind: str,
|
|
31
|
+
metadata: Metadata,
|
|
32
|
+
spec: RunSpecPythonRunServe,
|
|
33
|
+
status: RunStatusPythonRunServe,
|
|
34
|
+
user: str | None = None,
|
|
35
|
+
) -> None:
|
|
36
|
+
super().__init__(project, uuid, kind, metadata, spec, status, user)
|
|
37
|
+
|
|
38
|
+
self.spec: RunSpecPythonRunServe
|
|
39
|
+
self.status: RunStatusPythonRunServe
|
|
40
|
+
|
|
41
|
+
def invoke(
|
|
42
|
+
self,
|
|
43
|
+
method: str = "POST",
|
|
44
|
+
url: str | None = None,
|
|
45
|
+
**kwargs,
|
|
46
|
+
) -> requests.Response:
|
|
47
|
+
"""
|
|
48
|
+
Invoke run service endpoint. It uses the service URL from the run
|
|
49
|
+
status if no URL is specified.
|
|
50
|
+
The method defaults to "POST" if data or json is provided in kwargs,
|
|
51
|
+
otherwise it defaults to "GET". The function returns a requests.Response
|
|
52
|
+
object.
|
|
53
|
+
|
|
54
|
+
Parameters
|
|
55
|
+
----------
|
|
56
|
+
method : str
|
|
57
|
+
Method of the request (e.g., "GET", "POST").
|
|
58
|
+
url : str
|
|
59
|
+
URL to invoke. If specified, it must start with the service URL
|
|
60
|
+
(http:// or https:// prefixes are required and stripped before comparison).
|
|
61
|
+
**kwargs : dict
|
|
62
|
+
Keyword arguments to pass to the request.
|
|
63
|
+
|
|
64
|
+
Returns
|
|
65
|
+
-------
|
|
66
|
+
requests.Response
|
|
67
|
+
Response from service.
|
|
68
|
+
"""
|
|
69
|
+
try:
|
|
70
|
+
base_url: str = self.status.service.get("url")
|
|
71
|
+
except AttributeError:
|
|
72
|
+
raise EntityError(
|
|
73
|
+
"Url not specified and service not found on run status."
|
|
74
|
+
" If a service is deploying, use run.wait() or try again later."
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
if url is not None and not url.removeprefix("http://").removeprefix("https://").startswith(base_url):
|
|
78
|
+
raise EntityError(f"Invalid URL: {url}. It must start with the service URL: {base_url}")
|
|
79
|
+
|
|
80
|
+
if url is None:
|
|
81
|
+
url = f"http://{base_url}"
|
|
82
|
+
|
|
83
|
+
if "data" not in kwargs and "json" not in kwargs:
|
|
84
|
+
method = "GET"
|
|
85
|
+
|
|
86
|
+
return requests.request(method=method, url=url, **kwargs)
|
|
@@ -13,31 +13,21 @@ class TaskSpecPythonBuild(TaskSpecFunction):
|
|
|
13
13
|
def __init__(
|
|
14
14
|
self,
|
|
15
15
|
function: str,
|
|
16
|
-
node_selector: list[dict] | None = None,
|
|
17
16
|
volumes: list[dict] | None = None,
|
|
18
17
|
resources: dict | None = None,
|
|
19
|
-
affinity: dict | None = None,
|
|
20
|
-
tolerations: list[dict] | None = None,
|
|
21
18
|
envs: list[dict] | None = None,
|
|
22
19
|
secrets: list[str] | None = None,
|
|
23
20
|
profile: str | None = None,
|
|
24
|
-
runtime_class: str | None = None,
|
|
25
|
-
priority_class: str | None = None,
|
|
26
21
|
instructions: list | None = None,
|
|
27
22
|
**kwargs,
|
|
28
23
|
) -> None:
|
|
29
24
|
super().__init__(
|
|
30
25
|
function,
|
|
31
|
-
node_selector,
|
|
32
26
|
volumes,
|
|
33
27
|
resources,
|
|
34
|
-
affinity,
|
|
35
|
-
tolerations,
|
|
36
28
|
envs,
|
|
37
29
|
secrets,
|
|
38
30
|
profile,
|
|
39
|
-
runtime_class,
|
|
40
|
-
priority_class,
|
|
41
31
|
**kwargs,
|
|
42
32
|
)
|
|
43
33
|
self.instructions = instructions
|
|
@@ -48,5 +38,5 @@ class TaskValidatorPythonBuild(TaskValidatorFunction):
|
|
|
48
38
|
TaskValidatorPythonBuild validator.
|
|
49
39
|
"""
|
|
50
40
|
|
|
51
|
-
instructions: list[str] = None
|
|
41
|
+
instructions: list[str] | None = None
|
|
52
42
|
"""Build instructions."""
|
|
@@ -15,16 +15,11 @@ class TaskSpecPythonServe(TaskSpecFunction):
|
|
|
15
15
|
def __init__(
|
|
16
16
|
self,
|
|
17
17
|
function: str,
|
|
18
|
-
node_selector: list[dict] | None = None,
|
|
19
18
|
volumes: list[dict] | None = None,
|
|
20
19
|
resources: dict | None = None,
|
|
21
|
-
affinity: dict | None = None,
|
|
22
|
-
tolerations: list[dict] | None = None,
|
|
23
20
|
envs: list[dict] | None = None,
|
|
24
21
|
secrets: list[str] | None = None,
|
|
25
22
|
profile: str | None = None,
|
|
26
|
-
runtime_class: str | None = None,
|
|
27
|
-
priority_class: str | None = None,
|
|
28
23
|
replicas: int | None = None,
|
|
29
24
|
service_type: str | None = None,
|
|
30
25
|
service_name: str | None = None,
|
|
@@ -32,16 +27,11 @@ class TaskSpecPythonServe(TaskSpecFunction):
|
|
|
32
27
|
) -> None:
|
|
33
28
|
super().__init__(
|
|
34
29
|
function,
|
|
35
|
-
node_selector,
|
|
36
30
|
volumes,
|
|
37
31
|
resources,
|
|
38
|
-
affinity,
|
|
39
|
-
tolerations,
|
|
40
32
|
envs,
|
|
41
33
|
secrets,
|
|
42
34
|
profile,
|
|
43
|
-
runtime_class,
|
|
44
|
-
priority_class,
|
|
45
35
|
**kwargs,
|
|
46
36
|
)
|
|
47
37
|
self.replicas = replicas
|
|
@@ -54,11 +44,11 @@ class TaskValidatorPythonServe(TaskValidatorFunction):
|
|
|
54
44
|
TaskValidatorPythonServe validator.
|
|
55
45
|
"""
|
|
56
46
|
|
|
57
|
-
replicas: int = Field(default=None, ge=1)
|
|
47
|
+
replicas: int | None = Field(default=None, ge=1)
|
|
58
48
|
"""Number of replicas."""
|
|
59
49
|
|
|
60
|
-
service_type: CoreServiceType = None
|
|
50
|
+
service_type: CoreServiceType | None = None
|
|
61
51
|
"""Service type."""
|
|
62
52
|
|
|
63
|
-
service_name: str = None
|
|
53
|
+
service_name: str | None = None
|
|
64
54
|
"""Service name."""
|