digitalhub 0.8.0b15__tar.gz → 0.9.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.

Potentially problematic release.


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

Files changed (265) hide show
  1. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/LICENSE.txt +1 -1
  2. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/PKG-INFO +3 -3
  3. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/__init__.py +19 -2
  4. digitalhub-0.9.0/digitalhub/client/_base/api_builder.py +16 -0
  5. digitalhub-0.9.0/digitalhub/client/_base/client.py +123 -0
  6. digitalhub-0.9.0/digitalhub/client/_base/key_builder.py +52 -0
  7. digitalhub-0.9.0/digitalhub/client/api.py +27 -0
  8. digitalhub-0.9.0/digitalhub/client/dhcore/api_builder.py +100 -0
  9. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/client/dhcore/client.py +100 -48
  10. digitalhub-0.9.0/digitalhub/client/dhcore/enums.py +27 -0
  11. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/client/dhcore/env.py +4 -2
  12. digitalhub-0.9.0/digitalhub/client/dhcore/key_builder.py +58 -0
  13. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/client/dhcore/utils.py +17 -17
  14. digitalhub-0.9.0/digitalhub/client/local/api_builder.py +100 -0
  15. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/client/local/client.py +22 -0
  16. digitalhub-0.9.0/digitalhub/client/local/key_builder.py +58 -0
  17. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/context/api.py +3 -38
  18. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/context/builder.py +10 -23
  19. digitalhub-0.9.0/digitalhub/context/context.py +64 -0
  20. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/_base/context/entity.py +30 -22
  21. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/_base/entity/_constructors/metadata.py +12 -1
  22. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/_base/entity/_constructors/name.py +1 -1
  23. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/_base/entity/_constructors/spec.py +1 -1
  24. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/_base/entity/_constructors/status.py +3 -2
  25. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/_base/entity/_constructors/uuid.py +1 -1
  26. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/_base/entity/builder.py +6 -1
  27. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/_base/entity/entity.py +32 -10
  28. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/_base/entity/metadata.py +22 -0
  29. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/_base/entity/spec.py +7 -2
  30. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/_base/executable/entity.py +8 -8
  31. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/_base/material/entity.py +49 -17
  32. digitalhub-0.9.0/digitalhub/entities/_base/material/status.py +18 -0
  33. digitalhub-0.9.0/digitalhub/entities/_base/material/utils.py +106 -0
  34. digitalhub-0.9.0/digitalhub/entities/_base/project/entity.py +341 -0
  35. digitalhub-0.9.0/digitalhub/entities/_base/unversioned/entity.py +28 -0
  36. digitalhub-0.9.0/digitalhub/entities/_base/versioned/entity.py +29 -0
  37. digitalhub-0.9.0/digitalhub/entities/_commons/enums.py +103 -0
  38. digitalhub-0.9.0/digitalhub/entities/_commons/utils.py +83 -0
  39. digitalhub-0.9.0/digitalhub/entities/_operations/processor.py +1873 -0
  40. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/artifact/_base/builder.py +1 -1
  41. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/artifact/_base/entity.py +1 -1
  42. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/artifact/artifact/builder.py +2 -1
  43. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/artifact/crud.py +46 -29
  44. digitalhub-0.9.0/digitalhub/entities/artifact/utils.py +62 -0
  45. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/dataitem/_base/builder.py +1 -1
  46. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/dataitem/_base/entity.py +6 -6
  47. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/dataitem/crud.py +50 -66
  48. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/dataitem/dataitem/builder.py +2 -1
  49. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/dataitem/iceberg/builder.py +2 -1
  50. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/dataitem/table/builder.py +2 -1
  51. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/dataitem/table/entity.py +5 -10
  52. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/dataitem/table/models.py +4 -5
  53. digitalhub-0.9.0/digitalhub/entities/dataitem/utils.py +137 -0
  54. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/function/_base/builder.py +1 -1
  55. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/function/_base/entity.py +6 -2
  56. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/function/crud.py +36 -17
  57. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/_base/builder.py +1 -1
  58. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/_base/entity.py +1 -1
  59. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/crud.py +46 -29
  60. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/huggingface/builder.py +2 -1
  61. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/huggingface/spec.py +4 -2
  62. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/mlflow/builder.py +2 -1
  63. digitalhub-0.9.0/digitalhub/entities/model/mlflow/models.py +34 -0
  64. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/mlflow/spec.py +6 -1
  65. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/mlflow/utils.py +4 -2
  66. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/model/builder.py +2 -1
  67. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/sklearn/builder.py +2 -1
  68. digitalhub-0.9.0/digitalhub/entities/model/utils.py +62 -0
  69. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/project/_base/builder.py +2 -2
  70. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/project/_base/entity.py +82 -272
  71. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/project/crud.py +110 -89
  72. digitalhub-0.9.0/digitalhub/entities/project/utils.py +35 -0
  73. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/run/_base/builder.py +3 -1
  74. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/run/_base/entity.py +52 -54
  75. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/run/_base/spec.py +15 -7
  76. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/run/crud.py +35 -17
  77. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/secret/_base/builder.py +2 -2
  78. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/secret/_base/entity.py +4 -10
  79. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/secret/crud.py +36 -21
  80. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/task/_base/builder.py +14 -14
  81. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/task/_base/entity.py +21 -14
  82. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/task/_base/models.py +35 -6
  83. digitalhub-0.9.0/digitalhub/entities/task/_base/spec.py +90 -0
  84. digitalhub-0.9.0/digitalhub/entities/task/_base/utils.py +18 -0
  85. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/task/crud.py +35 -15
  86. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/workflow/_base/builder.py +1 -1
  87. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/workflow/_base/entity.py +22 -6
  88. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/workflow/crud.py +36 -17
  89. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/factory/utils.py +1 -1
  90. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/readers/_base/reader.py +2 -2
  91. digitalhub-0.9.0/digitalhub/readers/_commons/enums.py +13 -0
  92. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/readers/api.py +3 -2
  93. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/readers/factory.py +12 -6
  94. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/readers/pandas/reader.py +20 -8
  95. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/runtimes/_base.py +0 -7
  96. digitalhub-0.9.0/digitalhub/runtimes/enums.py +12 -0
  97. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/stores/_base/store.py +59 -11
  98. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/stores/builder.py +5 -5
  99. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/stores/local/store.py +43 -4
  100. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/stores/remote/store.py +31 -5
  101. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/stores/s3/store.py +136 -57
  102. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/stores/sql/store.py +122 -47
  103. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/utils/exceptions.py +6 -0
  104. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/utils/file_utils.py +60 -2
  105. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/utils/generic_utils.py +45 -4
  106. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/utils/io_utils.py +18 -0
  107. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/utils/s3_utils.py +17 -0
  108. digitalhub-0.9.0/digitalhub/utils/uri_utils.py +194 -0
  109. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub.egg-info/PKG-INFO +3 -3
  110. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub.egg-info/SOURCES.txt +25 -23
  111. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub.egg-info/requires.txt +1 -1
  112. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub.egg-info/top_level.txt +0 -1
  113. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/pyproject.toml +3 -3
  114. digitalhub-0.9.0/test/local/instances/test_validate.py +55 -0
  115. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/test/testkfp.py +4 -1
  116. digitalhub-0.8.0b15/digitalhub/client/_base/client.py +0 -56
  117. digitalhub-0.8.0b15/digitalhub/client/api.py +0 -63
  118. digitalhub-0.8.0b15/digitalhub/context/context.py +0 -136
  119. digitalhub-0.8.0b15/digitalhub/datastores/_base/datastore.py +0 -85
  120. digitalhub-0.8.0b15/digitalhub/datastores/api.py +0 -37
  121. digitalhub-0.8.0b15/digitalhub/datastores/builder.py +0 -110
  122. digitalhub-0.8.0b15/digitalhub/datastores/local/datastore.py +0 -50
  123. digitalhub-0.8.0b15/digitalhub/datastores/remote/datastore.py +0 -31
  124. digitalhub-0.8.0b15/digitalhub/datastores/s3/datastore.py +0 -46
  125. digitalhub-0.8.0b15/digitalhub/datastores/sql/datastore.py +0 -68
  126. digitalhub-0.8.0b15/digitalhub/entities/_base/api_utils.py +0 -620
  127. digitalhub-0.8.0b15/digitalhub/entities/_base/crud.py +0 -468
  128. digitalhub-0.8.0b15/digitalhub/entities/_base/material/status.py +0 -49
  129. digitalhub-0.8.0b15/digitalhub/entities/_base/unversioned/entity.py +0 -49
  130. digitalhub-0.8.0b15/digitalhub/entities/_base/versioned/entity.py +0 -53
  131. digitalhub-0.8.0b15/digitalhub/entities/function/_base/models.py +0 -118
  132. digitalhub-0.8.0b15/digitalhub/entities/model/mlflow/models.py +0 -26
  133. digitalhub-0.8.0b15/digitalhub/entities/task/_base/spec.py +0 -53
  134. digitalhub-0.8.0b15/digitalhub/entities/utils/api.py +0 -346
  135. digitalhub-0.8.0b15/digitalhub/entities/utils/entity_types.py +0 -19
  136. digitalhub-0.8.0b15/digitalhub/entities/utils/state.py +0 -31
  137. digitalhub-0.8.0b15/digitalhub/entities/utils/utils.py +0 -202
  138. digitalhub-0.8.0b15/digitalhub/stores/remote/__init__.py +0 -0
  139. digitalhub-0.8.0b15/digitalhub/stores/s3/__init__.py +0 -0
  140. digitalhub-0.8.0b15/digitalhub/stores/sql/__init__.py +0 -0
  141. digitalhub-0.8.0b15/digitalhub/utils/__init__.py +0 -0
  142. digitalhub-0.8.0b15/digitalhub/utils/uri_utils.py +0 -56
  143. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/README.md +0 -0
  144. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/client/__init__.py +0 -0
  145. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/client/_base/__init__.py +0 -0
  146. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/client/builder.py +0 -0
  147. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/client/dhcore/__init__.py +0 -0
  148. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/client/dhcore/models.py +0 -0
  149. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/client/local/__init__.py +0 -0
  150. {digitalhub-0.8.0b15/digitalhub/context → digitalhub-0.9.0/digitalhub/entities}/__init__.py +0 -0
  151. {digitalhub-0.8.0b15/digitalhub/datastores → digitalhub-0.9.0/digitalhub/entities/_base}/__init__.py +0 -0
  152. {digitalhub-0.8.0b15/digitalhub/datastores → digitalhub-0.9.0/digitalhub/entities/_base}/_base/__init__.py +0 -0
  153. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/_base/_base/entity.py +0 -0
  154. {digitalhub-0.8.0b15/digitalhub/datastores/local → digitalhub-0.9.0/digitalhub/entities/_base/context}/__init__.py +0 -0
  155. {digitalhub-0.8.0b15/digitalhub/datastores/remote → digitalhub-0.9.0/digitalhub/entities/_base/entity}/__init__.py +0 -0
  156. {digitalhub-0.8.0b15/digitalhub/datastores/s3 → digitalhub-0.9.0/digitalhub/entities/_base/entity/_constructors}/__init__.py +0 -0
  157. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/_base/entity/status.py +0 -0
  158. {digitalhub-0.8.0b15/digitalhub/datastores/sql → digitalhub-0.9.0/digitalhub/entities/_base/executable}/__init__.py +0 -0
  159. {digitalhub-0.8.0b15/digitalhub/entities → digitalhub-0.9.0/digitalhub/entities/_base/material}/__init__.py +0 -0
  160. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/_base/material/spec.py +0 -0
  161. {digitalhub-0.8.0b15/digitalhub/entities/_base → digitalhub-0.9.0/digitalhub/entities/_base/project}/__init__.py +0 -0
  162. {digitalhub-0.8.0b15/digitalhub/entities/_base/_base → digitalhub-0.9.0/digitalhub/entities/_base/runtime_entity}/__init__.py +0 -0
  163. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/_base/runtime_entity/builder.py +0 -0
  164. {digitalhub-0.8.0b15/digitalhub/entities/_base/context → digitalhub-0.9.0/digitalhub/entities/_base/unversioned}/__init__.py +0 -0
  165. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/_base/unversioned/builder.py +0 -0
  166. {digitalhub-0.8.0b15/digitalhub/entities/_base/entity → digitalhub-0.9.0/digitalhub/entities/_base/versioned}/__init__.py +0 -0
  167. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/_base/versioned/builder.py +0 -0
  168. {digitalhub-0.8.0b15/digitalhub/entities/_base/entity/_constructors → digitalhub-0.9.0/digitalhub/entities/_commons}/__init__.py +0 -0
  169. {digitalhub-0.8.0b15/digitalhub/entities/_base/executable → digitalhub-0.9.0/digitalhub/entities/_operations}/__init__.py +0 -0
  170. {digitalhub-0.8.0b15/digitalhub/entities/_base/material → digitalhub-0.9.0/digitalhub/entities/artifact}/__init__.py +0 -0
  171. {digitalhub-0.8.0b15/digitalhub/entities/_base/runtime_entity → digitalhub-0.9.0/digitalhub/entities/artifact/_base}/__init__.py +0 -0
  172. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/artifact/_base/spec.py +0 -0
  173. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/artifact/_base/status.py +0 -0
  174. {digitalhub-0.8.0b15/digitalhub/entities/_base/unversioned → digitalhub-0.9.0/digitalhub/entities/artifact/artifact}/__init__.py +0 -0
  175. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/artifact/artifact/entity.py +0 -0
  176. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/artifact/artifact/spec.py +0 -0
  177. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/artifact/artifact/status.py +0 -0
  178. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/builders.py +0 -0
  179. {digitalhub-0.8.0b15/digitalhub/entities/_base/versioned → digitalhub-0.9.0/digitalhub/entities/dataitem}/__init__.py +0 -0
  180. {digitalhub-0.8.0b15/digitalhub/entities/artifact → digitalhub-0.9.0/digitalhub/entities/dataitem/_base}/__init__.py +0 -0
  181. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/dataitem/_base/spec.py +0 -0
  182. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/dataitem/_base/status.py +0 -0
  183. {digitalhub-0.8.0b15/digitalhub/entities/artifact/_base → digitalhub-0.9.0/digitalhub/entities/dataitem/dataitem}/__init__.py +0 -0
  184. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/dataitem/dataitem/entity.py +0 -0
  185. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/dataitem/dataitem/spec.py +0 -0
  186. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/dataitem/dataitem/status.py +0 -0
  187. {digitalhub-0.8.0b15/digitalhub/entities/artifact/artifact → digitalhub-0.9.0/digitalhub/entities/dataitem/iceberg}/__init__.py +0 -0
  188. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/dataitem/iceberg/entity.py +0 -0
  189. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/dataitem/iceberg/spec.py +0 -0
  190. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/dataitem/iceberg/status.py +0 -0
  191. {digitalhub-0.8.0b15/digitalhub/entities/dataitem → digitalhub-0.9.0/digitalhub/entities/dataitem/table}/__init__.py +0 -0
  192. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/dataitem/table/spec.py +0 -0
  193. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/dataitem/table/status.py +0 -0
  194. {digitalhub-0.8.0b15/digitalhub/entities/dataitem/_base → digitalhub-0.9.0/digitalhub/entities/function}/__init__.py +0 -0
  195. {digitalhub-0.8.0b15/digitalhub/entities/dataitem/dataitem → digitalhub-0.9.0/digitalhub/entities/function/_base}/__init__.py +0 -0
  196. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/function/_base/spec.py +0 -0
  197. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/function/_base/status.py +0 -0
  198. {digitalhub-0.8.0b15/digitalhub/entities/dataitem/iceberg → digitalhub-0.9.0/digitalhub/entities/model}/__init__.py +0 -0
  199. {digitalhub-0.8.0b15/digitalhub/entities/dataitem/table → digitalhub-0.9.0/digitalhub/entities/model/_base}/__init__.py +0 -0
  200. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/_base/spec.py +0 -0
  201. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/_base/status.py +0 -0
  202. {digitalhub-0.8.0b15/digitalhub/entities/function → digitalhub-0.9.0/digitalhub/entities/model/huggingface}/__init__.py +0 -0
  203. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/huggingface/entity.py +0 -0
  204. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/huggingface/status.py +0 -0
  205. {digitalhub-0.8.0b15/digitalhub/entities/function/_base → digitalhub-0.9.0/digitalhub/entities/model/mlflow}/__init__.py +0 -0
  206. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/mlflow/entity.py +0 -0
  207. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/mlflow/status.py +0 -0
  208. {digitalhub-0.8.0b15/digitalhub/entities → digitalhub-0.9.0/digitalhub/entities/model}/model/__init__.py +0 -0
  209. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/model/entity.py +0 -0
  210. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/model/spec.py +0 -0
  211. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/model/status.py +0 -0
  212. {digitalhub-0.8.0b15/digitalhub/entities/model/_base → digitalhub-0.9.0/digitalhub/entities/model/sklearn}/__init__.py +0 -0
  213. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/sklearn/entity.py +0 -0
  214. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/sklearn/spec.py +0 -0
  215. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/model/sklearn/status.py +0 -0
  216. {digitalhub-0.8.0b15/digitalhub/entities/model/huggingface → digitalhub-0.9.0/digitalhub/entities/project}/__init__.py +0 -0
  217. {digitalhub-0.8.0b15/digitalhub/entities/model/mlflow → digitalhub-0.9.0/digitalhub/entities/project/_base}/__init__.py +0 -0
  218. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/project/_base/spec.py +0 -0
  219. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/project/_base/status.py +0 -0
  220. {digitalhub-0.8.0b15/digitalhub/entities/model/model → digitalhub-0.9.0/digitalhub/entities/run}/__init__.py +0 -0
  221. {digitalhub-0.8.0b15/digitalhub/entities/model/sklearn → digitalhub-0.9.0/digitalhub/entities/run/_base}/__init__.py +0 -0
  222. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/run/_base/status.py +0 -0
  223. {digitalhub-0.8.0b15/digitalhub/entities/project → digitalhub-0.9.0/digitalhub/entities/secret}/__init__.py +0 -0
  224. {digitalhub-0.8.0b15/digitalhub/entities/project → digitalhub-0.9.0/digitalhub/entities/secret}/_base/__init__.py +0 -0
  225. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/secret/_base/spec.py +0 -0
  226. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/secret/_base/status.py +0 -0
  227. {digitalhub-0.8.0b15/digitalhub/entities/run → digitalhub-0.9.0/digitalhub/entities/task}/__init__.py +0 -0
  228. {digitalhub-0.8.0b15/digitalhub/entities/run → digitalhub-0.9.0/digitalhub/entities/task}/_base/__init__.py +0 -0
  229. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/task/_base/status.py +0 -0
  230. {digitalhub-0.8.0b15/digitalhub/entities/secret → digitalhub-0.9.0/digitalhub/entities/workflow}/__init__.py +0 -0
  231. {digitalhub-0.8.0b15/digitalhub/entities/secret → digitalhub-0.9.0/digitalhub/entities/workflow}/_base/__init__.py +0 -0
  232. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/workflow/_base/spec.py +0 -0
  233. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/entities/workflow/_base/status.py +0 -0
  234. {digitalhub-0.8.0b15/digitalhub/entities/task → digitalhub-0.9.0/digitalhub/factory}/__init__.py +0 -0
  235. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/factory/api.py +0 -0
  236. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/factory/factory.py +0 -0
  237. {digitalhub-0.8.0b15/digitalhub/entities/task/_base → digitalhub-0.9.0/digitalhub/readers}/__init__.py +0 -0
  238. {digitalhub-0.8.0b15/digitalhub/entities/utils → digitalhub-0.9.0/digitalhub/readers/_base}/__init__.py +0 -0
  239. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/readers/_base/builder.py +0 -0
  240. {digitalhub-0.8.0b15/digitalhub/entities/workflow → digitalhub-0.9.0/digitalhub/readers/_commons}/__init__.py +0 -0
  241. {digitalhub-0.8.0b15/digitalhub/entities/workflow/_base → digitalhub-0.9.0/digitalhub/readers/pandas}/__init__.py +0 -0
  242. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/readers/pandas/builder.py +0 -0
  243. {digitalhub-0.8.0b15/digitalhub/factory → digitalhub-0.9.0/digitalhub/runtimes}/__init__.py +0 -0
  244. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/runtimes/builder.py +0 -0
  245. {digitalhub-0.8.0b15/digitalhub/readers → digitalhub-0.9.0/digitalhub/stores}/__init__.py +0 -0
  246. {digitalhub-0.8.0b15/digitalhub/readers → digitalhub-0.9.0/digitalhub/stores}/_base/__init__.py +0 -0
  247. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/stores/api.py +0 -0
  248. {digitalhub-0.8.0b15/digitalhub/readers/pandas → digitalhub-0.9.0/digitalhub/stores/local}/__init__.py +0 -0
  249. {digitalhub-0.8.0b15/digitalhub/runtimes → digitalhub-0.9.0/digitalhub/stores/remote}/__init__.py +0 -0
  250. {digitalhub-0.8.0b15/digitalhub/stores → digitalhub-0.9.0/digitalhub/stores/s3}/__init__.py +0 -0
  251. {digitalhub-0.8.0b15/digitalhub/stores/_base → digitalhub-0.9.0/digitalhub/stores/sql}/__init__.py +0 -0
  252. {digitalhub-0.8.0b15/digitalhub/stores/local → digitalhub-0.9.0/digitalhub/utils}/__init__.py +0 -0
  253. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/utils/data_utils.py +0 -0
  254. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/utils/git_utils.py +0 -0
  255. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub/utils/logger.py +0 -0
  256. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/digitalhub.egg-info/dependency_links.txt +0 -0
  257. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/setup.cfg +0 -0
  258. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/test/local/CRUD/test_artifacts.py +0 -0
  259. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/test/local/CRUD/test_dataitems.py +0 -0
  260. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/test/local/CRUD/test_models.py +0 -0
  261. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/test/local/imports/test_imports.py +0 -0
  262. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/test/test_crud_functions.py +0 -0
  263. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/test/test_crud_runs.py +0 -0
  264. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/test/test_crud_tasks.py +0 -0
  265. {digitalhub-0.8.0b15 → digitalhub-0.9.0}/test/testkfp_pipeline.py +0 -0
@@ -186,7 +186,7 @@ APPENDIX: How to apply the Apache License to your work.
186
186
  same "printed page" as the copyright notice for easier
187
187
  identification within third-party archives.
188
188
 
189
- Copyright [yyyy] [name of copyright owner]
189
+ Copyright 2024 DSLab, Fondazione Bruno Kessler
190
190
 
191
191
  Licensed under the Apache License, Version 2.0 (the "License");
192
192
  you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: digitalhub
3
- Version: 0.8.0b15
3
+ Version: 0.9.0
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
@@ -191,7 +191,7 @@ License: Apache License
191
191
  same "printed page" as the copyright notice for easier
192
192
  identification within third-party archives.
193
193
 
194
- Copyright [yyyy] [name of copyright owner]
194
+ Copyright 2024 DSLab, Fondazione Bruno Kessler
195
195
 
196
196
  Licensed under the Apache License, Version 2.0 (the "License");
197
197
  you may not use this file except in compliance with the License.
@@ -230,7 +230,7 @@ Requires-Python: >=3.9
230
230
  Description-Content-Type: text/markdown
231
231
  License-File: LICENSE.txt
232
232
  Requires-Dist: boto3
233
- Requires-Dist: pydantic<2
233
+ Requires-Dist: pydantic
234
234
  Requires-Dist: sqlalchemy<2
235
235
  Requires-Dist: pyarrow
236
236
  Requires-Dist: numpy<2
@@ -1,9 +1,11 @@
1
+ __version__ = "0.9.0b0"
1
2
  from digitalhub.entities.artifact.crud import (
2
3
  delete_artifact,
3
4
  get_artifact,
4
5
  get_artifact_versions,
5
6
  import_artifact,
6
7
  list_artifacts,
8
+ load_artifact,
7
9
  log_artifact,
8
10
  new_artifact,
9
11
  update_artifact,
@@ -14,6 +16,7 @@ from digitalhub.entities.dataitem.crud import (
14
16
  get_dataitem_versions,
15
17
  import_dataitem,
16
18
  list_dataitems,
19
+ load_dataitem,
17
20
  log_dataitem,
18
21
  new_dataitem,
19
22
  update_dataitem,
@@ -24,6 +27,7 @@ from digitalhub.entities.function.crud import (
24
27
  get_function_versions,
25
28
  import_function,
26
29
  list_functions,
30
+ load_function,
27
31
  new_function,
28
32
  update_function,
29
33
  )
@@ -33,6 +37,7 @@ from digitalhub.entities.model.crud import (
33
37
  get_model_versions,
34
38
  import_model,
35
39
  list_models,
40
+ load_model,
36
41
  log_model,
37
42
  new_model,
38
43
  update_model,
@@ -42,27 +47,39 @@ from digitalhub.entities.project.crud import (
42
47
  get_or_create_project,
43
48
  get_project,
44
49
  import_project,
50
+ list_projects,
45
51
  load_project,
46
52
  new_project,
53
+ search_entity,
47
54
  update_project,
48
55
  )
49
- from digitalhub.entities.run.crud import delete_run, get_run, import_run, list_runs, new_run, update_run
56
+ from digitalhub.entities.run.crud import delete_run, get_run, import_run, list_runs, load_run, new_run, update_run
50
57
  from digitalhub.entities.secret.crud import (
51
58
  delete_secret,
52
59
  get_secret,
53
60
  get_secret_versions,
54
61
  import_secret,
55
62
  list_secrets,
63
+ load_secret,
56
64
  new_secret,
57
65
  update_secret,
58
66
  )
59
- from digitalhub.entities.task.crud import delete_task, get_task, import_task, list_tasks, new_task, update_task
67
+ from digitalhub.entities.task.crud import (
68
+ delete_task,
69
+ get_task,
70
+ import_task,
71
+ list_tasks,
72
+ load_task,
73
+ new_task,
74
+ update_task,
75
+ )
60
76
  from digitalhub.entities.workflow.crud import (
61
77
  delete_workflow,
62
78
  get_workflow,
63
79
  get_workflow_versions,
64
80
  import_workflow,
65
81
  list_workflows,
82
+ load_workflow,
66
83
  new_workflow,
67
84
  update_workflow,
68
85
  )
@@ -0,0 +1,16 @@
1
+ from __future__ import annotations
2
+
3
+ from abc import abstractmethod
4
+
5
+
6
+ class ClientApiBuilder:
7
+ """
8
+ This class is used to build the API for the client.
9
+ Depending on the client, the API is built differently.
10
+ """
11
+
12
+ @abstractmethod
13
+ def build_api(self) -> str:
14
+ """
15
+ Build the API for the client.
16
+ """
@@ -0,0 +1,123 @@
1
+ from __future__ import annotations
2
+
3
+ import typing
4
+ from abc import abstractmethod
5
+
6
+ if typing.TYPE_CHECKING:
7
+ from digitalhub.client._base.api_builder import ClientApiBuilder
8
+ from digitalhub.client._base.key_builder import ClientKeyBuilder
9
+
10
+
11
+ class Client:
12
+ """
13
+ Base Client class interface.
14
+
15
+ The client is an interface that handles the CRUD of an object during
16
+ a session. It manages the creation, reading, updating, deleting and
17
+ listing of objects and comes into two subclasses: Local and DHCore.
18
+ """
19
+
20
+ def __init__(self) -> None:
21
+ self._api_builder: ClientApiBuilder = None
22
+ self._key_builder: ClientKeyBuilder = None
23
+
24
+ ##############################
25
+ # CRUD methods
26
+ ##############################
27
+
28
+ @abstractmethod
29
+ def create_object(self, api: str, obj: dict, **kwargs) -> dict:
30
+ """
31
+ Create object method.
32
+ """
33
+
34
+ @abstractmethod
35
+ def read_object(self, api: str, **kwargs) -> dict:
36
+ """
37
+ Read object method.
38
+ """
39
+
40
+ @abstractmethod
41
+ def update_object(self, api: str, obj: dict, **kwargs) -> dict:
42
+ """
43
+ Update object method.
44
+ """
45
+
46
+ @abstractmethod
47
+ def delete_object(self, api: str, **kwargs) -> dict:
48
+ """
49
+ Delete object method.
50
+ """
51
+
52
+ @abstractmethod
53
+ def list_objects(self, api: str, **kwargs) -> dict:
54
+ """
55
+ List objects method.
56
+ """
57
+
58
+ @abstractmethod
59
+ def list_first_object(self, api: str, **kwargs) -> dict:
60
+ """
61
+ Read first object method.
62
+ """
63
+
64
+ @abstractmethod
65
+ def search_objects(self, api: str, **kwargs) -> dict:
66
+ """
67
+ Search objects method.
68
+ """
69
+
70
+ ##############################
71
+ # Build methods
72
+ ##############################
73
+
74
+ def build_api(self, category: str, operation: str, **kwargs) -> str:
75
+ """
76
+ Build the API for the client.
77
+
78
+ Parameters
79
+ ----------
80
+ category : str
81
+ API category.
82
+ operation : str
83
+ API operation.
84
+ **kwargs : dict
85
+ Additional parameters.
86
+
87
+ Returns
88
+ -------
89
+ str
90
+ API formatted.
91
+ """
92
+ return self._api_builder.build_api(category, operation, **kwargs)
93
+
94
+ def build_key(self, category: str, *args, **kwargs) -> str:
95
+ """
96
+ Build the key for the client.
97
+
98
+ Parameters
99
+ ----------
100
+ category : str
101
+ Key category.
102
+ *args : tuple
103
+ Additional arguments.
104
+ **kwargs : dict
105
+ Additional parameters.
106
+
107
+ Returns
108
+ -------
109
+ str
110
+ Key formatted.
111
+ """
112
+ return self._key_builder.build_key(category, *args, **kwargs)
113
+
114
+ ##############################
115
+ # Interface methods
116
+ ##############################
117
+
118
+ @staticmethod
119
+ @abstractmethod
120
+ def is_local() -> bool:
121
+ """
122
+ Flag to check if client is local.
123
+ """
@@ -0,0 +1,52 @@
1
+ from __future__ import annotations
2
+
3
+ from abc import abstractmethod
4
+
5
+ from digitalhub.entities._commons.enums import ApiCategories
6
+
7
+
8
+ class ClientKeyBuilder:
9
+ """
10
+ Class that build the key of entities.
11
+ """
12
+
13
+ def build_key(self, category: str, *args, **kwargs) -> str:
14
+ """
15
+ Build key.
16
+
17
+ Parameters
18
+ ----------
19
+ category : str
20
+ Key category.
21
+ *args : tuple
22
+ Positional arguments.
23
+ **kwargs : dict
24
+ Keyword arguments.
25
+
26
+ Returns
27
+ -------
28
+ str
29
+ Key.
30
+ """
31
+ if category == ApiCategories.BASE.value:
32
+ return self.base_entity_key(*args, **kwargs)
33
+ return self.context_entity_key(*args, **kwargs)
34
+
35
+ @abstractmethod
36
+ def base_entity_key(self, entity_id: str) -> str:
37
+ """
38
+ Build for base entity key.
39
+ """
40
+
41
+ @abstractmethod
42
+ def context_entity_key(
43
+ self,
44
+ project: str,
45
+ entity_type: str,
46
+ entity_kind: str,
47
+ entity_name: str,
48
+ entity_id: str | None = None,
49
+ ) -> str:
50
+ """
51
+ Build for context entity key.
52
+ """
@@ -0,0 +1,27 @@
1
+ from __future__ import annotations
2
+
3
+ import typing
4
+
5
+ from digitalhub.client.builder import client_builder
6
+
7
+ if typing.TYPE_CHECKING:
8
+ from digitalhub.client._base.client import Client
9
+
10
+
11
+ def get_client(local: bool = False, config: dict | None = None) -> Client:
12
+ """
13
+ Wrapper around ClientBuilder.build.
14
+
15
+ Parameters
16
+ ----------
17
+ local : bool
18
+ Whether to create a local client or not.
19
+ config : dict
20
+ DHCore environment configuration.
21
+
22
+ Returns
23
+ -------
24
+ Client
25
+ The client instance.
26
+ """
27
+ return client_builder.build(local, config)
@@ -0,0 +1,100 @@
1
+ from __future__ import annotations
2
+
3
+ from digitalhub.client._base.api_builder import ClientApiBuilder
4
+ from digitalhub.entities._commons.enums import ApiCategories, BackendOperations
5
+ from digitalhub.utils.exceptions import BackendError
6
+
7
+ API_BASE = "/api/v1"
8
+ API_CONTEXT = f"{API_BASE}/-"
9
+
10
+
11
+ class ClientDHCoreApiBuilder(ClientApiBuilder):
12
+ """
13
+ This class is used to build the API for the DHCore client.
14
+ """
15
+
16
+ def build_api(self, category: str, operation: str, **kwargs) -> str:
17
+ """
18
+ Build the API for the client.
19
+
20
+ Parameters
21
+ ----------
22
+ category : str
23
+ API category.
24
+ operation : str
25
+ API operation.
26
+ **kwargs : dict
27
+ Additional parameters.
28
+
29
+ Returns
30
+ -------
31
+ str
32
+ API formatted.
33
+ """
34
+ if category == ApiCategories.BASE.value:
35
+ return self.build_api_base(operation, **kwargs)
36
+ return self.build_api_context(operation, **kwargs)
37
+
38
+ def build_api_base(self, operation: str, **kwargs) -> str:
39
+ """
40
+ Build the base API for the client.
41
+
42
+ Parameters
43
+ ----------
44
+ operation : str
45
+ API operation.
46
+ **kwargs : dict
47
+ Additional parameters.
48
+
49
+ Returns
50
+ -------
51
+ str
52
+ API formatted.
53
+ """
54
+ entity_type = kwargs["entity_type"] + "s"
55
+ if operation in (
56
+ BackendOperations.CREATE.value,
57
+ BackendOperations.LIST.value,
58
+ ):
59
+ return f"{API_BASE}/{entity_type}"
60
+ elif operation in (
61
+ BackendOperations.READ.value,
62
+ BackendOperations.UPDATE.value,
63
+ BackendOperations.DELETE.value,
64
+ ):
65
+ return f"{API_BASE}/{entity_type}/{kwargs['entity_name']}"
66
+ elif operation == BackendOperations.SHARE.value:
67
+ return f"{API_BASE}/{entity_type}/{kwargs['entity_name']}/share"
68
+ raise BackendError(f"Invalid operation '{operation}' for entity type '{entity_type}' in DHCore.")
69
+
70
+ def build_api_context(self, operation: str, **kwargs) -> str:
71
+ """
72
+ Build the context API for the client.
73
+ """
74
+ entity_type = kwargs["entity_type"] + "s"
75
+ project = kwargs["project"]
76
+ if operation in (
77
+ BackendOperations.CREATE.value,
78
+ BackendOperations.LIST.value,
79
+ ):
80
+ return f"{API_CONTEXT}/{project}/{entity_type}"
81
+ elif operation in (
82
+ BackendOperations.READ.value,
83
+ BackendOperations.UPDATE.value,
84
+ BackendOperations.DELETE.value,
85
+ ):
86
+ return f"{API_CONTEXT}/{project}/{entity_type}/{kwargs['entity_id']}"
87
+ elif operation == BackendOperations.LOGS.value:
88
+ return f"{API_CONTEXT}/{project}/{entity_type}/{kwargs['entity_id']}/logs"
89
+ elif operation == BackendOperations.STOP.value:
90
+ return f"{API_CONTEXT}/{project}/{entity_type}/{kwargs['entity_id']}/stop"
91
+ elif operation == BackendOperations.RESUME.value:
92
+ return f"{API_CONTEXT}/{project}/{entity_type}/{kwargs['entity_id']}/resume"
93
+ elif operation == BackendOperations.DATA.value:
94
+ return f"{API_CONTEXT}/{project}/{entity_type}/{kwargs['entity_id']}/data"
95
+ elif operation == BackendOperations.FILES.value:
96
+ return f"{API_CONTEXT}/{project}/{entity_type}/{kwargs['entity_id']}/files/info"
97
+ elif operation == BackendOperations.SEARCH.value:
98
+ return f"{API_CONTEXT}/{project}/solr/search/item"
99
+
100
+ raise BackendError(f"Invalid operation '{operation}' for entity type '{entity_type}' in DHCore.")