digitalhub 0.13.0b4__tar.gz → 0.14.0b0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of digitalhub might be problematic. Click here for more details.

Files changed (308) hide show
  1. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/.github/scripts/cliff.toml +4 -3
  2. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/.github/workflows/release.yml +1 -1
  3. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/PKG-INFO +3 -2
  4. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/README.md +2 -1
  5. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/__init__.py +3 -8
  6. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_base/_base/entity.py +0 -11
  7. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_base/entity/builder.py +5 -5
  8. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_base/executable/entity.py +1 -1
  9. digitalhub-0.14.0b0/digitalhub/entities/_base/runtime_entity/builder.py +145 -0
  10. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_commons/utils.py +64 -21
  11. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_processors/base.py +11 -3
  12. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_processors/context.py +71 -22
  13. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_processors/utils.py +3 -3
  14. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/crud.py +20 -4
  15. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/utils.py +1 -1
  16. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/crud.py +20 -4
  17. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/table/entity.py +0 -21
  18. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/utils.py +1 -1
  19. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/function/_base/entity.py +1 -1
  20. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/function/crud.py +15 -4
  21. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/_base/entity.py +21 -1
  22. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/crud.py +21 -5
  23. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/utils.py +1 -1
  24. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/project/_base/entity.py +65 -33
  25. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/project/crud.py +8 -1
  26. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/run/_base/entity.py +21 -1
  27. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/run/crud.py +22 -5
  28. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/secret/crud.py +22 -5
  29. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/task/crud.py +22 -5
  30. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/crud.py +20 -4
  31. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/workflow/_base/entity.py +1 -1
  32. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/workflow/crud.py +15 -4
  33. digitalhub-0.14.0b0/digitalhub/factory/enums.py +18 -0
  34. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/factory/factory.py +136 -57
  35. digitalhub-0.14.0b0/digitalhub/factory/utils.py +68 -0
  36. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/client/api.py +6 -10
  37. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/client/builder.py +3 -3
  38. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/client/dhcore/client.py +104 -162
  39. digitalhub-0.14.0b0/digitalhub/stores/client/dhcore/configurator.py +478 -0
  40. digitalhub-0.14.0b0/digitalhub/stores/client/dhcore/enums.py +18 -0
  41. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/client/dhcore/params_builder.py +41 -83
  42. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/client/dhcore/utils.py +14 -22
  43. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/client/local/client.py +77 -45
  44. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/credentials/ini_module.py +0 -16
  45. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/data/local/store.py +0 -103
  46. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/data/s3/configurator.py +60 -6
  47. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/data/s3/store.py +44 -2
  48. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/data/sql/store.py +15 -0
  49. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/utils/file_utils.py +0 -17
  50. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/utils/generic_utils.py +1 -2
  51. digitalhub-0.14.0b0/digitalhub/utils/store_utils.py +44 -0
  52. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/pyproject.toml +2 -2
  53. digitalhub-0.13.0b4/digitalhub/entities/_base/runtime_entity/builder.py +0 -110
  54. digitalhub-0.13.0b4/digitalhub/entities/task/_base/utils.py +0 -22
  55. digitalhub-0.13.0b4/digitalhub/factory/utils.py +0 -119
  56. digitalhub-0.13.0b4/digitalhub/stores/client/dhcore/configurator.py +0 -675
  57. digitalhub-0.13.0b4/digitalhub/stores/client/dhcore/enums.py +0 -34
  58. digitalhub-0.13.0b4/digitalhub/stores/client/dhcore/models.py +0 -40
  59. digitalhub-0.13.0b4/digitalhub/stores/data/s3/utils.py +0 -78
  60. digitalhub-0.13.0b4/test/test_crud_functions.py +0 -111
  61. digitalhub-0.13.0b4/test/test_crud_runs.py +0 -88
  62. digitalhub-0.13.0b4/test/test_crud_tasks.py +0 -83
  63. digitalhub-0.13.0b4/test/testkfp.py +0 -40
  64. digitalhub-0.13.0b4/test/testkfp_pipeline.py +0 -25
  65. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/.github/scripts/bump.sh +0 -0
  66. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/.github/scripts/changelog.sh +0 -0
  67. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/.github/workflows/run_local_test.yml +0 -0
  68. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/.github/workflows/test_release.yml +0 -0
  69. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/.gitignore +0 -0
  70. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/AUTHORS +0 -0
  71. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/CONTRIBUTING +0 -0
  72. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/COPYRIGHT +0 -0
  73. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/LICENSE +0 -0
  74. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/context/api.py +0 -0
  75. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/context/builder.py +0 -0
  76. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/context/context.py +0 -0
  77. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/__init__.py +0 -0
  78. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_base/__init__.py +0 -0
  79. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_base/_base/__init__.py +0 -0
  80. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_base/context/__init__.py +0 -0
  81. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_base/context/entity.py +0 -0
  82. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_base/entity/__init__.py +0 -0
  83. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_base/entity/entity.py +0 -0
  84. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_base/entity/metadata.py +0 -0
  85. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_base/entity/spec.py +0 -0
  86. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_base/entity/status.py +0 -0
  87. {digitalhub-0.13.0b4/digitalhub/entities/_base/entity/_constructors → digitalhub-0.14.0b0/digitalhub/entities/_base/executable}/__init__.py +0 -0
  88. {digitalhub-0.13.0b4/digitalhub/entities/_base/executable → digitalhub-0.14.0b0/digitalhub/entities/_base/material}/__init__.py +0 -0
  89. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_base/material/entity.py +0 -0
  90. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_base/material/spec.py +0 -0
  91. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_base/material/status.py +0 -0
  92. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_base/material/utils.py +0 -0
  93. {digitalhub-0.13.0b4/digitalhub/entities/_base/material → digitalhub-0.14.0b0/digitalhub/entities/_base/runtime_entity}/__init__.py +0 -0
  94. {digitalhub-0.13.0b4/digitalhub/entities/_base/runtime_entity → digitalhub-0.14.0b0/digitalhub/entities/_base/unversioned}/__init__.py +0 -0
  95. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_base/unversioned/builder.py +0 -0
  96. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_base/unversioned/entity.py +0 -0
  97. {digitalhub-0.13.0b4/digitalhub/entities/_base/unversioned → digitalhub-0.14.0b0/digitalhub/entities/_base/versioned}/__init__.py +0 -0
  98. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_base/versioned/builder.py +0 -0
  99. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_base/versioned/entity.py +0 -0
  100. {digitalhub-0.13.0b4/digitalhub/entities/_base/versioned → digitalhub-0.14.0b0/digitalhub/entities/_commons}/__init__.py +0 -0
  101. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_commons/enums.py +0 -0
  102. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_commons/metrics.py +0 -0
  103. {digitalhub-0.13.0b4/digitalhub/entities/_commons → digitalhub-0.14.0b0/digitalhub/entities/_constructors}/__init__.py +0 -0
  104. {digitalhub-0.13.0b4/digitalhub/entities/_base/entity → digitalhub-0.14.0b0/digitalhub/entities}/_constructors/metadata.py +0 -0
  105. {digitalhub-0.13.0b4/digitalhub/entities/_base/entity → digitalhub-0.14.0b0/digitalhub/entities}/_constructors/name.py +0 -0
  106. {digitalhub-0.13.0b4/digitalhub/entities/_base/entity → digitalhub-0.14.0b0/digitalhub/entities}/_constructors/spec.py +0 -0
  107. {digitalhub-0.13.0b4/digitalhub/entities/_base/entity → digitalhub-0.14.0b0/digitalhub/entities}/_constructors/status.py +0 -0
  108. {digitalhub-0.13.0b4/digitalhub/entities/_base/entity → digitalhub-0.14.0b0/digitalhub/entities}/_constructors/uuid.py +0 -0
  109. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/_processors/__init__.py +0 -0
  110. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/__init__.py +0 -0
  111. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/_base/__init__.py +0 -0
  112. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/_base/builder.py +0 -0
  113. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/_base/entity.py +0 -0
  114. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/_base/spec.py +0 -0
  115. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/_base/status.py +0 -0
  116. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/artifact/__init__.py +0 -0
  117. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/artifact/builder.py +0 -0
  118. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/artifact/entity.py +0 -0
  119. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/artifact/spec.py +0 -0
  120. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/artifact/status.py +0 -0
  121. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/builders.py +0 -0
  122. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/__init__.py +0 -0
  123. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/_base/__init__.py +0 -0
  124. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/_base/builder.py +0 -0
  125. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/_base/entity.py +0 -0
  126. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/_base/spec.py +0 -0
  127. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/_base/status.py +0 -0
  128. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/dataitem/__init__.py +0 -0
  129. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/dataitem/builder.py +0 -0
  130. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/dataitem/entity.py +0 -0
  131. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/dataitem/spec.py +0 -0
  132. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/dataitem/status.py +0 -0
  133. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/iceberg/__init__.py +0 -0
  134. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/iceberg/builder.py +0 -0
  135. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/iceberg/entity.py +0 -0
  136. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/iceberg/spec.py +0 -0
  137. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/iceberg/status.py +0 -0
  138. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/table/__init__.py +0 -0
  139. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/table/builder.py +0 -0
  140. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/table/models.py +0 -0
  141. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/table/spec.py +0 -0
  142. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/table/status.py +0 -0
  143. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/table/utils.py +0 -0
  144. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/function/__init__.py +0 -0
  145. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/function/_base/__init__.py +0 -0
  146. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/function/_base/builder.py +0 -0
  147. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/function/_base/spec.py +0 -0
  148. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/function/_base/status.py +0 -0
  149. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/__init__.py +0 -0
  150. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/_base/__init__.py +0 -0
  151. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/_base/builder.py +0 -0
  152. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/_base/spec.py +0 -0
  153. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/_base/status.py +0 -0
  154. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/huggingface/__init__.py +0 -0
  155. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/huggingface/builder.py +0 -0
  156. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/huggingface/entity.py +0 -0
  157. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/huggingface/spec.py +0 -0
  158. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/huggingface/status.py +0 -0
  159. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/mlflow/__init__.py +0 -0
  160. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/mlflow/builder.py +0 -0
  161. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/mlflow/entity.py +0 -0
  162. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/mlflow/models.py +0 -0
  163. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/mlflow/spec.py +0 -0
  164. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/mlflow/status.py +0 -0
  165. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/mlflow/utils.py +0 -0
  166. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/model/__init__.py +0 -0
  167. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/model/builder.py +0 -0
  168. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/model/entity.py +0 -0
  169. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/model/spec.py +0 -0
  170. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/model/status.py +0 -0
  171. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/sklearn/__init__.py +0 -0
  172. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/sklearn/builder.py +0 -0
  173. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/sklearn/entity.py +0 -0
  174. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/sklearn/spec.py +0 -0
  175. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/model/sklearn/status.py +0 -0
  176. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/project/__init__.py +0 -0
  177. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/project/_base/__init__.py +0 -0
  178. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/project/_base/builder.py +0 -0
  179. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/project/_base/models.py +0 -0
  180. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/project/_base/spec.py +0 -0
  181. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/project/_base/status.py +0 -0
  182. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/project/utils.py +0 -0
  183. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/run/__init__.py +0 -0
  184. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/run/_base/__init__.py +0 -0
  185. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/run/_base/builder.py +0 -0
  186. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/run/_base/spec.py +0 -0
  187. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/run/_base/status.py +0 -0
  188. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/secret/__init__.py +0 -0
  189. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/secret/_base/__init__.py +0 -0
  190. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/secret/_base/builder.py +0 -0
  191. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/secret/_base/entity.py +0 -0
  192. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/secret/_base/spec.py +0 -0
  193. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/secret/_base/status.py +0 -0
  194. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/task/__init__.py +0 -0
  195. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/task/_base/__init__.py +0 -0
  196. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/task/_base/builder.py +0 -0
  197. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/task/_base/entity.py +0 -0
  198. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/task/_base/models.py +0 -0
  199. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/task/_base/spec.py +0 -0
  200. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/task/_base/status.py +0 -0
  201. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/__init__.py +0 -0
  202. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/_base/__init__.py +0 -0
  203. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/_base/builder.py +0 -0
  204. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/_base/entity.py +0 -0
  205. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/_base/spec.py +0 -0
  206. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/_base/status.py +0 -0
  207. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/lifecycle/__init__.py +0 -0
  208. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/lifecycle/builder.py +0 -0
  209. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/lifecycle/entity.py +0 -0
  210. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/lifecycle/spec.py +0 -0
  211. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/lifecycle/status.py +0 -0
  212. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/scheduler/__init__.py +0 -0
  213. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/scheduler/builder.py +0 -0
  214. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/scheduler/entity.py +0 -0
  215. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/scheduler/spec.py +0 -0
  216. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/scheduler/status.py +0 -0
  217. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/workflow/__init__.py +0 -0
  218. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/workflow/_base/__init__.py +0 -0
  219. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/workflow/_base/builder.py +0 -0
  220. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/workflow/_base/spec.py +0 -0
  221. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/entities/workflow/_base/status.py +0 -0
  222. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/factory/__init__.py +0 -0
  223. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/runtimes/__init__.py +0 -0
  224. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/runtimes/_base.py +0 -0
  225. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/runtimes/builder.py +0 -0
  226. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/runtimes/enums.py +0 -0
  227. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/__init__.py +0 -0
  228. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/client/__init__.py +0 -0
  229. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/client/_base/__init__.py +0 -0
  230. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/client/_base/api_builder.py +0 -0
  231. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/client/_base/client.py +0 -0
  232. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/client/_base/key_builder.py +0 -0
  233. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/client/_base/params_builder.py +0 -0
  234. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/client/dhcore/__init__.py +0 -0
  235. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/client/dhcore/api_builder.py +0 -0
  236. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/client/dhcore/error_parser.py +0 -0
  237. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/client/dhcore/key_builder.py +0 -0
  238. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/client/local/__init__.py +0 -0
  239. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/client/local/api_builder.py +0 -0
  240. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/client/local/enums.py +0 -0
  241. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/client/local/key_builder.py +0 -0
  242. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/client/local/params_builder.py +0 -0
  243. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/credentials/__init__.py +0 -0
  244. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/credentials/api.py +0 -0
  245. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/credentials/configurator.py +0 -0
  246. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/credentials/enums.py +0 -0
  247. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/credentials/handler.py +0 -0
  248. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/credentials/store.py +0 -0
  249. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/data/__init__.py +0 -0
  250. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/data/_base/__init__.py +0 -0
  251. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/data/_base/store.py +0 -0
  252. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/data/api.py +0 -0
  253. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/data/builder.py +0 -0
  254. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/data/enums.py +0 -0
  255. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/data/local/__init__.py +0 -0
  256. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/data/remote/__init__.py +0 -0
  257. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/data/remote/store.py +0 -0
  258. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/data/s3/__init__.py +0 -0
  259. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/data/sql/__init__.py +0 -0
  260. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/data/sql/configurator.py +0 -0
  261. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/readers/__init__.py +0 -0
  262. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/readers/data/__init__.py +0 -0
  263. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/readers/data/_base/__init__.py +0 -0
  264. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/readers/data/_base/builder.py +0 -0
  265. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/readers/data/_base/reader.py +0 -0
  266. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/readers/data/api.py +0 -0
  267. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/readers/data/factory.py +0 -0
  268. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/readers/data/pandas/__init__.py +0 -0
  269. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/readers/data/pandas/builder.py +0 -0
  270. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/readers/data/pandas/reader.py +0 -0
  271. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/stores/readers/query/__init__.py +0 -0
  272. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/utils/__init__.py +0 -0
  273. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/utils/enums.py +0 -0
  274. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/utils/exceptions.py +0 -0
  275. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/utils/git_utils.py +0 -0
  276. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/utils/io_utils.py +0 -0
  277. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/utils/logger.py +0 -0
  278. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/utils/types.py +0 -0
  279. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/digitalhub/utils/uri_utils.py +0 -0
  280. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/scripts/README.md +0 -0
  281. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/scripts/local-copy/README.md +0 -0
  282. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/scripts/local-copy/local_copy.sh +0 -0
  283. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/scripts/quick-docker-copy/DBT.dockerfile +0 -0
  284. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/scripts/quick-docker-copy/KFP.dockerfile +0 -0
  285. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/scripts/quick-docker-copy/PY10.dockerfile +0 -0
  286. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/scripts/quick-docker-copy/PY11.dockerfile +0 -0
  287. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/scripts/quick-docker-copy/PY9.dockerfile +0 -0
  288. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/scripts/quick-docker-copy/README.md +0 -0
  289. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/scripts/quick-docker-copy/build_containers.sh +0 -0
  290. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/scripts/spec_exporter/README.md +0 -0
  291. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/scripts/spec_exporter/exporter.sh +0 -0
  292. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/test/local/CRUD/test_artifacts.py +0 -0
  293. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/test/local/CRUD/test_dataitems.py +0 -0
  294. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/test/local/CRUD/test_models.py +0 -0
  295. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/test/local/imports/test_imports.py +0 -0
  296. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/test/local/instances/entities/artifact/artifact-http.json +0 -0
  297. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/test/local/instances/entities/artifact/artifact-local.json +0 -0
  298. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/test/local/instances/entities/artifact/artifact-s3.json +0 -0
  299. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/test/local/instances/entities/artifact/artifact-sql.json +0 -0
  300. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/test/local/instances/entities/dataitem/dataitem-table.json +0 -0
  301. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/test/local/instances/entities/dataitem/dataitem.json +0 -0
  302. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/test/local/instances/entities/model/model-huggingface.json +0 -0
  303. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/test/local/instances/entities/model/model-mlflow.json +0 -0
  304. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/test/local/instances/entities/model/model-sklearn.json +0 -0
  305. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/test/local/instances/entities/model/model.json +0 -0
  306. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/test/local/instances/entities/project.json +0 -0
  307. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/test/local/instances/entities/secret.json +0 -0
  308. {digitalhub-0.13.0b4 → digitalhub-0.14.0b0}/test/local/instances/test_validate.py +0 -0
@@ -62,9 +62,10 @@ commit_preprocessors = [
62
62
  commit_parsers = [
63
63
  { message = "^feat", group = "<!-- 0 --> Features" },
64
64
  { message = "^fix", group = "<!-- 1 --> Bug Fixes" },
65
- { message = "^perf", group = "<!-- 3 --> Performance" },
66
- { message = "^build", group = "<!-- 4 --> Build" },
67
- { message = "^doc", group = "<!-- 5 --> Documentation" },
65
+ { message = "^perf", group = "<!-- 2 --> Performance" },
66
+ { message = "^build", group = "<!-- 3 --> Build" },
67
+ { message = "^doc", group = "<!-- 4 --> Documentation" },
68
+ { message = "^BREAKING", group = "<!-- 5 --> Breaking Changes" },
68
69
  { message = ".*", group = "<!-- 10 --> Other" , skip = true },
69
70
  ]
70
71
  # filter out the commits that are not matched by commit parsers
@@ -132,7 +132,7 @@ jobs:
132
132
  branch=${{ github.ref }}
133
133
 
134
134
  # Define the repositories to trigger
135
- repos=("digitalhub-sdk-wrapper-kfp" "jupyter-notebook-custom-image" "digitalhub-sdk-wrapper-hera" "digitalhub-sdk-wrapper-dbt" )
135
+ repos=("digitalhub-sdk-wrapper-kfp" "digitalhub-serverless" "digitalhub-sdk-wrapper-hera" "digitalhub-sdk-wrapper-dbt" )
136
136
 
137
137
  # Loop over the repositories and trigger the workflow
138
138
  for repo in "${repos[@]}"; do
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: digitalhub
3
- Version: 0.13.0b4
3
+ Version: 0.14.0b0
4
4
  Summary: Python SDK for Digitalhub
5
5
  Project-URL: Homepage, https://github.com/scc-digitalhub/digitalhub-sdk
6
6
  Author-email: Fondazione Bruno Kessler <digitalhub@fbk.eu>, Matteo Martini <mmartini@fbk.eu>
@@ -252,7 +252,7 @@ Explore the full documentation at the [link](https://scc-digitalhub.github.io/sd
252
252
  To install the Digitalhub, you can use pip:
253
253
 
254
254
  ```bash
255
- pip install digitalhub
255
+ pip install digitalhub[full]
256
256
  ```
257
257
 
258
258
  To be able to create and execute functions or workflows, you need to install the runtime you want to use. The Digitalhub SDK supports multiple runtimes, each with its own installation instructions:
@@ -261,6 +261,7 @@ To be able to create and execute functions or workflows, you need to install the
261
261
  - [Digitalhub SDK Runtime Dbt](https://github.com/scc-digitalhub/digitalhub-sdk-runtime-dbt)
262
262
  - [Digitalhub SDK Runtime Container](https://github.com/scc-digitalhub/digitalhub-sdk-runtime-container)
263
263
  - [Digitalhub SDK Runtime Kfp](https://github.com/scc-digitalhub/digitalhub-sdk-runtime-kfp)
264
+ - [Digitalhub SDK Runtime Hera](https://github.com/scc-digitalhub/digitalhub-sdk-runtime-hera)
264
265
  - [Digitalhub SDK Runtime Modelserve](https://github.com/scc-digitalhub/digitalhub-sdk-runtime-modelserve)
265
266
 
266
267
  ## Development
@@ -12,7 +12,7 @@ Explore the full documentation at the [link](https://scc-digitalhub.github.io/sd
12
12
  To install the Digitalhub, you can use pip:
13
13
 
14
14
  ```bash
15
- pip install digitalhub
15
+ pip install digitalhub[full]
16
16
  ```
17
17
 
18
18
  To be able to create and execute functions or workflows, you need to install the runtime you want to use. The Digitalhub SDK supports multiple runtimes, each with its own installation instructions:
@@ -21,6 +21,7 @@ To be able to create and execute functions or workflows, you need to install the
21
21
  - [Digitalhub SDK Runtime Dbt](https://github.com/scc-digitalhub/digitalhub-sdk-runtime-dbt)
22
22
  - [Digitalhub SDK Runtime Container](https://github.com/scc-digitalhub/digitalhub-sdk-runtime-container)
23
23
  - [Digitalhub SDK Runtime Kfp](https://github.com/scc-digitalhub/digitalhub-sdk-runtime-kfp)
24
+ - [Digitalhub SDK Runtime Hera](https://github.com/scc-digitalhub/digitalhub-sdk-runtime-hera)
24
25
  - [Digitalhub SDK Runtime Modelserve](https://github.com/scc-digitalhub/digitalhub-sdk-runtime-modelserve)
25
26
 
26
27
  ## Development
@@ -95,16 +95,11 @@ from digitalhub.entities.workflow.crud import (
95
95
  new_workflow,
96
96
  update_workflow,
97
97
  )
98
+ from digitalhub.stores.client.dhcore.utils import refresh_token, set_dhcore_env
99
+ from digitalhub.stores.credentials.api import get_current_profile, set_current_profile
100
+ from digitalhub.utils.store_utils import get_s3_client, get_sql_engine
98
101
 
99
102
  try:
100
103
  from digitalhub.entities.model.mlflow.utils import from_mlflow_run, get_mlflow_model_metrics
101
104
  except ImportError:
102
105
  ...
103
-
104
- # Register entities into registry
105
- from digitalhub.factory.utils import register_entities, register_runtimes_entities
106
- from digitalhub.stores.client.dhcore.utils import refresh_token, set_dhcore_env
107
- from digitalhub.stores.credentials.api import get_current_profile, set_current_profile
108
-
109
- register_entities()
110
- register_runtimes_entities()
@@ -63,17 +63,6 @@ class Base:
63
63
  if k not in self.__dict__:
64
64
  setattr(self, k, v)
65
65
 
66
- def _get_private_attrs(self) -> dict:
67
- """
68
- Return all private attributes of the object.
69
-
70
- Returns
71
- -------
72
- dict
73
- A dictionary containing the private attributes of the entity instance.
74
- """
75
- return {k: v for k, v in self.__dict__.items() if k.startswith("_")}
76
-
77
66
  def __repr__(self) -> str:
78
67
  """
79
68
  Return string representation of the entity object.
@@ -7,11 +7,11 @@ from __future__ import annotations
7
7
  import typing
8
8
  from abc import abstractmethod
9
9
 
10
- from digitalhub.entities._base.entity._constructors.metadata import build_metadata
11
- from digitalhub.entities._base.entity._constructors.name import build_name
12
- from digitalhub.entities._base.entity._constructors.spec import build_spec
13
- from digitalhub.entities._base.entity._constructors.status import build_status
14
- from digitalhub.entities._base.entity._constructors.uuid import build_uuid
10
+ from digitalhub.entities._constructors.metadata import build_metadata
11
+ from digitalhub.entities._constructors.name import build_name
12
+ from digitalhub.entities._constructors.spec import build_spec
13
+ from digitalhub.entities._constructors.status import build_status
14
+ from digitalhub.entities._constructors.uuid import build_uuid
15
15
  from digitalhub.utils.exceptions import BuilderError
16
16
 
17
17
  if typing.TYPE_CHECKING:
@@ -430,7 +430,7 @@ class ExecutableEntity(VersionedEntity):
430
430
  task_string = task._get_task_string()
431
431
 
432
432
  # Get run validator for building trigger template
433
- run_kind = factory.get_run_kind(self.kind)
433
+ run_kind = factory.get_run_kind_from_action(self.kind, action)
434
434
  run_validator: SpecValidator = factory.get_spec_validator(run_kind)
435
435
  # Override kwargs
436
436
  kwargs["project"] = self.project
@@ -0,0 +1,145 @@
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._commons.utils import KindAction
8
+ from digitalhub.utils.exceptions import EntityError
9
+
10
+
11
+ class RuntimeEntityBuilder:
12
+ """
13
+ RuntimeEntity builder.
14
+ """
15
+
16
+ EXECUTABLE_KIND: str = None
17
+ TASKS_KINDS: list[KindAction] = None
18
+ RUN_KINDS: list[KindAction] = None
19
+
20
+ def __init__(self) -> None:
21
+ self._validate()
22
+
23
+ def _validate(self) -> None:
24
+ """
25
+ Validate the entity.
26
+ """
27
+ for attr_name in ["EXECUTABLE_KIND", "TASKS_KINDS", "RUN_KINDS"]:
28
+ value = getattr(self, attr_name)
29
+ if value is None:
30
+ raise EntityError(f"{attr_name} must be set")
31
+
32
+ for attr_name in ["TASKS_KINDS", "RUN_KINDS"]:
33
+ self._instance_validation(getattr(self, attr_name))
34
+
35
+ def _instance_validation(self, attribute: list[KindAction]) -> None:
36
+ """
37
+ Validate if the attribute is a list of KindAction.
38
+
39
+ Parameters
40
+ ----------
41
+ attribute : list[KindAction]
42
+ Attribute to validate.
43
+ """
44
+ if not isinstance(attribute, list):
45
+ raise EntityError(f"{attribute} must be a list")
46
+ for i in attribute:
47
+ if not isinstance(i, KindAction):
48
+ raise EntityError(f"{attribute} must be a list of KindAction")
49
+ if i.kind is None:
50
+ raise EntityError(f"{attribute} must be a list of KindAction with kind set")
51
+
52
+ def get_action_from_task_kind(self, task_kind: str) -> str:
53
+ """
54
+ Get action from task kind.
55
+
56
+ Parameters
57
+ ----------
58
+ task_kind : str
59
+ Task kind.
60
+
61
+ Returns
62
+ -------
63
+ str
64
+ Action.
65
+ """
66
+ for task in self.TASKS_KINDS:
67
+ if task.kind == task_kind:
68
+ return task.action
69
+ msg = f"Task kind {task_kind} not allowed."
70
+ raise EntityError(msg)
71
+
72
+ def get_task_kind_from_action(self, action: str) -> list[str]:
73
+ """
74
+ Get task kinds from action.
75
+
76
+ Parameters
77
+ ----------
78
+ action : str
79
+ Action.
80
+
81
+ Returns
82
+ -------
83
+ list[str]
84
+ Task kinds.
85
+ """
86
+ for task in self.TASKS_KINDS:
87
+ if task.action == action:
88
+ return task.kind
89
+ msg = f"Action {action} not allowed."
90
+ raise EntityError(msg)
91
+
92
+ def get_run_kind_from_action(self, action: str) -> str:
93
+ """
94
+ Get run kind from action.
95
+
96
+ Parameters
97
+ ----------
98
+ action : str
99
+ Action.
100
+
101
+ Returns
102
+ -------
103
+ str
104
+ Run kind.
105
+ """
106
+ for run in self.RUN_KINDS:
107
+ if run.action == action:
108
+ return run.kind
109
+ msg = f"Action {action} not allowed."
110
+ raise EntityError(msg)
111
+
112
+ def get_executable_kind(self) -> str:
113
+ """
114
+ Get executable kind.
115
+
116
+ Returns
117
+ -------
118
+ str
119
+ Executable kind.
120
+ """
121
+ return self.EXECUTABLE_KIND
122
+
123
+ def get_all_kinds(self) -> list[str]:
124
+ """
125
+ Get all kinds.
126
+
127
+ Returns
128
+ -------
129
+ list[str]
130
+ All kinds.
131
+ """
132
+ task_kinds = [i.kind for i in self.TASKS_KINDS]
133
+ run_kinds = [i.kind for i in self.RUN_KINDS]
134
+ return [self.EXECUTABLE_KIND, *run_kinds, *task_kinds]
135
+
136
+ def get_all_actions(self) -> list[str]:
137
+ """
138
+ Get all actions.
139
+
140
+ Returns
141
+ -------
142
+ list[str]
143
+ All actions.
144
+ """
145
+ return [i.action for i in self.TASKS_KINDS]
@@ -4,8 +4,34 @@
4
4
 
5
5
  from __future__ import annotations
6
6
 
7
+ import re
8
+ from collections import namedtuple
9
+
7
10
  from digitalhub.entities._commons.enums import EntityTypes
8
11
 
12
+ KindAction = namedtuple("KindAction", ["kind", "action"])
13
+
14
+
15
+ KEY_PATTERN_WITH_ID = "store://([^/]+)/([^/]+)/([^/]+)/([^:]+):(.+)"
16
+ KEY_PATTERN_NO_ID = "store://([^/]+)/([^/]+)/([^/]+)/([^:]+)"
17
+
18
+
19
+ def is_valid_key(key: str) -> bool:
20
+ """
21
+ Check if an entity key is valid.
22
+
23
+ Parameters
24
+ ----------
25
+ key : str
26
+ The entity key to validate.
27
+
28
+ Returns
29
+ -------
30
+ bool
31
+ True if the key is valid, False otherwise.
32
+ """
33
+ return bool(re.fullmatch(KEY_PATTERN_WITH_ID, key) or re.fullmatch(KEY_PATTERN_NO_ID, key))
34
+
9
35
 
10
36
  def parse_entity_key(key: str) -> tuple[str, str, str, str | None, str]:
11
37
  """
@@ -32,34 +58,34 @@ def parse_entity_key(key: str) -> tuple[str, str, str, str | None, str]:
32
58
  ValueError
33
59
  If the key format is invalid or cannot be parsed.
34
60
  """
35
- try:
36
- # Remove "store://" from the key
37
- key = key.replace("store://", "")
61
+ if not is_valid_key(key):
62
+ raise ValueError("Invalid entity key format.")
38
63
 
39
- # Split the key into parts
40
- parts = key.split("/")
64
+ # Remove "store://" from the key
65
+ key = key.replace("store://", "")
41
66
 
42
- # The project is the first part
43
- project = parts[0]
67
+ # Split the key into parts
68
+ parts = key.split("/")
44
69
 
45
- # The entity type is the second part
46
- entity_type = parts[1]
70
+ # The project is the first part
71
+ project = parts[0]
47
72
 
48
- # The kind is the third part
49
- kind = parts[2]
73
+ # The entity type is the second part
74
+ entity_type = parts[1]
50
75
 
51
- # Tasks and runs have no name and uuid
52
- if entity_type in (EntityTypes.TASK.value, EntityTypes.RUN.value):
53
- name = None
54
- uuid = parts[3]
76
+ # The kind is the third part
77
+ kind = parts[2]
55
78
 
56
- # The name and uuid are separated by a colon in the last part
57
- else:
58
- name, uuid = parts[3].split(":")
79
+ # Tasks and runs have no name and uuid
80
+ if entity_type in (EntityTypes.TASK.value, EntityTypes.RUN.value):
81
+ name = None
82
+ uuid = parts[3]
59
83
 
60
- return project, entity_type, kind, name, uuid
61
- except Exception as e:
62
- raise ValueError("Invalid key format.") from e
84
+ # The name and uuid are separated by a colon in the last part
85
+ else:
86
+ name, uuid = parts[3].split(":")
87
+
88
+ return project, entity_type, kind, name, uuid
63
89
 
64
90
 
65
91
  def get_entity_type_from_key(key: str) -> str:
@@ -112,3 +138,20 @@ def get_project_from_key(key: str) -> str:
112
138
  """
113
139
  project, _, _, _, _ = parse_entity_key(key)
114
140
  return project
141
+
142
+
143
+ def map_actions(kind_action_list: list[tuple[str, str]]) -> list[KindAction]:
144
+ """
145
+ Build task actions as KindAction namedtuples.
146
+
147
+ Parameters
148
+ ----------
149
+ kind_action_list : list[tuple[str, str]]
150
+ List of kind-action couples.
151
+
152
+ Returns
153
+ -------
154
+ list[KindAction]
155
+ Returns the task actions as KindAction namedtuples.
156
+ """
157
+ return [KindAction(kind, action) for (kind, action) in kind_action_list]
@@ -5,6 +5,7 @@
5
5
  from __future__ import annotations
6
6
 
7
7
  import typing
8
+ from warnings import warn
8
9
 
9
10
  from digitalhub.context.api import delete_context
10
11
  from digitalhub.entities._commons.enums import ApiCategories, BackendOperations
@@ -190,7 +191,7 @@ class BaseEntityOperationsProcessor:
190
191
  file : str
191
192
  Path to the YAML file containing project configuration.
192
193
  **kwargs : dict
193
- Additional parameters including 'local' flag.
194
+ Additional parameters including 'local' and 'reset_id' flags.
194
195
 
195
196
  Returns
196
197
  -------
@@ -207,14 +208,21 @@ class BaseEntityOperationsProcessor:
207
208
  obj["status"] = {}
208
209
  obj["local"] = client.is_local()
209
210
  ent: Project = factory.build_entity_from_dict(obj)
211
+ reset_id = kwargs.pop("reset_id", False)
210
212
 
211
213
  try:
212
214
  self._create_base_entity(ent._client, ent.ENTITY_TYPE, ent.to_dict())
213
215
  except EntityAlreadyExistsError:
214
- raise EntityError(f"Entity {ent.name} already exists. If you want to update it, use load instead.")
216
+ msg = f"Entity {ent.name} already exists."
217
+ if reset_id:
218
+ ent._import_entities(obj, reset_id=reset_id)
219
+ warn(f"{msg} Other entities ids have been imported.")
220
+ ent.refresh()
221
+ return ent
222
+ raise EntityError(f"{msg} If you want to update it, use load instead.")
215
223
 
216
224
  # Import related entities
217
- ent._import_entities(obj)
225
+ ent._import_entities(obj, reset_id=reset_id)
218
226
  ent.refresh()
219
227
  return ent
220
228
 
@@ -8,6 +8,8 @@ import typing
8
8
  from typing import Any
9
9
 
10
10
  from digitalhub.entities._commons.enums import ApiCategories, BackendOperations, Relationship, State
11
+ from digitalhub.entities._commons.utils import is_valid_key
12
+ from digitalhub.entities._constructors.uuid import build_uuid
11
13
  from digitalhub.entities._processors.utils import (
12
14
  get_context_from_identifier,
13
15
  get_context_from_project,
@@ -319,7 +321,7 @@ class ContextEntityOperationsProcessor:
319
321
  UnversionedEntity
320
322
  The unversioned entity object populated with backend data.
321
323
  """
322
- if not identifier.startswith("store://"):
324
+ if not is_valid_key(identifier):
323
325
  entity_id = identifier
324
326
  else:
325
327
  splt = identifier.split(":")
@@ -335,19 +337,25 @@ class ContextEntityOperationsProcessor:
335
337
 
336
338
  def import_context_entity(
337
339
  self,
338
- file: str,
340
+ file: str | None = None,
341
+ key: str | None = None,
342
+ reset_id: bool = False,
343
+ context: str | None = None,
339
344
  ) -> ContextEntity:
340
345
  """
341
- Import a context entity from a YAML file and create it in the backend.
342
-
343
- Reads entity configuration from a YAML file and creates a new
344
- context entity in the backend. Raises an error if the entity
345
- already exists.
346
+ Import a context entity from a YAML file or from a storage key.
346
347
 
347
348
  Parameters
348
349
  ----------
349
350
  file : str
350
351
  Path to the YAML file containing entity configuration.
352
+ key : str
353
+ Storage key (store://...) to read the entity from.
354
+ reset_id : bool
355
+ Flag to determine if the ID of context entities should be reset.
356
+ context : str, optional
357
+ Project name to use for context resolution. If None, uses
358
+ the project specified in the YAML file.
351
359
 
352
360
  Returns
353
361
  -------
@@ -359,32 +367,54 @@ class ContextEntityOperationsProcessor:
359
367
  EntityError
360
368
  If the entity already exists in the backend.
361
369
  """
362
- dict_obj: dict = read_yaml(file)
370
+ if (file is None) == (key is None):
371
+ raise ValueError("Provide key or file, not both or none.")
372
+
373
+ if file is not None:
374
+ dict_obj: dict = read_yaml(file)
375
+ else:
376
+ ctx = get_context_from_identifier(key)
377
+ dict_obj: dict = self._read_context_entity(ctx, key)
378
+
363
379
  dict_obj["status"] = {}
364
- context = get_context_from_project(dict_obj["project"])
380
+
381
+ if context is None:
382
+ context = dict_obj["project"]
383
+
384
+ ctx = get_context_from_project(context)
365
385
  obj = factory.build_entity_from_dict(dict_obj)
386
+ if reset_id:
387
+ new_id = build_uuid()
388
+ obj.id = new_id
389
+ obj.metadata.version = new_id
366
390
  try:
367
- self._create_context_entity(context, obj.ENTITY_TYPE, obj.to_dict())
391
+ bck_obj = self._create_context_entity(ctx, obj.ENTITY_TYPE, obj.to_dict())
392
+ new_obj: ContextEntity = factory.build_entity_from_dict(bck_obj)
368
393
  except EntityAlreadyExistsError:
369
394
  raise EntityError(f"Entity {obj.name} already exists. If you want to update it, use load instead.")
370
- return obj
395
+ return new_obj
371
396
 
372
397
  def import_executable_entity(
373
398
  self,
374
- file: str,
399
+ file: str | None = None,
400
+ key: str | None = None,
401
+ reset_id: bool = False,
402
+ context: str | None = None,
375
403
  ) -> ExecutableEntity:
376
404
  """
377
- Import an executable entity from a YAML file and create it in the backend.
378
-
379
- Reads executable entity configuration from a YAML file and creates
380
- a new executable entity (function or workflow) in the backend.
381
- Also imports associated task definitions if present in the file.
405
+ Import an executable entity from a YAML file or from a storage key.
382
406
 
383
407
  Parameters
384
408
  ----------
385
409
  file : str
386
410
  Path to the YAML file containing executable entity configuration.
387
411
  Can contain a single entity or a list with the executable and tasks.
412
+ key : str
413
+ Storage key (store://...) to read the entity from.
414
+ reset_id : bool
415
+ Flag to determine if the ID of executable entities should be reset.
416
+ context : str, optional
417
+ Project name to use for context resolution.
388
418
 
389
419
  Returns
390
420
  -------
@@ -396,7 +426,15 @@ class ContextEntityOperationsProcessor:
396
426
  EntityError
397
427
  If the entity already exists in the backend.
398
428
  """
399
- dict_obj: dict | list[dict] = read_yaml(file)
429
+ if (file is None) == (key is None):
430
+ raise ValueError("Provide key or file, not both or none.")
431
+
432
+ if file is not None:
433
+ dict_obj: dict | list[dict] = read_yaml(file)
434
+ else:
435
+ ctx = get_context_from_identifier(key)
436
+ dict_obj: dict = self._read_context_entity(ctx, key)
437
+
400
438
  if isinstance(dict_obj, list):
401
439
  exec_dict = dict_obj[0]
402
440
  exec_dict["status"] = {}
@@ -406,18 +444,29 @@ class ContextEntityOperationsProcessor:
406
444
  tsk_dicts.append(i)
407
445
  else:
408
446
  exec_dict = dict_obj
447
+ exec_dict["status"] = {}
409
448
  tsk_dicts = []
410
449
 
411
- context = get_context_from_project(exec_dict["project"])
450
+ if context is None:
451
+ context = exec_dict["project"]
452
+
453
+ ctx = get_context_from_project(context)
412
454
  obj: ExecutableEntity = factory.build_entity_from_dict(exec_dict)
455
+
456
+ if reset_id:
457
+ new_id = build_uuid()
458
+ obj.id = new_id
459
+ obj.metadata.version = new_id
460
+
413
461
  try:
414
- self._create_context_entity(context, obj.ENTITY_TYPE, obj.to_dict())
462
+ bck_obj = self._create_context_entity(ctx, obj.ENTITY_TYPE, obj.to_dict())
463
+ new_obj: ExecutableEntity = factory.build_entity_from_dict(bck_obj)
415
464
  except EntityAlreadyExistsError:
416
465
  raise EntityError(f"Entity {obj.name} already exists. If you want to update it, use load instead.")
417
466
 
418
- obj.import_tasks(tsk_dicts)
467
+ new_obj.import_tasks(tsk_dicts)
419
468
 
420
- return obj
469
+ return new_obj
421
470
 
422
471
  def load_context_entity(
423
472
  self,
@@ -8,7 +8,7 @@ import typing
8
8
 
9
9
  from digitalhub.context.api import get_context
10
10
  from digitalhub.entities._commons.enums import ApiCategories, BackendOperations, EntityTypes
11
- from digitalhub.entities._commons.utils import get_project_from_key, parse_entity_key
11
+ from digitalhub.entities._commons.utils import get_project_from_key, is_valid_key, parse_entity_key
12
12
  from digitalhub.factory.factory import factory
13
13
  from digitalhub.stores.client.api import get_client
14
14
  from digitalhub.utils.exceptions import ContextError, EntityError, EntityNotExistsError
@@ -57,7 +57,7 @@ def parse_identifier(
57
57
  ValueError
58
58
  If identifier is not a full key and project or entity_type is None.
59
59
  """
60
- if not identifier.startswith("store://"):
60
+ if not is_valid_key(identifier):
61
61
  if project is None or entity_type is None:
62
62
  raise ValueError("Project and entity type must be specified.")
63
63
  return project, entity_type, entity_kind, identifier, entity_id
@@ -93,7 +93,7 @@ def get_context_from_identifier(
93
93
  EntityError
94
94
  If identifier is not a full key and project parameter is None.
95
95
  """
96
- if not identifier.startswith("store://"):
96
+ if not is_valid_key(identifier):
97
97
  if project is None:
98
98
  raise EntityError("Specify project if you do not specify entity key.")
99
99
  else:
@@ -238,14 +238,25 @@ def list_artifacts(project: str, **kwargs) -> list[Artifact]:
238
238
  )
239
239
 
240
240
 
241
- def import_artifact(file: str) -> Artifact:
241
+ def import_artifact(
242
+ file: str | None = None,
243
+ key: str | None = None,
244
+ reset_id: bool = False,
245
+ context: str | None = None,
246
+ ) -> Artifact:
242
247
  """
243
- Import object from a YAML file and create a new object into the backend.
248
+ Import an object from a YAML file or from a storage key.
244
249
 
245
250
  Parameters
246
251
  ----------
247
252
  file : str
248
- Path to YAML file.
253
+ Path to the YAML file.
254
+ key : str
255
+ Entity key (store://...).
256
+ reset_id : bool
257
+ Flag to determine if the ID of executable entities should be reset.
258
+ context : str
259
+ Project name to use for context resolution.
249
260
 
250
261
  Returns
251
262
  -------
@@ -256,7 +267,12 @@ def import_artifact(file: str) -> Artifact:
256
267
  --------
257
268
  >>> obj = import_artifact("my-artifact.yaml")
258
269
  """
259
- return context_processor.import_context_entity(file)
270
+ return context_processor.import_context_entity(
271
+ file,
272
+ key,
273
+ reset_id,
274
+ context,
275
+ )
260
276
 
261
277
 
262
278
  def load_artifact(file: str) -> Artifact: