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.
Files changed (137) hide show
  1. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/.github/workflows/release.yml +3 -3
  2. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/.github/workflows/run_local_test.yml +1 -1
  3. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/.github/workflows/test_release.yml +2 -2
  4. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/PKG-INFO +3 -2
  5. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/__init__.py +76 -0
  6. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/_base/runtime_entity/builder.py +102 -0
  7. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/_commons/enums.py +12 -0
  8. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/guardrail/builder.py +93 -0
  9. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/guardrail/entity.py +69 -0
  10. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/guardrail/spec.py +52 -0
  11. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/guardrail/status.py +13 -0
  12. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/openinference/builder.py +93 -0
  13. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/openinference/entity.py +69 -0
  14. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/openinference/models.py +46 -0
  15. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/openinference/spec.py +63 -0
  16. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/function/openinference/status.py +13 -0
  17. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/function/python/entity.py +3 -1
  18. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/function/python/spec.py +1 -1
  19. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/function/python/utils.py +35 -0
  20. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/run/_base/entity.py +7 -5
  21. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/guardrail_build/builder.py +28 -0
  22. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/guardrail_build/entity.py +25 -0
  23. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/guardrail_build/spec.py +15 -0
  24. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/guardrail_build/status.py +13 -0
  25. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/guardrail_serve/builder.py +28 -0
  26. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/guardrail_serve/entity.py +25 -0
  27. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/guardrail_serve/spec.py +15 -0
  28. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/guardrail_serve/status.py +13 -0
  29. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/openinference_build/builder.py +28 -0
  30. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/openinference_build/entity.py +25 -0
  31. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/openinference_build/spec.py +15 -0
  32. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/openinference_build/status.py +13 -0
  33. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/openinference_serve/builder.py +28 -0
  34. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/openinference_serve/entity.py +25 -0
  35. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/openinference_serve/spec.py +15 -0
  36. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/openinference_serve/status.py +13 -0
  37. {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
  38. {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
  39. {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
  40. {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
  41. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/run/python_serve/__init__.py +3 -0
  42. {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
  43. {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
  44. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/__init__.py +3 -0
  45. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/guardrail_build/__init__.py +3 -0
  46. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/guardrail_build/builder.py +28 -0
  47. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/guardrail_build/entity.py +25 -0
  48. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/guardrail_build/spec.py +42 -0
  49. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/guardrail_build/status.py +13 -0
  50. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/guardrail_serve/__init__.py +3 -0
  51. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/guardrail_serve/builder.py +28 -0
  52. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/guardrail_serve/entity.py +25 -0
  53. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/guardrail_serve/spec.py +54 -0
  54. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/guardrail_serve/status.py +13 -0
  55. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/openinference_build/__init__.py +3 -0
  56. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/openinference_build/builder.py +28 -0
  57. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/openinference_build/entity.py +25 -0
  58. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/openinference_build/spec.py +42 -0
  59. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/openinference_build/status.py +13 -0
  60. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/openinference_serve/__init__.py +3 -0
  61. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/openinference_serve/builder.py +28 -0
  62. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/openinference_serve/entity.py +25 -0
  63. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/openinference_serve/spec.py +54 -0
  64. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/openinference_serve/status.py +13 -0
  65. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/python_build/__init__.py +3 -0
  66. {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
  67. {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
  68. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/python_job/__init__.py +3 -0
  69. {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
  70. {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
  71. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/entities/task/python_serve/__init__.py +3 -0
  72. {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
  73. {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
  74. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/runtimes/__init__.py +3 -0
  75. digitalhub_runtime_python-0.15.0b10/digitalhub_runtime_python/runtimes/builder.py +38 -0
  76. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/runtimes/runtime.py +22 -20
  77. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/utils/configuration.py +3 -2
  78. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/utils/inputs.py +7 -5
  79. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/utils/outputs.py +6 -4
  80. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/utils/utils.py +0 -36
  81. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/pyproject.toml +4 -3
  82. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/test/instances/test_validate.py +1 -2
  83. digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/__init__.py +0 -32
  84. digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/entities/_base/runtime_entity/builder.py +0 -46
  85. digitalhub_runtime_python-0.15.0b8/digitalhub_runtime_python/runtimes/builder.py +0 -21
  86. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/.github/scripts/bump.sh +0 -0
  87. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/.github/scripts/changelog.sh +0 -0
  88. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/.github/scripts/cliff.toml +0 -0
  89. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/.gitignore +0 -0
  90. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/AUTHORS +0 -0
  91. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/CONTRIBUTING +0 -0
  92. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/COPYRIGHT +0 -0
  93. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/LICENSE +0 -0
  94. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/README.md +0 -0
  95. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/__init__.py +0 -0
  96. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/_base/__init__.py +0 -0
  97. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/_base/runtime_entity/__init__.py +0 -0
  98. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/_commons/__init__.py +0 -0
  99. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/function/__init__.py +0 -0
  100. {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
  101. {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
  102. {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
  103. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/function/python/builder.py +0 -0
  104. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/function/python/models.py +0 -0
  105. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/function/python/status.py +0 -0
  106. {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
  107. {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
  108. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/run/_base/spec.py +0 -0
  109. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/run/_base/status.py +0 -0
  110. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/digitalhub_runtime_python/entities/run/_base/utils.py +0 -0
  111. {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
  112. {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
  113. {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
  114. {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
  115. {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
  116. {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
  117. {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
  118. {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
  119. {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
  120. {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
  121. {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
  122. {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
  123. {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
  124. {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
  125. {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
  126. {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
  127. {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
  128. {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
  129. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/test/instances/entities/function/function-python-git.json +0 -0
  130. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/test/instances/entities/function/function-python-local.json +0 -0
  131. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/test/instances/entities/function/function-python-zip.json +0 -0
  132. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/test/instances/entities/run/run-python+build:run.json +0 -0
  133. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/test/instances/entities/run/run-python+job:run.json +0 -0
  134. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/test/instances/entities/run/run-python+serve:run.json +0 -0
  135. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/test/instances/entities/task/task-python+build.json +0 -0
  136. {digitalhub_runtime_python-0.15.0b8 → digitalhub_runtime_python-0.15.0b10}/test/instances/entities/task/task-python+job.json +0 -0
  137. {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.10"
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.10"
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.10"
94
+ python-version: "3.12"
95
95
 
96
96
  - name: Install cliff
97
97
  run: python -m pip install git-cliff
@@ -7,7 +7,7 @@ jobs:
7
7
  runs-on: ubuntu-latest
8
8
  strategy:
9
9
  matrix:
10
- python-version: ["3.10", "3.11", "3.12", "3.13"]
10
+ python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
11
11
 
12
12
  steps:
13
13
  - uses: actions/checkout@v4
@@ -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.10"
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.10"
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.0b8
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
- Requires-Python: <3.14,>=3.10
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
  """
@@ -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)
@@ -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)
@@ -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"
@@ -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)