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