digitalhub 0.9.0b0__tar.gz → 0.9.0b2__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 (235) hide show
  1. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/PKG-INFO +1 -1
  2. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/client/dhcore/client.py +12 -13
  3. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/client/dhcore/enums.py +2 -1
  4. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/client/dhcore/utils.py +13 -13
  5. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/entity/metadata.py +1 -1
  6. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_operations/processor.py +4 -1
  7. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/function/_base/entity.py +2 -2
  8. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/run/_base/spec.py +4 -0
  9. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/task/_base/entity.py +16 -9
  10. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/task/_base/models.py +6 -0
  11. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/task/_base/spec.py +6 -0
  12. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/workflow/_base/entity.py +7 -2
  13. digitalhub-0.9.0b2/digitalhub/runtimes/enums.py +12 -0
  14. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub.egg-info/PKG-INFO +1 -1
  15. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub.egg-info/SOURCES.txt +3 -1
  16. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/pyproject.toml +2 -2
  17. digitalhub-0.9.0b2/test/local/instances/test_validate.py +55 -0
  18. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/LICENSE.txt +0 -0
  19. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/README.md +0 -0
  20. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/__init__.py +0 -0
  21. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/client/__init__.py +0 -0
  22. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/client/_base/__init__.py +0 -0
  23. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/client/_base/api_builder.py +0 -0
  24. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/client/_base/client.py +0 -0
  25. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/client/api.py +0 -0
  26. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/client/builder.py +0 -0
  27. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/client/dhcore/__init__.py +0 -0
  28. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/client/dhcore/api_builder.py +0 -0
  29. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/client/dhcore/env.py +0 -0
  30. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/client/dhcore/models.py +0 -0
  31. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/client/local/__init__.py +0 -0
  32. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/client/local/api_builder.py +0 -0
  33. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/client/local/client.py +0 -0
  34. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/context/api.py +0 -0
  35. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/context/builder.py +0 -0
  36. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/context/context.py +0 -0
  37. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/__init__.py +0 -0
  38. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/__init__.py +0 -0
  39. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/_base/__init__.py +0 -0
  40. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/_base/entity.py +0 -0
  41. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/context/__init__.py +0 -0
  42. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/context/entity.py +0 -0
  43. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/entity/__init__.py +0 -0
  44. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/entity/_constructors/__init__.py +0 -0
  45. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/entity/_constructors/metadata.py +0 -0
  46. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/entity/_constructors/name.py +0 -0
  47. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/entity/_constructors/spec.py +0 -0
  48. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/entity/_constructors/status.py +0 -0
  49. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/entity/_constructors/uuid.py +0 -0
  50. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/entity/builder.py +0 -0
  51. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/entity/entity.py +0 -0
  52. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/entity/spec.py +0 -0
  53. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/entity/status.py +0 -0
  54. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/executable/__init__.py +0 -0
  55. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/executable/entity.py +0 -0
  56. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/material/__init__.py +0 -0
  57. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/material/entity.py +0 -0
  58. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/material/spec.py +0 -0
  59. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/material/status.py +0 -0
  60. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/material/utils.py +0 -0
  61. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/project/__init__.py +0 -0
  62. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/project/entity.py +0 -0
  63. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/runtime_entity/__init__.py +0 -0
  64. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/runtime_entity/builder.py +0 -0
  65. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/unversioned/__init__.py +0 -0
  66. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/unversioned/builder.py +0 -0
  67. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/unversioned/entity.py +0 -0
  68. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/versioned/__init__.py +0 -0
  69. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/versioned/builder.py +0 -0
  70. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_base/versioned/entity.py +0 -0
  71. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_commons/__init__.py +0 -0
  72. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_commons/enums.py +0 -0
  73. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_commons/utils.py +0 -0
  74. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/_operations/__init__.py +0 -0
  75. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/artifact/__init__.py +0 -0
  76. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/artifact/_base/__init__.py +0 -0
  77. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/artifact/_base/builder.py +0 -0
  78. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/artifact/_base/entity.py +0 -0
  79. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/artifact/_base/spec.py +0 -0
  80. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/artifact/_base/status.py +0 -0
  81. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/artifact/artifact/__init__.py +0 -0
  82. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/artifact/artifact/builder.py +0 -0
  83. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/artifact/artifact/entity.py +0 -0
  84. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/artifact/artifact/spec.py +0 -0
  85. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/artifact/artifact/status.py +0 -0
  86. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/artifact/crud.py +0 -0
  87. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/artifact/utils.py +0 -0
  88. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/builders.py +0 -0
  89. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/__init__.py +0 -0
  90. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/_base/__init__.py +0 -0
  91. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/_base/builder.py +0 -0
  92. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/_base/entity.py +0 -0
  93. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/_base/spec.py +0 -0
  94. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/_base/status.py +0 -0
  95. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/crud.py +0 -0
  96. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/dataitem/__init__.py +0 -0
  97. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/dataitem/builder.py +0 -0
  98. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/dataitem/entity.py +0 -0
  99. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/dataitem/spec.py +0 -0
  100. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/dataitem/status.py +0 -0
  101. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/iceberg/__init__.py +0 -0
  102. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/iceberg/builder.py +0 -0
  103. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/iceberg/entity.py +0 -0
  104. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/iceberg/spec.py +0 -0
  105. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/iceberg/status.py +0 -0
  106. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/table/__init__.py +0 -0
  107. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/table/builder.py +0 -0
  108. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/table/entity.py +0 -0
  109. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/table/models.py +0 -0
  110. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/table/spec.py +0 -0
  111. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/table/status.py +0 -0
  112. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/dataitem/utils.py +0 -0
  113. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/function/__init__.py +0 -0
  114. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/function/_base/__init__.py +0 -0
  115. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/function/_base/builder.py +0 -0
  116. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/function/_base/spec.py +0 -0
  117. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/function/_base/status.py +0 -0
  118. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/function/crud.py +0 -0
  119. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/__init__.py +0 -0
  120. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/_base/__init__.py +0 -0
  121. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/_base/builder.py +0 -0
  122. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/_base/entity.py +0 -0
  123. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/_base/spec.py +0 -0
  124. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/_base/status.py +0 -0
  125. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/crud.py +0 -0
  126. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/huggingface/__init__.py +0 -0
  127. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/huggingface/builder.py +0 -0
  128. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/huggingface/entity.py +0 -0
  129. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/huggingface/spec.py +0 -0
  130. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/huggingface/status.py +0 -0
  131. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/mlflow/__init__.py +0 -0
  132. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/mlflow/builder.py +0 -0
  133. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/mlflow/entity.py +0 -0
  134. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/mlflow/models.py +0 -0
  135. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/mlflow/spec.py +0 -0
  136. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/mlflow/status.py +0 -0
  137. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/mlflow/utils.py +0 -0
  138. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/model/__init__.py +0 -0
  139. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/model/builder.py +0 -0
  140. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/model/entity.py +0 -0
  141. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/model/spec.py +0 -0
  142. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/model/status.py +0 -0
  143. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/sklearn/__init__.py +0 -0
  144. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/sklearn/builder.py +0 -0
  145. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/sklearn/entity.py +0 -0
  146. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/sklearn/spec.py +0 -0
  147. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/sklearn/status.py +0 -0
  148. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/model/utils.py +0 -0
  149. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/project/__init__.py +0 -0
  150. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/project/_base/__init__.py +0 -0
  151. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/project/_base/builder.py +0 -0
  152. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/project/_base/entity.py +0 -0
  153. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/project/_base/spec.py +0 -0
  154. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/project/_base/status.py +0 -0
  155. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/project/crud.py +0 -0
  156. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/project/utils.py +0 -0
  157. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/run/__init__.py +0 -0
  158. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/run/_base/__init__.py +0 -0
  159. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/run/_base/builder.py +0 -0
  160. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/run/_base/entity.py +0 -0
  161. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/run/_base/status.py +0 -0
  162. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/run/crud.py +0 -0
  163. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/secret/__init__.py +0 -0
  164. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/secret/_base/__init__.py +0 -0
  165. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/secret/_base/builder.py +0 -0
  166. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/secret/_base/entity.py +0 -0
  167. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/secret/_base/spec.py +0 -0
  168. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/secret/_base/status.py +0 -0
  169. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/secret/crud.py +0 -0
  170. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/task/__init__.py +0 -0
  171. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/task/_base/__init__.py +0 -0
  172. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/task/_base/builder.py +0 -0
  173. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/task/_base/status.py +0 -0
  174. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/task/_base/utils.py +0 -0
  175. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/task/crud.py +0 -0
  176. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/workflow/__init__.py +0 -0
  177. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/workflow/_base/__init__.py +0 -0
  178. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/workflow/_base/builder.py +0 -0
  179. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/workflow/_base/spec.py +0 -0
  180. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/workflow/_base/status.py +0 -0
  181. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/entities/workflow/crud.py +0 -0
  182. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/factory/__init__.py +0 -0
  183. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/factory/api.py +0 -0
  184. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/factory/factory.py +0 -0
  185. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/factory/utils.py +0 -0
  186. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/readers/__init__.py +0 -0
  187. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/readers/_base/__init__.py +0 -0
  188. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/readers/_base/builder.py +0 -0
  189. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/readers/_base/reader.py +0 -0
  190. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/readers/_commons/__init__.py +0 -0
  191. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/readers/_commons/enums.py +0 -0
  192. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/readers/api.py +0 -0
  193. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/readers/factory.py +0 -0
  194. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/readers/pandas/__init__.py +0 -0
  195. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/readers/pandas/builder.py +0 -0
  196. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/readers/pandas/reader.py +0 -0
  197. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/runtimes/__init__.py +0 -0
  198. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/runtimes/_base.py +0 -0
  199. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/runtimes/builder.py +0 -0
  200. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/stores/__init__.py +0 -0
  201. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/stores/_base/__init__.py +0 -0
  202. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/stores/_base/store.py +0 -0
  203. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/stores/api.py +0 -0
  204. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/stores/builder.py +0 -0
  205. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/stores/local/__init__.py +0 -0
  206. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/stores/local/store.py +0 -0
  207. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/stores/remote/__init__.py +0 -0
  208. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/stores/remote/store.py +0 -0
  209. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/stores/s3/__init__.py +0 -0
  210. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/stores/s3/store.py +0 -0
  211. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/stores/sql/__init__.py +0 -0
  212. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/stores/sql/store.py +0 -0
  213. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/utils/__init__.py +0 -0
  214. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/utils/data_utils.py +0 -0
  215. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/utils/exceptions.py +0 -0
  216. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/utils/file_utils.py +0 -0
  217. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/utils/generic_utils.py +0 -0
  218. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/utils/git_utils.py +0 -0
  219. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/utils/io_utils.py +0 -0
  220. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/utils/logger.py +0 -0
  221. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/utils/s3_utils.py +0 -0
  222. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub/utils/uri_utils.py +0 -0
  223. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub.egg-info/dependency_links.txt +0 -0
  224. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub.egg-info/requires.txt +0 -0
  225. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/digitalhub.egg-info/top_level.txt +0 -0
  226. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/setup.cfg +0 -0
  227. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/test/local/CRUD/test_artifacts.py +0 -0
  228. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/test/local/CRUD/test_dataitems.py +0 -0
  229. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/test/local/CRUD/test_models.py +0 -0
  230. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/test/local/imports/test_imports.py +0 -0
  231. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/test/test_crud_functions.py +0 -0
  232. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/test/test_crud_runs.py +0 -0
  233. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/test/test_crud_tasks.py +0 -0
  234. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/test/testkfp.py +0 -0
  235. {digitalhub-0.9.0b0 → digitalhub-0.9.0b2}/test/testkfp_pipeline.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: digitalhub
3
- Version: 0.9.0b0
3
+ Version: 0.9.0b2
4
4
  Summary: Python SDK for Digitalhub
5
5
  Author-email: Fondazione Bruno Kessler <dslab@fbk.eu>, Matteo Martini <mmartini@fbk.eu>
6
6
  License: Apache License
@@ -12,7 +12,7 @@ from requests.exceptions import HTTPError, JSONDecodeError, RequestException
12
12
 
13
13
  from digitalhub.client._base.client import Client
14
14
  from digitalhub.client.dhcore.api_builder import ClientDHCoreApiBuilder
15
- from digitalhub.client.dhcore.enums import AuthType, EnvVar
15
+ from digitalhub.client.dhcore.enums import AuthType, DhcoreEnvVar
16
16
  from digitalhub.client.dhcore.env import ENV_FILE, FALLBACK_USER, LIB_VERSION, MAX_API_LEVEL, MIN_API_LEVEL
17
17
  from digitalhub.client.dhcore.models import BasicAuth, OAuth2TokenAuth
18
18
  from digitalhub.utils.exceptions import (
@@ -520,7 +520,6 @@ class ClientDHCore(Client):
520
520
  -------
521
521
  None
522
522
  """
523
-
524
523
  self._get_endpoints_from_env()
525
524
 
526
525
  if config is not None:
@@ -558,12 +557,12 @@ class ClientDHCore(Client):
558
557
  Exception
559
558
  If the endpoint of DHCore is not set in the env variables.
560
559
  """
561
- core_endpt = os.getenv(EnvVar.ENDPOINT.value)
560
+ core_endpt = os.getenv(DhcoreEnvVar.ENDPOINT.value)
562
561
  if core_endpt is None:
563
562
  raise BackendError("Endpoint not set as environment variables.")
564
563
  self._endpoint_core = self._sanitize_endpoint(core_endpt)
565
564
 
566
- issr_endpt = os.getenv(EnvVar.ISSUER.value)
565
+ issr_endpt = os.getenv(DhcoreEnvVar.ISSUER.value)
567
566
  if issr_endpt is not None:
568
567
  self._endpoint_issuer = self._sanitize_endpoint(issr_endpt)
569
568
 
@@ -589,17 +588,17 @@ class ClientDHCore(Client):
589
588
  -------
590
589
  None
591
590
  """
592
- self._user = os.getenv(EnvVar.USER.value, FALLBACK_USER)
593
- self._refresh_token = os.getenv(EnvVar.REFRESH_TOKEN.value)
594
- self._client_id = os.getenv(EnvVar.CLIENT_ID.value)
591
+ self._user = os.getenv(DhcoreEnvVar.USER.value, FALLBACK_USER)
592
+ self._refresh_token = os.getenv(DhcoreEnvVar.REFRESH_TOKEN.value)
593
+ self._client_id = os.getenv(DhcoreEnvVar.CLIENT_ID.value)
595
594
 
596
- token = os.getenv(EnvVar.ACCESS_TOKEN.value)
595
+ token = os.getenv(DhcoreEnvVar.ACCESS_TOKEN.value)
597
596
  if token is not None and token != "":
598
597
  self._auth_type = AuthType.OAUTH2.value
599
598
  self._access_token = token
600
599
  return
601
600
 
602
- password = os.getenv(EnvVar.PASSWORD.value)
601
+ password = os.getenv(DhcoreEnvVar.PASSWORD.value)
603
602
  if self._user is not None and password is not None:
604
603
  self._auth_type = AuthType.BASIC.value
605
604
  self._password = password
@@ -619,12 +618,12 @@ class ClientDHCore(Client):
619
618
 
620
619
  # Call refresh token endpoint
621
620
  # Try token from env
622
- refresh_token = os.getenv(EnvVar.REFRESH_TOKEN.value)
621
+ refresh_token = os.getenv(DhcoreEnvVar.REFRESH_TOKEN.value)
623
622
  response = self._call_refresh_token_endpoint(url, refresh_token)
624
623
 
625
624
  # Otherwise try token from file
626
625
  if response.status_code in (400, 401, 403):
627
- refresh_token = get_key(ENV_FILE, EnvVar.REFRESH_TOKEN.value)
626
+ refresh_token = get_key(ENV_FILE, DhcoreEnvVar.REFRESH_TOKEN.value)
628
627
  response = self._call_refresh_token_endpoint(url, refresh_token)
629
628
 
630
629
  response.raise_for_status()
@@ -694,9 +693,9 @@ class ClientDHCore(Client):
694
693
  """
695
694
  keys = {}
696
695
  if self._access_token is not None:
697
- keys[EnvVar.ACCESS_TOKEN.value] = self._access_token
696
+ keys[DhcoreEnvVar.ACCESS_TOKEN.value] = self._access_token
698
697
  if self._refresh_token is not None:
699
- keys[EnvVar.REFRESH_TOKEN.value] = self._refresh_token
698
+ keys[DhcoreEnvVar.REFRESH_TOKEN.value] = self._refresh_token
700
699
 
701
700
  for k, v in keys.items():
702
701
  set_key(dotenv_path=ENV_FILE, key_to_set=k, value_to_set=v)
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  from enum import Enum
4
4
 
5
5
 
6
- class EnvVar(Enum):
6
+ class DhcoreEnvVar(Enum):
7
7
  """
8
8
  Environment variables.
9
9
  """
@@ -15,6 +15,7 @@ class EnvVar(Enum):
15
15
  CLIENT_ID = "DHCORE_CLIENT_ID"
16
16
  ACCESS_TOKEN = "DHCORE_ACCESS_TOKEN"
17
17
  REFRESH_TOKEN = "DHCORE_REFRESH_TOKEN"
18
+ WORKFLOW_IMAGE = "DHCORE_WORKFLOW_IMAGE"
18
19
 
19
20
 
20
21
  class AuthType(Enum):
@@ -4,7 +4,7 @@ import os
4
4
  import typing
5
5
 
6
6
  from digitalhub.client.api import get_client
7
- from digitalhub.client.dhcore.enums import AuthType, EnvVar
7
+ from digitalhub.client.dhcore.enums import AuthType, DhcoreEnvVar
8
8
 
9
9
  if typing.TYPE_CHECKING:
10
10
  from digitalhub.client.dhcore.client import ClientDHCore
@@ -44,17 +44,17 @@ def set_dhcore_env(
44
44
  None
45
45
  """
46
46
  if endpoint is not None:
47
- os.environ[EnvVar.ENDPOINT.value] = endpoint
47
+ os.environ[DhcoreEnvVar.ENDPOINT.value] = endpoint
48
48
  if user is not None:
49
- os.environ[EnvVar.USER.value] = user
49
+ os.environ[DhcoreEnvVar.USER.value] = user
50
50
  if password is not None:
51
- os.environ[EnvVar.PASSWORD.value] = password
51
+ os.environ[DhcoreEnvVar.PASSWORD.value] = password
52
52
  if access_token is not None:
53
- os.environ[EnvVar.ACCESS_TOKEN.value] = access_token
53
+ os.environ[DhcoreEnvVar.ACCESS_TOKEN.value] = access_token
54
54
  if refresh_token is not None:
55
- os.environ[EnvVar.REFRESH_TOKEN.value] = refresh_token
55
+ os.environ[DhcoreEnvVar.REFRESH_TOKEN.value] = refresh_token
56
56
  if client_id is not None:
57
- os.environ[EnvVar.CLIENT_ID.value] = client_id
57
+ os.environ[DhcoreEnvVar.CLIENT_ID.value] = client_id
58
58
 
59
59
  update_client_from_env()
60
60
 
@@ -70,16 +70,16 @@ def update_client_from_env() -> None:
70
70
  client: ClientDHCore = get_client(local=False)
71
71
 
72
72
  # Update endpoint
73
- endpoint = os.getenv(EnvVar.ENDPOINT.value)
73
+ endpoint = os.getenv(DhcoreEnvVar.ENDPOINT.value)
74
74
  if endpoint is not None:
75
75
  client._endpoint_core = endpoint
76
76
 
77
77
  # Update auth
78
78
 
79
79
  # If token is set, it will override the other auth options
80
- access_token = os.getenv(EnvVar.ACCESS_TOKEN.value)
81
- refresh_token = os.getenv(EnvVar.REFRESH_TOKEN.value)
82
- client_id = os.getenv(EnvVar.CLIENT_ID.value)
80
+ access_token = os.getenv(DhcoreEnvVar.ACCESS_TOKEN.value)
81
+ refresh_token = os.getenv(DhcoreEnvVar.REFRESH_TOKEN.value)
82
+ client_id = os.getenv(DhcoreEnvVar.CLIENT_ID.value)
83
83
 
84
84
  if access_token is not None:
85
85
  if refresh_token is not None:
@@ -91,8 +91,8 @@ def update_client_from_env() -> None:
91
91
  return
92
92
 
93
93
  # Otherwise, if user and password are set, basic auth will be used
94
- username = os.getenv(EnvVar.USER.value)
95
- password = os.getenv(EnvVar.PASSWORD.value)
94
+ username = os.getenv(DhcoreEnvVar.USER.value)
95
+ password = os.getenv(DhcoreEnvVar.PASSWORD.value)
96
96
  if username is not None and password is not None:
97
97
  client._user = username
98
98
  client._password = password
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from pydantic import BaseModel, Field, ConfigDict
3
+ from pydantic import BaseModel, ConfigDict, Field
4
4
 
5
5
  from digitalhub.entities._base._base.entity import Base
6
6
  from digitalhub.entities._commons.enums import Relationship
@@ -538,7 +538,10 @@ class OperationsProcessor:
538
538
  new_obj = self._create_context_entity(context, obj.ENTITY_TYPE, obj.to_dict())
539
539
  return build_entity_from_dict(new_obj)
540
540
 
541
- def log_material_entity(self, **kwargs,) -> MaterialEntity:
541
+ def log_material_entity(
542
+ self,
543
+ **kwargs,
544
+ ) -> MaterialEntity:
542
545
  """
543
546
  Create object in backend and upload file.
544
547
 
@@ -79,11 +79,11 @@ class Function(ExecutableEntity):
79
79
  task = self._get_or_create_task(task_kind)
80
80
 
81
81
  # Run function from task
82
- run = task.run(run_kind, local_execution, **kwargs)
82
+ run = task.run(run_kind, save=False, local_execution=local_execution, **kwargs)
83
83
 
84
84
  # Set as run's parent
85
85
  run.add_relationship(Relationship.RUN_OF.value, run.key + ":" + run.id, self.key)
86
- run.save(update=True)
86
+ run.save()
87
87
 
88
88
  # If execution is done by DHCore backend, return the object
89
89
  if not local_execution:
@@ -21,6 +21,8 @@ class RunSpec(Spec):
21
21
  envs: list[dict] | None = None,
22
22
  secrets: list[str] | None = None,
23
23
  profile: str | None = None,
24
+ runtime_class: str | None = None,
25
+ priority_class: str | None = None,
24
26
  **kwargs,
25
27
  ) -> None:
26
28
  self.task = task
@@ -35,6 +37,8 @@ class RunSpec(Spec):
35
37
  self.envs = envs
36
38
  self.secrets = secrets
37
39
  self.profile = profile
40
+ self.runtime_class = runtime_class
41
+ self.priority_class = priority_class
38
42
 
39
43
 
40
44
  class RunValidator(SpecValidator, K8s):
@@ -4,8 +4,8 @@ import typing
4
4
 
5
5
  from digitalhub.entities._base.unversioned.entity import UnversionedEntity
6
6
  from digitalhub.entities._commons.enums import EntityTypes
7
- from digitalhub.entities.run.crud import delete_run, get_run, new_run
8
- from digitalhub.factory.api import get_entity_type_from_kind, get_executable_kind
7
+ from digitalhub.entities._operations.processor import processor
8
+ from digitalhub.factory.api import build_entity_from_params, get_entity_type_from_kind, get_executable_kind
9
9
 
10
10
  if typing.TYPE_CHECKING:
11
11
  from digitalhub.entities._base.entity.metadata import Metadata
@@ -42,6 +42,7 @@ class Task(UnversionedEntity):
42
42
  def run(
43
43
  self,
44
44
  run_kind: str,
45
+ save: bool = True,
45
46
  local_execution: bool = False,
46
47
  **kwargs,
47
48
  ) -> Run:
@@ -66,6 +67,7 @@ class Task(UnversionedEntity):
66
67
  exec_type = get_entity_type_from_kind(exec_kind)
67
68
  kwargs[exec_type] = getattr(self.spec, exec_type)
68
69
  return self.new_run(
70
+ save=save,
69
71
  project=self.project,
70
72
  task=self._get_task_string(),
71
73
  kind=run_kind,
@@ -88,21 +90,25 @@ class Task(UnversionedEntity):
88
90
  # CRUD Methods for Run
89
91
  ##############################
90
92
 
91
- def new_run(self, **kwargs) -> Run:
93
+ def new_run(self, save: bool = True, **kwargs) -> Run:
92
94
  """
93
95
  Create a new run.
94
96
 
95
97
  Parameters
96
98
  ----------
99
+ save : bool
100
+ Flag to indicate save.
97
101
  **kwargs : dict
98
- Keyword arguments.
102
+ Keyword arguments to build run. See new_run().
99
103
 
100
104
  Returns
101
105
  -------
102
106
  Run
103
107
  Run object.
104
108
  """
105
- return new_run(**kwargs)
109
+ if save:
110
+ return processor.create_context_entity(**kwargs)
111
+ return build_entity_from_params(**kwargs)
106
112
 
107
113
  def get_run(self, entity_key: str) -> Run:
108
114
  """
@@ -118,9 +124,9 @@ class Task(UnversionedEntity):
118
124
  Run
119
125
  Run object.
120
126
  """
121
- return get_run(entity_key)
127
+ return processor.read_context_entity(entity_key)
122
128
 
123
- def delete_run(self, entity_key: str) -> None:
129
+ def delete_run(self, entity_key: str) -> dict:
124
130
  """
125
131
  Delete run.
126
132
 
@@ -131,6 +137,7 @@ class Task(UnversionedEntity):
131
137
 
132
138
  Returns
133
139
  -------
134
- None
140
+ dict
141
+ Response from backend.
135
142
  """
136
- delete_run(entity_key)
143
+ return processor.delete_context_entity(entity_key)
@@ -210,6 +210,12 @@ class K8s(BaseModel):
210
210
  profile: str = None
211
211
  """Profile template."""
212
212
 
213
+ runtime_class: str = None
214
+ """Runtime class name."""
215
+
216
+ priority_class: str = None
217
+ """Priority class."""
218
+
213
219
 
214
220
  class CorePort(BaseModel):
215
221
  """
@@ -22,6 +22,8 @@ class TaskSpecFunction(TaskSpec):
22
22
  envs: list[dict] | None = None,
23
23
  secrets: list[str] | None = None,
24
24
  profile: str | None = None,
25
+ runtime_class: str | None = None,
26
+ priority_class: str | None = None,
25
27
  **kwargs,
26
28
  ) -> None:
27
29
  self.function = function
@@ -33,6 +35,8 @@ class TaskSpecFunction(TaskSpec):
33
35
  self.envs = envs
34
36
  self.secrets = secrets
35
37
  self.profile = profile
38
+ self.runtime_class = runtime_class
39
+ self.priority_class = priority_class
36
40
 
37
41
 
38
42
  class TaskSpecWorkflow(TaskSpec):
@@ -49,6 +53,8 @@ class TaskSpecWorkflow(TaskSpec):
49
53
  envs: list[dict] | None = None,
50
54
  secrets: list[str] | None = None,
51
55
  profile: str | None = None,
56
+ runtime_class: str | None = None,
57
+ priority_class: str | None = None,
52
58
  **kwargs,
53
59
  ) -> None:
54
60
  self.workflow = workflow
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  import typing
4
4
 
5
5
  from digitalhub.entities._base.executable.entity import ExecutableEntity
6
- from digitalhub.entities._commons.enums import EntityTypes
6
+ from digitalhub.entities._commons.enums import EntityTypes, Relationship
7
7
  from digitalhub.factory.api import get_run_kind, get_task_kind_from_action
8
8
  from digitalhub.utils.exceptions import BackendError
9
9
 
@@ -76,7 +76,12 @@ class Workflow(ExecutableEntity):
76
76
  raise BackendError("Cannot run workflow with local backend.")
77
77
 
78
78
  # Run task
79
- run = task.run(run_kind, local_execution=False, **kwargs)
79
+ run = task.run(run_kind, save=False, local_execution=False, **kwargs)
80
+
81
+ # Set as run's parent
82
+ run.add_relationship(Relationship.RUN_OF.value, run.key + ":" + run.id, self.key)
83
+ run.save()
84
+
80
85
  if wait:
81
86
  return run.wait(log_info=log_info)
82
87
  return run
@@ -0,0 +1,12 @@
1
+ from __future__ import annotations
2
+
3
+ from enum import Enum
4
+
5
+
6
+ class RuntimeEnvVar(Enum):
7
+ """
8
+ Environment variables.
9
+ """
10
+
11
+ PROJECT = "PROJECT_NAME"
12
+ RUN_ID = "RUN_ID"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: digitalhub
3
- Version: 0.9.0b0
3
+ Version: 0.9.0b2
4
4
  Summary: Python SDK for Digitalhub
5
5
  Author-email: Fondazione Bruno Kessler <dslab@fbk.eu>, Matteo Martini <mmartini@fbk.eu>
6
6
  License: Apache License
@@ -197,6 +197,7 @@ digitalhub/readers/pandas/reader.py
197
197
  digitalhub/runtimes/__init__.py
198
198
  digitalhub/runtimes/_base.py
199
199
  digitalhub/runtimes/builder.py
200
+ digitalhub/runtimes/enums.py
200
201
  digitalhub/stores/__init__.py
201
202
  digitalhub/stores/api.py
202
203
  digitalhub/stores/builder.py
@@ -228,4 +229,5 @@ test/testkfp_pipeline.py
228
229
  test/local/CRUD/test_artifacts.py
229
230
  test/local/CRUD/test_dataitems.py
230
231
  test/local/CRUD/test_models.py
231
- test/local/imports/test_imports.py
232
+ test/local/imports/test_imports.py
233
+ test/local/instances/test_validate.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "digitalhub"
7
- version = "0.9.0b0"
7
+ version = "0.9.0b2"
8
8
  description = "Python SDK for Digitalhub"
9
9
  readme = "README.md"
10
10
  authors = [
@@ -77,7 +77,7 @@ line-length = 120
77
77
  convention = "numpy"
78
78
 
79
79
  [tool.bumpver]
80
- current_version = "0.9.0b0"
80
+ current_version = "0.9.0b2"
81
81
  version_pattern = "MAJOR.MINOR.PATCH[PYTAGNUM]"
82
82
  commit_message = "Bump version {old_version} -> {new_version}"
83
83
  commit = false
@@ -0,0 +1,55 @@
1
+ import os
2
+ import pytest
3
+ from glob import glob
4
+ from pathlib import Path
5
+ import json
6
+ from jsonschema import validate
7
+ from digitalhub.factory.factory import factory
8
+
9
+ entities_path = "test/local/instances/entities"
10
+ schemas_path = "test/local/instances/schemas"
11
+
12
+ # Build dict: kind -> path to schema file
13
+ schemas = {}
14
+ for path_to_schema in glob(f"{schemas_path}/**/*.json", recursive=True):
15
+ kind = Path(path_to_schema).stem
16
+ schemas[kind] = path_to_schema
17
+
18
+ # Build dict: name of file to validate -> full path to file
19
+ entity_paths = {}
20
+ for path_to_file in glob(f"{entities_path}/**/*.json", recursive=True):
21
+ file_name = os.path.basename(path_to_file)
22
+
23
+ # If a file in a nested directory causes a name collision, use its full path as name
24
+ if file_name in entity_paths:
25
+ file_name = path_to_file
26
+
27
+ entity_paths[file_name] = path_to_file
28
+
29
+ # Build object from JSON file using factory
30
+ def build_obj(entity_file_path):
31
+ with open(entity_file_path) as f:
32
+ entity = json.load(f)
33
+
34
+ kind = entity["kind"]
35
+ spec = entity["spec"]
36
+
37
+ built = factory.build_spec(kind, **spec)
38
+ return built.to_dict(), kind
39
+
40
+ # Validate built object against its kind's schema
41
+ def is_valid(built, kind):
42
+ with open(schemas[kind]) as schema_file:
43
+ schema = json.load(schema_file)
44
+
45
+ validate(instance=built, schema=schema)
46
+ return True
47
+
48
+ # Tests that each JSON file contained in the specified path can successfully be
49
+ # used to generate an object through the factory, and that each generated object,
50
+ # when exported to dict, validates (through jsonschema) against its kind's schema.
51
+ class TestValidate:
52
+ @pytest.mark.parametrize('file_name', list(entity_paths.keys()))
53
+ def test_validate(self, file_name):
54
+ built, kind = build_obj(f"{entity_paths[file_name]}")
55
+ assert is_valid(built, kind)
File without changes
File without changes