digitalhub 0.9.2__tar.gz → 0.10.0b0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of digitalhub might be problematic. Click here for more details.
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/PKG-INFO +5 -6
- digitalhub-0.10.0b0/README.md +5 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/__init__.py +2 -3
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/client/_base/client.py +3 -2
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/client/dhcore/api_builder.py +5 -0
- digitalhub-0.10.0b0/digitalhub/client/dhcore/client.py +349 -0
- digitalhub-0.10.0b0/digitalhub/client/dhcore/configurator.py +339 -0
- digitalhub-0.10.0b0/digitalhub/client/dhcore/error_parser.py +107 -0
- digitalhub-0.10.0b0/digitalhub/client/dhcore/models.py +36 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/client/dhcore/utils.py +4 -44
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/client/local/api_builder.py +9 -17
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/client/local/client.py +12 -2
- digitalhub-0.10.0b0/digitalhub/client/local/enums.py +11 -0
- digitalhub-0.10.0b0/digitalhub/configurator/api.py +31 -0
- digitalhub-0.10.0b0/digitalhub/configurator/configurator.py +194 -0
- digitalhub-0.10.0b0/digitalhub/configurator/credentials_store.py +65 -0
- digitalhub-0.10.0b0/digitalhub/configurator/ini_module.py +74 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/_base/entity.py +2 -2
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/material/entity.py +19 -6
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/material/utils.py +2 -2
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_commons/enums.py +1 -0
- digitalhub-0.10.0b0/digitalhub/entities/_commons/models.py +9 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_commons/utils.py +25 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_operations/processor.py +103 -107
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/artifact/crud.py +3 -3
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/dataitem/_base/entity.py +2 -2
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/dataitem/crud.py +3 -3
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/dataitem/table/entity.py +2 -2
- digitalhub-0.9.2/digitalhub/utils/data_utils.py → digitalhub-0.10.0b0/digitalhub/entities/dataitem/table/utils.py +43 -51
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/dataitem/utils.py +6 -3
- digitalhub-0.10.0b0/digitalhub/entities/model/_base/entity.py +206 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/_base/spec.py +0 -10
- digitalhub-0.10.0b0/digitalhub/entities/model/_base/status.py +19 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/crud.py +3 -3
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/huggingface/spec.py +6 -3
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/mlflow/models.py +2 -2
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/mlflow/spec.py +1 -3
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/mlflow/utils.py +44 -5
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/run/_base/entity.py +149 -0
- digitalhub-0.10.0b0/digitalhub/entities/run/_base/status.py +21 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/task/_base/spec.py +2 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/task/crud.py +4 -0
- {digitalhub-0.9.2/digitalhub/readers/_commons → digitalhub-0.10.0b0/digitalhub/readers/pandas}/enums.py +4 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/readers/pandas/reader.py +58 -10
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/stores/_base/store.py +1 -49
- digitalhub-0.10.0b0/digitalhub/stores/api.py +29 -0
- digitalhub-0.10.0b0/digitalhub/stores/builder.py +94 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/stores/local/store.py +4 -18
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/stores/remote/store.py +3 -10
- digitalhub-0.10.0b0/digitalhub/stores/s3/configurator.py +107 -0
- digitalhub-0.10.0b0/digitalhub/stores/s3/enums.py +17 -0
- digitalhub-0.10.0b0/digitalhub/stores/s3/models.py +21 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/stores/s3/store.py +8 -28
- digitalhub-0.9.2/digitalhub/utils/s3_utils.py → digitalhub-0.10.0b0/digitalhub/stores/s3/utils.py +7 -3
- digitalhub-0.10.0b0/digitalhub/stores/sql/configurator.py +88 -0
- digitalhub-0.10.0b0/digitalhub/stores/sql/enums.py +16 -0
- digitalhub-0.10.0b0/digitalhub/stores/sql/models.py +24 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/stores/sql/store.py +14 -57
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/utils/exceptions.py +6 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/utils/generic_utils.py +9 -8
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/utils/uri_utils.py +1 -1
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub.egg-info/PKG-INFO +5 -6
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub.egg-info/SOURCES.txt +18 -5
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub.egg-info/requires.txt +3 -3
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/pyproject.toml +5 -5
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/test/local/imports/test_imports.py +0 -1
- digitalhub-0.9.2/README.md +0 -6
- digitalhub-0.9.2/digitalhub/client/dhcore/client.py +0 -721
- digitalhub-0.9.2/digitalhub/client/dhcore/env.py +0 -23
- digitalhub-0.9.2/digitalhub/client/dhcore/models.py +0 -46
- digitalhub-0.9.2/digitalhub/entities/model/_base/entity.py +0 -34
- digitalhub-0.9.2/digitalhub/entities/model/_base/status.py +0 -9
- digitalhub-0.9.2/digitalhub/entities/run/_base/status.py +0 -9
- digitalhub-0.9.2/digitalhub/stores/api.py +0 -54
- digitalhub-0.9.2/digitalhub/stores/builder.py +0 -211
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/LICENSE.txt +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/client/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/client/_base/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/client/_base/api_builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/client/_base/key_builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/client/api.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/client/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/client/dhcore/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/client/dhcore/enums.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/client/dhcore/key_builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/client/local/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/client/local/key_builder.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities → digitalhub-0.10.0b0/digitalhub/configurator}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/context/api.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/context/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/context/context.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/_base → digitalhub-0.10.0b0/digitalhub/entities}/__init__.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/_base → digitalhub-0.10.0b0/digitalhub/entities}/_base/__init__.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/_base/context → digitalhub-0.10.0b0/digitalhub/entities/_base/_base}/__init__.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/_base/entity → digitalhub-0.10.0b0/digitalhub/entities/_base/context}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/context/entity.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/_base/entity/_constructors → digitalhub-0.10.0b0/digitalhub/entities/_base/entity}/__init__.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/_base/executable → digitalhub-0.10.0b0/digitalhub/entities/_base/entity/_constructors}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/entity/_constructors/metadata.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/entity/_constructors/name.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/entity/_constructors/spec.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/entity/_constructors/status.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/entity/_constructors/uuid.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/entity/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/entity/entity.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/entity/metadata.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/entity/spec.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/entity/status.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/_base/material → digitalhub-0.10.0b0/digitalhub/entities/_base/executable}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/executable/entity.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/_base/project → digitalhub-0.10.0b0/digitalhub/entities/_base/material}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/material/spec.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/material/status.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/_base/runtime_entity → digitalhub-0.10.0b0/digitalhub/entities/_base/project}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/project/entity.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/_base/unversioned → digitalhub-0.10.0b0/digitalhub/entities/_base/runtime_entity}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/runtime_entity/builder.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/_base/versioned → digitalhub-0.10.0b0/digitalhub/entities/_base/unversioned}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/unversioned/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/unversioned/entity.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/_commons → digitalhub-0.10.0b0/digitalhub/entities/_base/versioned}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/versioned/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/_base/versioned/entity.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/_operations → digitalhub-0.10.0b0/digitalhub/entities/_commons}/__init__.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/artifact → digitalhub-0.10.0b0/digitalhub/entities/_operations}/__init__.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/artifact/_base → digitalhub-0.10.0b0/digitalhub/entities/artifact}/__init__.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/artifact/artifact → digitalhub-0.10.0b0/digitalhub/entities/artifact/_base}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/artifact/_base/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/artifact/_base/entity.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/artifact/_base/spec.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/artifact/_base/status.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/dataitem → digitalhub-0.10.0b0/digitalhub/entities/artifact/artifact}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/artifact/artifact/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/artifact/artifact/entity.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/artifact/artifact/spec.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/artifact/artifact/status.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/artifact/utils.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/builders.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/dataitem/_base → digitalhub-0.10.0b0/digitalhub/entities/dataitem}/__init__.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/dataitem/dataitem → digitalhub-0.10.0b0/digitalhub/entities/dataitem/_base}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/dataitem/_base/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/dataitem/_base/spec.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/dataitem/_base/status.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/dataitem/iceberg → digitalhub-0.10.0b0/digitalhub/entities/dataitem/dataitem}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/dataitem/dataitem/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/dataitem/dataitem/entity.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/dataitem/dataitem/spec.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/dataitem/dataitem/status.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/dataitem/table → digitalhub-0.10.0b0/digitalhub/entities/dataitem/iceberg}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/dataitem/iceberg/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/dataitem/iceberg/entity.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/dataitem/iceberg/spec.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/dataitem/iceberg/status.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/function → digitalhub-0.10.0b0/digitalhub/entities/dataitem/table}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/dataitem/table/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/dataitem/table/models.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/dataitem/table/spec.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/dataitem/table/status.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/function/_base → digitalhub-0.10.0b0/digitalhub/entities/function}/__init__.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/model → digitalhub-0.10.0b0/digitalhub/entities/function/_base}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/function/_base/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/function/_base/entity.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/function/_base/spec.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/function/_base/status.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/function/crud.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/model/_base → digitalhub-0.10.0b0/digitalhub/entities/model}/__init__.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/model/huggingface → digitalhub-0.10.0b0/digitalhub/entities/model/_base}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/_base/builder.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/model/mlflow → digitalhub-0.10.0b0/digitalhub/entities/model/huggingface}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/huggingface/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/huggingface/entity.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/huggingface/status.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/model/model → digitalhub-0.10.0b0/digitalhub/entities/model/mlflow}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/mlflow/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/mlflow/entity.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/mlflow/status.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/model/sklearn → digitalhub-0.10.0b0/digitalhub/entities/model/model}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/model/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/model/entity.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/model/spec.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/model/status.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/project → digitalhub-0.10.0b0/digitalhub/entities/model/sklearn}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/sklearn/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/sklearn/entity.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/sklearn/spec.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/sklearn/status.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/model/utils.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/project/_base → digitalhub-0.10.0b0/digitalhub/entities/project}/__init__.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/run → digitalhub-0.10.0b0/digitalhub/entities/project/_base}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/project/_base/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/project/_base/entity.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/project/_base/spec.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/project/_base/status.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/project/crud.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/project/utils.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/run/_base → digitalhub-0.10.0b0/digitalhub/entities/run}/__init__.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/secret → digitalhub-0.10.0b0/digitalhub/entities/run/_base}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/run/_base/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/run/_base/spec.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/run/crud.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/secret/_base → digitalhub-0.10.0b0/digitalhub/entities/secret}/__init__.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/task → digitalhub-0.10.0b0/digitalhub/entities/secret/_base}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/secret/_base/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/secret/_base/entity.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/secret/_base/spec.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/secret/_base/status.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/secret/crud.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/task/_base → digitalhub-0.10.0b0/digitalhub/entities/task}/__init__.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/workflow → digitalhub-0.10.0b0/digitalhub/entities/task/_base}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/task/_base/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/task/_base/entity.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/task/_base/models.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/task/_base/status.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/task/_base/utils.py +0 -0
- {digitalhub-0.9.2/digitalhub/entities/workflow/_base → digitalhub-0.10.0b0/digitalhub/entities/workflow}/__init__.py +0 -0
- {digitalhub-0.9.2/digitalhub/factory → digitalhub-0.10.0b0/digitalhub/entities/workflow/_base}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/workflow/_base/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/workflow/_base/entity.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/workflow/_base/spec.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/workflow/_base/status.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/entities/workflow/crud.py +0 -0
- {digitalhub-0.9.2/digitalhub/readers → digitalhub-0.10.0b0/digitalhub/factory}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/factory/api.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/factory/factory.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/factory/utils.py +0 -0
- {digitalhub-0.9.2/digitalhub/readers/_base → digitalhub-0.10.0b0/digitalhub/readers}/__init__.py +0 -0
- {digitalhub-0.9.2/digitalhub/readers/_commons → digitalhub-0.10.0b0/digitalhub/readers/_base}/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/readers/_base/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/readers/_base/reader.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/readers/api.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/readers/factory.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/readers/pandas/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/readers/pandas/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/runtimes/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/runtimes/_base.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/runtimes/builder.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/runtimes/enums.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/stores/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/stores/_base/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/stores/local/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/stores/remote/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/stores/s3/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/stores/sql/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/utils/__init__.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/utils/file_utils.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/utils/git_utils.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/utils/io_utils.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub/utils/logger.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub.egg-info/dependency_links.txt +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/digitalhub.egg-info/top_level.txt +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/setup.cfg +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/test/local/CRUD/test_artifacts.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/test/local/CRUD/test_dataitems.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/test/local/CRUD/test_models.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/test/local/instances/test_validate.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/test/test_crud_functions.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/test/test_crud_runs.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/test/test_crud_tasks.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/test/testkfp.py +0 -0
- {digitalhub-0.9.2 → digitalhub-0.10.0b0}/test/testkfp_pipeline.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: digitalhub
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.10.0b0
|
|
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
|
|
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
|
|
244
|
+
Requires-Dist: pandas; extra == "full"
|
|
245
245
|
Requires-Dist: mlflow; extra == "full"
|
|
246
246
|
Provides-Extra: pandas
|
|
247
|
-
Requires-Dist: 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
|
|
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:
|
|
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:
|
|
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
|