digitalhub-runtime-python 0.15.0b8__tar.gz → 0.15.0b10__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.15.0b8 → digitalhub_runtime_python-0.15.0b10}/.github/workflows/release.yml +3 -3
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/.github/workflows/run_local_test.yml +1 -1
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/.github/workflows/test_release.yml +2 -2
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/PKG-INFO +3 -2
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/__init__.py +76 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/_base/runtime_entity/builder.py +102 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/_commons/enums.py +12 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/guardrail/builder.py +93 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/guardrail/entity.py +69 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/guardrail/spec.py +52 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/guardrail/status.py +13 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/openinference/builder.py +93 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/openinference/entity.py +69 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/openinference/models.py +46 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/openinference/spec.py +63 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/openinference/status.py +13 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/function/python/entity.py +3 -1
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/function/python/spec.py +1 -1
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/function/python/utils.py +35 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/run/_base/entity.py +7 -5
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/guardrail_build/builder.py +28 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/guardrail_build/entity.py +25 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/guardrail_build/spec.py +15 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/guardrail_build/status.py +13 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/guardrail_serve/builder.py +28 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/guardrail_serve/entity.py +25 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/guardrail_serve/spec.py +15 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/guardrail_serve/status.py +13 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/openinference_build/builder.py +28 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/openinference_build/entity.py +25 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/openinference_build/spec.py +15 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/openinference_build/status.py +13 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/openinference_serve/builder.py +28 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/openinference_serve/entity.py +25 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/openinference_serve/spec.py +15 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/openinference_serve/status.py +13 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/run/build → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/python_build}/builder.py +3 -3
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/run/build → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/python_build}/entity.py +2 -2
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/run/job → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/python_job}/builder.py +3 -3
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/run/job → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/python_job}/entity.py +2 -2
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/python_serve/__init__.py +3 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/run/serve → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/python_serve}/builder.py +3 -3
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/run/serve → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/python_serve}/entity.py +2 -2
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/__init__.py +3 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/guardrail_build/__init__.py +3 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/guardrail_build/builder.py +28 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/guardrail_build/entity.py +25 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/guardrail_build/spec.py +42 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/guardrail_build/status.py +13 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/guardrail_serve/__init__.py +3 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/guardrail_serve/builder.py +28 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/guardrail_serve/entity.py +25 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/guardrail_serve/spec.py +54 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/guardrail_serve/status.py +13 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/openinference_build/__init__.py +3 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/openinference_build/builder.py +28 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/openinference_build/entity.py +25 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/openinference_build/spec.py +42 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/openinference_build/status.py +13 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/openinference_serve/__init__.py +3 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/openinference_serve/builder.py +28 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/openinference_serve/entity.py +25 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/openinference_serve/spec.py +54 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/openinference_serve/status.py +13 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/python_build/__init__.py +3 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/task/build → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/python_build}/builder.py +3 -3
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/task/build → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/python_build}/entity.py +2 -2
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/python_job/__init__.py +3 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/task/job → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/python_job}/builder.py +3 -3
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/task/job → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/python_job}/entity.py +2 -2
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/python_serve/__init__.py +3 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/task/serve → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/python_serve}/builder.py +3 -3
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/task/serve → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/python_serve}/entity.py +2 -2
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/runtimes/__init__.py +3 -0
- digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/runtimes/builder.py +38 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/runtimes/runtime.py +22 -20
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/utils/configuration.py +3 -2
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/utils/inputs.py +7 -5
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/utils/outputs.py +6 -4
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/utils/utils.py +0 -36
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/pyproject.toml +4 -3
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/test/instances/test_validate.py +1 -2
- digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/__init__.py +0 -32
- digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/_base/runtime_entity/builder.py +0 -46
- digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/runtimes/builder.py +0 -21
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/.github/scripts/bump.sh +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/.github/scripts/changelog.sh +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/.github/scripts/cliff.toml +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/.gitignore +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/AUTHORS +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/CONTRIBUTING +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/COPYRIGHT +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/LICENSE +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/README.md +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/__init__.py +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/_base/__init__.py +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/_base/runtime_entity/__init__.py +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/_commons/__init__.py +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/function/__init__.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/function/python → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/guardrail}/__init__.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/run → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/openinference}/__init__.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/run/_base → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/python}/__init__.py +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/function/python/builder.py +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/function/python/models.py +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/function/python/status.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/run/build → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run}/__init__.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/run/job → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/_base}/__init__.py +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/run/_base/spec.py +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/run/_base/status.py +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/run/_base/utils.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/run/serve → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/guardrail_build}/__init__.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/task → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/guardrail_serve}/__init__.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/task/build → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/openinference_build}/__init__.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/task/job → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/openinference_serve}/__init__.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/task/serve → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/python_build}/__init__.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/run/build → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/python_build}/spec.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/run/build → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/python_build}/status.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/runtimes → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/python_job}/__init__.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/run/job → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/python_job}/spec.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/run/job → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/python_job}/status.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/run/serve → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/python_serve}/spec.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/run/serve → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/python_serve}/status.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/task/build → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/python_build}/spec.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/task/build → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/python_build}/status.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/task/job → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/python_job}/spec.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/task/job → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/python_job}/status.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/task/serve → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/python_serve}/spec.py +0 -0
- {digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/task/serve → digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/python_serve}/status.py +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/test/instances/entities/function/function-python-git.json +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/test/instances/entities/function/function-python-local.json +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/test/instances/entities/function/function-python-zip.json +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/test/instances/entities/run/run-python+build:run.json +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/test/instances/entities/run/run-python+job:run.json +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/test/instances/entities/run/run-python+serve:run.json +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/test/instances/entities/task/task-python+build.json +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/test/instances/entities/task/task-python+job.json +0 -0
- {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/test/instances/entities/task/task-python+serve.json +0 -0
|
@@ -31,7 +31,7 @@ jobs:
|
|
|
31
31
|
- uses: actions/checkout@v4
|
|
32
32
|
- uses: actions/setup-python@v5
|
|
33
33
|
with:
|
|
34
|
-
python-version: "3.
|
|
34
|
+
python-version: "3.12"
|
|
35
35
|
|
|
36
36
|
- name: Install bumpver
|
|
37
37
|
run: python -m pip install bumpver
|
|
@@ -67,7 +67,7 @@ jobs:
|
|
|
67
67
|
ref: ${{ github.ref }}
|
|
68
68
|
- uses: actions/setup-python@v5
|
|
69
69
|
with:
|
|
70
|
-
python-version: "3.
|
|
70
|
+
python-version: "3.12"
|
|
71
71
|
|
|
72
72
|
# Build wheel to upload
|
|
73
73
|
- name: Install build and build a binary wheel
|
|
@@ -91,7 +91,7 @@ jobs:
|
|
|
91
91
|
|
|
92
92
|
- uses: actions/setup-python@v5
|
|
93
93
|
with:
|
|
94
|
-
python-version: "3.
|
|
94
|
+
python-version: "3.12"
|
|
95
95
|
|
|
96
96
|
- name: Install cliff
|
|
97
97
|
run: python -m pip install git-cliff
|
|
@@ -31,7 +31,7 @@ jobs:
|
|
|
31
31
|
- uses: actions/checkout@v4
|
|
32
32
|
- uses: actions/setup-python@v5
|
|
33
33
|
with:
|
|
34
|
-
python-version: "3.
|
|
34
|
+
python-version: "3.12"
|
|
35
35
|
|
|
36
36
|
- name: Install bumpver
|
|
37
37
|
run: python -m pip install bumpver
|
|
@@ -59,7 +59,7 @@ jobs:
|
|
|
59
59
|
|
|
60
60
|
- uses: actions/setup-python@v5
|
|
61
61
|
with:
|
|
62
|
-
python-version: "3.
|
|
62
|
+
python-version: "3.12"
|
|
63
63
|
|
|
64
64
|
- name: Install cliff
|
|
65
65
|
run: python -m pip install git-cliff
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: digitalhub-runtime-python
|
|
3
|
-
Version: 0.15.
|
|
3
|
+
Version: 0.15.0b10
|
|
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>
|
|
@@ -213,7 +213,8 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
213
213
|
Classifier: Programming Language :: Python :: 3.11
|
|
214
214
|
Classifier: Programming Language :: Python :: 3.12
|
|
215
215
|
Classifier: Programming Language :: Python :: 3.13
|
|
216
|
-
|
|
216
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
217
|
+
Requires-Python: <3.15,>=3.10
|
|
217
218
|
Requires-Dist: digitalhub[full]<0.16,>=0.15.0b
|
|
218
219
|
Requires-Dist: msgpack
|
|
219
220
|
Requires-Dist: nuclio-sdk
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: © 2025 DSLab - Fondazione Bruno Kessler
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
from digitalhub_runtime_python.entities._commons.enums import EntityKinds
|
|
5
|
+
from digitalhub_runtime_python.entities.function.guardrail.builder import FunctionGuardrailBuilder
|
|
6
|
+
from digitalhub_runtime_python.entities.function.openinference.builder import FunctionOpeninferenceBuilder
|
|
7
|
+
from digitalhub_runtime_python.entities.function.python.builder import FunctionPythonBuilder
|
|
8
|
+
from digitalhub_runtime_python.entities.run.guardrail_build.builder import RunGuardrailRunBuildBuilder
|
|
9
|
+
from digitalhub_runtime_python.entities.run.guardrail_serve.builder import RunGuardrailRunServeBuilder
|
|
10
|
+
from digitalhub_runtime_python.entities.run.openinference_build.builder import RunOpeninferenceRunBuildBuilder
|
|
11
|
+
from digitalhub_runtime_python.entities.run.openinference_serve.builder import RunOpeninferenceRunServeBuilder
|
|
12
|
+
from digitalhub_runtime_python.entities.run.python_build.builder import RunPythonRunBuildBuilder
|
|
13
|
+
from digitalhub_runtime_python.entities.run.python_job.builder import RunPythonRunJobBuilder
|
|
14
|
+
from digitalhub_runtime_python.entities.run.python_serve.builder import RunPythonRunServeBuilder
|
|
15
|
+
from digitalhub_runtime_python.entities.task.guardrail_build.builder import TaskGuardrailBuildBuilder
|
|
16
|
+
from digitalhub_runtime_python.entities.task.guardrail_serve.builder import TaskGuardrailServeBuilder
|
|
17
|
+
from digitalhub_runtime_python.entities.task.openinference_build.builder import TaskOpeninferenceBuildBuilder
|
|
18
|
+
from digitalhub_runtime_python.entities.task.openinference_serve.builder import TaskOpeninferenceServeBuilder
|
|
19
|
+
from digitalhub_runtime_python.entities.task.python_build.builder import TaskPythonBuildBuilder
|
|
20
|
+
from digitalhub_runtime_python.entities.task.python_job.builder import TaskPythonJobBuilder
|
|
21
|
+
from digitalhub_runtime_python.entities.task.python_serve.builder import TaskPythonServeBuilder
|
|
22
|
+
from digitalhub_runtime_python.utils.utils import handler
|
|
23
|
+
|
|
24
|
+
entity_builders = (
|
|
25
|
+
(EntityKinds.FUNCTION_GUARDRAIL.value, FunctionGuardrailBuilder),
|
|
26
|
+
(EntityKinds.FUNCTION_OPENINFERENCE.value, FunctionOpeninferenceBuilder),
|
|
27
|
+
(EntityKinds.FUNCTION_PYTHON.value, FunctionPythonBuilder),
|
|
28
|
+
(EntityKinds.RUN_GUARDRAIL_BUILD.value, RunGuardrailRunBuildBuilder),
|
|
29
|
+
(EntityKinds.RUN_GUARDRAIL_SERVE.value, RunGuardrailRunServeBuilder),
|
|
30
|
+
(EntityKinds.RUN_OPENINFERENCE_BUILD.value, RunOpeninferenceRunBuildBuilder),
|
|
31
|
+
(EntityKinds.RUN_OPENINFERENCE_SERVE.value, RunOpeninferenceRunServeBuilder),
|
|
32
|
+
(EntityKinds.RUN_PYTHON_BUILD.value, RunPythonRunBuildBuilder),
|
|
33
|
+
(EntityKinds.RUN_PYTHON_JOB.value, RunPythonRunJobBuilder),
|
|
34
|
+
(EntityKinds.RUN_PYTHON_SERVE.value, RunPythonRunServeBuilder),
|
|
35
|
+
(EntityKinds.TASK_GUARDRAIL_BUILD.value, TaskGuardrailBuildBuilder),
|
|
36
|
+
(EntityKinds.TASK_GUARDRAIL_SERVE.value, TaskGuardrailServeBuilder),
|
|
37
|
+
(EntityKinds.TASK_OPENINFERENCE_BUILD.value, TaskOpeninferenceBuildBuilder),
|
|
38
|
+
(EntityKinds.TASK_OPENINFERENCE_SERVE.value, TaskOpeninferenceServeBuilder),
|
|
39
|
+
(EntityKinds.TASK_PYTHON_BUILD.value, TaskPythonBuildBuilder),
|
|
40
|
+
(EntityKinds.TASK_PYTHON_JOB.value, TaskPythonJobBuilder),
|
|
41
|
+
(EntityKinds.TASK_PYTHON_SERVE.value, TaskPythonServeBuilder),
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
try:
|
|
45
|
+
from digitalhub_runtime_python.runtimes.builder import (
|
|
46
|
+
RuntimeGuardrailBuilder,
|
|
47
|
+
RuntimeOpeninferenceBuilder,
|
|
48
|
+
RuntimePythonBuilder,
|
|
49
|
+
RuntimePythonJobBuilder,
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
runtime_builders = (
|
|
53
|
+
(EntityKinds.FUNCTION_GUARDRAIL.value, RuntimeGuardrailBuilder),
|
|
54
|
+
(EntityKinds.FUNCTION_OPENINFERENCE.value, RuntimeOpeninferenceBuilder),
|
|
55
|
+
(EntityKinds.FUNCTION_PYTHON.value, RuntimePythonBuilder),
|
|
56
|
+
(EntityKinds.RUN_GUARDRAIL_BUILD.value, RuntimeGuardrailBuilder),
|
|
57
|
+
(EntityKinds.RUN_GUARDRAIL_SERVE.value, RuntimeGuardrailBuilder),
|
|
58
|
+
(EntityKinds.RUN_OPENINFERENCE_BUILD.value, RuntimeOpeninferenceBuilder),
|
|
59
|
+
(EntityKinds.RUN_OPENINFERENCE_SERVE.value, RuntimeOpeninferenceBuilder),
|
|
60
|
+
(EntityKinds.RUN_PYTHON_BUILD.value, RuntimePythonBuilder),
|
|
61
|
+
(EntityKinds.RUN_PYTHON_JOB.value, RuntimePythonJobBuilder),
|
|
62
|
+
(EntityKinds.RUN_PYTHON_SERVE.value, RuntimePythonBuilder),
|
|
63
|
+
(EntityKinds.TASK_GUARDRAIL_BUILD.value, RuntimeGuardrailBuilder),
|
|
64
|
+
(EntityKinds.TASK_GUARDRAIL_SERVE.value, RuntimeGuardrailBuilder),
|
|
65
|
+
(EntityKinds.TASK_OPENINFERENCE_BUILD.value, RuntimeOpeninferenceBuilder),
|
|
66
|
+
(EntityKinds.TASK_OPENINFERENCE_SERVE.value, RuntimeOpeninferenceBuilder),
|
|
67
|
+
(EntityKinds.TASK_PYTHON_BUILD.value, RuntimePythonBuilder),
|
|
68
|
+
(EntityKinds.TASK_PYTHON_JOB.value, RuntimePythonJobBuilder),
|
|
69
|
+
(EntityKinds.TASK_PYTHON_SERVE.value, RuntimePythonBuilder),
|
|
70
|
+
)
|
|
71
|
+
except ImportError as e:
|
|
72
|
+
from digitalhub.utils.logger.logger import get_logger
|
|
73
|
+
|
|
74
|
+
logger = get_logger(__name__)
|
|
75
|
+
logger.debug(f"Error importing runtime builders: {e}")
|
|
76
|
+
runtime_builders = tuple()
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: © 2025 DSLab - Fondazione Bruno Kessler
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from digitalhub.entities._base.runtime_entity.builder import RuntimeEntityBuilder
|
|
8
|
+
from digitalhub.entities._commons.utils import map_actions
|
|
9
|
+
|
|
10
|
+
from digitalhub_runtime_python.entities._commons.enums import Actions, EntityKinds
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class RuntimeEntityBuilderPython(RuntimeEntityBuilder):
|
|
14
|
+
EXECUTABLE_KIND = EntityKinds.FUNCTION_PYTHON.value
|
|
15
|
+
TASKS_KINDS = map_actions(
|
|
16
|
+
[
|
|
17
|
+
(
|
|
18
|
+
EntityKinds.TASK_PYTHON_JOB.value,
|
|
19
|
+
Actions.JOB.value,
|
|
20
|
+
),
|
|
21
|
+
(
|
|
22
|
+
EntityKinds.TASK_PYTHON_BUILD.value,
|
|
23
|
+
Actions.BUILD.value,
|
|
24
|
+
),
|
|
25
|
+
(
|
|
26
|
+
EntityKinds.TASK_PYTHON_SERVE.value,
|
|
27
|
+
Actions.SERVE.value,
|
|
28
|
+
),
|
|
29
|
+
]
|
|
30
|
+
)
|
|
31
|
+
RUN_KINDS = map_actions(
|
|
32
|
+
[
|
|
33
|
+
(
|
|
34
|
+
EntityKinds.RUN_PYTHON_JOB.value,
|
|
35
|
+
Actions.JOB.value,
|
|
36
|
+
),
|
|
37
|
+
(
|
|
38
|
+
EntityKinds.RUN_PYTHON_BUILD.value,
|
|
39
|
+
Actions.BUILD.value,
|
|
40
|
+
),
|
|
41
|
+
(
|
|
42
|
+
EntityKinds.RUN_PYTHON_SERVE.value,
|
|
43
|
+
Actions.SERVE.value,
|
|
44
|
+
),
|
|
45
|
+
]
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class RuntimeEntityBuilderOpeninference(RuntimeEntityBuilder):
|
|
50
|
+
EXECUTABLE_KIND = EntityKinds.FUNCTION_OPENINFERENCE.value
|
|
51
|
+
TASKS_KINDS = map_actions(
|
|
52
|
+
[
|
|
53
|
+
(
|
|
54
|
+
EntityKinds.TASK_OPENINFERENCE_BUILD.value,
|
|
55
|
+
Actions.BUILD.value,
|
|
56
|
+
),
|
|
57
|
+
(
|
|
58
|
+
EntityKinds.TASK_OPENINFERENCE_SERVE.value,
|
|
59
|
+
Actions.SERVE.value,
|
|
60
|
+
),
|
|
61
|
+
]
|
|
62
|
+
)
|
|
63
|
+
RUN_KINDS = map_actions(
|
|
64
|
+
[
|
|
65
|
+
(
|
|
66
|
+
EntityKinds.RUN_OPENINFERENCE_BUILD.value,
|
|
67
|
+
Actions.BUILD.value,
|
|
68
|
+
),
|
|
69
|
+
(
|
|
70
|
+
EntityKinds.RUN_OPENINFERENCE_SERVE.value,
|
|
71
|
+
Actions.SERVE.value,
|
|
72
|
+
),
|
|
73
|
+
]
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
class RuntimeEntityBuilderGuardrail(RuntimeEntityBuilder):
|
|
78
|
+
EXECUTABLE_KIND = EntityKinds.FUNCTION_GUARDRAIL.value
|
|
79
|
+
TASKS_KINDS = map_actions(
|
|
80
|
+
[
|
|
81
|
+
(
|
|
82
|
+
EntityKinds.TASK_GUARDRAIL_BUILD.value,
|
|
83
|
+
Actions.BUILD.value,
|
|
84
|
+
),
|
|
85
|
+
(
|
|
86
|
+
EntityKinds.TASK_GUARDRAIL_SERVE.value,
|
|
87
|
+
Actions.SERVE.value,
|
|
88
|
+
),
|
|
89
|
+
]
|
|
90
|
+
)
|
|
91
|
+
RUN_KINDS = map_actions(
|
|
92
|
+
[
|
|
93
|
+
(
|
|
94
|
+
EntityKinds.RUN_GUARDRAIL_BUILD.value,
|
|
95
|
+
Actions.BUILD.value,
|
|
96
|
+
),
|
|
97
|
+
(
|
|
98
|
+
EntityKinds.RUN_GUARDRAIL_SERVE.value,
|
|
99
|
+
Actions.SERVE.value,
|
|
100
|
+
),
|
|
101
|
+
]
|
|
102
|
+
)
|
|
@@ -20,6 +20,18 @@ class EntityKinds(Enum):
|
|
|
20
20
|
RUN_PYTHON_JOB = "python+job:run"
|
|
21
21
|
RUN_PYTHON_SERVE = "python+serve:run"
|
|
22
22
|
|
|
23
|
+
FUNCTION_OPENINFERENCE = "openinference"
|
|
24
|
+
TASK_OPENINFERENCE_BUILD = "openinference+build"
|
|
25
|
+
TASK_OPENINFERENCE_SERVE = "openinference+serve"
|
|
26
|
+
RUN_OPENINFERENCE_BUILD = "openinference+build:run"
|
|
27
|
+
RUN_OPENINFERENCE_SERVE = "openinference+serve:run"
|
|
28
|
+
|
|
29
|
+
FUNCTION_GUARDRAIL = "guardrail"
|
|
30
|
+
TASK_GUARDRAIL_BUILD = "guardrail+build"
|
|
31
|
+
TASK_GUARDRAIL_SERVE = "guardrail+serve"
|
|
32
|
+
RUN_GUARDRAIL_BUILD = "guardrail+build:run"
|
|
33
|
+
RUN_GUARDRAIL_SERVE = "guardrail+serve:run"
|
|
34
|
+
|
|
23
35
|
|
|
24
36
|
class Actions(Enum):
|
|
25
37
|
"""
|
digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/guardrail/builder.py
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: © 2025 DSLab - Fondazione Bruno Kessler
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from digitalhub.entities.function._base.builder import FunctionBuilder
|
|
8
|
+
|
|
9
|
+
from digitalhub_runtime_python.entities._base.runtime_entity.builder import RuntimeEntityBuilderGuardrail
|
|
10
|
+
from digitalhub_runtime_python.entities._commons.enums import EntityKinds
|
|
11
|
+
from digitalhub_runtime_python.entities.function.guardrail.entity import FunctionGuardrail
|
|
12
|
+
from digitalhub_runtime_python.entities.function.guardrail.spec import (
|
|
13
|
+
FunctionSpecGuardrail,
|
|
14
|
+
FunctionValidatorGuardrail,
|
|
15
|
+
)
|
|
16
|
+
from digitalhub_runtime_python.entities.function.guardrail.status import FunctionStatusGuardrail
|
|
17
|
+
from digitalhub_runtime_python.entities.function.python.utils import source_check, source_post_check
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class FunctionGuardrailBuilder(FunctionBuilder, RuntimeEntityBuilderGuardrail):
|
|
21
|
+
"""
|
|
22
|
+
FunctionGuardrail builder.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
ENTITY_CLASS = FunctionGuardrail
|
|
26
|
+
ENTITY_SPEC_CLASS = FunctionSpecGuardrail
|
|
27
|
+
ENTITY_SPEC_VALIDATOR = FunctionValidatorGuardrail
|
|
28
|
+
ENTITY_STATUS_CLASS = FunctionStatusGuardrail
|
|
29
|
+
ENTITY_KIND = EntityKinds.FUNCTION_GUARDRAIL.value
|
|
30
|
+
|
|
31
|
+
def build(
|
|
32
|
+
self,
|
|
33
|
+
kind: str,
|
|
34
|
+
project: str,
|
|
35
|
+
name: str,
|
|
36
|
+
uuid: str | None = None,
|
|
37
|
+
description: str | None = None,
|
|
38
|
+
labels: list[str] | None = None,
|
|
39
|
+
embedded: bool = False,
|
|
40
|
+
**kwargs,
|
|
41
|
+
) -> FunctionGuardrail:
|
|
42
|
+
kwargs = source_check(**kwargs)
|
|
43
|
+
obj = super().build(
|
|
44
|
+
kind,
|
|
45
|
+
project,
|
|
46
|
+
name,
|
|
47
|
+
uuid,
|
|
48
|
+
description,
|
|
49
|
+
labels,
|
|
50
|
+
embedded,
|
|
51
|
+
**kwargs,
|
|
52
|
+
)
|
|
53
|
+
return source_post_check(obj)
|
|
54
|
+
|
|
55
|
+
def from_dict(self, obj: dict) -> FunctionGuardrail:
|
|
56
|
+
"""
|
|
57
|
+
Create a new object from dictionary.
|
|
58
|
+
|
|
59
|
+
Parameters
|
|
60
|
+
----------
|
|
61
|
+
obj : dict
|
|
62
|
+
Dictionary to create object from.
|
|
63
|
+
|
|
64
|
+
Returns
|
|
65
|
+
-------
|
|
66
|
+
FunctionGuardrail
|
|
67
|
+
Object instance.
|
|
68
|
+
"""
|
|
69
|
+
entity = super().from_dict(obj)
|
|
70
|
+
return source_post_check(entity)
|
|
71
|
+
|
|
72
|
+
def _parse_dict(self, obj: dict) -> dict:
|
|
73
|
+
"""
|
|
74
|
+
Get dictionary and parse it to a valid entity dictionary.
|
|
75
|
+
|
|
76
|
+
Parameters
|
|
77
|
+
----------
|
|
78
|
+
obj : dict
|
|
79
|
+
Dictionary to parse.
|
|
80
|
+
|
|
81
|
+
Returns
|
|
82
|
+
-------
|
|
83
|
+
dict
|
|
84
|
+
A dictionary containing the attributes of the entity instance.
|
|
85
|
+
"""
|
|
86
|
+
# Look for source in spec
|
|
87
|
+
if spec_dict := obj.get("spec", {}):
|
|
88
|
+
# Check source
|
|
89
|
+
source = spec_dict.get("source", {})
|
|
90
|
+
if source:
|
|
91
|
+
spec_dict["source"] = source_check(source=source)["source"]
|
|
92
|
+
|
|
93
|
+
return super()._parse_dict(obj)
|
digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/guardrail/entity.py
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
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
|
+
from digitalhub.entities.function._base.entity import Function
|
|
10
|
+
from digitalhub.utils.generic_utils import decode_base64_string
|
|
11
|
+
from digitalhub.utils.io_utils import write_text
|
|
12
|
+
from digitalhub.utils.uri_utils import has_local_scheme
|
|
13
|
+
|
|
14
|
+
from digitalhub_runtime_python.entities.function.python.utils import read_installed_packages
|
|
15
|
+
|
|
16
|
+
if typing.TYPE_CHECKING:
|
|
17
|
+
from digitalhub_runtime_python.entities.function.guardrail.spec import FunctionSpecGuardrail
|
|
18
|
+
from digitalhub_runtime_python.entities.function.guardrail.status import FunctionStatusGuardrail
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class FunctionGuardrail(Function):
|
|
22
|
+
"""
|
|
23
|
+
FunctionGuardrail class.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
def __init__(self, *args, **kwargs) -> None:
|
|
27
|
+
super().__init__(*args, **kwargs)
|
|
28
|
+
|
|
29
|
+
self.spec: FunctionSpecGuardrail
|
|
30
|
+
self.status: FunctionStatusGuardrail
|
|
31
|
+
|
|
32
|
+
def export(self) -> str:
|
|
33
|
+
"""
|
|
34
|
+
Export object as a YAML file in the context folder.
|
|
35
|
+
|
|
36
|
+
Returns
|
|
37
|
+
-------
|
|
38
|
+
str
|
|
39
|
+
Exported filepath.
|
|
40
|
+
"""
|
|
41
|
+
# Strip base64 from source at following conditions:
|
|
42
|
+
# - source is local path
|
|
43
|
+
# - base64 is not None
|
|
44
|
+
|
|
45
|
+
# Check source
|
|
46
|
+
source = self.spec.source.get("source")
|
|
47
|
+
if source is not None and has_local_scheme(source):
|
|
48
|
+
# Check base64. If it is set, decode it in a local file
|
|
49
|
+
# save in variable to restore on object after export
|
|
50
|
+
base64 = self.spec.source.pop("base64", None)
|
|
51
|
+
if base64 is not None:
|
|
52
|
+
# Write local file
|
|
53
|
+
src_pth = self._context().root / source
|
|
54
|
+
write_text(src_pth, decode_base64_string(base64))
|
|
55
|
+
|
|
56
|
+
# Export and restore base64, then return
|
|
57
|
+
pth = super().export()
|
|
58
|
+
self.spec.source["base64"] = base64
|
|
59
|
+
return pth
|
|
60
|
+
|
|
61
|
+
return super().export()
|
|
62
|
+
|
|
63
|
+
def _post_create_hook_before_save(self) -> None:
|
|
64
|
+
"""
|
|
65
|
+
Hook method called after the creation of the entity but before saving
|
|
66
|
+
in Core.
|
|
67
|
+
Can be overridden in subclasses to implement custom behavior.
|
|
68
|
+
"""
|
|
69
|
+
self.spec.requirements = read_installed_packages(self.spec.requirements)
|
digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/guardrail/spec.py
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: © 2025 DSLab - Fondazione Bruno Kessler
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from digitalhub.entities.function._base.spec import FunctionSpec, FunctionValidator
|
|
8
|
+
|
|
9
|
+
from digitalhub_runtime_python.entities.function.python.models import PythonVersion, SourceValidator
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class FunctionSpecGuardrail(FunctionSpec):
|
|
13
|
+
"""
|
|
14
|
+
FunctionSpecGuardrail specifications.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
def __init__(
|
|
18
|
+
self,
|
|
19
|
+
source: dict | None = None,
|
|
20
|
+
image: str | None = None,
|
|
21
|
+
base_image: str | None = None,
|
|
22
|
+
python_version: str | None = None,
|
|
23
|
+
requirements: list | None = None,
|
|
24
|
+
) -> None:
|
|
25
|
+
super().__init__()
|
|
26
|
+
|
|
27
|
+
self.image = image
|
|
28
|
+
self.base_image = base_image
|
|
29
|
+
self.python_version = python_version
|
|
30
|
+
self.requirements = requirements
|
|
31
|
+
self.source = source
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class FunctionValidatorGuardrail(FunctionValidator):
|
|
35
|
+
"""
|
|
36
|
+
FunctionValidatorGuardrail validator.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
source: SourceValidator
|
|
40
|
+
"""Source code validator"""
|
|
41
|
+
|
|
42
|
+
python_version: PythonVersion
|
|
43
|
+
"Python version"
|
|
44
|
+
|
|
45
|
+
image: str | None = None
|
|
46
|
+
"Image where the function will be executed"
|
|
47
|
+
|
|
48
|
+
base_image: str | None = None
|
|
49
|
+
"Base image used to build the image where the function will be executed"
|
|
50
|
+
|
|
51
|
+
requirements: list[str] | None = None
|
|
52
|
+
"Requirements list to be installed in the image where the function will be executed"
|
digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/guardrail/status.py
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: © 2025 DSLab - Fondazione Bruno Kessler
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from digitalhub.entities.function._base.status import FunctionStatus
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class FunctionStatusGuardrail(FunctionStatus):
|
|
11
|
+
"""
|
|
12
|
+
FunctionStatusGuardrail status.
|
|
13
|
+
"""
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: © 2025 DSLab - Fondazione Bruno Kessler
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from digitalhub.entities.function._base.builder import FunctionBuilder
|
|
8
|
+
|
|
9
|
+
from digitalhub_runtime_python.entities._base.runtime_entity.builder import RuntimeEntityBuilderOpeninference
|
|
10
|
+
from digitalhub_runtime_python.entities._commons.enums import EntityKinds
|
|
11
|
+
from digitalhub_runtime_python.entities.function.openinference.entity import FunctionOpeninference
|
|
12
|
+
from digitalhub_runtime_python.entities.function.openinference.spec import (
|
|
13
|
+
FunctionSpecOpeninference,
|
|
14
|
+
FunctionValidatorOpeninference,
|
|
15
|
+
)
|
|
16
|
+
from digitalhub_runtime_python.entities.function.openinference.status import FunctionStatusOpeninference
|
|
17
|
+
from digitalhub_runtime_python.entities.function.python.utils import source_check, source_post_check
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class FunctionOpeninferenceBuilder(FunctionBuilder, RuntimeEntityBuilderOpeninference):
|
|
21
|
+
"""
|
|
22
|
+
FunctionOpeninference builder.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
ENTITY_CLASS = FunctionOpeninference
|
|
26
|
+
ENTITY_SPEC_CLASS = FunctionSpecOpeninference
|
|
27
|
+
ENTITY_SPEC_VALIDATOR = FunctionValidatorOpeninference
|
|
28
|
+
ENTITY_STATUS_CLASS = FunctionStatusOpeninference
|
|
29
|
+
ENTITY_KIND = EntityKinds.FUNCTION_OPENINFERENCE.value
|
|
30
|
+
|
|
31
|
+
def build(
|
|
32
|
+
self,
|
|
33
|
+
kind: str,
|
|
34
|
+
project: str,
|
|
35
|
+
name: str,
|
|
36
|
+
uuid: str | None = None,
|
|
37
|
+
description: str | None = None,
|
|
38
|
+
labels: list[str] | None = None,
|
|
39
|
+
embedded: bool = False,
|
|
40
|
+
**kwargs,
|
|
41
|
+
) -> FunctionOpeninference:
|
|
42
|
+
kwargs = source_check(**kwargs)
|
|
43
|
+
obj = super().build(
|
|
44
|
+
kind,
|
|
45
|
+
project,
|
|
46
|
+
name,
|
|
47
|
+
uuid,
|
|
48
|
+
description,
|
|
49
|
+
labels,
|
|
50
|
+
embedded,
|
|
51
|
+
**kwargs,
|
|
52
|
+
)
|
|
53
|
+
return source_post_check(obj)
|
|
54
|
+
|
|
55
|
+
def from_dict(self, obj: dict) -> FunctionOpeninference:
|
|
56
|
+
"""
|
|
57
|
+
Create a new object from dictionary.
|
|
58
|
+
|
|
59
|
+
Parameters
|
|
60
|
+
----------
|
|
61
|
+
obj : dict
|
|
62
|
+
Dictionary to create object from.
|
|
63
|
+
|
|
64
|
+
Returns
|
|
65
|
+
-------
|
|
66
|
+
FunctionOpeninference
|
|
67
|
+
Object instance.
|
|
68
|
+
"""
|
|
69
|
+
entity = super().from_dict(obj)
|
|
70
|
+
return source_post_check(entity)
|
|
71
|
+
|
|
72
|
+
def _parse_dict(self, obj: dict) -> dict:
|
|
73
|
+
"""
|
|
74
|
+
Get dictionary and parse it to a valid entity dictionary.
|
|
75
|
+
|
|
76
|
+
Parameters
|
|
77
|
+
----------
|
|
78
|
+
obj : dict
|
|
79
|
+
Dictionary to parse.
|
|
80
|
+
|
|
81
|
+
Returns
|
|
82
|
+
-------
|
|
83
|
+
dict
|
|
84
|
+
A dictionary containing the attributes of the entity instance.
|
|
85
|
+
"""
|
|
86
|
+
# Look for source in spec
|
|
87
|
+
if spec_dict := obj.get("spec", {}):
|
|
88
|
+
# Check source
|
|
89
|
+
source = spec_dict.get("source", {})
|
|
90
|
+
if source:
|
|
91
|
+
spec_dict["source"] = source_check(source=source)["source"]
|
|
92
|
+
|
|
93
|
+
return super()._parse_dict(obj)
|
|
@@ -0,0 +1,69 @@
|
|
|
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
|
+
from digitalhub.entities.function._base.entity import Function
|
|
10
|
+
from digitalhub.utils.generic_utils import decode_base64_string
|
|
11
|
+
from digitalhub.utils.io_utils import write_text
|
|
12
|
+
from digitalhub.utils.uri_utils import has_local_scheme
|
|
13
|
+
|
|
14
|
+
from digitalhub_runtime_python.entities.function.python.utils import read_installed_packages
|
|
15
|
+
|
|
16
|
+
if typing.TYPE_CHECKING:
|
|
17
|
+
from digitalhub_runtime_python.entities.function.openinference.spec import FunctionSpecOpeninference
|
|
18
|
+
from digitalhub_runtime_python.entities.function.openinference.status import FunctionStatusOpeninference
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class FunctionOpeninference(Function):
|
|
22
|
+
"""
|
|
23
|
+
FunctionOpeninference class.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
def __init__(self, *args, **kwargs) -> None:
|
|
27
|
+
super().__init__(*args, **kwargs)
|
|
28
|
+
|
|
29
|
+
self.spec: FunctionSpecOpeninference
|
|
30
|
+
self.status: FunctionStatusOpeninference
|
|
31
|
+
|
|
32
|
+
def export(self) -> str:
|
|
33
|
+
"""
|
|
34
|
+
Export object as a YAML file in the context folder.
|
|
35
|
+
|
|
36
|
+
Returns
|
|
37
|
+
-------
|
|
38
|
+
str
|
|
39
|
+
Exported filepath.
|
|
40
|
+
"""
|
|
41
|
+
# Strip base64 from source at following conditions:
|
|
42
|
+
# - source is local path
|
|
43
|
+
# - base64 is not None
|
|
44
|
+
|
|
45
|
+
# Check source
|
|
46
|
+
source = self.spec.source.get("source")
|
|
47
|
+
if source is not None and has_local_scheme(source):
|
|
48
|
+
# Check base64. If it is set, decode it in a local file
|
|
49
|
+
# save in variable to restore on object after export
|
|
50
|
+
base64 = self.spec.source.pop("base64", None)
|
|
51
|
+
if base64 is not None:
|
|
52
|
+
# Write local file
|
|
53
|
+
src_pth = self._context().root / source
|
|
54
|
+
write_text(src_pth, decode_base64_string(base64))
|
|
55
|
+
|
|
56
|
+
# Export and restore base64, then return
|
|
57
|
+
pth = super().export()
|
|
58
|
+
self.spec.source["base64"] = base64
|
|
59
|
+
return pth
|
|
60
|
+
|
|
61
|
+
return super().export()
|
|
62
|
+
|
|
63
|
+
def _post_create_hook_before_save(self) -> None:
|
|
64
|
+
"""
|
|
65
|
+
Hook method called after the creation of the entity but before saving
|
|
66
|
+
in Core.
|
|
67
|
+
Can be overridden in subclasses to implement custom behavior.
|
|
68
|
+
"""
|
|
69
|
+
self.spec.requirements = read_installed_packages(self.spec.requirements)
|