digitalhub 0.13.0b3__tar.gz → 0.14.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.13.0b3 → digitalhub-0.14.0b0}/.github/scripts/cliff.toml +4 -3
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/.github/workflows/release.yml +1 -1
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/PKG-INFO +3 -2
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/README.md +2 -1
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/__init__.py +3 -8
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_base/_base/entity.py +0 -11
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_base/entity/builder.py +5 -5
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_base/executable/entity.py +1 -1
- digitalhub-0.14.0b0/digitalhub/entities/_base/runtime_entity/builder.py +145 -0
- digitalhub-0.14.0b0/digitalhub/entities/_commons/metrics.py +202 -0
- digitalhub-0.14.0b0/digitalhub/entities/_commons/utils.py +157 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_processors/base.py +160 -81
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_processors/context.py +424 -224
- digitalhub-0.14.0b0/digitalhub/entities/_processors/utils.py +206 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/crud.py +20 -4
- digitalhub-0.14.0b0/digitalhub/entities/artifact/utils.py +81 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/crud.py +20 -4
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/table/entity.py +0 -21
- digitalhub-0.14.0b0/digitalhub/entities/dataitem/utils.py +238 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/function/_base/entity.py +1 -1
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/function/crud.py +15 -4
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/_base/entity.py +21 -1
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/crud.py +21 -5
- digitalhub-0.14.0b0/digitalhub/entities/model/utils.py +81 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/project/_base/entity.py +65 -33
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/project/crud.py +8 -1
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/run/_base/entity.py +21 -1
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/run/crud.py +22 -5
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/secret/crud.py +22 -5
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/task/crud.py +22 -5
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/crud.py +20 -4
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/workflow/_base/entity.py +1 -1
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/workflow/crud.py +15 -4
- digitalhub-0.14.0b0/digitalhub/factory/enums.py +18 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/factory/factory.py +136 -57
- digitalhub-0.14.0b0/digitalhub/factory/utils.py +68 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/client/api.py +6 -10
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/client/builder.py +3 -3
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/client/dhcore/client.py +104 -162
- digitalhub-0.14.0b0/digitalhub/stores/client/dhcore/configurator.py +478 -0
- digitalhub-0.14.0b0/digitalhub/stores/client/dhcore/enums.py +18 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/client/dhcore/params_builder.py +41 -83
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/client/dhcore/utils.py +14 -22
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/client/local/client.py +77 -45
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/credentials/enums.py +1 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/credentials/ini_module.py +0 -16
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/data/api.py +1 -1
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/data/builder.py +66 -4
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/data/local/store.py +0 -103
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/data/s3/configurator.py +60 -6
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/data/s3/store.py +44 -2
- digitalhub-0.14.0b0/digitalhub/stores/data/sql/configurator.py +120 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/data/sql/store.py +184 -78
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/utils/file_utils.py +0 -17
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/utils/generic_utils.py +1 -2
- digitalhub-0.14.0b0/digitalhub/utils/store_utils.py +44 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/pyproject.toml +2 -2
- digitalhub-0.13.0b3/digitalhub/entities/_base/runtime_entity/builder.py +0 -110
- digitalhub-0.13.0b3/digitalhub/entities/_commons/metrics.py +0 -168
- digitalhub-0.13.0b3/digitalhub/entities/_commons/types.py +0 -9
- digitalhub-0.13.0b3/digitalhub/entities/_commons/utils.py +0 -87
- digitalhub-0.13.0b3/digitalhub/entities/_processors/utils.py +0 -162
- digitalhub-0.13.0b3/digitalhub/entities/artifact/utils.py +0 -66
- digitalhub-0.13.0b3/digitalhub/entities/dataitem/utils.py +0 -188
- digitalhub-0.13.0b3/digitalhub/entities/model/utils.py +0 -66
- digitalhub-0.13.0b3/digitalhub/entities/task/_base/utils.py +0 -22
- digitalhub-0.13.0b3/digitalhub/factory/utils.py +0 -119
- digitalhub-0.13.0b3/digitalhub/stores/client/dhcore/configurator.py +0 -675
- digitalhub-0.13.0b3/digitalhub/stores/client/dhcore/enums.py +0 -34
- digitalhub-0.13.0b3/digitalhub/stores/client/dhcore/models.py +0 -40
- digitalhub-0.13.0b3/digitalhub/stores/data/s3/utils.py +0 -78
- digitalhub-0.13.0b3/digitalhub/stores/data/sql/configurator.py +0 -70
- digitalhub-0.13.0b3/test/test_crud_functions.py +0 -111
- digitalhub-0.13.0b3/test/test_crud_runs.py +0 -88
- digitalhub-0.13.0b3/test/test_crud_tasks.py +0 -83
- digitalhub-0.13.0b3/test/testkfp.py +0 -40
- digitalhub-0.13.0b3/test/testkfp_pipeline.py +0 -25
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/.github/scripts/bump.sh +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/.github/scripts/changelog.sh +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/.github/workflows/run_local_test.yml +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/.github/workflows/test_release.yml +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/.gitignore +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/AUTHORS +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/CONTRIBUTING +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/COPYRIGHT +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/LICENSE +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/context/api.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/context/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/context/context.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_base/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_base/_base/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_base/context/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_base/context/entity.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_base/entity/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_base/entity/entity.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_base/entity/metadata.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_base/entity/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_base/entity/status.py +0 -0
- {digitalhub-0.13.0b3/digitalhub/entities/_base/entity/_constructors → digitalhub-0.14.0b0/digitalhub/entities/_base/executable}/__init__.py +0 -0
- {digitalhub-0.13.0b3/digitalhub/entities/_base/executable → digitalhub-0.14.0b0/digitalhub/entities/_base/material}/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_base/material/entity.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_base/material/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_base/material/status.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_base/material/utils.py +0 -0
- {digitalhub-0.13.0b3/digitalhub/entities/_base/material → digitalhub-0.14.0b0/digitalhub/entities/_base/runtime_entity}/__init__.py +0 -0
- {digitalhub-0.13.0b3/digitalhub/entities/_base/runtime_entity → digitalhub-0.14.0b0/digitalhub/entities/_base/unversioned}/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_base/unversioned/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_base/unversioned/entity.py +0 -0
- {digitalhub-0.13.0b3/digitalhub/entities/_base/unversioned → digitalhub-0.14.0b0/digitalhub/entities/_base/versioned}/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_base/versioned/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_base/versioned/entity.py +0 -0
- {digitalhub-0.13.0b3/digitalhub/entities/_base/versioned → digitalhub-0.14.0b0/digitalhub/entities/_commons}/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_commons/enums.py +0 -0
- {digitalhub-0.13.0b3/digitalhub/entities/_commons → digitalhub-0.14.0b0/digitalhub/entities/_constructors}/__init__.py +0 -0
- {digitalhub-0.13.0b3/digitalhub/entities/_base/entity → digitalhub-0.14.0b0/digitalhub/entities}/_constructors/metadata.py +0 -0
- {digitalhub-0.13.0b3/digitalhub/entities/_base/entity → digitalhub-0.14.0b0/digitalhub/entities}/_constructors/name.py +0 -0
- {digitalhub-0.13.0b3/digitalhub/entities/_base/entity → digitalhub-0.14.0b0/digitalhub/entities}/_constructors/spec.py +0 -0
- {digitalhub-0.13.0b3/digitalhub/entities/_base/entity → digitalhub-0.14.0b0/digitalhub/entities}/_constructors/status.py +0 -0
- {digitalhub-0.13.0b3/digitalhub/entities/_base/entity → digitalhub-0.14.0b0/digitalhub/entities}/_constructors/uuid.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/_processors/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/_base/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/_base/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/_base/entity.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/_base/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/_base/status.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/artifact/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/artifact/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/artifact/entity.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/artifact/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/artifact/artifact/status.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/builders.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/_base/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/_base/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/_base/entity.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/_base/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/_base/status.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/dataitem/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/dataitem/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/dataitem/entity.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/dataitem/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/dataitem/status.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/iceberg/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/iceberg/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/iceberg/entity.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/iceberg/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/iceberg/status.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/table/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/table/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/table/models.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/table/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/table/status.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/dataitem/table/utils.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/function/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/function/_base/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/function/_base/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/function/_base/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/function/_base/status.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/_base/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/_base/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/_base/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/_base/status.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/huggingface/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/huggingface/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/huggingface/entity.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/huggingface/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/huggingface/status.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/mlflow/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/mlflow/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/mlflow/entity.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/mlflow/models.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/mlflow/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/mlflow/status.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/mlflow/utils.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/model/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/model/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/model/entity.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/model/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/model/status.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/sklearn/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/sklearn/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/sklearn/entity.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/sklearn/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/model/sklearn/status.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/project/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/project/_base/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/project/_base/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/project/_base/models.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/project/_base/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/project/_base/status.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/project/utils.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/run/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/run/_base/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/run/_base/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/run/_base/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/run/_base/status.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/secret/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/secret/_base/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/secret/_base/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/secret/_base/entity.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/secret/_base/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/secret/_base/status.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/task/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/task/_base/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/task/_base/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/task/_base/entity.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/task/_base/models.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/task/_base/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/task/_base/status.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/_base/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/_base/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/_base/entity.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/_base/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/_base/status.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/lifecycle/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/lifecycle/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/lifecycle/entity.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/lifecycle/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/lifecycle/status.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/scheduler/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/scheduler/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/scheduler/entity.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/scheduler/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/trigger/scheduler/status.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/workflow/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/workflow/_base/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/workflow/_base/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/workflow/_base/spec.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/entities/workflow/_base/status.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/factory/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/runtimes/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/runtimes/_base.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/runtimes/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/runtimes/enums.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/client/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/client/_base/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/client/_base/api_builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/client/_base/client.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/client/_base/key_builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/client/_base/params_builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/client/dhcore/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/client/dhcore/api_builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/client/dhcore/error_parser.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/client/dhcore/key_builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/client/local/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/client/local/api_builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/client/local/enums.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/client/local/key_builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/client/local/params_builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/credentials/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/credentials/api.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/credentials/configurator.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/credentials/handler.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/credentials/store.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/data/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/data/_base/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/data/_base/store.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/data/enums.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/data/local/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/data/remote/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/data/remote/store.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/data/s3/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/data/sql/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/readers/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/readers/data/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/readers/data/_base/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/readers/data/_base/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/readers/data/_base/reader.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/readers/data/api.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/readers/data/factory.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/readers/data/pandas/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/readers/data/pandas/builder.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/readers/data/pandas/reader.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/stores/readers/query/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/utils/__init__.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/utils/enums.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/utils/exceptions.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/utils/git_utils.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/utils/io_utils.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/utils/logger.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/utils/types.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/digitalhub/utils/uri_utils.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/scripts/README.md +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/scripts/local-copy/README.md +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/scripts/local-copy/local_copy.sh +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/scripts/quick-docker-copy/DBT.dockerfile +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/scripts/quick-docker-copy/KFP.dockerfile +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/scripts/quick-docker-copy/PY10.dockerfile +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/scripts/quick-docker-copy/PY11.dockerfile +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/scripts/quick-docker-copy/PY9.dockerfile +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/scripts/quick-docker-copy/README.md +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/scripts/quick-docker-copy/build_containers.sh +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/scripts/spec_exporter/README.md +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/scripts/spec_exporter/exporter.sh +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/test/local/CRUD/test_artifacts.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/test/local/CRUD/test_dataitems.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/test/local/CRUD/test_models.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/test/local/imports/test_imports.py +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/test/local/instances/entities/artifact/artifact-http.json +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/test/local/instances/entities/artifact/artifact-local.json +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/test/local/instances/entities/artifact/artifact-s3.json +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/test/local/instances/entities/artifact/artifact-sql.json +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/test/local/instances/entities/dataitem/dataitem-table.json +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/test/local/instances/entities/dataitem/dataitem.json +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/test/local/instances/entities/model/model-huggingface.json +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/test/local/instances/entities/model/model-mlflow.json +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/test/local/instances/entities/model/model-sklearn.json +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/test/local/instances/entities/model/model.json +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/test/local/instances/entities/project.json +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/test/local/instances/entities/secret.json +0 -0
- {digitalhub-0.13.0b3 → digitalhub-0.14.0b0}/test/local/instances/test_validate.py +0 -0
|
@@ -62,9 +62,10 @@ commit_preprocessors = [
|
|
|
62
62
|
commit_parsers = [
|
|
63
63
|
{ message = "^feat", group = "<!-- 0 --> Features" },
|
|
64
64
|
{ message = "^fix", group = "<!-- 1 --> Bug Fixes" },
|
|
65
|
-
{ message = "^perf", group = "<!--
|
|
66
|
-
{ message = "^build", group = "<!--
|
|
67
|
-
{ message = "^doc", group = "<!--
|
|
65
|
+
{ message = "^perf", group = "<!-- 2 --> Performance" },
|
|
66
|
+
{ message = "^build", group = "<!-- 3 --> Build" },
|
|
67
|
+
{ message = "^doc", group = "<!-- 4 --> Documentation" },
|
|
68
|
+
{ message = "^BREAKING", group = "<!-- 5 --> Breaking Changes" },
|
|
68
69
|
{ message = ".*", group = "<!-- 10 --> Other" , skip = true },
|
|
69
70
|
]
|
|
70
71
|
# filter out the commits that are not matched by commit parsers
|
|
@@ -132,7 +132,7 @@ jobs:
|
|
|
132
132
|
branch=${{ github.ref }}
|
|
133
133
|
|
|
134
134
|
# Define the repositories to trigger
|
|
135
|
-
repos=("digitalhub-sdk-wrapper-kfp" "
|
|
135
|
+
repos=("digitalhub-sdk-wrapper-kfp" "digitalhub-serverless" "digitalhub-sdk-wrapper-hera" "digitalhub-sdk-wrapper-dbt" )
|
|
136
136
|
|
|
137
137
|
# Loop over the repositories and trigger the workflow
|
|
138
138
|
for repo in "${repos[@]}"; do
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: digitalhub
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.14.0b0
|
|
4
4
|
Summary: Python SDK for Digitalhub
|
|
5
5
|
Project-URL: Homepage, https://github.com/scc-digitalhub/digitalhub-sdk
|
|
6
6
|
Author-email: Fondazione Bruno Kessler <digitalhub@fbk.eu>, Matteo Martini <mmartini@fbk.eu>
|
|
@@ -252,7 +252,7 @@ Explore the full documentation at the [link](https://scc-digitalhub.github.io/sd
|
|
|
252
252
|
To install the Digitalhub, you can use pip:
|
|
253
253
|
|
|
254
254
|
```bash
|
|
255
|
-
pip install digitalhub
|
|
255
|
+
pip install digitalhub[full]
|
|
256
256
|
```
|
|
257
257
|
|
|
258
258
|
To be able to create and execute functions or workflows, you need to install the runtime you want to use. The Digitalhub SDK supports multiple runtimes, each with its own installation instructions:
|
|
@@ -261,6 +261,7 @@ To be able to create and execute functions or workflows, you need to install the
|
|
|
261
261
|
- [Digitalhub SDK Runtime Dbt](https://github.com/scc-digitalhub/digitalhub-sdk-runtime-dbt)
|
|
262
262
|
- [Digitalhub SDK Runtime Container](https://github.com/scc-digitalhub/digitalhub-sdk-runtime-container)
|
|
263
263
|
- [Digitalhub SDK Runtime Kfp](https://github.com/scc-digitalhub/digitalhub-sdk-runtime-kfp)
|
|
264
|
+
- [Digitalhub SDK Runtime Hera](https://github.com/scc-digitalhub/digitalhub-sdk-runtime-hera)
|
|
264
265
|
- [Digitalhub SDK Runtime Modelserve](https://github.com/scc-digitalhub/digitalhub-sdk-runtime-modelserve)
|
|
265
266
|
|
|
266
267
|
## Development
|
|
@@ -12,7 +12,7 @@ Explore the full documentation at the [link](https://scc-digitalhub.github.io/sd
|
|
|
12
12
|
To install the Digitalhub, you can use pip:
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
pip install digitalhub
|
|
15
|
+
pip install digitalhub[full]
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
To be able to create and execute functions or workflows, you need to install the runtime you want to use. The Digitalhub SDK supports multiple runtimes, each with its own installation instructions:
|
|
@@ -21,6 +21,7 @@ To be able to create and execute functions or workflows, you need to install the
|
|
|
21
21
|
- [Digitalhub SDK Runtime Dbt](https://github.com/scc-digitalhub/digitalhub-sdk-runtime-dbt)
|
|
22
22
|
- [Digitalhub SDK Runtime Container](https://github.com/scc-digitalhub/digitalhub-sdk-runtime-container)
|
|
23
23
|
- [Digitalhub SDK Runtime Kfp](https://github.com/scc-digitalhub/digitalhub-sdk-runtime-kfp)
|
|
24
|
+
- [Digitalhub SDK Runtime Hera](https://github.com/scc-digitalhub/digitalhub-sdk-runtime-hera)
|
|
24
25
|
- [Digitalhub SDK Runtime Modelserve](https://github.com/scc-digitalhub/digitalhub-sdk-runtime-modelserve)
|
|
25
26
|
|
|
26
27
|
## Development
|
|
@@ -95,16 +95,11 @@ from digitalhub.entities.workflow.crud import (
|
|
|
95
95
|
new_workflow,
|
|
96
96
|
update_workflow,
|
|
97
97
|
)
|
|
98
|
+
from digitalhub.stores.client.dhcore.utils import refresh_token, set_dhcore_env
|
|
99
|
+
from digitalhub.stores.credentials.api import get_current_profile, set_current_profile
|
|
100
|
+
from digitalhub.utils.store_utils import get_s3_client, get_sql_engine
|
|
98
101
|
|
|
99
102
|
try:
|
|
100
103
|
from digitalhub.entities.model.mlflow.utils import from_mlflow_run, get_mlflow_model_metrics
|
|
101
104
|
except ImportError:
|
|
102
105
|
...
|
|
103
|
-
|
|
104
|
-
# Register entities into registry
|
|
105
|
-
from digitalhub.factory.utils import register_entities, register_runtimes_entities
|
|
106
|
-
from digitalhub.stores.client.dhcore.utils import refresh_token, set_dhcore_env
|
|
107
|
-
from digitalhub.stores.credentials.api import get_current_profile, set_current_profile
|
|
108
|
-
|
|
109
|
-
register_entities()
|
|
110
|
-
register_runtimes_entities()
|
|
@@ -63,17 +63,6 @@ class Base:
|
|
|
63
63
|
if k not in self.__dict__:
|
|
64
64
|
setattr(self, k, v)
|
|
65
65
|
|
|
66
|
-
def _get_private_attrs(self) -> dict:
|
|
67
|
-
"""
|
|
68
|
-
Return all private attributes of the object.
|
|
69
|
-
|
|
70
|
-
Returns
|
|
71
|
-
-------
|
|
72
|
-
dict
|
|
73
|
-
A dictionary containing the private attributes of the entity instance.
|
|
74
|
-
"""
|
|
75
|
-
return {k: v for k, v in self.__dict__.items() if k.startswith("_")}
|
|
76
|
-
|
|
77
66
|
def __repr__(self) -> str:
|
|
78
67
|
"""
|
|
79
68
|
Return string representation of the entity object.
|
|
@@ -7,11 +7,11 @@ from __future__ import annotations
|
|
|
7
7
|
import typing
|
|
8
8
|
from abc import abstractmethod
|
|
9
9
|
|
|
10
|
-
from digitalhub.entities.
|
|
11
|
-
from digitalhub.entities.
|
|
12
|
-
from digitalhub.entities.
|
|
13
|
-
from digitalhub.entities.
|
|
14
|
-
from digitalhub.entities.
|
|
10
|
+
from digitalhub.entities._constructors.metadata import build_metadata
|
|
11
|
+
from digitalhub.entities._constructors.name import build_name
|
|
12
|
+
from digitalhub.entities._constructors.spec import build_spec
|
|
13
|
+
from digitalhub.entities._constructors.status import build_status
|
|
14
|
+
from digitalhub.entities._constructors.uuid import build_uuid
|
|
15
15
|
from digitalhub.utils.exceptions import BuilderError
|
|
16
16
|
|
|
17
17
|
if typing.TYPE_CHECKING:
|
|
@@ -430,7 +430,7 @@ class ExecutableEntity(VersionedEntity):
|
|
|
430
430
|
task_string = task._get_task_string()
|
|
431
431
|
|
|
432
432
|
# Get run validator for building trigger template
|
|
433
|
-
run_kind = factory.
|
|
433
|
+
run_kind = factory.get_run_kind_from_action(self.kind, action)
|
|
434
434
|
run_validator: SpecValidator = factory.get_spec_validator(run_kind)
|
|
435
435
|
# Override kwargs
|
|
436
436
|
kwargs["project"] = self.project
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: © 2025 DSLab - Fondazione Bruno Kessler
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from digitalhub.entities._commons.utils import KindAction
|
|
8
|
+
from digitalhub.utils.exceptions import EntityError
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class RuntimeEntityBuilder:
|
|
12
|
+
"""
|
|
13
|
+
RuntimeEntity builder.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
EXECUTABLE_KIND: str = None
|
|
17
|
+
TASKS_KINDS: list[KindAction] = None
|
|
18
|
+
RUN_KINDS: list[KindAction] = None
|
|
19
|
+
|
|
20
|
+
def __init__(self) -> None:
|
|
21
|
+
self._validate()
|
|
22
|
+
|
|
23
|
+
def _validate(self) -> None:
|
|
24
|
+
"""
|
|
25
|
+
Validate the entity.
|
|
26
|
+
"""
|
|
27
|
+
for attr_name in ["EXECUTABLE_KIND", "TASKS_KINDS", "RUN_KINDS"]:
|
|
28
|
+
value = getattr(self, attr_name)
|
|
29
|
+
if value is None:
|
|
30
|
+
raise EntityError(f"{attr_name} must be set")
|
|
31
|
+
|
|
32
|
+
for attr_name in ["TASKS_KINDS", "RUN_KINDS"]:
|
|
33
|
+
self._instance_validation(getattr(self, attr_name))
|
|
34
|
+
|
|
35
|
+
def _instance_validation(self, attribute: list[KindAction]) -> None:
|
|
36
|
+
"""
|
|
37
|
+
Validate if the attribute is a list of KindAction.
|
|
38
|
+
|
|
39
|
+
Parameters
|
|
40
|
+
----------
|
|
41
|
+
attribute : list[KindAction]
|
|
42
|
+
Attribute to validate.
|
|
43
|
+
"""
|
|
44
|
+
if not isinstance(attribute, list):
|
|
45
|
+
raise EntityError(f"{attribute} must be a list")
|
|
46
|
+
for i in attribute:
|
|
47
|
+
if not isinstance(i, KindAction):
|
|
48
|
+
raise EntityError(f"{attribute} must be a list of KindAction")
|
|
49
|
+
if i.kind is None:
|
|
50
|
+
raise EntityError(f"{attribute} must be a list of KindAction with kind set")
|
|
51
|
+
|
|
52
|
+
def get_action_from_task_kind(self, task_kind: str) -> str:
|
|
53
|
+
"""
|
|
54
|
+
Get action from task kind.
|
|
55
|
+
|
|
56
|
+
Parameters
|
|
57
|
+
----------
|
|
58
|
+
task_kind : str
|
|
59
|
+
Task kind.
|
|
60
|
+
|
|
61
|
+
Returns
|
|
62
|
+
-------
|
|
63
|
+
str
|
|
64
|
+
Action.
|
|
65
|
+
"""
|
|
66
|
+
for task in self.TASKS_KINDS:
|
|
67
|
+
if task.kind == task_kind:
|
|
68
|
+
return task.action
|
|
69
|
+
msg = f"Task kind {task_kind} not allowed."
|
|
70
|
+
raise EntityError(msg)
|
|
71
|
+
|
|
72
|
+
def get_task_kind_from_action(self, action: str) -> list[str]:
|
|
73
|
+
"""
|
|
74
|
+
Get task kinds from action.
|
|
75
|
+
|
|
76
|
+
Parameters
|
|
77
|
+
----------
|
|
78
|
+
action : str
|
|
79
|
+
Action.
|
|
80
|
+
|
|
81
|
+
Returns
|
|
82
|
+
-------
|
|
83
|
+
list[str]
|
|
84
|
+
Task kinds.
|
|
85
|
+
"""
|
|
86
|
+
for task in self.TASKS_KINDS:
|
|
87
|
+
if task.action == action:
|
|
88
|
+
return task.kind
|
|
89
|
+
msg = f"Action {action} not allowed."
|
|
90
|
+
raise EntityError(msg)
|
|
91
|
+
|
|
92
|
+
def get_run_kind_from_action(self, action: str) -> str:
|
|
93
|
+
"""
|
|
94
|
+
Get run kind from action.
|
|
95
|
+
|
|
96
|
+
Parameters
|
|
97
|
+
----------
|
|
98
|
+
action : str
|
|
99
|
+
Action.
|
|
100
|
+
|
|
101
|
+
Returns
|
|
102
|
+
-------
|
|
103
|
+
str
|
|
104
|
+
Run kind.
|
|
105
|
+
"""
|
|
106
|
+
for run in self.RUN_KINDS:
|
|
107
|
+
if run.action == action:
|
|
108
|
+
return run.kind
|
|
109
|
+
msg = f"Action {action} not allowed."
|
|
110
|
+
raise EntityError(msg)
|
|
111
|
+
|
|
112
|
+
def get_executable_kind(self) -> str:
|
|
113
|
+
"""
|
|
114
|
+
Get executable kind.
|
|
115
|
+
|
|
116
|
+
Returns
|
|
117
|
+
-------
|
|
118
|
+
str
|
|
119
|
+
Executable kind.
|
|
120
|
+
"""
|
|
121
|
+
return self.EXECUTABLE_KIND
|
|
122
|
+
|
|
123
|
+
def get_all_kinds(self) -> list[str]:
|
|
124
|
+
"""
|
|
125
|
+
Get all kinds.
|
|
126
|
+
|
|
127
|
+
Returns
|
|
128
|
+
-------
|
|
129
|
+
list[str]
|
|
130
|
+
All kinds.
|
|
131
|
+
"""
|
|
132
|
+
task_kinds = [i.kind for i in self.TASKS_KINDS]
|
|
133
|
+
run_kinds = [i.kind for i in self.RUN_KINDS]
|
|
134
|
+
return [self.EXECUTABLE_KIND, *run_kinds, *task_kinds]
|
|
135
|
+
|
|
136
|
+
def get_all_actions(self) -> list[str]:
|
|
137
|
+
"""
|
|
138
|
+
Get all actions.
|
|
139
|
+
|
|
140
|
+
Returns
|
|
141
|
+
-------
|
|
142
|
+
list[str]
|
|
143
|
+
All actions.
|
|
144
|
+
"""
|
|
145
|
+
return [i.action for i in self.TASKS_KINDS]
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: © 2025 DSLab - Fondazione Bruno Kessler
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import Any, Union
|
|
8
|
+
|
|
9
|
+
from pydantic import BaseModel, ValidationError
|
|
10
|
+
|
|
11
|
+
MetricType = Union[float, int, list[Union[float, int]]]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class Metric(BaseModel):
|
|
15
|
+
"""
|
|
16
|
+
Pydantic model for validating metric values.
|
|
17
|
+
|
|
18
|
+
This model ensures that metric values are of the correct type,
|
|
19
|
+
accepting single numeric values or lists of numeric values.
|
|
20
|
+
|
|
21
|
+
Attributes
|
|
22
|
+
----------
|
|
23
|
+
value : MetricType
|
|
24
|
+
The metric value, which can be a float, int, or list of floats/ints.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
value: MetricType
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def validate_metric_value(value: Any) -> MetricType:
|
|
31
|
+
"""
|
|
32
|
+
Validate and convert a value to a proper metric type.
|
|
33
|
+
|
|
34
|
+
Uses Pydantic validation to ensure the input value conforms to
|
|
35
|
+
the MetricType specification (float, int, or list of floats/ints).
|
|
36
|
+
|
|
37
|
+
Parameters
|
|
38
|
+
----------
|
|
39
|
+
value : Any
|
|
40
|
+
The value to validate and convert.
|
|
41
|
+
|
|
42
|
+
Returns
|
|
43
|
+
-------
|
|
44
|
+
MetricType
|
|
45
|
+
The validated metric value.
|
|
46
|
+
|
|
47
|
+
Raises
|
|
48
|
+
------
|
|
49
|
+
ValueError
|
|
50
|
+
If the value cannot be converted to a valid metric type.
|
|
51
|
+
"""
|
|
52
|
+
try:
|
|
53
|
+
return Metric(value=value).value
|
|
54
|
+
except ValidationError as e:
|
|
55
|
+
raise ValueError("Invalid metric value. Must be a list of floats or ints or a float or an int.") from e
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def set_metrics(
|
|
59
|
+
metrics: dict[str, MetricType],
|
|
60
|
+
key: str,
|
|
61
|
+
value: Any,
|
|
62
|
+
overwrite: bool,
|
|
63
|
+
single_value: bool,
|
|
64
|
+
) -> dict[str, MetricType]:
|
|
65
|
+
"""
|
|
66
|
+
Set or update a metric value in the metrics dictionary.
|
|
67
|
+
|
|
68
|
+
This function routes to appropriate handling based on the value type
|
|
69
|
+
and the single_value flag. It can handle single values, lists, and
|
|
70
|
+
appending to existing metrics.
|
|
71
|
+
|
|
72
|
+
Parameters
|
|
73
|
+
----------
|
|
74
|
+
metrics : dict[str, MetricType]
|
|
75
|
+
The metrics dictionary to update.
|
|
76
|
+
key : str
|
|
77
|
+
The metric key to set or update.
|
|
78
|
+
value : Any
|
|
79
|
+
The value to set for the metric.
|
|
80
|
+
overwrite : bool
|
|
81
|
+
Whether to overwrite existing metrics.
|
|
82
|
+
single_value : bool
|
|
83
|
+
Whether to treat the value as a single metric rather than
|
|
84
|
+
appending to a list.
|
|
85
|
+
|
|
86
|
+
Returns
|
|
87
|
+
-------
|
|
88
|
+
dict[str, MetricType]
|
|
89
|
+
The updated metrics dictionary.
|
|
90
|
+
"""
|
|
91
|
+
if isinstance(value, list):
|
|
92
|
+
return handle_metric_list(metrics, key, value, overwrite)
|
|
93
|
+
elif single_value:
|
|
94
|
+
return handle_metric_single(metrics, key, value, overwrite)
|
|
95
|
+
return handle_metric_list_append(metrics, key, value, overwrite)
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def handle_metric_single(
|
|
99
|
+
metrics: dict[str, MetricType],
|
|
100
|
+
key: str,
|
|
101
|
+
value: float | int,
|
|
102
|
+
overwrite: bool,
|
|
103
|
+
) -> dict:
|
|
104
|
+
"""
|
|
105
|
+
Handle setting a single metric value.
|
|
106
|
+
|
|
107
|
+
Sets or overwrites a metric with a single numeric value. If the key
|
|
108
|
+
already exists and overwrite is False, the existing value is preserved.
|
|
109
|
+
|
|
110
|
+
Parameters
|
|
111
|
+
----------
|
|
112
|
+
metrics : dict[str, MetricType]
|
|
113
|
+
The metrics dictionary to update.
|
|
114
|
+
key : str
|
|
115
|
+
The metric key to set.
|
|
116
|
+
value : float | int
|
|
117
|
+
The single numeric value to set.
|
|
118
|
+
overwrite : bool
|
|
119
|
+
Whether to overwrite an existing metric with the same key.
|
|
120
|
+
|
|
121
|
+
Returns
|
|
122
|
+
-------
|
|
123
|
+
dict
|
|
124
|
+
The updated metrics dictionary.
|
|
125
|
+
"""
|
|
126
|
+
if key not in metrics or overwrite:
|
|
127
|
+
metrics[key] = value
|
|
128
|
+
return metrics
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
def handle_metric_list_append(
|
|
132
|
+
metrics: dict[str, MetricType],
|
|
133
|
+
key: str,
|
|
134
|
+
value: float | int,
|
|
135
|
+
overwrite: bool,
|
|
136
|
+
) -> dict:
|
|
137
|
+
"""
|
|
138
|
+
Handle appending a single value to a metric list.
|
|
139
|
+
|
|
140
|
+
If the metric doesn't exist or overwrite is True, creates a new list
|
|
141
|
+
with the single value. If the metric exists as a list, appends to it.
|
|
142
|
+
If the metric exists as a single value, converts it to a list and appends.
|
|
143
|
+
|
|
144
|
+
Parameters
|
|
145
|
+
----------
|
|
146
|
+
metrics : dict[str, MetricType]
|
|
147
|
+
The metrics dictionary to update.
|
|
148
|
+
key : str
|
|
149
|
+
The metric key to append to.
|
|
150
|
+
value : float | int
|
|
151
|
+
The numeric value to append.
|
|
152
|
+
overwrite : bool
|
|
153
|
+
Whether to overwrite an existing metric instead of appending.
|
|
154
|
+
|
|
155
|
+
Returns
|
|
156
|
+
-------
|
|
157
|
+
dict
|
|
158
|
+
The updated metrics dictionary.
|
|
159
|
+
"""
|
|
160
|
+
if key not in metrics or overwrite:
|
|
161
|
+
metrics[key] = [value]
|
|
162
|
+
elif isinstance(metrics[key], list):
|
|
163
|
+
metrics[key].append(value)
|
|
164
|
+
else:
|
|
165
|
+
metrics[key] = [metrics[key], value]
|
|
166
|
+
return metrics
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
def handle_metric_list(
|
|
170
|
+
metrics: dict[str, MetricType],
|
|
171
|
+
key: str,
|
|
172
|
+
value: list[int | float],
|
|
173
|
+
overwrite: bool,
|
|
174
|
+
) -> dict:
|
|
175
|
+
"""
|
|
176
|
+
Handle setting or extending a metric with a list of values.
|
|
177
|
+
|
|
178
|
+
If the metric doesn't exist or overwrite is True, sets the metric to
|
|
179
|
+
the provided list. If the metric exists and overwrite is False, extends
|
|
180
|
+
the existing list with the new values.
|
|
181
|
+
|
|
182
|
+
Parameters
|
|
183
|
+
----------
|
|
184
|
+
metrics : dict[str, MetricType]
|
|
185
|
+
The metrics dictionary to update.
|
|
186
|
+
key : str
|
|
187
|
+
The metric key to set or extend.
|
|
188
|
+
value : list[int | float]
|
|
189
|
+
The list of numeric values to set or extend with.
|
|
190
|
+
overwrite : bool
|
|
191
|
+
Whether to overwrite an existing metric instead of extending it.
|
|
192
|
+
|
|
193
|
+
Returns
|
|
194
|
+
-------
|
|
195
|
+
dict
|
|
196
|
+
The updated metrics dictionary.
|
|
197
|
+
"""
|
|
198
|
+
if key not in metrics or overwrite:
|
|
199
|
+
metrics[key] = value
|
|
200
|
+
else:
|
|
201
|
+
metrics[key].extend(value)
|
|
202
|
+
return metrics
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: © 2025 DSLab - Fondazione Bruno Kessler
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
import re
|
|
8
|
+
from collections import namedtuple
|
|
9
|
+
|
|
10
|
+
from digitalhub.entities._commons.enums import EntityTypes
|
|
11
|
+
|
|
12
|
+
KindAction = namedtuple("KindAction", ["kind", "action"])
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
KEY_PATTERN_WITH_ID = "store://([^/]+)/([^/]+)/([^/]+)/([^:]+):(.+)"
|
|
16
|
+
KEY_PATTERN_NO_ID = "store://([^/]+)/([^/]+)/([^/]+)/([^:]+)"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def is_valid_key(key: str) -> bool:
|
|
20
|
+
"""
|
|
21
|
+
Check if an entity key is valid.
|
|
22
|
+
|
|
23
|
+
Parameters
|
|
24
|
+
----------
|
|
25
|
+
key : str
|
|
26
|
+
The entity key to validate.
|
|
27
|
+
|
|
28
|
+
Returns
|
|
29
|
+
-------
|
|
30
|
+
bool
|
|
31
|
+
True if the key is valid, False otherwise.
|
|
32
|
+
"""
|
|
33
|
+
return bool(re.fullmatch(KEY_PATTERN_WITH_ID, key) or re.fullmatch(KEY_PATTERN_NO_ID, key))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def parse_entity_key(key: str) -> tuple[str, str, str, str | None, str]:
|
|
37
|
+
"""
|
|
38
|
+
Parse an entity key into its constituent components.
|
|
39
|
+
|
|
40
|
+
Extracts project name, entity type, kind, name, and UUID from a
|
|
41
|
+
standardized entity key format. Handles special cases for tasks
|
|
42
|
+
and runs which don't have name components.
|
|
43
|
+
|
|
44
|
+
Parameters
|
|
45
|
+
----------
|
|
46
|
+
key : str
|
|
47
|
+
The entity key in format "store://project/type/kind/name:uuid"
|
|
48
|
+
or "store://project/type/kind/uuid" for tasks and runs.
|
|
49
|
+
|
|
50
|
+
Returns
|
|
51
|
+
-------
|
|
52
|
+
tuple[str, str, str, str | None, str]
|
|
53
|
+
A tuple containing (project, entity_type, kind, name, uuid).
|
|
54
|
+
The name component is None for tasks and runs.
|
|
55
|
+
|
|
56
|
+
Raises
|
|
57
|
+
------
|
|
58
|
+
ValueError
|
|
59
|
+
If the key format is invalid or cannot be parsed.
|
|
60
|
+
"""
|
|
61
|
+
if not is_valid_key(key):
|
|
62
|
+
raise ValueError("Invalid entity key format.")
|
|
63
|
+
|
|
64
|
+
# Remove "store://" from the key
|
|
65
|
+
key = key.replace("store://", "")
|
|
66
|
+
|
|
67
|
+
# Split the key into parts
|
|
68
|
+
parts = key.split("/")
|
|
69
|
+
|
|
70
|
+
# The project is the first part
|
|
71
|
+
project = parts[0]
|
|
72
|
+
|
|
73
|
+
# The entity type is the second part
|
|
74
|
+
entity_type = parts[1]
|
|
75
|
+
|
|
76
|
+
# The kind is the third part
|
|
77
|
+
kind = parts[2]
|
|
78
|
+
|
|
79
|
+
# Tasks and runs have no name and uuid
|
|
80
|
+
if entity_type in (EntityTypes.TASK.value, EntityTypes.RUN.value):
|
|
81
|
+
name = None
|
|
82
|
+
uuid = parts[3]
|
|
83
|
+
|
|
84
|
+
# The name and uuid are separated by a colon in the last part
|
|
85
|
+
else:
|
|
86
|
+
name, uuid = parts[3].split(":")
|
|
87
|
+
|
|
88
|
+
return project, entity_type, kind, name, uuid
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def get_entity_type_from_key(key: str) -> str:
|
|
92
|
+
"""
|
|
93
|
+
Extract the entity type from an entity key.
|
|
94
|
+
|
|
95
|
+
Parses the entity key and returns only the entity type component,
|
|
96
|
+
which indicates the kind of entity (artifact, function, run, etc.).
|
|
97
|
+
|
|
98
|
+
Parameters
|
|
99
|
+
----------
|
|
100
|
+
key : str
|
|
101
|
+
The entity key in standardized format.
|
|
102
|
+
|
|
103
|
+
Returns
|
|
104
|
+
-------
|
|
105
|
+
str
|
|
106
|
+
The entity type extracted from the key.
|
|
107
|
+
|
|
108
|
+
Raises
|
|
109
|
+
------
|
|
110
|
+
ValueError
|
|
111
|
+
If the key format is invalid or cannot be parsed.
|
|
112
|
+
"""
|
|
113
|
+
_, entity_type, _, _, _ = parse_entity_key(key)
|
|
114
|
+
return entity_type
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
def get_project_from_key(key: str) -> str:
|
|
118
|
+
"""
|
|
119
|
+
Extract the project name from an entity key.
|
|
120
|
+
|
|
121
|
+
Parses the entity key and returns only the project component,
|
|
122
|
+
which identifies the project context the entity belongs to.
|
|
123
|
+
|
|
124
|
+
Parameters
|
|
125
|
+
----------
|
|
126
|
+
key : str
|
|
127
|
+
The entity key in standardized format.
|
|
128
|
+
|
|
129
|
+
Returns
|
|
130
|
+
-------
|
|
131
|
+
str
|
|
132
|
+
The project name extracted from the key.
|
|
133
|
+
|
|
134
|
+
Raises
|
|
135
|
+
------
|
|
136
|
+
ValueError
|
|
137
|
+
If the key format is invalid or cannot be parsed.
|
|
138
|
+
"""
|
|
139
|
+
project, _, _, _, _ = parse_entity_key(key)
|
|
140
|
+
return project
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def map_actions(kind_action_list: list[tuple[str, str]]) -> list[KindAction]:
|
|
144
|
+
"""
|
|
145
|
+
Build task actions as KindAction namedtuples.
|
|
146
|
+
|
|
147
|
+
Parameters
|
|
148
|
+
----------
|
|
149
|
+
kind_action_list : list[tuple[str, str]]
|
|
150
|
+
List of kind-action couples.
|
|
151
|
+
|
|
152
|
+
Returns
|
|
153
|
+
-------
|
|
154
|
+
list[KindAction]
|
|
155
|
+
Returns the task actions as KindAction namedtuples.
|
|
156
|
+
"""
|
|
157
|
+
return [KindAction(kind, action) for (kind, action) in kind_action_list]
|