digitalhub 0.9.2__tar.gz → 0.10.0b1__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 (260) hide show
  1. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/PKG-INFO +5 -6
  2. digitalhub-0.10.0b1/README.md +5 -0
  3. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/__init__.py +2 -3
  4. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/client/_base/client.py +3 -2
  5. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/client/dhcore/api_builder.py +5 -0
  6. digitalhub-0.10.0b1/digitalhub/client/dhcore/client.py +349 -0
  7. digitalhub-0.10.0b1/digitalhub/client/dhcore/configurator.py +339 -0
  8. digitalhub-0.10.0b1/digitalhub/client/dhcore/error_parser.py +107 -0
  9. digitalhub-0.10.0b1/digitalhub/client/dhcore/models.py +36 -0
  10. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/client/dhcore/utils.py +4 -44
  11. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/client/local/api_builder.py +9 -17
  12. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/client/local/client.py +12 -2
  13. digitalhub-0.10.0b1/digitalhub/client/local/enums.py +11 -0
  14. digitalhub-0.10.0b1/digitalhub/configurator/api.py +31 -0
  15. digitalhub-0.10.0b1/digitalhub/configurator/configurator.py +194 -0
  16. digitalhub-0.10.0b1/digitalhub/configurator/credentials_store.py +65 -0
  17. digitalhub-0.10.0b1/digitalhub/configurator/ini_module.py +74 -0
  18. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/_base/entity.py +2 -2
  19. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/material/entity.py +19 -6
  20. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/material/utils.py +2 -2
  21. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_commons/enums.py +1 -0
  22. digitalhub-0.10.0b1/digitalhub/entities/_commons/models.py +9 -0
  23. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_commons/utils.py +25 -0
  24. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_operations/processor.py +103 -107
  25. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/artifact/crud.py +3 -3
  26. {digitalhub-0.9.2/digitalhub/entities/model → digitalhub-0.10.0b1/digitalhub/entities/artifact}/utils.py +1 -1
  27. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/dataitem/_base/entity.py +2 -2
  28. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/dataitem/crud.py +3 -3
  29. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/dataitem/table/entity.py +2 -2
  30. digitalhub-0.9.2/digitalhub/utils/data_utils.py → digitalhub-0.10.0b1/digitalhub/entities/dataitem/table/utils.py +43 -51
  31. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/dataitem/utils.py +6 -3
  32. digitalhub-0.10.0b1/digitalhub/entities/model/_base/entity.py +206 -0
  33. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/model/_base/spec.py +0 -10
  34. digitalhub-0.10.0b1/digitalhub/entities/model/_base/status.py +19 -0
  35. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/model/crud.py +3 -3
  36. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/model/huggingface/spec.py +6 -3
  37. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/model/mlflow/models.py +2 -2
  38. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/model/mlflow/spec.py +1 -3
  39. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/model/mlflow/utils.py +44 -5
  40. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/run/_base/entity.py +149 -0
  41. digitalhub-0.10.0b1/digitalhub/entities/run/_base/status.py +21 -0
  42. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/task/_base/spec.py +2 -0
  43. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/task/crud.py +4 -0
  44. {digitalhub-0.9.2/digitalhub/readers/_commons → digitalhub-0.10.0b1/digitalhub/readers/pandas}/enums.py +4 -0
  45. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/readers/pandas/reader.py +58 -10
  46. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/stores/_base/store.py +1 -49
  47. digitalhub-0.10.0b1/digitalhub/stores/api.py +29 -0
  48. digitalhub-0.10.0b1/digitalhub/stores/builder.py +94 -0
  49. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/stores/local/store.py +4 -18
  50. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/stores/remote/store.py +3 -10
  51. digitalhub-0.10.0b1/digitalhub/stores/s3/configurator.py +107 -0
  52. digitalhub-0.10.0b1/digitalhub/stores/s3/enums.py +17 -0
  53. digitalhub-0.10.0b1/digitalhub/stores/s3/models.py +21 -0
  54. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/stores/s3/store.py +8 -28
  55. digitalhub-0.9.2/digitalhub/utils/s3_utils.py → digitalhub-0.10.0b1/digitalhub/stores/s3/utils.py +7 -3
  56. digitalhub-0.10.0b1/digitalhub/stores/sql/configurator.py +88 -0
  57. digitalhub-0.10.0b1/digitalhub/stores/sql/enums.py +16 -0
  58. digitalhub-0.10.0b1/digitalhub/stores/sql/models.py +24 -0
  59. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/stores/sql/store.py +14 -57
  60. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/utils/exceptions.py +6 -0
  61. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/utils/generic_utils.py +9 -8
  62. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/utils/uri_utils.py +1 -1
  63. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub.egg-info/PKG-INFO +5 -6
  64. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub.egg-info/SOURCES.txt +18 -5
  65. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub.egg-info/requires.txt +3 -3
  66. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/pyproject.toml +5 -5
  67. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/test/local/imports/test_imports.py +0 -1
  68. digitalhub-0.9.2/README.md +0 -6
  69. digitalhub-0.9.2/digitalhub/client/dhcore/client.py +0 -721
  70. digitalhub-0.9.2/digitalhub/client/dhcore/env.py +0 -23
  71. digitalhub-0.9.2/digitalhub/client/dhcore/models.py +0 -46
  72. digitalhub-0.9.2/digitalhub/entities/model/_base/entity.py +0 -34
  73. digitalhub-0.9.2/digitalhub/entities/model/_base/status.py +0 -9
  74. digitalhub-0.9.2/digitalhub/entities/run/_base/status.py +0 -9
  75. digitalhub-0.9.2/digitalhub/stores/api.py +0 -54
  76. digitalhub-0.9.2/digitalhub/stores/builder.py +0 -211
  77. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/LICENSE.txt +0 -0
  78. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/client/__init__.py +0 -0
  79. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/client/_base/__init__.py +0 -0
  80. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/client/_base/api_builder.py +0 -0
  81. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/client/_base/key_builder.py +0 -0
  82. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/client/api.py +0 -0
  83. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/client/builder.py +0 -0
  84. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/client/dhcore/__init__.py +0 -0
  85. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/client/dhcore/enums.py +0 -0
  86. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/client/dhcore/key_builder.py +0 -0
  87. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/client/local/__init__.py +0 -0
  88. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/client/local/key_builder.py +0 -0
  89. {digitalhub-0.9.2/digitalhub/entities → digitalhub-0.10.0b1/digitalhub/configurator}/__init__.py +0 -0
  90. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/context/api.py +0 -0
  91. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/context/builder.py +0 -0
  92. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/context/context.py +0 -0
  93. {digitalhub-0.9.2/digitalhub/entities/_base → digitalhub-0.10.0b1/digitalhub/entities}/__init__.py +0 -0
  94. {digitalhub-0.9.2/digitalhub/entities/_base → digitalhub-0.10.0b1/digitalhub/entities}/_base/__init__.py +0 -0
  95. {digitalhub-0.9.2/digitalhub/entities/_base/context → digitalhub-0.10.0b1/digitalhub/entities/_base/_base}/__init__.py +0 -0
  96. {digitalhub-0.9.2/digitalhub/entities/_base/entity → digitalhub-0.10.0b1/digitalhub/entities/_base/context}/__init__.py +0 -0
  97. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/context/entity.py +0 -0
  98. {digitalhub-0.9.2/digitalhub/entities/_base/entity/_constructors → digitalhub-0.10.0b1/digitalhub/entities/_base/entity}/__init__.py +0 -0
  99. {digitalhub-0.9.2/digitalhub/entities/_base/executable → digitalhub-0.10.0b1/digitalhub/entities/_base/entity/_constructors}/__init__.py +0 -0
  100. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/entity/_constructors/metadata.py +0 -0
  101. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/entity/_constructors/name.py +0 -0
  102. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/entity/_constructors/spec.py +0 -0
  103. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/entity/_constructors/status.py +0 -0
  104. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/entity/_constructors/uuid.py +0 -0
  105. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/entity/builder.py +0 -0
  106. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/entity/entity.py +0 -0
  107. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/entity/metadata.py +0 -0
  108. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/entity/spec.py +0 -0
  109. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/entity/status.py +0 -0
  110. {digitalhub-0.9.2/digitalhub/entities/_base/material → digitalhub-0.10.0b1/digitalhub/entities/_base/executable}/__init__.py +0 -0
  111. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/executable/entity.py +0 -0
  112. {digitalhub-0.9.2/digitalhub/entities/_base/project → digitalhub-0.10.0b1/digitalhub/entities/_base/material}/__init__.py +0 -0
  113. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/material/spec.py +0 -0
  114. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/material/status.py +0 -0
  115. {digitalhub-0.9.2/digitalhub/entities/_base/runtime_entity → digitalhub-0.10.0b1/digitalhub/entities/_base/project}/__init__.py +0 -0
  116. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/project/entity.py +0 -0
  117. {digitalhub-0.9.2/digitalhub/entities/_base/unversioned → digitalhub-0.10.0b1/digitalhub/entities/_base/runtime_entity}/__init__.py +0 -0
  118. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/runtime_entity/builder.py +0 -0
  119. {digitalhub-0.9.2/digitalhub/entities/_base/versioned → digitalhub-0.10.0b1/digitalhub/entities/_base/unversioned}/__init__.py +0 -0
  120. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/unversioned/builder.py +0 -0
  121. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/unversioned/entity.py +0 -0
  122. {digitalhub-0.9.2/digitalhub/entities/_commons → digitalhub-0.10.0b1/digitalhub/entities/_base/versioned}/__init__.py +0 -0
  123. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/versioned/builder.py +0 -0
  124. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/_base/versioned/entity.py +0 -0
  125. {digitalhub-0.9.2/digitalhub/entities/_operations → digitalhub-0.10.0b1/digitalhub/entities/_commons}/__init__.py +0 -0
  126. {digitalhub-0.9.2/digitalhub/entities/artifact → digitalhub-0.10.0b1/digitalhub/entities/_operations}/__init__.py +0 -0
  127. {digitalhub-0.9.2/digitalhub/entities/artifact/_base → digitalhub-0.10.0b1/digitalhub/entities/artifact}/__init__.py +0 -0
  128. {digitalhub-0.9.2/digitalhub/entities/artifact/artifact → digitalhub-0.10.0b1/digitalhub/entities/artifact/_base}/__init__.py +0 -0
  129. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/artifact/_base/builder.py +0 -0
  130. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/artifact/_base/entity.py +0 -0
  131. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/artifact/_base/spec.py +0 -0
  132. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/artifact/_base/status.py +0 -0
  133. {digitalhub-0.9.2/digitalhub/entities/dataitem → digitalhub-0.10.0b1/digitalhub/entities/artifact/artifact}/__init__.py +0 -0
  134. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/artifact/artifact/builder.py +0 -0
  135. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/artifact/artifact/entity.py +0 -0
  136. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/artifact/artifact/spec.py +0 -0
  137. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/artifact/artifact/status.py +0 -0
  138. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/builders.py +0 -0
  139. {digitalhub-0.9.2/digitalhub/entities/dataitem/_base → digitalhub-0.10.0b1/digitalhub/entities/dataitem}/__init__.py +0 -0
  140. {digitalhub-0.9.2/digitalhub/entities/dataitem/dataitem → digitalhub-0.10.0b1/digitalhub/entities/dataitem/_base}/__init__.py +0 -0
  141. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/dataitem/_base/builder.py +0 -0
  142. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/dataitem/_base/spec.py +0 -0
  143. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/dataitem/_base/status.py +0 -0
  144. {digitalhub-0.9.2/digitalhub/entities/dataitem/iceberg → digitalhub-0.10.0b1/digitalhub/entities/dataitem/dataitem}/__init__.py +0 -0
  145. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/dataitem/dataitem/builder.py +0 -0
  146. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/dataitem/dataitem/entity.py +0 -0
  147. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/dataitem/dataitem/spec.py +0 -0
  148. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/dataitem/dataitem/status.py +0 -0
  149. {digitalhub-0.9.2/digitalhub/entities/dataitem/table → digitalhub-0.10.0b1/digitalhub/entities/dataitem/iceberg}/__init__.py +0 -0
  150. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/dataitem/iceberg/builder.py +0 -0
  151. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/dataitem/iceberg/entity.py +0 -0
  152. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/dataitem/iceberg/spec.py +0 -0
  153. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/dataitem/iceberg/status.py +0 -0
  154. {digitalhub-0.9.2/digitalhub/entities/function → digitalhub-0.10.0b1/digitalhub/entities/dataitem/table}/__init__.py +0 -0
  155. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/dataitem/table/builder.py +0 -0
  156. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/dataitem/table/models.py +0 -0
  157. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/dataitem/table/spec.py +0 -0
  158. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/dataitem/table/status.py +0 -0
  159. {digitalhub-0.9.2/digitalhub/entities/function/_base → digitalhub-0.10.0b1/digitalhub/entities/function}/__init__.py +0 -0
  160. {digitalhub-0.9.2/digitalhub/entities/model → digitalhub-0.10.0b1/digitalhub/entities/function/_base}/__init__.py +0 -0
  161. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/function/_base/builder.py +0 -0
  162. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/function/_base/entity.py +0 -0
  163. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/function/_base/spec.py +0 -0
  164. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/function/_base/status.py +0 -0
  165. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/function/crud.py +0 -0
  166. {digitalhub-0.9.2/digitalhub/entities/model/_base → digitalhub-0.10.0b1/digitalhub/entities/model}/__init__.py +0 -0
  167. {digitalhub-0.9.2/digitalhub/entities/model/huggingface → digitalhub-0.10.0b1/digitalhub/entities/model/_base}/__init__.py +0 -0
  168. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/model/_base/builder.py +0 -0
  169. {digitalhub-0.9.2/digitalhub/entities/model/mlflow → digitalhub-0.10.0b1/digitalhub/entities/model/huggingface}/__init__.py +0 -0
  170. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/model/huggingface/builder.py +0 -0
  171. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/model/huggingface/entity.py +0 -0
  172. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/model/huggingface/status.py +0 -0
  173. {digitalhub-0.9.2/digitalhub/entities/model/model → digitalhub-0.10.0b1/digitalhub/entities/model/mlflow}/__init__.py +0 -0
  174. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/model/mlflow/builder.py +0 -0
  175. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/model/mlflow/entity.py +0 -0
  176. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/model/mlflow/status.py +0 -0
  177. {digitalhub-0.9.2/digitalhub/entities/model/sklearn → digitalhub-0.10.0b1/digitalhub/entities/model/model}/__init__.py +0 -0
  178. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/model/model/builder.py +0 -0
  179. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/model/model/entity.py +0 -0
  180. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/model/model/spec.py +0 -0
  181. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/model/model/status.py +0 -0
  182. {digitalhub-0.9.2/digitalhub/entities/project → digitalhub-0.10.0b1/digitalhub/entities/model/sklearn}/__init__.py +0 -0
  183. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/model/sklearn/builder.py +0 -0
  184. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/model/sklearn/entity.py +0 -0
  185. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/model/sklearn/spec.py +0 -0
  186. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/model/sklearn/status.py +0 -0
  187. {digitalhub-0.9.2/digitalhub/entities/artifact → digitalhub-0.10.0b1/digitalhub/entities/model}/utils.py +0 -0
  188. {digitalhub-0.9.2/digitalhub/entities/project/_base → digitalhub-0.10.0b1/digitalhub/entities/project}/__init__.py +0 -0
  189. {digitalhub-0.9.2/digitalhub/entities/run → digitalhub-0.10.0b1/digitalhub/entities/project/_base}/__init__.py +0 -0
  190. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/project/_base/builder.py +0 -0
  191. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/project/_base/entity.py +0 -0
  192. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/project/_base/spec.py +0 -0
  193. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/project/_base/status.py +0 -0
  194. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/project/crud.py +0 -0
  195. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/project/utils.py +0 -0
  196. {digitalhub-0.9.2/digitalhub/entities/run/_base → digitalhub-0.10.0b1/digitalhub/entities/run}/__init__.py +0 -0
  197. {digitalhub-0.9.2/digitalhub/entities/secret → digitalhub-0.10.0b1/digitalhub/entities/run/_base}/__init__.py +0 -0
  198. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/run/_base/builder.py +0 -0
  199. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/run/_base/spec.py +0 -0
  200. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/run/crud.py +0 -0
  201. {digitalhub-0.9.2/digitalhub/entities/secret/_base → digitalhub-0.10.0b1/digitalhub/entities/secret}/__init__.py +0 -0
  202. {digitalhub-0.9.2/digitalhub/entities/task → digitalhub-0.10.0b1/digitalhub/entities/secret/_base}/__init__.py +0 -0
  203. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/secret/_base/builder.py +0 -0
  204. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/secret/_base/entity.py +0 -0
  205. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/secret/_base/spec.py +0 -0
  206. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/secret/_base/status.py +0 -0
  207. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/secret/crud.py +0 -0
  208. {digitalhub-0.9.2/digitalhub/entities/task/_base → digitalhub-0.10.0b1/digitalhub/entities/task}/__init__.py +0 -0
  209. {digitalhub-0.9.2/digitalhub/entities/workflow → digitalhub-0.10.0b1/digitalhub/entities/task/_base}/__init__.py +0 -0
  210. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/task/_base/builder.py +0 -0
  211. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/task/_base/entity.py +0 -0
  212. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/task/_base/models.py +0 -0
  213. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/task/_base/status.py +0 -0
  214. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/task/_base/utils.py +0 -0
  215. {digitalhub-0.9.2/digitalhub/entities/workflow/_base → digitalhub-0.10.0b1/digitalhub/entities/workflow}/__init__.py +0 -0
  216. {digitalhub-0.9.2/digitalhub/factory → digitalhub-0.10.0b1/digitalhub/entities/workflow/_base}/__init__.py +0 -0
  217. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/workflow/_base/builder.py +0 -0
  218. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/workflow/_base/entity.py +0 -0
  219. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/workflow/_base/spec.py +0 -0
  220. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/workflow/_base/status.py +0 -0
  221. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/entities/workflow/crud.py +0 -0
  222. {digitalhub-0.9.2/digitalhub/readers → digitalhub-0.10.0b1/digitalhub/factory}/__init__.py +0 -0
  223. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/factory/api.py +0 -0
  224. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/factory/factory.py +0 -0
  225. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/factory/utils.py +0 -0
  226. {digitalhub-0.9.2/digitalhub/readers/_base → digitalhub-0.10.0b1/digitalhub/readers}/__init__.py +0 -0
  227. {digitalhub-0.9.2/digitalhub/readers/_commons → digitalhub-0.10.0b1/digitalhub/readers/_base}/__init__.py +0 -0
  228. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/readers/_base/builder.py +0 -0
  229. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/readers/_base/reader.py +0 -0
  230. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/readers/api.py +0 -0
  231. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/readers/factory.py +0 -0
  232. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/readers/pandas/__init__.py +0 -0
  233. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/readers/pandas/builder.py +0 -0
  234. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/runtimes/__init__.py +0 -0
  235. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/runtimes/_base.py +0 -0
  236. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/runtimes/builder.py +0 -0
  237. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/runtimes/enums.py +0 -0
  238. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/stores/__init__.py +0 -0
  239. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/stores/_base/__init__.py +0 -0
  240. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/stores/local/__init__.py +0 -0
  241. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/stores/remote/__init__.py +0 -0
  242. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/stores/s3/__init__.py +0 -0
  243. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/stores/sql/__init__.py +0 -0
  244. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/utils/__init__.py +0 -0
  245. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/utils/file_utils.py +0 -0
  246. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/utils/git_utils.py +0 -0
  247. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/utils/io_utils.py +0 -0
  248. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub/utils/logger.py +0 -0
  249. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub.egg-info/dependency_links.txt +0 -0
  250. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/digitalhub.egg-info/top_level.txt +0 -0
  251. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/setup.cfg +0 -0
  252. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/test/local/CRUD/test_artifacts.py +0 -0
  253. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/test/local/CRUD/test_dataitems.py +0 -0
  254. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/test/local/CRUD/test_models.py +0 -0
  255. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/test/local/instances/test_validate.py +0 -0
  256. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/test/test_crud_functions.py +0 -0
  257. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/test/test_crud_runs.py +0 -0
  258. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/test/test_crud_tasks.py +0 -0
  259. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/test/testkfp.py +0 -0
  260. {digitalhub-0.9.2 → digitalhub-0.10.0b1}/test/testkfp_pipeline.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: digitalhub
3
- Version: 0.9.2
3
+ Version: 0.10.0b1
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
@@ -231,7 +231,7 @@ Description-Content-Type: text/markdown
231
231
  License-File: LICENSE.txt
232
232
  Requires-Dist: boto3
233
233
  Requires-Dist: pydantic
234
- Requires-Dist: sqlalchemy<2
234
+ Requires-Dist: sqlalchemy
235
235
  Requires-Dist: pyarrow
236
236
  Requires-Dist: numpy<2
237
237
  Requires-Dist: requests
@@ -241,10 +241,10 @@ Requires-Dist: GitPython>=3
241
241
  Requires-Dist: psycopg2-binary
242
242
  Requires-Dist: python-slugify
243
243
  Provides-Extra: full
244
- Requires-Dist: pandas<2.2,>=1.2; extra == "full"
244
+ Requires-Dist: pandas; extra == "full"
245
245
  Requires-Dist: mlflow; extra == "full"
246
246
  Provides-Extra: pandas
247
- Requires-Dist: pandas<2.2,>=1.2; extra == "pandas"
247
+ Requires-Dist: pandas; extra == "pandas"
248
248
  Provides-Extra: mlflow
249
249
  Requires-Dist: mlflow; extra == "mlflow"
250
250
  Provides-Extra: dev
@@ -260,7 +260,6 @@ Requires-Dist: numpydoc>=1.6; extra == "docs"
260
260
 
261
261
  # Digitalhub Library
262
262
 
263
- The Digitalhub SDK library is used to manage entities and executions in Digitalhub from Python.
264
- It comes with a suite of tools to help you manage your projects and executions. It exposes CRUD methods to create, read, update and delete entities, and objects methods to excute functions or workflows, collect or store execution results and data.
263
+ The Digitalhub library is a python tool for managing projects, entities and executions in Digitalhub. It exposes CRUD methods to create, read, update and delete entities, tools to execute functions or workflows, collect or store execution results and data.
265
264
 
266
265
  A more detailed description of the library can be found in the [official documentation](https://scc-digitalhub.github.io/sdk-docs/).
@@ -0,0 +1,5 @@
1
+ # Digitalhub Library
2
+
3
+ The Digitalhub library is a python tool for managing projects, entities and executions in Digitalhub. It exposes CRUD methods to create, read, update and delete entities, tools to execute functions or workflows, collect or store execution results and data.
4
+
5
+ A more detailed description of the library can be found in the [official documentation](https://scc-digitalhub.github.io/sdk-docs/).
@@ -1,4 +1,3 @@
1
- __version__ = "0.9.0b0"
2
1
  from digitalhub.entities.artifact.crud import (
3
2
  delete_artifact,
4
3
  get_artifact,
@@ -85,15 +84,15 @@ from digitalhub.entities.workflow.crud import (
85
84
  )
86
85
 
87
86
  try:
88
- from digitalhub.entities.model.mlflow.utils import from_mlflow_run
87
+ from digitalhub.entities.model.mlflow.utils import from_mlflow_run, get_mlflow_model_metrics
89
88
  except ImportError:
90
89
  ...
91
90
 
92
91
  from digitalhub.client.dhcore.utils import refresh_token, set_dhcore_env
92
+ from digitalhub.configurator.api import get_current_env, set_current_env
93
93
 
94
94
  # Register entities into registry
95
95
  from digitalhub.factory.utils import register_entities, register_runtimes_entities
96
- from digitalhub.stores.api import set_store
97
96
 
98
97
  register_entities()
99
98
  register_runtimes_entities()
@@ -2,6 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import typing
4
4
  from abc import abstractmethod
5
+ from typing import Any
5
6
 
6
7
  if typing.TYPE_CHECKING:
7
8
  from digitalhub.client._base.api_builder import ClientApiBuilder
@@ -26,7 +27,7 @@ class Client:
26
27
  ##############################
27
28
 
28
29
  @abstractmethod
29
- def create_object(self, api: str, obj: dict, **kwargs) -> dict:
30
+ def create_object(self, api: str, obj: Any, **kwargs) -> dict:
30
31
  """
31
32
  Create object method.
32
33
  """
@@ -38,7 +39,7 @@ class Client:
38
39
  """
39
40
 
40
41
  @abstractmethod
41
- def update_object(self, api: str, obj: dict, **kwargs) -> dict:
42
+ def update_object(self, api: str, obj: Any, **kwargs) -> dict:
42
43
  """
43
44
  Update object method.
44
45
  """
@@ -96,5 +96,10 @@ class ClientDHCoreApiBuilder(ClientApiBuilder):
96
96
  return f"{API_CONTEXT}/{project}/{entity_type}/{kwargs['entity_id']}/files/info"
97
97
  elif operation == BackendOperations.SEARCH.value:
98
98
  return f"{API_CONTEXT}/{project}/solr/search/item"
99
+ elif operation == BackendOperations.METRICS.value:
100
+ if kwargs["metric_name"] is not None:
101
+ return f"{API_CONTEXT}/{project}/{entity_type}/{kwargs['entity_id']}/metrics/{kwargs['metric_name']}"
102
+ else:
103
+ return f"{API_CONTEXT}/{project}/{entity_type}/{kwargs['entity_id']}/metrics"
99
104
 
100
105
  raise BackendError(f"Invalid operation '{operation}' for entity type '{entity_type}' in DHCore.")
@@ -0,0 +1,349 @@
1
+ from __future__ import annotations
2
+
3
+ import typing
4
+ from typing import Any
5
+
6
+ from requests import request
7
+ from requests.exceptions import JSONDecodeError
8
+
9
+ from digitalhub.client._base.client import Client
10
+ from digitalhub.client.dhcore.api_builder import ClientDHCoreApiBuilder
11
+ from digitalhub.client.dhcore.configurator import ClientDHCoreConfigurator
12
+ from digitalhub.client.dhcore.error_parser import ErrorParser
13
+ from digitalhub.client.dhcore.key_builder import ClientDHCoreKeyBuilder
14
+ from digitalhub.utils.exceptions import BackendError
15
+ from digitalhub.utils.generic_utils import dump_json
16
+
17
+ if typing.TYPE_CHECKING:
18
+ from requests import Response
19
+
20
+
21
+ class ClientDHCore(Client):
22
+ """
23
+ DHCore client.
24
+
25
+ The DHCore client is used to communicate with the Digitalhub Core
26
+ backendAPI via REST. The client supports basic authentication and
27
+ OAuth2 token authentication with token refresh.
28
+ At creation, the client tries to get the endpoint and authentication
29
+ parameters from the .dhcore file and the environment variables. In
30
+ case the user incours into an authentication/endpoint error during
31
+ the client creation, the user has the possibility to update the
32
+ correct parameters using the `set_dhcore_env` function. If the DHCore
33
+ client is already initialized, this function will override the
34
+ configuration, otherwise it simply set the environment variables.
35
+ """
36
+
37
+ def __init__(self, config: dict | None = None) -> None:
38
+ super().__init__()
39
+
40
+ # API builder
41
+ self._api_builder = ClientDHCoreApiBuilder()
42
+
43
+ # Key builder
44
+ self._key_builder = ClientDHCoreKeyBuilder()
45
+
46
+ # Error parser
47
+ self._error_parser = ErrorParser()
48
+
49
+ # Client Configurator
50
+ self._configurator = ClientDHCoreConfigurator()
51
+ self._configurator.configure(config)
52
+
53
+ ##############################
54
+ # CRUD methods
55
+ ##############################
56
+
57
+ def create_object(self, api: str, obj: Any, **kwargs) -> dict:
58
+ """
59
+ Create an object in DHCore.
60
+
61
+ Parameters
62
+ ----------
63
+ api : str
64
+ Create API.
65
+ obj : Any
66
+ Object to create.
67
+ **kwargs : dict
68
+ Keyword arguments to pass to the request.
69
+
70
+ Returns
71
+ -------
72
+ dict
73
+ Response object.
74
+ """
75
+ if "headers" not in kwargs:
76
+ kwargs["headers"] = {}
77
+ kwargs["headers"]["Content-Type"] = "application/json"
78
+ kwargs["data"] = dump_json(obj)
79
+ return self._prepare_call("POST", api, **kwargs)
80
+
81
+ def read_object(self, api: str, **kwargs) -> dict:
82
+ """
83
+ Get an object from DHCore.
84
+
85
+ Parameters
86
+ ----------
87
+ api : str
88
+ Read API.
89
+ **kwargs : dict
90
+ Keyword arguments to pass to the request.
91
+
92
+ Returns
93
+ -------
94
+ dict
95
+ Response object.
96
+ """
97
+ return self._prepare_call("GET", api, **kwargs)
98
+
99
+ def update_object(self, api: str, obj: Any, **kwargs) -> dict:
100
+ """
101
+ Update an object in DHCore.
102
+
103
+ Parameters
104
+ ----------
105
+ api : str
106
+ Update API.
107
+ obj : dict
108
+ Object to update.
109
+ **kwargs : dict
110
+ Keyword arguments to pass to the request.
111
+
112
+ Returns
113
+ -------
114
+ dict
115
+ Response object.
116
+ """
117
+ if "headers" not in kwargs:
118
+ kwargs["headers"] = {}
119
+ kwargs["headers"]["Content-Type"] = "application/json"
120
+ kwargs["data"] = dump_json(obj)
121
+ return self._prepare_call("PUT", api, **kwargs)
122
+
123
+ def delete_object(self, api: str, **kwargs) -> dict:
124
+ """
125
+ Delete an object from DHCore.
126
+
127
+ Parameters
128
+ ----------
129
+ api : str
130
+ Delete API.
131
+ **kwargs : dict
132
+ Keyword arguments to pass to the request.
133
+
134
+ Returns
135
+ -------
136
+ dict
137
+ Response object.
138
+ """
139
+ resp = self._prepare_call("DELETE", api, **kwargs)
140
+ if isinstance(resp, bool):
141
+ resp = {"deleted": resp}
142
+ return resp
143
+
144
+ def list_objects(self, api: str, **kwargs) -> list[dict]:
145
+ """
146
+ List objects from DHCore.
147
+
148
+ Parameters
149
+ ----------
150
+ api : str
151
+ List API.
152
+ **kwargs : dict
153
+ Keyword arguments to pass to the request.
154
+
155
+ Returns
156
+ -------
157
+ list[dict]
158
+ Response objects.
159
+ """
160
+ if kwargs is None:
161
+ kwargs = {}
162
+
163
+ if "params" not in kwargs:
164
+ kwargs["params"] = {}
165
+
166
+ start_page = 0
167
+ if "page" not in kwargs["params"]:
168
+ kwargs["params"]["page"] = start_page
169
+
170
+ objects = []
171
+ while True:
172
+ resp = self._prepare_call("GET", api, **kwargs)
173
+ contents = resp["content"]
174
+ total_pages = resp["totalPages"]
175
+ if not contents or kwargs["params"]["page"] >= total_pages:
176
+ break
177
+ objects.extend(contents)
178
+ kwargs["params"]["page"] += 1
179
+
180
+ return objects
181
+
182
+ def list_first_object(self, api: str, **kwargs) -> dict:
183
+ """
184
+ List first objects.
185
+
186
+ Parameters
187
+ ----------
188
+ api : str
189
+ The api to list the objects with.
190
+ **kwargs : dict
191
+ Keyword arguments passed to the request.
192
+
193
+ Returns
194
+ -------
195
+ dict
196
+ The list of objects.
197
+ """
198
+ try:
199
+ return self.list_objects(api, **kwargs)[0]
200
+ except IndexError:
201
+ raise BackendError("No object found.")
202
+
203
+ def search_objects(self, api: str, **kwargs) -> list[dict]:
204
+ """
205
+ Search objects from DHCore.
206
+
207
+ Parameters
208
+ ----------
209
+ api : str
210
+ Search API.
211
+ **kwargs : dict
212
+ Keyword arguments to pass to the request.
213
+
214
+ Returns
215
+ -------
216
+ list[dict]
217
+ Response objects.
218
+ """
219
+ if kwargs is None:
220
+ kwargs = {}
221
+
222
+ if "params" not in kwargs:
223
+ kwargs["params"] = {}
224
+
225
+ start_page = 0
226
+ if "page" not in kwargs["params"]:
227
+ kwargs["params"]["page"] = start_page
228
+
229
+ if "size" not in kwargs["params"]:
230
+ kwargs["params"]["size"] = 10
231
+
232
+ # Add sorting
233
+ if "sort" not in kwargs["params"]:
234
+ kwargs["params"]["sort"] = "metadata.updated,DESC"
235
+
236
+ objects_with_highlights: list[dict] = []
237
+ while True:
238
+ resp = self._prepare_call("GET", api, **kwargs)
239
+ contents = resp["content"]
240
+ total_pages = resp["totalPages"]
241
+ if not contents or kwargs["params"]["page"] >= total_pages:
242
+ break
243
+ objects_with_highlights.extend(contents)
244
+ kwargs["params"]["page"] += 1
245
+
246
+ objects = []
247
+ for obj in objects_with_highlights:
248
+ obj.pop("highlights", None)
249
+ objects.append(obj)
250
+
251
+ return objects
252
+
253
+ ##############################
254
+ # Call methods
255
+ ##############################
256
+
257
+ def _prepare_call(self, call_type: str, api: str, **kwargs) -> dict:
258
+ """
259
+ Prepare a call to the DHCore API.
260
+
261
+ Parameters
262
+ ----------
263
+ call_type : str
264
+ The type of call to prepare.
265
+ api : str
266
+ The api to call.
267
+ **kwargs : dict
268
+ Keyword arguments to pass to the request.
269
+
270
+ Returns
271
+ -------
272
+ dict
273
+ Response object.
274
+ """
275
+ if kwargs is None:
276
+ kwargs = {}
277
+ url = self._configurator.build_url(api)
278
+ kwargs = self._configurator.set_request_auth(kwargs)
279
+ return self._make_call(call_type, url, **kwargs)
280
+
281
+ def _make_call(self, call_type: str, url: str, refresh_token: bool = True, **kwargs) -> dict:
282
+ """
283
+ Make a call to the DHCore API.
284
+
285
+ Parameters
286
+ ----------
287
+ call_type : str
288
+ The type of call to make.
289
+ url : str
290
+ The URL to call.
291
+ **kwargs : dict
292
+ Keyword arguments to pass to the request.
293
+
294
+ Returns
295
+ -------
296
+ dict
297
+ Response object.
298
+ """
299
+ # Call the API
300
+ response = request(call_type, url, timeout=60, **kwargs)
301
+
302
+ # Evaluate DHCore API version
303
+ self._configurator.check_core_version(response)
304
+
305
+ # Handle token refresh
306
+ if response.status_code in [401] and refresh_token and self._configurator.oauth2_auth():
307
+ self._configurator.get_new_access_token()
308
+ kwargs = self._configurator.set_request_auth(kwargs)
309
+ return self._make_call(call_type, url, refresh_token=False, **kwargs)
310
+
311
+ self._error_parser.parse(response)
312
+ return self._dictify_response(response)
313
+
314
+ def _dictify_response(self, response: Response) -> dict:
315
+ """
316
+ Return dict from response.
317
+
318
+ Parameters
319
+ ----------
320
+ response : Response
321
+ The response object.
322
+
323
+ Returns
324
+ -------
325
+ dict
326
+ The parsed response object.
327
+ """
328
+ try:
329
+ return response.json()
330
+ except JSONDecodeError:
331
+ if response.text == "":
332
+ return {}
333
+ raise BackendError("Backend response could not be parsed.")
334
+
335
+ ##############################
336
+ # Interface methods
337
+ ##############################
338
+
339
+ @staticmethod
340
+ def is_local() -> bool:
341
+ """
342
+ Declare if Client is local.
343
+
344
+ Returns
345
+ -------
346
+ bool
347
+ False
348
+ """
349
+ return False