digitalhub 0.10.3__tar.gz → 0.11.0__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 (306) hide show
  1. {digitalhub-0.10.3 → digitalhub-0.11.0}/PKG-INFO +1 -1
  2. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/__init__.py +10 -0
  3. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/context/api.py +10 -4
  4. digitalhub-0.11.0/digitalhub/context/builder.py +96 -0
  5. digitalhub-0.11.0/digitalhub/context/context.py +75 -0
  6. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/entity/builder.py +11 -0
  7. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/executable/entity.py +52 -5
  8. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/material/utils.py +11 -11
  9. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_commons/enums.py +4 -0
  10. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_processors/base.py +15 -15
  11. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_processors/context.py +62 -15
  12. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_processors/utils.py +2 -2
  13. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/builders.py +2 -0
  14. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/function/_base/entity.py +3 -3
  15. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/project/_base/builder.py +4 -0
  16. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/project/_base/entity.py +5 -2
  17. digitalhub-0.11.0/digitalhub/entities/project/_base/models.py +18 -0
  18. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/project/_base/spec.py +6 -0
  19. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/project/crud.py +2 -13
  20. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/run/_base/entity.py +6 -12
  21. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/task/_base/entity.py +4 -4
  22. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/task/_base/models.py +20 -2
  23. digitalhub-0.11.0/digitalhub/entities/trigger/_base/builder.py +70 -0
  24. digitalhub-0.11.0/digitalhub/entities/trigger/_base/entity.py +34 -0
  25. digitalhub-0.11.0/digitalhub/entities/trigger/_base/spec.py +40 -0
  26. digitalhub-0.11.0/digitalhub/entities/trigger/_base/status.py +9 -0
  27. digitalhub-0.11.0/digitalhub/entities/trigger/crud.py +309 -0
  28. digitalhub-0.11.0/digitalhub/entities/trigger/lifecycle/builder.py +19 -0
  29. digitalhub-0.11.0/digitalhub/entities/trigger/lifecycle/entity.py +32 -0
  30. digitalhub-0.11.0/digitalhub/entities/trigger/lifecycle/spec.py +38 -0
  31. digitalhub-0.11.0/digitalhub/entities/trigger/lifecycle/status.py +9 -0
  32. digitalhub-0.11.0/digitalhub/entities/trigger/scheduler/builder.py +19 -0
  33. digitalhub-0.11.0/digitalhub/entities/trigger/scheduler/entity.py +32 -0
  34. digitalhub-0.11.0/digitalhub/entities/trigger/scheduler/spec.py +29 -0
  35. digitalhub-0.11.0/digitalhub/entities/trigger/scheduler/status.py +9 -0
  36. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/workflow/_base/entity.py +3 -3
  37. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/factory/factory.py +113 -26
  38. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/factory/utils.py +31 -14
  39. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/runtimes/_base.py +22 -11
  40. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/runtimes/builder.py +16 -3
  41. digitalhub-0.11.0/digitalhub/runtimes/enums.py +22 -0
  42. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/client/api.py +1 -1
  43. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/client/builder.py +2 -2
  44. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/client/dhcore/client.py +2 -2
  45. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/client/dhcore/configurator.py +10 -4
  46. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/configurator/configurator.py +2 -1
  47. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/configurator/enums.py +9 -0
  48. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/data/api.py +2 -2
  49. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/data/builder.py +4 -5
  50. digitalhub-0.11.0/digitalhub/stores/data/enums.py +11 -0
  51. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/data/s3/configurator.py +0 -1
  52. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/data/s3/enums.py +2 -3
  53. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/data/s3/store.py +2 -3
  54. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/data/s3/utils.py +13 -18
  55. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/data/sql/configurator.py +3 -3
  56. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/data/sql/store.py +0 -1
  57. digitalhub-0.11.0/digitalhub/stores/data/utils.py +34 -0
  58. digitalhub-0.11.0/digitalhub/stores/readers/data/_base/__init__.py +0 -0
  59. digitalhub-0.11.0/digitalhub/stores/readers/data/pandas/__init__.py +0 -0
  60. digitalhub-0.11.0/digitalhub/stores/readers/query/__init__.py +0 -0
  61. digitalhub-0.11.0/digitalhub/utils/__init__.py +0 -0
  62. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/utils/file_utils.py +1 -1
  63. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/utils/generic_utils.py +37 -0
  64. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/utils/uri_utils.py +5 -0
  65. {digitalhub-0.10.3 → digitalhub-0.11.0}/pyproject.toml +2 -2
  66. digitalhub-0.10.3/digitalhub/context/builder.py +0 -81
  67. digitalhub-0.10.3/digitalhub/context/context.py +0 -64
  68. digitalhub-0.10.3/digitalhub/factory/api.py +0 -277
  69. digitalhub-0.10.3/digitalhub/runtimes/enums.py +0 -12
  70. {digitalhub-0.10.3 → digitalhub-0.11.0}/.github/scripts/bump.sh +0 -0
  71. {digitalhub-0.10.3 → digitalhub-0.11.0}/.github/scripts/changelog.sh +0 -0
  72. {digitalhub-0.10.3 → digitalhub-0.11.0}/.github/scripts/cliff.toml +0 -0
  73. {digitalhub-0.10.3 → digitalhub-0.11.0}/.github/workflows/release.yml +0 -0
  74. {digitalhub-0.10.3 → digitalhub-0.11.0}/.github/workflows/run_local_test.yml +0 -0
  75. {digitalhub-0.10.3 → digitalhub-0.11.0}/.github/workflows/test_release.yml +0 -0
  76. {digitalhub-0.10.3 → digitalhub-0.11.0}/.gitignore +0 -0
  77. {digitalhub-0.10.3 → digitalhub-0.11.0}/LICENSE.txt +0 -0
  78. {digitalhub-0.10.3 → digitalhub-0.11.0}/README.md +0 -0
  79. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/__init__.py +0 -0
  80. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/__init__.py +0 -0
  81. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/_base/__init__.py +0 -0
  82. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/_base/entity.py +0 -0
  83. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/context/__init__.py +0 -0
  84. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/context/entity.py +0 -0
  85. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/entity/__init__.py +0 -0
  86. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/entity/_constructors/__init__.py +0 -0
  87. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/entity/_constructors/metadata.py +0 -0
  88. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/entity/_constructors/name.py +0 -0
  89. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/entity/_constructors/spec.py +0 -0
  90. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/entity/_constructors/status.py +0 -0
  91. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/entity/_constructors/uuid.py +0 -0
  92. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/entity/entity.py +0 -0
  93. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/entity/metadata.py +0 -0
  94. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/entity/spec.py +0 -0
  95. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/entity/status.py +0 -0
  96. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/executable/__init__.py +0 -0
  97. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/material/__init__.py +0 -0
  98. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/material/entity.py +0 -0
  99. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/material/spec.py +0 -0
  100. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/material/status.py +0 -0
  101. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/runtime_entity/__init__.py +0 -0
  102. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/runtime_entity/builder.py +0 -0
  103. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/unversioned/__init__.py +0 -0
  104. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/unversioned/builder.py +0 -0
  105. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/unversioned/entity.py +0 -0
  106. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/versioned/__init__.py +0 -0
  107. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/versioned/builder.py +0 -0
  108. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_base/versioned/entity.py +0 -0
  109. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_commons/__init__.py +0 -0
  110. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_commons/metrics.py +0 -0
  111. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_commons/types.py +0 -0
  112. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_commons/utils.py +0 -0
  113. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/_processors/__init__.py +0 -0
  114. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/artifact/__init__.py +0 -0
  115. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/artifact/_base/__init__.py +0 -0
  116. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/artifact/_base/builder.py +0 -0
  117. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/artifact/_base/entity.py +0 -0
  118. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/artifact/_base/spec.py +0 -0
  119. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/artifact/_base/status.py +0 -0
  120. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/artifact/artifact/__init__.py +0 -0
  121. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/artifact/artifact/builder.py +0 -0
  122. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/artifact/artifact/entity.py +0 -0
  123. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/artifact/artifact/spec.py +0 -0
  124. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/artifact/artifact/status.py +0 -0
  125. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/artifact/crud.py +0 -0
  126. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/artifact/utils.py +0 -0
  127. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/__init__.py +0 -0
  128. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/_base/__init__.py +0 -0
  129. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/_base/builder.py +0 -0
  130. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/_base/entity.py +0 -0
  131. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/_base/spec.py +0 -0
  132. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/_base/status.py +0 -0
  133. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/crud.py +0 -0
  134. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/dataitem/__init__.py +0 -0
  135. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/dataitem/builder.py +0 -0
  136. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/dataitem/entity.py +0 -0
  137. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/dataitem/spec.py +0 -0
  138. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/dataitem/status.py +0 -0
  139. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/iceberg/__init__.py +0 -0
  140. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/iceberg/builder.py +0 -0
  141. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/iceberg/entity.py +0 -0
  142. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/iceberg/spec.py +0 -0
  143. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/iceberg/status.py +0 -0
  144. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/table/__init__.py +0 -0
  145. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/table/builder.py +0 -0
  146. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/table/entity.py +0 -0
  147. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/table/models.py +0 -0
  148. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/table/spec.py +0 -0
  149. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/table/status.py +0 -0
  150. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/table/utils.py +0 -0
  151. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/dataitem/utils.py +0 -0
  152. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/function/__init__.py +0 -0
  153. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/function/_base/__init__.py +0 -0
  154. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/function/_base/builder.py +0 -0
  155. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/function/_base/spec.py +0 -0
  156. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/function/_base/status.py +0 -0
  157. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/function/crud.py +0 -0
  158. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/__init__.py +0 -0
  159. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/_base/__init__.py +0 -0
  160. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/_base/builder.py +0 -0
  161. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/_base/entity.py +0 -0
  162. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/_base/spec.py +0 -0
  163. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/_base/status.py +0 -0
  164. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/crud.py +0 -0
  165. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/huggingface/__init__.py +0 -0
  166. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/huggingface/builder.py +0 -0
  167. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/huggingface/entity.py +0 -0
  168. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/huggingface/spec.py +0 -0
  169. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/huggingface/status.py +0 -0
  170. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/mlflow/__init__.py +0 -0
  171. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/mlflow/builder.py +0 -0
  172. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/mlflow/entity.py +0 -0
  173. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/mlflow/models.py +0 -0
  174. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/mlflow/spec.py +0 -0
  175. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/mlflow/status.py +0 -0
  176. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/mlflow/utils.py +0 -0
  177. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/model/__init__.py +0 -0
  178. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/model/builder.py +0 -0
  179. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/model/entity.py +0 -0
  180. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/model/spec.py +0 -0
  181. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/model/status.py +0 -0
  182. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/sklearn/__init__.py +0 -0
  183. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/sklearn/builder.py +0 -0
  184. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/sklearn/entity.py +0 -0
  185. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/sklearn/spec.py +0 -0
  186. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/sklearn/status.py +0 -0
  187. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/model/utils.py +0 -0
  188. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/project/__init__.py +0 -0
  189. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/project/_base/__init__.py +0 -0
  190. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/project/_base/status.py +0 -0
  191. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/project/utils.py +0 -0
  192. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/run/__init__.py +0 -0
  193. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/run/_base/__init__.py +0 -0
  194. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/run/_base/builder.py +0 -0
  195. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/run/_base/spec.py +0 -0
  196. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/run/_base/status.py +0 -0
  197. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/run/crud.py +0 -0
  198. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/secret/__init__.py +0 -0
  199. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/secret/_base/__init__.py +0 -0
  200. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/secret/_base/builder.py +0 -0
  201. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/secret/_base/entity.py +0 -0
  202. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/secret/_base/spec.py +0 -0
  203. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/secret/_base/status.py +0 -0
  204. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/secret/crud.py +0 -0
  205. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/task/__init__.py +0 -0
  206. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/task/_base/__init__.py +0 -0
  207. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/task/_base/builder.py +0 -0
  208. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/task/_base/spec.py +0 -0
  209. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/task/_base/status.py +0 -0
  210. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/task/_base/utils.py +0 -0
  211. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/task/crud.py +0 -0
  212. {digitalhub-0.10.3/digitalhub/entities/workflow → digitalhub-0.11.0/digitalhub/entities/trigger}/__init__.py +0 -0
  213. {digitalhub-0.10.3/digitalhub/entities/workflow → digitalhub-0.11.0/digitalhub/entities/trigger}/_base/__init__.py +0 -0
  214. {digitalhub-0.10.3/digitalhub/factory → digitalhub-0.11.0/digitalhub/entities/trigger/lifecycle}/__init__.py +0 -0
  215. {digitalhub-0.10.3/digitalhub/runtimes → digitalhub-0.11.0/digitalhub/entities/trigger/scheduler}/__init__.py +0 -0
  216. {digitalhub-0.10.3/digitalhub/stores → digitalhub-0.11.0/digitalhub/entities/workflow}/__init__.py +0 -0
  217. {digitalhub-0.10.3/digitalhub/stores/client → digitalhub-0.11.0/digitalhub/entities/workflow/_base}/__init__.py +0 -0
  218. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/workflow/_base/builder.py +0 -0
  219. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/workflow/_base/spec.py +0 -0
  220. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/workflow/_base/status.py +0 -0
  221. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/entities/workflow/crud.py +0 -0
  222. {digitalhub-0.10.3/digitalhub/stores/client/_base → digitalhub-0.11.0/digitalhub/factory}/__init__.py +0 -0
  223. {digitalhub-0.10.3/digitalhub/stores/client/dhcore → digitalhub-0.11.0/digitalhub/runtimes}/__init__.py +0 -0
  224. {digitalhub-0.10.3/digitalhub/stores/client/local → digitalhub-0.11.0/digitalhub/stores}/__init__.py +0 -0
  225. {digitalhub-0.10.3/digitalhub/stores/configurator → digitalhub-0.11.0/digitalhub/stores/client}/__init__.py +0 -0
  226. {digitalhub-0.10.3/digitalhub/stores/data → digitalhub-0.11.0/digitalhub/stores/client/_base}/__init__.py +0 -0
  227. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/client/_base/api_builder.py +0 -0
  228. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/client/_base/client.py +0 -0
  229. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/client/_base/key_builder.py +0 -0
  230. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/client/_base/params_builder.py +0 -0
  231. {digitalhub-0.10.3/digitalhub/stores/data/_base → digitalhub-0.11.0/digitalhub/stores/client/dhcore}/__init__.py +0 -0
  232. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/client/dhcore/api_builder.py +0 -0
  233. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/client/dhcore/enums.py +0 -0
  234. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/client/dhcore/error_parser.py +0 -0
  235. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/client/dhcore/key_builder.py +0 -0
  236. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/client/dhcore/models.py +0 -0
  237. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/client/dhcore/params_builder.py +0 -0
  238. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/client/dhcore/utils.py +0 -0
  239. {digitalhub-0.10.3/digitalhub/stores/data → digitalhub-0.11.0/digitalhub/stores/client}/local/__init__.py +0 -0
  240. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/client/local/api_builder.py +0 -0
  241. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/client/local/client.py +0 -0
  242. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/client/local/enums.py +0 -0
  243. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/client/local/key_builder.py +0 -0
  244. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/client/local/params_builder.py +0 -0
  245. {digitalhub-0.10.3/digitalhub/stores/data/remote → digitalhub-0.11.0/digitalhub/stores/configurator}/__init__.py +0 -0
  246. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/configurator/api.py +0 -0
  247. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/configurator/credentials_store.py +0 -0
  248. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/configurator/ini_module.py +0 -0
  249. {digitalhub-0.10.3/digitalhub/stores/data/s3 → digitalhub-0.11.0/digitalhub/stores/data}/__init__.py +0 -0
  250. {digitalhub-0.10.3/digitalhub/stores/data/sql → digitalhub-0.11.0/digitalhub/stores/data/_base}/__init__.py +0 -0
  251. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/data/_base/store.py +0 -0
  252. {digitalhub-0.10.3/digitalhub/stores/readers → digitalhub-0.11.0/digitalhub/stores/data/local}/__init__.py +0 -0
  253. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/data/local/store.py +0 -0
  254. {digitalhub-0.10.3/digitalhub/stores/readers/data → digitalhub-0.11.0/digitalhub/stores/data/remote}/__init__.py +0 -0
  255. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/data/remote/store.py +0 -0
  256. {digitalhub-0.10.3/digitalhub/stores/readers/data/_base → digitalhub-0.11.0/digitalhub/stores/data/s3}/__init__.py +0 -0
  257. {digitalhub-0.10.3/digitalhub/stores/readers/data/pandas → digitalhub-0.11.0/digitalhub/stores/data/sql}/__init__.py +0 -0
  258. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/data/sql/enums.py +0 -0
  259. {digitalhub-0.10.3/digitalhub/stores/readers/query → digitalhub-0.11.0/digitalhub/stores/readers}/__init__.py +0 -0
  260. {digitalhub-0.10.3/digitalhub/utils → digitalhub-0.11.0/digitalhub/stores/readers/data}/__init__.py +0 -0
  261. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/readers/data/_base/builder.py +0 -0
  262. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/readers/data/_base/reader.py +0 -0
  263. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/readers/data/api.py +0 -0
  264. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/readers/data/factory.py +0 -0
  265. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/readers/data/pandas/builder.py +0 -0
  266. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/stores/readers/data/pandas/reader.py +0 -0
  267. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/utils/enums.py +0 -0
  268. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/utils/exceptions.py +0 -0
  269. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/utils/git_utils.py +0 -0
  270. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/utils/io_utils.py +0 -0
  271. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/utils/logger.py +0 -0
  272. {digitalhub-0.10.3 → digitalhub-0.11.0}/digitalhub/utils/types.py +0 -0
  273. {digitalhub-0.10.3 → digitalhub-0.11.0}/scripts/README.md +0 -0
  274. {digitalhub-0.10.3 → digitalhub-0.11.0}/scripts/local-copy/README.md +0 -0
  275. {digitalhub-0.10.3 → digitalhub-0.11.0}/scripts/local-copy/local_copy.sh +0 -0
  276. {digitalhub-0.10.3 → digitalhub-0.11.0}/scripts/quick-docker-copy/DBT.dockerfile +0 -0
  277. {digitalhub-0.10.3 → digitalhub-0.11.0}/scripts/quick-docker-copy/KFP.dockerfile +0 -0
  278. {digitalhub-0.10.3 → digitalhub-0.11.0}/scripts/quick-docker-copy/PY10.dockerfile +0 -0
  279. {digitalhub-0.10.3 → digitalhub-0.11.0}/scripts/quick-docker-copy/PY11.dockerfile +0 -0
  280. {digitalhub-0.10.3 → digitalhub-0.11.0}/scripts/quick-docker-copy/PY9.dockerfile +0 -0
  281. {digitalhub-0.10.3 → digitalhub-0.11.0}/scripts/quick-docker-copy/README.md +0 -0
  282. {digitalhub-0.10.3 → digitalhub-0.11.0}/scripts/quick-docker-copy/build_containers.sh +0 -0
  283. {digitalhub-0.10.3 → digitalhub-0.11.0}/scripts/spec_exporter/README.md +0 -0
  284. {digitalhub-0.10.3 → digitalhub-0.11.0}/scripts/spec_exporter/exporter.sh +0 -0
  285. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/local/CRUD/test_artifacts.py +0 -0
  286. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/local/CRUD/test_dataitems.py +0 -0
  287. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/local/CRUD/test_models.py +0 -0
  288. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/local/imports/test_imports.py +0 -0
  289. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/local/instances/entities/artifact/artifact-http.json +0 -0
  290. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/local/instances/entities/artifact/artifact-local.json +0 -0
  291. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/local/instances/entities/artifact/artifact-s3.json +0 -0
  292. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/local/instances/entities/artifact/artifact-sql.json +0 -0
  293. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/local/instances/entities/dataitem/dataitem-table.json +0 -0
  294. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/local/instances/entities/dataitem/dataitem.json +0 -0
  295. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/local/instances/entities/model/model-huggingface.json +0 -0
  296. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/local/instances/entities/model/model-mlflow.json +0 -0
  297. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/local/instances/entities/model/model-sklearn.json +0 -0
  298. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/local/instances/entities/model/model.json +0 -0
  299. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/local/instances/entities/project.json +0 -0
  300. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/local/instances/entities/secret.json +0 -0
  301. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/local/instances/test_validate.py +0 -0
  302. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/test_crud_functions.py +0 -0
  303. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/test_crud_runs.py +0 -0
  304. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/test_crud_tasks.py +0 -0
  305. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/testkfp.py +0 -0
  306. {digitalhub-0.10.3 → digitalhub-0.11.0}/test/testkfp_pipeline.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: digitalhub
3
- Version: 0.10.3
3
+ Version: 0.11.0
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 <dslab@fbk.eu>, Matteo Martini <mmartini@fbk.eu>
@@ -72,6 +72,16 @@ from digitalhub.entities.task.crud import (
72
72
  new_task,
73
73
  update_task,
74
74
  )
75
+ from digitalhub.entities.trigger.crud import (
76
+ delete_trigger,
77
+ get_trigger,
78
+ get_trigger_versions,
79
+ import_trigger,
80
+ list_triggers,
81
+ load_trigger,
82
+ new_trigger,
83
+ update_trigger,
84
+ )
75
85
  from digitalhub.entities.workflow.crud import (
76
86
  delete_workflow,
77
87
  get_workflow,
@@ -9,20 +9,26 @@ if typing.TYPE_CHECKING:
9
9
  from digitalhub.entities.project._base.entity import Project
10
10
 
11
11
 
12
- def build_context(project: Project, overwrite: bool = False) -> None:
12
+ def build_context(project: Project, overwrite: bool = False) -> Context:
13
13
  """
14
- Wrapper for ContextBuilder.build().
14
+ Build a new context for a project.
15
+
16
+ Creates or updates a context instance for the given project in the global
17
+ context registry.
15
18
 
16
19
  Parameters
17
20
  ----------
18
21
  project : Project
19
22
  The project object used to build the context.
23
+ overwrite : bool, optional
24
+ If True, overwrites existing context if it exists, by default False.
20
25
 
21
26
  Returns
22
27
  -------
23
- None
28
+ Context
29
+ The newly created or existing context instance.
24
30
  """
25
- context_builder.build(project, overwrite)
31
+ return context_builder.build(project, overwrite)
26
32
 
27
33
 
28
34
  def get_context(project: str) -> Context:
@@ -0,0 +1,96 @@
1
+ from __future__ import annotations
2
+
3
+ import typing
4
+
5
+ from digitalhub.context.context import Context
6
+ from digitalhub.utils.exceptions import ContextError
7
+
8
+ if typing.TYPE_CHECKING:
9
+ from digitalhub.entities.project._base.entity import Project
10
+
11
+
12
+ class ContextBuilder:
13
+ """
14
+ A builder class for managing project contexts.
15
+
16
+ This class implements the builder pattern to create and manage Context instances.
17
+ It maintains a registry of project contexts, allowing multiple projects to be
18
+ used simultaneously by storing them with their respective names.
19
+
20
+ Attributes
21
+ ----------
22
+ _instances : dict[str, Context]
23
+ Internal registry mapping project names to their Context instances.
24
+ """
25
+
26
+ def __init__(self) -> None:
27
+ self._instances: dict[str, Context] = {}
28
+
29
+ def build(self, project: Project, overwrite: bool = False) -> Context:
30
+ """
31
+ Add a project as context and return the created Context instance.
32
+
33
+ Parameters
34
+ ----------
35
+ project : Project
36
+ The project instance to create a context for.
37
+ overwrite : bool, optional
38
+ If True, overwrites existing context if project name already exists,
39
+ by default False.
40
+
41
+ Returns
42
+ -------
43
+ Context
44
+ The newly created or existing Context instance.
45
+ """
46
+ if (project.name not in self._instances) or overwrite:
47
+ self._instances[project.name] = Context(project)
48
+ return self._instances[project.name]
49
+
50
+ def get(self, project: str) -> Context:
51
+ """
52
+ Retrieve a context instance by project name.
53
+
54
+ Parameters
55
+ ----------
56
+ project : str
57
+ The name of the project whose context to retrieve.
58
+
59
+ Returns
60
+ -------
61
+ Context
62
+ The context instance associated with the project.
63
+
64
+ Raises
65
+ ------
66
+ ContextError
67
+ If no context exists for the specified project name.
68
+ """
69
+ try:
70
+ return self._instances[project]
71
+ except KeyError:
72
+ raise ContextError(f"Context '{project}' not found. Get or create a project named '{project}'.")
73
+
74
+ def remove(self, project: str) -> None:
75
+ """
76
+ Remove a project's context from the registry.
77
+
78
+ Parameters
79
+ ----------
80
+ project : str
81
+ The name of the project whose context should be removed.
82
+
83
+ Returns
84
+ -------
85
+ None
86
+ This method doesn't return anything.
87
+
88
+ Notes
89
+ -----
90
+ If the project doesn't exist in the registry, this method
91
+ silently does nothing.
92
+ """
93
+ self._instances.pop(project, None)
94
+
95
+
96
+ context_builder = ContextBuilder()
@@ -0,0 +1,75 @@
1
+ from __future__ import annotations
2
+
3
+ import typing
4
+ from pathlib import Path
5
+
6
+ if typing.TYPE_CHECKING:
7
+ from digitalhub.entities.project._base.entity import Project
8
+ from digitalhub.stores.client._base.client import Client
9
+
10
+
11
+ class Context:
12
+ """
13
+ Context class built from a Project instance.
14
+
15
+ Contains project-specific information and state, including project name,
16
+ client instance, local context paths, and run-time information.
17
+
18
+ Attributes
19
+ ----------
20
+ name : str
21
+ The name of the project.
22
+ client : BaseClient
23
+ The client instance (local or remote) associated with the project.
24
+ config : dict
25
+ Project configuration profile.
26
+ local : bool
27
+ Whether the client is local or remote.
28
+ root : Path
29
+ The local context project path.
30
+ is_running : bool
31
+ Flag indicating if the context has an active run.
32
+ _run_ctx : str | None
33
+ Current run key, if any.
34
+ """
35
+
36
+ def __init__(self, project: Project) -> None:
37
+ self.name: str = project.name
38
+ self.client: Client = project._client
39
+ self.config: dict = project.spec.config
40
+ self.local: bool = project._client.is_local()
41
+ self.root: Path = Path(project.spec.context)
42
+ self.root.mkdir(parents=True, exist_ok=True)
43
+
44
+ self.is_running: bool = False
45
+ self._run_ctx: str | None = None
46
+
47
+ def set_run(self, run_ctx: str) -> None:
48
+ """
49
+ Set the current run key.
50
+
51
+ Parameters
52
+ ----------
53
+ run_ctx : str
54
+ The run key to set.
55
+ """
56
+ self.is_running = True
57
+ self._run_ctx = run_ctx
58
+
59
+ def unset_run(self) -> None:
60
+ """
61
+ Clear the current run key and reset running state.
62
+ """
63
+ self.is_running = False
64
+ self._run_ctx = None
65
+
66
+ def get_run_ctx(self) -> str | None:
67
+ """
68
+ Get the current run key.
69
+
70
+ Returns
71
+ -------
72
+ str | None
73
+ The current run key if set, None otherwise.
74
+ """
75
+ return self._run_ctx
@@ -178,3 +178,14 @@ class EntityBuilder:
178
178
  Entity kind.
179
179
  """
180
180
  return self.ENTITY_KIND
181
+
182
+ def get_spec_validator(self) -> type[SpecValidator]:
183
+ """
184
+ Get entity spec validator.
185
+
186
+ Returns
187
+ -------
188
+ type[SpecValidator]
189
+ Entity spec validator.
190
+ """
191
+ return self.ENTITY_SPEC_VALIDATOR
@@ -7,15 +7,16 @@ from digitalhub.entities._commons.enums import EntityTypes
7
7
  from digitalhub.entities._processors.context import context_processor
8
8
  from digitalhub.entities.run.crud import delete_run, get_run, list_runs
9
9
  from digitalhub.entities.task.crud import delete_task
10
- from digitalhub.factory.api import build_entity_from_dict, build_entity_from_params
10
+ from digitalhub.factory.factory import factory
11
11
  from digitalhub.utils.exceptions import EntityAlreadyExistsError, EntityError
12
12
 
13
13
  if typing.TYPE_CHECKING:
14
14
  from digitalhub.entities._base.entity.metadata import Metadata
15
- from digitalhub.entities._base.entity.spec import Spec
15
+ from digitalhub.entities._base.entity.spec import Spec, SpecValidator
16
16
  from digitalhub.entities._base.entity.status import Status
17
17
  from digitalhub.entities.run._base.entity import Run
18
18
  from digitalhub.entities.task._base.entity import Task
19
+ from digitalhub.entities.trigger._base.entity import Trigger
19
20
 
20
21
 
21
22
  class ExecutableEntity(VersionedEntity):
@@ -102,7 +103,7 @@ class ExecutableEntity(VersionedEntity):
102
103
  # Create a new object from dictionary.
103
104
  # the form in which tasks are stored in function
104
105
  # status
105
- task_obj = build_entity_from_dict(task)
106
+ task_obj: Task = factory.build_entity_from_dict(task)
106
107
 
107
108
  # Try to save it in backend to been able to use
108
109
  # it for launching runs. In fact, tasks must be
@@ -145,7 +146,7 @@ class ExecutableEntity(VersionedEntity):
145
146
  kwargs["kind"] = task_kind
146
147
 
147
148
  # Create object instance
148
- task = build_entity_from_params(**kwargs)
149
+ task: Task = factory.build_entity_from_params(**kwargs)
149
150
  task.save()
150
151
 
151
152
  self._tasks[task_kind] = task
@@ -207,7 +208,7 @@ class ExecutableEntity(VersionedEntity):
207
208
  kwargs["uuid"] = self._tasks[kind].id
208
209
 
209
210
  # Update task
210
- task = build_entity_from_params(**kwargs)
211
+ task: Task = factory.build_entity_from_params(**kwargs)
211
212
  task.save(update=True)
212
213
  self._tasks[kind] = task
213
214
  return task
@@ -403,3 +404,49 @@ class ExecutableEntity(VersionedEntity):
403
404
  project=self.project,
404
405
  **kwargs,
405
406
  )
407
+
408
+ ##############################
409
+ # Trigger
410
+ ##############################
411
+
412
+ def trigger(self, action: str, trigger_kind: str, trigger_name: str, **kwargs) -> Trigger:
413
+ """
414
+ Trigger function.
415
+
416
+ Parameters
417
+ ----------
418
+ action : str
419
+ Action to execute.
420
+ trigger_kind : str
421
+ Trigger kind.
422
+ **kwargs : dict
423
+ Keyword arguments passed to Run builder.
424
+
425
+ Returns
426
+ -------
427
+ Run
428
+ Run instance.
429
+ """
430
+ # Get task
431
+ task_kind = factory.get_task_kind_from_action(self.kind, action)
432
+ task = self._get_or_create_task(task_kind)
433
+ task_string = task._get_task_string()
434
+
435
+ # Get run validator for building trigger template
436
+ run_kind = factory.get_run_kind(self.kind)
437
+ run_validator: SpecValidator = factory.get_spec_validator(run_kind)
438
+ if kwargs is None:
439
+ kwargs = {}
440
+
441
+ # Override kwargs
442
+ kwargs["project"] = self.project
443
+ kwargs["kind"] = trigger_kind
444
+ kwargs["name"] = trigger_name
445
+ kwargs[self.ENTITY_TYPE] = self._get_executable_string()
446
+ kwargs["task"] = task_string
447
+ kwargs["template"] = run_validator(**kwargs).to_dict()
448
+
449
+ # Create object instance
450
+ trigger: Trigger = factory.build_entity_from_params(**kwargs)
451
+ trigger.save()
452
+ return trigger
@@ -2,9 +2,9 @@ from __future__ import annotations
2
2
 
3
3
  from pathlib import Path
4
4
 
5
- from digitalhub.stores.data.s3.utils import get_s3_bucket_from_env
5
+ from digitalhub.stores.data.utils import get_default_store
6
6
  from digitalhub.utils.file_utils import eval_zip_type
7
- from digitalhub.utils.uri_utils import S3Schemes, has_local_scheme
7
+ from digitalhub.utils.uri_utils import has_local_scheme
8
8
 
9
9
 
10
10
  def eval_local_source(source: str | list[str]) -> None:
@@ -34,7 +34,7 @@ def eval_local_source(source: str | list[str]) -> None:
34
34
  raise ValueError("Invalid source path. Source must be a local path.")
35
35
 
36
36
 
37
- def eval_zip_sources(source: str | list[str]) -> str:
37
+ def eval_zip_sources(source: str | list[str]) -> bool:
38
38
  """
39
39
  Evaluate zip sources.
40
40
 
@@ -45,21 +45,21 @@ def eval_zip_sources(source: str | list[str]) -> str:
45
45
 
46
46
  Returns
47
47
  -------
48
- str
49
- S3Schemes.
48
+ bool
49
+ True if source is zip.
50
50
  """
51
51
  if isinstance(source, list):
52
52
  if len(source) > 1:
53
- return S3Schemes.S3.value
53
+ return False
54
54
  path = source[0]
55
55
  else:
56
56
  if Path(source).is_dir():
57
- return S3Schemes.S3.value
57
+ return False
58
58
  path = source
59
59
 
60
60
  if not eval_zip_type(path):
61
- return S3Schemes.S3.value
62
- return S3Schemes.ZIP_S3.value
61
+ return False
62
+ return True
63
63
 
64
64
 
65
65
  def build_log_path_from_source(
@@ -90,8 +90,8 @@ def build_log_path_from_source(
90
90
  str
91
91
  Log path.
92
92
  """
93
- scheme = eval_zip_sources(source)
94
- path = f"{scheme}://{get_s3_bucket_from_env()}/{project}/{entity_type}/{name}/{uuid}"
93
+ prefix = "zip+" if eval_zip_sources(source) else ""
94
+ path = f"{prefix}{get_default_store(project)}/{project}/{entity_type}/{name}/{uuid}"
95
95
 
96
96
  if isinstance(source, list) and len(source) >= 1:
97
97
  if len(source) > 1:
@@ -17,6 +17,7 @@ class EntityTypes(Enum):
17
17
  WORKFLOW = "workflow"
18
18
  TASK = "task"
19
19
  RUN = "run"
20
+ TRIGGER = "trigger"
20
21
 
21
22
 
22
23
  class Relationship(Enum):
@@ -55,6 +56,7 @@ class State(Enum):
55
56
  STOPPED = "STOPPED"
56
57
  SUCCESS = "SUCCESS"
57
58
  UNKNOWN = "UNKNOWN"
59
+ UPLOADING = "UPLOADING"
58
60
 
59
61
 
60
62
  class ApiCategories(Enum):
@@ -103,3 +105,5 @@ class EntityKinds(Enum):
103
105
  MODEL_HUGGINGFACE = "huggingface"
104
106
  MODEL_SKLEARN = "sklearn"
105
107
  SECRET_SECRET = "secret"
108
+ TRIGGER_SCHEDULER = "scheduler"
109
+ TRIGGER_LIFECYCLE = "lifecycle"
@@ -4,7 +4,7 @@ import typing
4
4
 
5
5
  from digitalhub.context.api import delete_context
6
6
  from digitalhub.entities._commons.enums import ApiCategories, BackendOperations
7
- from digitalhub.factory.api import build_entity_from_dict, build_entity_from_params
7
+ from digitalhub.factory.factory import factory
8
8
  from digitalhub.stores.client.api import get_client
9
9
  from digitalhub.utils.exceptions import EntityAlreadyExistsError, EntityError, EntityNotExistsError
10
10
  from digitalhub.utils.io_utils import read_yaml
@@ -84,11 +84,11 @@ class BaseEntityOperationsProcessor:
84
84
  client = _entity._client
85
85
  obj = _entity
86
86
  else:
87
- client = get_client(kwargs.get("local"), kwargs.pop("config", None))
88
- obj = build_entity_from_params(**kwargs)
87
+ client = get_client(kwargs.get("local"))
88
+ obj = factory.build_entity_from_params(**kwargs)
89
89
  ent = self._create_base_entity(client, obj.ENTITY_TYPE, obj.to_dict())
90
90
  ent["local"] = client.is_local()
91
- return build_entity_from_dict(ent)
91
+ return factory.build_entity_from_dict(ent)
92
92
 
93
93
  def _read_base_entity(
94
94
  self,
@@ -147,10 +147,10 @@ class BaseEntityOperationsProcessor:
147
147
  Project
148
148
  Object instance.
149
149
  """
150
- client = get_client(kwargs.pop("local", False), kwargs.pop("config", None))
150
+ client = get_client(kwargs.pop("local", False))
151
151
  obj = self._read_base_entity(client, entity_type, entity_name, **kwargs)
152
152
  obj["local"] = client.is_local()
153
- return build_entity_from_dict(obj)
153
+ return factory.build_entity_from_dict(obj)
154
154
 
155
155
  def import_project_entity(
156
156
  self,
@@ -172,11 +172,11 @@ class BaseEntityOperationsProcessor:
172
172
  Project
173
173
  Object instance.
174
174
  """
175
- client = get_client(kwargs.pop("local", False), kwargs.pop("config", None))
175
+ client = get_client(kwargs.pop("local", False))
176
176
  obj: dict = read_yaml(file)
177
177
  obj["status"] = {}
178
178
  obj["local"] = client.is_local()
179
- ent: Project = build_entity_from_dict(obj)
179
+ ent: Project = factory.build_entity_from_dict(obj)
180
180
 
181
181
  try:
182
182
  self._create_base_entity(ent._client, ent.ENTITY_TYPE, ent.to_dict())
@@ -208,10 +208,10 @@ class BaseEntityOperationsProcessor:
208
208
  Project
209
209
  Object instance.
210
210
  """
211
- client = get_client(kwargs.pop("local", False), kwargs.pop("config", None))
211
+ client = get_client(kwargs.pop("local", False))
212
212
  obj: dict = read_yaml(file)
213
213
  obj["local"] = client.is_local()
214
- ent: Project = build_entity_from_dict(obj)
214
+ ent: Project = factory.build_entity_from_dict(obj)
215
215
 
216
216
  try:
217
217
  self._update_base_entity(ent._client, ent.ENTITY_TYPE, ent.name, ent.to_dict())
@@ -278,7 +278,7 @@ class BaseEntityOperationsProcessor:
278
278
  entities = []
279
279
  for obj in objs:
280
280
  obj["local"] = client.is_local()
281
- ent = build_entity_from_dict(obj)
281
+ ent = factory.build_entity_from_dict(obj)
282
282
  entities.append(ent)
283
283
  return entities
284
284
 
@@ -345,10 +345,10 @@ class BaseEntityOperationsProcessor:
345
345
  Project
346
346
  Object instance.
347
347
  """
348
- client = get_client(kwargs.pop("local", False), kwargs.pop("config", None))
348
+ client = get_client(kwargs.pop("local", False))
349
349
  obj = self._update_base_entity(client, entity_type, entity_name, entity_dict, **kwargs)
350
350
  obj["local"] = client.is_local()
351
- return build_entity_from_dict(obj)
351
+ return factory.build_entity_from_dict(obj)
352
352
 
353
353
  def _delete_base_entity(
354
354
  self,
@@ -414,7 +414,7 @@ class BaseEntityOperationsProcessor:
414
414
  """
415
415
  if kwargs.pop("clean_context", True):
416
416
  delete_context(entity_name)
417
- client = get_client(kwargs.pop("local", False), kwargs.pop("config", None))
417
+ client = get_client(kwargs.pop("local", False))
418
418
  return self._delete_base_entity(
419
419
  client,
420
420
  entity_type,
@@ -493,7 +493,7 @@ class BaseEntityOperationsProcessor:
493
493
  -------
494
494
  None
495
495
  """
496
- client = get_client(kwargs.pop("local", False), kwargs.pop("config", None))
496
+ client = get_client(kwargs.pop("local", False))
497
497
  api = client.build_api(
498
498
  ApiCategories.BASE.value,
499
499
  BackendOperations.SHARE.value,
@@ -3,13 +3,13 @@ from __future__ import annotations
3
3
  import typing
4
4
  from typing import Any
5
5
 
6
- from digitalhub.entities._commons.enums import ApiCategories, BackendOperations, Relationship
6
+ from digitalhub.entities._commons.enums import ApiCategories, BackendOperations, Relationship, State
7
7
  from digitalhub.entities._processors.utils import (
8
8
  get_context_from_identifier,
9
9
  get_context_from_project,
10
10
  parse_identifier,
11
11
  )
12
- from digitalhub.factory.api import build_entity_from_dict, build_entity_from_params
12
+ from digitalhub.factory.factory import factory
13
13
  from digitalhub.utils.exceptions import EntityAlreadyExistsError, EntityError, EntityNotExistsError
14
14
  from digitalhub.utils.io_utils import read_yaml
15
15
  from digitalhub.utils.types import SourcesOrListOfSources
@@ -91,9 +91,9 @@ class ContextEntityOperationsProcessor:
91
91
  obj = _entity
92
92
  else:
93
93
  context = get_context_from_project(kwargs["project"])
94
- obj: ContextEntity = build_entity_from_params(**kwargs)
94
+ obj: ContextEntity = factory.build_entity_from_params(**kwargs)
95
95
  new_obj = self._create_context_entity(context, obj.ENTITY_TYPE, obj.to_dict())
96
- return build_entity_from_dict(new_obj)
96
+ return factory.build_entity_from_dict(new_obj)
97
97
 
98
98
  def log_material_entity(
99
99
  self,
@@ -114,13 +114,36 @@ class ContextEntityOperationsProcessor:
114
114
  """
115
115
  source: SourcesOrListOfSources = kwargs.pop("source")
116
116
  context = get_context_from_project(kwargs["project"])
117
- obj = build_entity_from_params(**kwargs)
117
+ obj = factory.build_entity_from_params(**kwargs)
118
118
  if context.is_running:
119
119
  obj.add_relationship(Relationship.PRODUCEDBY.value, context.get_run_ctx())
120
120
 
121
121
  new_obj: MaterialEntity = self._create_context_entity(context, obj.ENTITY_TYPE, obj.to_dict())
122
- new_obj = build_entity_from_dict(new_obj)
123
- new_obj.upload(source)
122
+ new_obj = factory.build_entity_from_dict(new_obj)
123
+
124
+ new_obj.status.state = State.UPLOADING.value
125
+ new_obj = self._update_material_entity(new_obj)
126
+
127
+ # Handle file upload
128
+ try:
129
+ new_obj.upload(source)
130
+ uploaded = True
131
+ msg = None
132
+ except Exception as e:
133
+ uploaded = False
134
+ msg = str(e)
135
+
136
+ new_obj.status.message = msg
137
+
138
+ # Update status after upload
139
+ if uploaded:
140
+ new_obj.status.state = State.READY.value
141
+ new_obj = self._update_material_entity(new_obj)
142
+ else:
143
+ new_obj.status.state = State.ERROR.value
144
+ new_obj = self._update_material_entity(new_obj)
145
+ raise EntityError(msg)
146
+
124
147
  return new_obj
125
148
 
126
149
  def _read_context_entity(
@@ -226,7 +249,7 @@ class ContextEntityOperationsProcessor:
226
249
  entity_id=entity_id,
227
250
  **kwargs,
228
251
  )
229
- entity = build_entity_from_dict(obj)
252
+ entity = factory.build_entity_from_dict(obj)
230
253
  return self._post_process_get(entity)
231
254
 
232
255
  def read_unversioned_entity(
@@ -292,7 +315,7 @@ class ContextEntityOperationsProcessor:
292
315
  dict_obj: dict = read_yaml(file)
293
316
  dict_obj["status"] = {}
294
317
  context = get_context_from_project(dict_obj["project"])
295
- obj = build_entity_from_dict(dict_obj)
318
+ obj = factory.build_entity_from_dict(dict_obj)
296
319
  try:
297
320
  self._create_context_entity(context, obj.ENTITY_TYPE, obj.to_dict())
298
321
  except EntityAlreadyExistsError:
@@ -329,7 +352,7 @@ class ContextEntityOperationsProcessor:
329
352
  tsk_dicts = []
330
353
 
331
354
  context = get_context_from_project(exec_dict["project"])
332
- obj: ExecutableEntity = build_entity_from_dict(exec_dict)
355
+ obj: ExecutableEntity = factory.build_entity_from_dict(exec_dict)
333
356
  try:
334
357
  self._create_context_entity(context, obj.ENTITY_TYPE, obj.to_dict())
335
358
  except EntityAlreadyExistsError:
@@ -358,7 +381,7 @@ class ContextEntityOperationsProcessor:
358
381
  """
359
382
  dict_obj: dict = read_yaml(file)
360
383
  context = get_context_from_project(dict_obj["project"])
361
- obj: ContextEntity = build_entity_from_dict(dict_obj)
384
+ obj: ContextEntity = factory.build_entity_from_dict(dict_obj)
362
385
  try:
363
386
  self._update_context_entity(context, obj.ENTITY_TYPE, obj.id, obj.to_dict())
364
387
  except EntityNotExistsError:
@@ -391,7 +414,7 @@ class ContextEntityOperationsProcessor:
391
414
  tsk_dicts = []
392
415
 
393
416
  context = get_context_from_project(exec_dict["project"])
394
- obj: ExecutableEntity = build_entity_from_dict(exec_dict)
417
+ obj: ExecutableEntity = factory.build_entity_from_dict(exec_dict)
395
418
 
396
419
  try:
397
420
  self._update_context_entity(context, obj.ENTITY_TYPE, obj.id, obj.to_dict())
@@ -486,7 +509,7 @@ class ContextEntityOperationsProcessor:
486
509
  )
487
510
  objects = []
488
511
  for o in objs:
489
- entity: ContextEntity = build_entity_from_dict(o)
512
+ entity: ContextEntity = factory.build_entity_from_dict(o)
490
513
  entity = self._post_process_get(entity)
491
514
  objects.append(entity)
492
515
  return objects
@@ -549,11 +572,35 @@ class ContextEntityOperationsProcessor:
549
572
  objs = self._list_context_entities(context, entity_type, **kwargs)
550
573
  objects = []
551
574
  for o in objs:
552
- entity: ContextEntity = build_entity_from_dict(o)
575
+ entity: ContextEntity = factory.build_entity_from_dict(o)
553
576
  entity = self._post_process_get(entity)
554
577
  objects.append(entity)
555
578
  return objects
556
579
 
580
+ def _update_material_entity(
581
+ self,
582
+ new_obj: MaterialEntity,
583
+ ) -> dict:
584
+ """
585
+ Update material object shortcut.
586
+
587
+ Parameters
588
+ ----------
589
+ new_obj : MaterialEntity
590
+ Object instance.
591
+
592
+ Returns
593
+ -------
594
+ dict
595
+ Response from backend.
596
+ """
597
+ return self.update_context_entity(
598
+ new_obj.project,
599
+ new_obj.ENTITY_TYPE,
600
+ new_obj.id,
601
+ new_obj.to_dict(),
602
+ )
603
+
557
604
  def _update_context_entity(
558
605
  self,
559
606
  context: Context,
@@ -629,7 +676,7 @@ class ContextEntityOperationsProcessor:
629
676
  entity_dict,
630
677
  **kwargs,
631
678
  )
632
- return build_entity_from_dict(obj)
679
+ return factory.build_entity_from_dict(obj)
633
680
 
634
681
  def _delete_context_entity(
635
682
  self,