digitalhub-runtime-python 0.15.0b18__tar.gz → 0.15.1__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 (147) hide show
  1. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/PKG-INFO +3 -3
  2. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/function/python/utils.py +1 -2
  3. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/runtimes/runtime.py +22 -3
  4. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/utils/configuration.py +18 -9
  5. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/utils/outputs.py +135 -36
  6. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/utils/utils.py +1 -1
  7. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/pyproject.toml +4 -4
  8. digitalhub_runtime_python-0.15.1/test/instances/entities/run/run-python+build:run.json +915 -0
  9. digitalhub_runtime_python-0.15.1/test/instances/entities/run/run-python+job:run.json +465 -0
  10. digitalhub_runtime_python-0.15.1/test/instances/entities/run/run-python+serve:run.json +1960 -0
  11. digitalhub_runtime_python-0.15.0b18/test/instances/entities/run/run-python+build:run.json +0 -915
  12. digitalhub_runtime_python-0.15.0b18/test/instances/entities/run/run-python+job:run.json +0 -467
  13. digitalhub_runtime_python-0.15.0b18/test/instances/entities/run/run-python+serve:run.json +0 -1960
  14. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/.github/scripts/bump.sh +0 -0
  15. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/.github/scripts/changelog.sh +0 -0
  16. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/.github/scripts/cliff.toml +0 -0
  17. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/.github/workflows/release.yml +0 -0
  18. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/.github/workflows/run_local_test.yml +0 -0
  19. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/.github/workflows/test_release.yml +0 -0
  20. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/.gitignore +0 -0
  21. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/AUTHORS +0 -0
  22. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/CONTRIBUTING +0 -0
  23. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/COPYRIGHT +0 -0
  24. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/LICENSE +0 -0
  25. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/README.md +0 -0
  26. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/__init__.py +0 -0
  27. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/__init__.py +0 -0
  28. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/_base/__init__.py +0 -0
  29. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/_base/runtime_entity/__init__.py +0 -0
  30. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/_base/runtime_entity/builder.py +0 -0
  31. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/_commons/__init__.py +0 -0
  32. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/_commons/enums.py +0 -0
  33. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/_commons/requirement_parser/__init__.py +0 -0
  34. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/_commons/requirement_parser/enums.py +0 -0
  35. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/_commons/requirement_parser/factory.py +0 -0
  36. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/_commons/requirement_parser/modules/__init__.py +0 -0
  37. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/_commons/requirement_parser/modules/_base.py +0 -0
  38. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/_commons/requirement_parser/modules/_conda.py +0 -0
  39. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/_commons/requirement_parser/modules/_pip.py +0 -0
  40. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/_commons/requirement_parser/modules/_pyproject.py +0 -0
  41. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/_commons/requirement_parser/parser.py +0 -0
  42. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/function/__init__.py +0 -0
  43. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/function/guardrail/__init__.py +0 -0
  44. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/function/guardrail/builder.py +0 -0
  45. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/function/guardrail/entity.py +0 -0
  46. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/function/guardrail/models.py +0 -0
  47. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/function/guardrail/spec.py +0 -0
  48. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/function/guardrail/status.py +0 -0
  49. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/function/openinference/__init__.py +0 -0
  50. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/function/openinference/builder.py +0 -0
  51. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/function/openinference/entity.py +0 -0
  52. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/function/openinference/models.py +0 -0
  53. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/function/openinference/spec.py +0 -0
  54. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/function/openinference/status.py +0 -0
  55. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/function/python/__init__.py +0 -0
  56. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/function/python/builder.py +0 -0
  57. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/function/python/entity.py +0 -0
  58. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/function/python/models.py +0 -0
  59. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/function/python/spec.py +0 -0
  60. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/function/python/status.py +0 -0
  61. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/__init__.py +0 -0
  62. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/_base/__init__.py +0 -0
  63. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/_base/entity.py +0 -0
  64. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/_base/spec.py +0 -0
  65. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/_base/status.py +0 -0
  66. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/_base/utils.py +0 -0
  67. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/guardrail_build/__init__.py +0 -0
  68. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/guardrail_build/builder.py +0 -0
  69. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/guardrail_build/entity.py +0 -0
  70. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/guardrail_build/spec.py +0 -0
  71. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/guardrail_build/status.py +0 -0
  72. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/guardrail_serve/__init__.py +0 -0
  73. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/guardrail_serve/builder.py +0 -0
  74. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/guardrail_serve/entity.py +0 -0
  75. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/guardrail_serve/spec.py +0 -0
  76. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/guardrail_serve/status.py +0 -0
  77. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/openinference_build/__init__.py +0 -0
  78. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/openinference_build/builder.py +0 -0
  79. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/openinference_build/entity.py +0 -0
  80. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/openinference_build/spec.py +0 -0
  81. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/openinference_build/status.py +0 -0
  82. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/openinference_serve/__init__.py +0 -0
  83. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/openinference_serve/builder.py +0 -0
  84. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/openinference_serve/entity.py +0 -0
  85. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/openinference_serve/spec.py +0 -0
  86. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/openinference_serve/status.py +0 -0
  87. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/python_build/__init__.py +0 -0
  88. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/python_build/builder.py +0 -0
  89. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/python_build/entity.py +0 -0
  90. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/python_build/spec.py +0 -0
  91. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/python_build/status.py +0 -0
  92. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/python_job/__init__.py +0 -0
  93. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/python_job/builder.py +0 -0
  94. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/python_job/entity.py +0 -0
  95. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/python_job/spec.py +0 -0
  96. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/python_job/status.py +0 -0
  97. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/python_serve/__init__.py +0 -0
  98. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/python_serve/builder.py +0 -0
  99. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/python_serve/entity.py +0 -0
  100. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/python_serve/spec.py +0 -0
  101. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/run/python_serve/status.py +0 -0
  102. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/__init__.py +0 -0
  103. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/guardrail_build/__init__.py +0 -0
  104. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/guardrail_build/builder.py +0 -0
  105. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/guardrail_build/entity.py +0 -0
  106. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/guardrail_build/spec.py +0 -0
  107. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/guardrail_build/status.py +0 -0
  108. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/guardrail_serve/__init__.py +0 -0
  109. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/guardrail_serve/builder.py +0 -0
  110. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/guardrail_serve/entity.py +0 -0
  111. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/guardrail_serve/spec.py +0 -0
  112. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/guardrail_serve/status.py +0 -0
  113. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/openinference_build/__init__.py +0 -0
  114. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/openinference_build/builder.py +0 -0
  115. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/openinference_build/entity.py +0 -0
  116. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/openinference_build/spec.py +0 -0
  117. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/openinference_build/status.py +0 -0
  118. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/openinference_serve/__init__.py +0 -0
  119. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/openinference_serve/builder.py +0 -0
  120. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/openinference_serve/entity.py +0 -0
  121. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/openinference_serve/spec.py +0 -0
  122. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/openinference_serve/status.py +0 -0
  123. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/python_build/__init__.py +0 -0
  124. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/python_build/builder.py +0 -0
  125. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/python_build/entity.py +0 -0
  126. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/python_build/spec.py +0 -0
  127. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/python_build/status.py +0 -0
  128. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/python_job/__init__.py +0 -0
  129. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/python_job/builder.py +0 -0
  130. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/python_job/entity.py +0 -0
  131. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/python_job/spec.py +0 -0
  132. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/python_job/status.py +0 -0
  133. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/python_serve/__init__.py +0 -0
  134. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/python_serve/builder.py +0 -0
  135. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/python_serve/entity.py +0 -0
  136. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/python_serve/spec.py +0 -0
  137. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/entities/task/python_serve/status.py +0 -0
  138. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/runtimes/__init__.py +0 -0
  139. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/runtimes/builder.py +0 -0
  140. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/digitalhub_runtime_python/utils/inputs.py +0 -0
  141. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/test/instances/entities/function/function-python-git.json +0 -0
  142. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/test/instances/entities/function/function-python-local.json +0 -0
  143. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/test/instances/entities/function/function-python-zip.json +0 -0
  144. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/test/instances/entities/task/task-python+build.json +0 -0
  145. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/test/instances/entities/task/task-python+job.json +0 -0
  146. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/test/instances/entities/task/task-python+serve.json +0 -0
  147. {digitalhub_runtime_python-0.15.0b18 → digitalhub_runtime_python-0.15.1}/test/instances/test_validate.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: digitalhub-runtime-python
3
- Version: 0.15.0b18
3
+ Version: 0.15.1
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>
@@ -215,14 +215,14 @@ Classifier: Programming Language :: Python :: 3.12
215
215
  Classifier: Programming Language :: Python :: 3.13
216
216
  Classifier: Programming Language :: Python :: 3.14
217
217
  Requires-Python: <3.15,>=3.10
218
- Requires-Dist: digitalhub[full]<0.16,>=0.15.0b
218
+ Requires-Dist: digitalhub[full]<0.16,>=0.15.1
219
219
  Requires-Dist: msgpack
220
220
  Requires-Dist: nuclio-sdk
221
221
  Requires-Dist: pip
222
222
  Requires-Dist: pyyaml
223
223
  Requires-Dist: tomli; python_version < '3.11'
224
224
  Provides-Extra: dev
225
- Requires-Dist: digitalhub[dev]<0.16,>=0.15.0b; extra == 'dev'
225
+ Requires-Dist: digitalhub[dev]<0.16,>=0.15.1; extra == 'dev'
226
226
  Description-Content-Type: text/markdown
227
227
 
228
228
  # DigitalHub SDK Runtime Python
@@ -147,8 +147,7 @@ def source_post_check(exec: FunctionPython) -> FunctionPython:
147
147
 
148
148
  # If source is a folder, zip it and upload it
149
149
  if not path_src.is_file():
150
- archive_path = path_src.parent / f"{path_src.name}.zip"
151
- create_archive(path_src, archive_path)
150
+ archive_path = create_archive(path_src)
152
151
  dst = build_zip_path(exec, archive_path.name)
153
152
  get_store(dst).upload(str(archive_path), dst)
154
153
  exec.spec.source["source"] = dst
@@ -4,7 +4,7 @@
4
4
 
5
5
  from __future__ import annotations
6
6
 
7
- from typing import Callable
7
+ from typing import Any, Callable
8
8
 
9
9
  from digitalhub.context.api import get_context
10
10
  from digitalhub.runtimes._base import Runtime
@@ -12,7 +12,7 @@ from digitalhub.utils.logger.logger import get_logger
12
12
 
13
13
  from digitalhub_runtime_python.utils.configuration import import_function_from_source
14
14
  from digitalhub_runtime_python.utils.inputs import compose_inputs
15
- from digitalhub_runtime_python.utils.outputs import build_new_status, parse_outputs
15
+ from digitalhub_runtime_python.utils.outputs import build_new_status, collect_outputs
16
16
 
17
17
  logger = get_logger(__file__)
18
18
 
@@ -63,7 +63,8 @@ class RuntimePythonJob(Runtime):
63
63
  else:
64
64
  exec_result = self._execute(fnc, **fnc_args)
65
65
  logger.info("Collecting outputs.")
66
- results = parse_outputs(exec_result, project, run_key)
66
+ named_outputs = self._get_named_outputs(exec_result)
67
+ results = collect_outputs(exec_result, named_outputs, project, run_key)
67
68
 
68
69
  status = build_new_status(project, results)
69
70
 
@@ -118,6 +119,24 @@ class RuntimePythonJob(Runtime):
118
119
  local_execution = spec.get("local_execution")
119
120
  return compose_inputs(inputs, parameters, local_execution, func, project)
120
121
 
122
+ def _get_named_outputs(self, exec_result: Any) -> list[str]:
123
+ """
124
+ Get named outputs.
125
+
126
+ Parameters
127
+ ----------
128
+ exec_result : Any
129
+ Function execution result.
130
+
131
+ Returns
132
+ -------
133
+ list[str]
134
+ List of named outputs.
135
+ """
136
+ if isinstance(exec_result, list):
137
+ return [f"output_{idx}" for idx in range(len(exec_result))]
138
+ return []
139
+
121
140
 
122
141
  class RuntimeOpeninference(RuntimePython):
123
142
  """
@@ -4,7 +4,6 @@
4
4
 
5
5
  from __future__ import annotations
6
6
 
7
- from importlib import import_module
8
7
  from pathlib import Path
9
8
  from typing import Callable
10
9
 
@@ -28,6 +27,7 @@ from digitalhub.utils.uri_utils import (
28
27
 
29
28
  logger = get_logger(__file__)
30
29
  DEFAULT_PY_FILE = "main.py"
30
+ DEFAULT_SERVERLESS_PATH = Path("/shared")
31
31
 
32
32
 
33
33
  def _parse_handler(handler: str) -> tuple[Path, str]:
@@ -278,7 +278,7 @@ def save_function_source(path: Path, source_spec: dict) -> Path:
278
278
  raise RuntimeError(f"Unable to collect source from: {source}")
279
279
 
280
280
 
281
- def _get_function_to_import(handler: str, source_code: str | None) -> tuple[str, str]:
281
+ def _get_function_to_import(handler: str, source_code: str | None, root_path: Path) -> tuple[Path, str]:
282
282
  """
283
283
  Get function name from handler string.
284
284
 
@@ -291,8 +291,8 @@ def _get_function_to_import(handler: str, source_code: str | None) -> tuple[str,
291
291
 
292
292
  Returns
293
293
  -------
294
- tuple
295
- Function module and function name.
294
+ tuple[Path, str]
295
+ Function path and function name.
296
296
  """
297
297
  # If handler is not specified, assume function module is in main
298
298
  try:
@@ -304,11 +304,16 @@ def _get_function_to_import(handler: str, source_code: str | None) -> tuple[str,
304
304
  else:
305
305
  function_module = DEFAULT_PY_FILE.removesuffix(".py")
306
306
 
307
- return function_module, function_name
307
+ function_path = (root_path / Path(function_module.replace(".", "/") + ".py")).resolve()
308
+ if not function_path.exists():
309
+ raise RuntimeError(f"Function module {function_module} not found at path {function_path}.")
310
+
311
+ return function_path, function_name
308
312
 
309
313
 
310
314
  def import_function_and_init_from_source(
311
315
  source_spec: dict,
316
+ root_path: Path | None = None,
312
317
  ) -> tuple[Callable, Callable | None]:
313
318
  """
314
319
  Import main function and optional init function from source.
@@ -317,25 +322,29 @@ def import_function_and_init_from_source(
317
322
  ----------
318
323
  source_spec : dict
319
324
  Function source spec.
325
+ root_path : Path | None
326
+ Root path to use if function path is not specified.
320
327
 
321
328
  Returns
322
329
  -------
323
330
  tuple
324
331
  Main function and optional init function.
325
332
  """
333
+ if root_path is None:
334
+ root_path = DEFAULT_SERVERLESS_PATH
335
+
326
336
  handler = source_spec.get("handler")
327
337
  source_code = source_spec.get("source")
328
338
 
329
- function_module, function_name = _get_function_to_import(handler, source_code)
339
+ function_path, function_name = _get_function_to_import(handler, source_code, root_path)
330
340
 
331
341
  # Import module and get main function
332
- module = import_module(function_module)
333
- main_function = getattr(module, function_name)
342
+ main_function = _import_function_from_path(function_path, function_name)
334
343
 
335
344
  # Import init function if specified
336
345
  init_function: Callable | None = None
337
346
  init_handler: str | None = source_spec.get("init_function")
338
347
  if init_handler is not None:
339
- init_function = getattr(module, init_handler)
348
+ init_function = _import_function_from_path(function_path, init_handler)
340
349
 
341
350
  return main_function, init_function
@@ -6,8 +6,18 @@ from __future__ import annotations
6
6
 
7
7
  import pickle
8
8
  import typing
9
+ from dataclasses import dataclass
9
10
  from typing import Any
10
11
 
12
+ from digitalhub import (
13
+ log_croissant,
14
+ log_generic_artifact,
15
+ log_generic_dataitem,
16
+ log_generic_model,
17
+ log_mlflow,
18
+ log_sklearn,
19
+ log_table,
20
+ )
11
21
  from digitalhub.context.api import get_context
12
22
  from digitalhub.entities._commons.enums import EntityKinds, Relationship, State
13
23
  from digitalhub.entities.artifact._base.entity import Artifact
@@ -25,7 +35,122 @@ if typing.TYPE_CHECKING:
25
35
  logger = get_logger(__file__)
26
36
 
27
37
 
28
- def collect_outputs(results: Any, outputs: list[str], project_name: str, run_key: str) -> dict:
38
+ mapped_logger = {
39
+ EntityKinds.DATAITEM_DATAITEM.value: log_generic_dataitem,
40
+ EntityKinds.DATAITEM_TABLE.value: log_table,
41
+ EntityKinds.DATAITEM_CROISSANT.value: log_croissant,
42
+ EntityKinds.MODEL_MLFLOW.value: log_mlflow,
43
+ EntityKinds.MODEL_SKLEARN.value: log_sklearn,
44
+ EntityKinds.MODEL_MODEL.value: log_generic_model,
45
+ EntityKinds.ARTIFACT_ARTIFACT.value: log_generic_artifact,
46
+ }
47
+
48
+
49
+ @dataclass
50
+ class OutputStruct:
51
+ """
52
+ OutputStruct is a class that represents the output of a function.
53
+ """
54
+
55
+ name: str | None
56
+ kind: str | None
57
+ kwargs: dict | None = None
58
+ log: bool = False
59
+
60
+
61
+ def _build_default_output_names(outputs_len: int, results_len: int) -> list[str]:
62
+ return [f"output_{idx}" for idx in range(outputs_len, results_len)]
63
+
64
+
65
+ def _parse_UDF_outputs(outputs: list[str] | list[dict[str, Any]], results_len: int) -> list[OutputStruct]:
66
+ """
67
+ Parse UDF outputs.
68
+
69
+ Parameters
70
+ ----------
71
+ outputs : list[str] | list[dict[str, str]]
72
+ List of named outputs to collect.
73
+ results_len : int
74
+ Number of results produced by the function.
75
+
76
+ Returns
77
+ -------
78
+ list[OutputStruct]
79
+ List of OutputStruct objects.
80
+ """
81
+ normalized_outputs = list(outputs[:results_len])
82
+
83
+ if len(normalized_outputs) != results_len:
84
+ # Set default names for outputs if the number of outputs is different from the number of results.
85
+ # If the number of outputs is less than the number of results, the missing outputs will be named as output_{idx}.
86
+ # If the number of outputs is greater than the number of results, the extra outputs will be ignored.
87
+ logger.warning(
88
+ f"Number of outputs ({len(outputs)}) is different from number of results ({results_len}). "
89
+ f"Default names will be used for outputs.",
90
+ )
91
+ normalized_outputs.extend(_build_default_output_names(len(normalized_outputs), results_len))
92
+
93
+ parsed_outputs = []
94
+ for idx, item in enumerate(normalized_outputs):
95
+ if isinstance(item, str):
96
+ parsed_outputs.append(OutputStruct(name=item, kind=None))
97
+ continue
98
+
99
+ if not isinstance(item, dict):
100
+ raise ValueError(f"Invalid output format: {item}")
101
+
102
+ name = item.get("name") or f"output_{idx}"
103
+ kind = item.get("kind")
104
+ if kind is None:
105
+ raise ValueError(f"Missing kind for logged output: {name}")
106
+
107
+ if kind not in mapped_logger:
108
+ raise ValueError(f"Unsupported output kind: {kind}")
109
+
110
+ kwargs = dict(item.get("spec_kwargs") or {})
111
+ parsed_outputs.append(OutputStruct(name=name, kind=kind, kwargs=kwargs, log=True))
112
+ return parsed_outputs
113
+
114
+
115
+ def _log_mapped_output(project_name: str, item: Any, output: OutputStruct) -> None:
116
+ logger.info(f"Logging output {output.name}.")
117
+ spec_kwargs = dict(output.kwargs or {})
118
+ spec_kwargs["source"] = item
119
+ mapped_logger[output.kind](project_name, output.name, **spec_kwargs)
120
+
121
+
122
+ def _save_existing_object(obj: Dataitem | Artifact | Model, run_key: str) -> Dataitem | Artifact | Model:
123
+ dest = run_key + ":" + run_key.split("/")[-1]
124
+ obj.add_relationship(relation=Relationship.PRODUCEDBY.value, dest=dest)
125
+
126
+ try:
127
+ obj.save(update=True)
128
+ except EntityNotExistsError:
129
+ obj.save()
130
+
131
+ return obj
132
+
133
+
134
+ def _materialize_output(name: str, item: Any, project_name: str, run_key: str) -> Any:
135
+ if isinstance(item, (str, int, float, bool, bytes)):
136
+ return item
137
+
138
+ if isinstance(item, (Dataitem, Artifact, Model)):
139
+ return _save_existing_object(item, run_key)
140
+
141
+ for df_class in get_supported_dataframes():
142
+ if isinstance(item, df_class):
143
+ return _log_dataitem(name, project_name, item)
144
+
145
+ return _log_artifact(name, project_name, item)
146
+
147
+
148
+ def collect_outputs(
149
+ results: Any,
150
+ outputs: list[str] | list[dict[str, Any]],
151
+ project_name: str,
152
+ run_key: str,
153
+ ) -> dict:
29
154
  """
30
155
  Collect outputs. Use the produced results directly.
31
156
 
@@ -33,7 +158,7 @@ def collect_outputs(results: Any, outputs: list[str], project_name: str, run_key
33
158
  ----------
34
159
  results : Any
35
160
  Function outputs.
36
- outputs : list[str]
161
+ outputs : list[OutputStruct]
37
162
  List of named outputs to collect.
38
163
  project_name : str
39
164
  Project name.
@@ -48,42 +173,16 @@ def collect_outputs(results: Any, outputs: list[str], project_name: str, run_key
48
173
  objects = {}
49
174
  results = listify_results(results)
50
175
 
176
+ parsed_outputs = _parse_UDF_outputs(outputs, len(results))
177
+
51
178
  for idx, item in enumerate(results):
52
- # Get mapping of outputs, if not found, create a new one
53
- try:
54
- name = outputs[idx]
55
- except IndexError:
56
- name = f"output_{idx}"
57
-
58
- if isinstance(item, (str, int, float, bool, bytes)):
59
- objects[name] = item
60
-
61
- else:
62
- # Recieve a digitalhub object
63
- if isinstance(item, (Dataitem, Artifact, Model)):
64
- obj = item
65
-
66
- # Add relationship to object, update it
67
- dest = run_key + ":" + run_key.split("/")[-1]
68
- obj.add_relationship(relation=Relationship.PRODUCEDBY.value, dest=dest)
69
-
70
- # Save or update object
71
- try:
72
- obj.save(update=True)
73
- except EntityNotExistsError:
74
- obj.save()
179
+ output = parsed_outputs[idx]
75
180
 
76
- else:
77
- # Recieve a dataframe object
78
- for df_class in get_supported_dataframes():
79
- if isinstance(item, df_class):
80
- obj = _log_dataitem(name, project_name, item)
81
- break
82
- # Recieve a generic python object
83
- else:
84
- obj = _log_artifact(name, project_name, item)
85
-
86
- objects[name] = obj
181
+ if output.log:
182
+ _log_mapped_output(project_name, item, output)
183
+ continue
184
+
185
+ objects[output.name] = _materialize_output(output.name, item, project_name, run_key)
87
186
 
88
187
  return objects
89
188
 
@@ -10,7 +10,7 @@ from typing import Callable
10
10
  from digitalhub_runtime_python.utils.outputs import collect_outputs
11
11
 
12
12
 
13
- def handler(outputs: list[str] | None = None) -> Callable:
13
+ def handler(outputs: list[str] | list[dict[str, str]] | None = None) -> Callable:
14
14
  """
15
15
  Decorator that handles the outputs of the function.
16
16
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "digitalhub-runtime-python"
7
- version = "0.15.0b18"
7
+ version = "0.15.1"
8
8
  description = "Python runtime for DHCore"
9
9
  readme = "README.md"
10
10
  authors = [
@@ -23,7 +23,7 @@ classifiers = [
23
23
  keywords = ["data", "dataops", "kubernetes"]
24
24
  requires-python = ">=3.10, <3.15"
25
25
  dependencies = [
26
- "digitalhub[full]>=0.15.0b, <0.16",
26
+ "digitalhub[full]>=0.15.1, <0.16",
27
27
  "nuclio-sdk",
28
28
  "msgpack",
29
29
  "pip",
@@ -33,7 +33,7 @@ dependencies = [
33
33
 
34
34
  [project.optional-dependencies]
35
35
  dev = [
36
- "digitalhub[dev]>=0.15.0b, <0.16"
36
+ "digitalhub[dev]>=0.15.1, <0.16"
37
37
  ]
38
38
 
39
39
  [project.urls]
@@ -54,7 +54,7 @@ docstring-code-line-length = 120
54
54
  convention = "numpy"
55
55
 
56
56
  [tool.bumpver]
57
- current_version = "0.15.0b18"
57
+ current_version = "0.15.1"
58
58
  version_pattern = "MAJOR.MINOR.PATCH[PYTAGNUM]"
59
59
  commit_message = "Bump version {old_version} -> {new_version}"
60
60
  commit = false