digitalhub 0.9.0b3__tar.gz → 0.9.0b4__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.0b3 → digitalhub-0.9.0b4}/PKG-INFO +1 -1
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/material/entity.py +1 -1
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_operations/processor.py +4 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/stores/_base/store.py +6 -2
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/stores/local/store.py +6 -2
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/stores/remote/store.py +6 -2
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/stores/s3/store.py +100 -46
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/stores/sql/store.py +10 -2
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/utils/s3_utils.py +17 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub.egg-info/PKG-INFO +1 -1
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/pyproject.toml +2 -2
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/LICENSE.txt +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/README.md +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/client/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/client/_base/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/client/_base/api_builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/client/_base/client.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/client/api.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/client/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/client/dhcore/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/client/dhcore/api_builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/client/dhcore/client.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/client/dhcore/enums.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/client/dhcore/env.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/client/dhcore/models.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/client/dhcore/utils.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/client/local/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/client/local/api_builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/client/local/client.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/context/api.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/context/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/context/context.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/_base/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/_base/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/context/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/context/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/entity/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/entity/_constructors/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/entity/_constructors/metadata.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/entity/_constructors/name.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/entity/_constructors/spec.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/entity/_constructors/status.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/entity/_constructors/uuid.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/entity/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/entity/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/entity/metadata.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/entity/spec.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/entity/status.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/executable/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/executable/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/material/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/material/spec.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/material/status.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/material/utils.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/project/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/project/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/runtime_entity/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/runtime_entity/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/unversioned/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/unversioned/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/unversioned/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/versioned/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/versioned/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/versioned/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_commons/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_commons/enums.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_commons/utils.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_operations/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/artifact/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/artifact/_base/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/artifact/_base/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/artifact/_base/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/artifact/_base/spec.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/artifact/_base/status.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/artifact/artifact/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/artifact/artifact/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/artifact/artifact/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/artifact/artifact/spec.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/artifact/artifact/status.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/artifact/crud.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/artifact/utils.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/builders.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/_base/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/_base/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/_base/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/_base/spec.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/_base/status.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/crud.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/dataitem/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/dataitem/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/dataitem/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/dataitem/spec.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/dataitem/status.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/iceberg/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/iceberg/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/iceberg/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/iceberg/spec.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/iceberg/status.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/table/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/table/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/table/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/table/models.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/table/spec.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/table/status.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/dataitem/utils.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/function/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/function/_base/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/function/_base/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/function/_base/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/function/_base/spec.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/function/_base/status.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/function/crud.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/_base/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/_base/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/_base/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/_base/spec.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/_base/status.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/crud.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/huggingface/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/huggingface/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/huggingface/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/huggingface/spec.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/huggingface/status.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/mlflow/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/mlflow/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/mlflow/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/mlflow/models.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/mlflow/spec.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/mlflow/status.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/mlflow/utils.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/model/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/model/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/model/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/model/spec.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/model/status.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/sklearn/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/sklearn/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/sklearn/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/sklearn/spec.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/sklearn/status.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/model/utils.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/project/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/project/_base/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/project/_base/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/project/_base/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/project/_base/spec.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/project/_base/status.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/project/crud.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/project/utils.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/run/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/run/_base/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/run/_base/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/run/_base/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/run/_base/spec.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/run/_base/status.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/run/crud.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/secret/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/secret/_base/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/secret/_base/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/secret/_base/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/secret/_base/spec.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/secret/_base/status.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/secret/crud.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/task/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/task/_base/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/task/_base/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/task/_base/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/task/_base/models.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/task/_base/spec.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/task/_base/status.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/task/_base/utils.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/task/crud.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/workflow/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/workflow/_base/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/workflow/_base/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/workflow/_base/entity.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/workflow/_base/spec.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/workflow/_base/status.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/workflow/crud.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/factory/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/factory/api.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/factory/factory.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/factory/utils.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/readers/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/readers/_base/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/readers/_base/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/readers/_base/reader.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/readers/_commons/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/readers/_commons/enums.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/readers/api.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/readers/factory.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/readers/pandas/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/readers/pandas/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/readers/pandas/reader.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/runtimes/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/runtimes/_base.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/runtimes/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/runtimes/enums.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/stores/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/stores/_base/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/stores/api.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/stores/builder.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/stores/local/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/stores/remote/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/stores/s3/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/stores/sql/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/utils/__init__.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/utils/data_utils.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/utils/exceptions.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/utils/file_utils.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/utils/generic_utils.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/utils/git_utils.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/utils/io_utils.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/utils/logger.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/utils/uri_utils.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub.egg-info/SOURCES.txt +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub.egg-info/dependency_links.txt +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub.egg-info/requires.txt +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub.egg-info/top_level.txt +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/setup.cfg +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/test/local/CRUD/test_artifacts.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/test/local/CRUD/test_dataitems.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/test/local/CRUD/test_models.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/test/local/imports/test_imports.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/test/local/instances/test_validate.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/test/test_crud_functions.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/test/test_crud_runs.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/test/test_crud_tasks.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/test/testkfp.py +0 -0
- {digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/test/testkfp_pipeline.py +0 -0
|
@@ -168,7 +168,7 @@ class MaterialEntity(VersionedEntity):
|
|
|
168
168
|
paths = store.upload(source, self.spec.path)
|
|
169
169
|
|
|
170
170
|
# Update files info
|
|
171
|
-
files_info = store.get_file_info(paths)
|
|
171
|
+
files_info = store.get_file_info(self.spec.path, paths)
|
|
172
172
|
self._update_files_info(files_info)
|
|
173
173
|
|
|
174
174
|
##############################
|
|
@@ -736,6 +736,10 @@ class OperationsProcessor:
|
|
|
736
736
|
"""
|
|
737
737
|
if not identifier.startswith("store://"):
|
|
738
738
|
entity_id = identifier
|
|
739
|
+
else:
|
|
740
|
+
splt = identifier.split(":")
|
|
741
|
+
if len(splt) == 3:
|
|
742
|
+
identifier = f"{splt[0]}:{splt[1]}"
|
|
739
743
|
return self.read_context_entity(
|
|
740
744
|
identifier,
|
|
741
745
|
entity_type=entity_type,
|
|
@@ -52,13 +52,17 @@ class Store:
|
|
|
52
52
|
"""
|
|
53
53
|
|
|
54
54
|
@abstractmethod
|
|
55
|
-
def upload(self, src: str | list[str], dst: str
|
|
55
|
+
def upload(self, src: str | list[str], dst: str) -> list[tuple[str, str]]:
|
|
56
56
|
"""
|
|
57
57
|
Method to upload artifact to storage.
|
|
58
58
|
"""
|
|
59
59
|
|
|
60
60
|
@abstractmethod
|
|
61
|
-
def get_file_info(
|
|
61
|
+
def get_file_info(
|
|
62
|
+
self,
|
|
63
|
+
root: str,
|
|
64
|
+
paths: list[tuple[str, str]],
|
|
65
|
+
) -> list[dict]:
|
|
62
66
|
"""
|
|
63
67
|
Method to get file metadata.
|
|
64
68
|
"""
|
|
@@ -61,7 +61,7 @@ class LocalStore(Store):
|
|
|
61
61
|
"""
|
|
62
62
|
raise StoreError("Local store does not support download.")
|
|
63
63
|
|
|
64
|
-
def upload(self, src: str | list[str], dst: str
|
|
64
|
+
def upload(self, src: str | list[str], dst: str) -> list[tuple[str, str]]:
|
|
65
65
|
"""
|
|
66
66
|
Upload an artifact to storage.
|
|
67
67
|
|
|
@@ -72,7 +72,11 @@ class LocalStore(Store):
|
|
|
72
72
|
"""
|
|
73
73
|
raise StoreError("Local store does not support upload.")
|
|
74
74
|
|
|
75
|
-
def get_file_info(
|
|
75
|
+
def get_file_info(
|
|
76
|
+
self,
|
|
77
|
+
root: str,
|
|
78
|
+
paths: list[tuple[str, str]],
|
|
79
|
+
) -> list[dict]:
|
|
76
80
|
"""
|
|
77
81
|
Method to get file metadata.
|
|
78
82
|
|
|
@@ -69,7 +69,7 @@ class RemoteStore(Store):
|
|
|
69
69
|
|
|
70
70
|
return self._download_file(root, dst, overwrite)
|
|
71
71
|
|
|
72
|
-
def upload(self, src: str | list[str], dst: str
|
|
72
|
+
def upload(self, src: str | list[str], dst: str) -> list[tuple[str, str]]:
|
|
73
73
|
"""
|
|
74
74
|
Upload an artifact to storage.
|
|
75
75
|
|
|
@@ -80,7 +80,11 @@ class RemoteStore(Store):
|
|
|
80
80
|
"""
|
|
81
81
|
raise StoreError("Remote HTTP store does not support upload.")
|
|
82
82
|
|
|
83
|
-
def get_file_info(
|
|
83
|
+
def get_file_info(
|
|
84
|
+
self,
|
|
85
|
+
root: str,
|
|
86
|
+
paths: list[tuple[str, str]],
|
|
87
|
+
) -> list[dict]:
|
|
84
88
|
"""
|
|
85
89
|
Get file information from HTTP(s) storage.
|
|
86
90
|
|
|
@@ -13,6 +13,7 @@ from digitalhub.readers.api import get_reader_by_object
|
|
|
13
13
|
from digitalhub.stores._base.store import Store, StoreConfig
|
|
14
14
|
from digitalhub.utils.exceptions import StoreError
|
|
15
15
|
from digitalhub.utils.file_utils import get_file_info_from_s3, get_file_mime_type
|
|
16
|
+
from digitalhub.utils.s3_utils import get_bucket_name
|
|
16
17
|
|
|
17
18
|
# Type aliases
|
|
18
19
|
S3Client = Type["botocore.client.S3"]
|
|
@@ -76,7 +77,7 @@ class S3Store(Store):
|
|
|
76
77
|
str
|
|
77
78
|
Destination path of the downloaded artifact.
|
|
78
79
|
"""
|
|
79
|
-
client, bucket = self._check_factory()
|
|
80
|
+
client, bucket = self._check_factory(root)
|
|
80
81
|
|
|
81
82
|
# Build destination directory
|
|
82
83
|
if dst.suffix == "":
|
|
@@ -126,14 +127,18 @@ class S3Store(Store):
|
|
|
126
127
|
return str(Path(dst, trees[0]))
|
|
127
128
|
return str(dst)
|
|
128
129
|
|
|
129
|
-
def upload(
|
|
130
|
+
def upload(
|
|
131
|
+
self,
|
|
132
|
+
src: str | list[str],
|
|
133
|
+
dst: str,
|
|
134
|
+
) -> list[tuple[str, str]]:
|
|
130
135
|
"""
|
|
131
136
|
Upload an artifact to storage.
|
|
132
137
|
|
|
133
138
|
Parameters
|
|
134
139
|
----------
|
|
135
|
-
src : str
|
|
136
|
-
|
|
140
|
+
src : str | list[str]
|
|
141
|
+
Source(s).
|
|
137
142
|
dst : str
|
|
138
143
|
The destination of the artifact on storage.
|
|
139
144
|
|
|
@@ -143,18 +148,11 @@ class S3Store(Store):
|
|
|
143
148
|
Returns the list of destination and source paths of the uploaded artifacts.
|
|
144
149
|
"""
|
|
145
150
|
# Destination handling
|
|
151
|
+
key = self._get_key(dst)
|
|
146
152
|
|
|
147
|
-
#
|
|
148
|
-
|
|
149
|
-
if
|
|
150
|
-
raise StoreError(
|
|
151
|
-
"Destination must be provided. If source is a list of files or a directory, destination must be a partition, e.g. 's3://bucket/partition/' otherwise a destination key, e.g. 's3://bucket/key'"
|
|
152
|
-
)
|
|
153
|
-
else:
|
|
154
|
-
dst = self._get_key(dst)
|
|
155
|
-
|
|
156
|
-
# Source handling
|
|
157
|
-
if not isinstance(src, list):
|
|
153
|
+
# Source handling (files list, dir or single file)
|
|
154
|
+
src_is_list = isinstance(src, list)
|
|
155
|
+
if not src_is_list:
|
|
158
156
|
self._check_local_src(src)
|
|
159
157
|
src_is_dir = Path(src).is_dir()
|
|
160
158
|
else:
|
|
@@ -165,21 +163,31 @@ class S3Store(Store):
|
|
|
165
163
|
src = src[0]
|
|
166
164
|
|
|
167
165
|
# If source is a directory, destination must be a partition
|
|
168
|
-
if (src_is_dir or
|
|
169
|
-
raise StoreError(
|
|
166
|
+
if (src_is_dir or src_is_list) and not dst.endswith("/"):
|
|
167
|
+
raise StoreError(
|
|
168
|
+
"If source is a list of files or a directory, "
|
|
169
|
+
"destination must be a partition, e.g. 's3://bucket/partition/'"
|
|
170
|
+
)
|
|
171
|
+
|
|
172
|
+
# S3 client
|
|
173
|
+
client, bucket = self._check_factory(dst)
|
|
170
174
|
|
|
171
175
|
# Directory
|
|
172
176
|
if src_is_dir:
|
|
173
|
-
return self._upload_dir(src,
|
|
177
|
+
return self._upload_dir(src, key, client, bucket)
|
|
174
178
|
|
|
175
179
|
# List of files
|
|
176
|
-
elif
|
|
177
|
-
return self._upload_file_list(src,
|
|
180
|
+
elif src_is_list:
|
|
181
|
+
return self._upload_file_list(src, key, client, bucket)
|
|
178
182
|
|
|
179
183
|
# Single file
|
|
180
|
-
return self._upload_single_file(src,
|
|
184
|
+
return self._upload_single_file(src, key, client, bucket)
|
|
181
185
|
|
|
182
|
-
def upload_fileobject(
|
|
186
|
+
def upload_fileobject(
|
|
187
|
+
self,
|
|
188
|
+
src: BytesIO,
|
|
189
|
+
dst: str,
|
|
190
|
+
) -> str:
|
|
183
191
|
"""
|
|
184
192
|
Upload an BytesIO to S3 based storage.
|
|
185
193
|
|
|
@@ -188,18 +196,23 @@ class S3Store(Store):
|
|
|
188
196
|
src : BytesIO
|
|
189
197
|
The source object to be persisted.
|
|
190
198
|
dst : str
|
|
191
|
-
The destination
|
|
199
|
+
The destination path of the artifact.
|
|
192
200
|
|
|
193
201
|
Returns
|
|
194
202
|
-------
|
|
195
203
|
str
|
|
196
204
|
S3 key of the uploaded artifact.
|
|
197
205
|
"""
|
|
198
|
-
client, bucket = self._check_factory()
|
|
199
|
-
self.
|
|
200
|
-
|
|
206
|
+
client, bucket = self._check_factory(dst)
|
|
207
|
+
key = self._get_key(dst)
|
|
208
|
+
self._upload_fileobject(src, key, client, bucket)
|
|
209
|
+
return f"s3://{bucket}/{key}"
|
|
201
210
|
|
|
202
|
-
def get_file_info(
|
|
211
|
+
def get_file_info(
|
|
212
|
+
self,
|
|
213
|
+
root: str,
|
|
214
|
+
paths: list[tuple[str, str]],
|
|
215
|
+
) -> list[dict]:
|
|
203
216
|
"""
|
|
204
217
|
Method to get file metadata.
|
|
205
218
|
|
|
@@ -213,7 +226,7 @@ class S3Store(Store):
|
|
|
213
226
|
list[dict]
|
|
214
227
|
Returns files metadata.
|
|
215
228
|
"""
|
|
216
|
-
client, bucket = self._check_factory()
|
|
229
|
+
client, bucket = self._check_factory(root)
|
|
217
230
|
|
|
218
231
|
infos = []
|
|
219
232
|
for i in paths:
|
|
@@ -264,7 +277,13 @@ class S3Store(Store):
|
|
|
264
277
|
# Download file
|
|
265
278
|
client.download_file(bucket, key, dst_pth)
|
|
266
279
|
|
|
267
|
-
def _upload_dir(
|
|
280
|
+
def _upload_dir(
|
|
281
|
+
self,
|
|
282
|
+
src: str,
|
|
283
|
+
dst: str,
|
|
284
|
+
client: S3Client,
|
|
285
|
+
bucket: str,
|
|
286
|
+
) -> list[tuple[str, str]]:
|
|
268
287
|
"""
|
|
269
288
|
Upload directory to storage.
|
|
270
289
|
|
|
@@ -274,14 +293,16 @@ class S3Store(Store):
|
|
|
274
293
|
List of sources.
|
|
275
294
|
dst : str
|
|
276
295
|
The destination of the artifact on storage.
|
|
296
|
+
client : S3Client
|
|
297
|
+
The S3 client object.
|
|
298
|
+
bucket : str
|
|
299
|
+
The name of the S3 bucket.
|
|
277
300
|
|
|
278
301
|
Returns
|
|
279
302
|
-------
|
|
280
303
|
list[tuple[str, str]]
|
|
281
304
|
Returns the list of destination and source paths of the uploaded artifacts.
|
|
282
305
|
"""
|
|
283
|
-
client, bucket = self._check_factory()
|
|
284
|
-
|
|
285
306
|
# Get list of files
|
|
286
307
|
src_pth = Path(src)
|
|
287
308
|
files = [i for i in src_pth.rglob("*") if i.is_file()]
|
|
@@ -299,7 +320,13 @@ class S3Store(Store):
|
|
|
299
320
|
paths.append((k, str(f.relative_to(src_pth))))
|
|
300
321
|
return paths
|
|
301
322
|
|
|
302
|
-
def _upload_file_list(
|
|
323
|
+
def _upload_file_list(
|
|
324
|
+
self,
|
|
325
|
+
src: list[str],
|
|
326
|
+
dst: str,
|
|
327
|
+
client: S3Client,
|
|
328
|
+
bucket: str,
|
|
329
|
+
) -> list[tuple[str, str]]:
|
|
303
330
|
"""
|
|
304
331
|
Upload list of files to storage.
|
|
305
332
|
|
|
@@ -309,13 +336,16 @@ class S3Store(Store):
|
|
|
309
336
|
List of sources.
|
|
310
337
|
dst : str
|
|
311
338
|
The destination of the artifact on storage.
|
|
339
|
+
client : S3Client
|
|
340
|
+
The S3 client object.
|
|
341
|
+
bucket : str
|
|
342
|
+
The name of the S3 bucket.
|
|
312
343
|
|
|
313
344
|
Returns
|
|
314
345
|
-------
|
|
315
346
|
list[tuple[str, str]]
|
|
316
347
|
Returns the list of destination and source paths of the uploaded artifacts.
|
|
317
348
|
"""
|
|
318
|
-
client, bucket = self._check_factory()
|
|
319
349
|
files = src
|
|
320
350
|
keys = []
|
|
321
351
|
for i in files:
|
|
@@ -330,7 +360,13 @@ class S3Store(Store):
|
|
|
330
360
|
paths.append((k, Path(f).name))
|
|
331
361
|
return paths
|
|
332
362
|
|
|
333
|
-
def _upload_single_file(
|
|
363
|
+
def _upload_single_file(
|
|
364
|
+
self,
|
|
365
|
+
src: str,
|
|
366
|
+
dst: str,
|
|
367
|
+
client: S3Client,
|
|
368
|
+
bucket: str,
|
|
369
|
+
) -> str:
|
|
334
370
|
"""
|
|
335
371
|
Upload a single file to storage.
|
|
336
372
|
|
|
@@ -340,14 +376,16 @@ class S3Store(Store):
|
|
|
340
376
|
List of sources.
|
|
341
377
|
dst : str
|
|
342
378
|
The destination of the artifact on storage.
|
|
379
|
+
client : S3Client
|
|
380
|
+
The S3 client object.
|
|
381
|
+
bucket : str
|
|
382
|
+
The name of the S3 bucket.
|
|
343
383
|
|
|
344
384
|
Returns
|
|
345
385
|
-------
|
|
346
386
|
str
|
|
347
387
|
Returns the list of destination and source paths of the uploaded artifacts.
|
|
348
388
|
"""
|
|
349
|
-
client, bucket = self._check_factory()
|
|
350
|
-
|
|
351
389
|
if dst.endswith("/"):
|
|
352
390
|
dst = f"{dst.removeprefix('/')}{Path(src).name}"
|
|
353
391
|
|
|
@@ -357,7 +395,12 @@ class S3Store(Store):
|
|
|
357
395
|
return [(dst, name)]
|
|
358
396
|
|
|
359
397
|
@staticmethod
|
|
360
|
-
def _upload_file(
|
|
398
|
+
def _upload_file(
|
|
399
|
+
src: str,
|
|
400
|
+
key: str,
|
|
401
|
+
client: S3Client,
|
|
402
|
+
bucket: str,
|
|
403
|
+
) -> None:
|
|
361
404
|
"""
|
|
362
405
|
Upload a file to S3 based storage. The function checks if the
|
|
363
406
|
bucket is accessible.
|
|
@@ -384,7 +427,12 @@ class S3Store(Store):
|
|
|
384
427
|
client.upload_file(Filename=src, Bucket=bucket, Key=key, ExtraArgs=extra_args)
|
|
385
428
|
|
|
386
429
|
@staticmethod
|
|
387
|
-
def _upload_fileobject(
|
|
430
|
+
def _upload_fileobject(
|
|
431
|
+
fileobj: BytesIO,
|
|
432
|
+
key: str,
|
|
433
|
+
client: S3Client,
|
|
434
|
+
bucket: str,
|
|
435
|
+
) -> None:
|
|
388
436
|
"""
|
|
389
437
|
Upload a fileobject to S3 based storage. The function checks if the bucket is accessible.
|
|
390
438
|
|
|
@@ -409,7 +457,13 @@ class S3Store(Store):
|
|
|
409
457
|
# Datastore methods
|
|
410
458
|
##############################
|
|
411
459
|
|
|
412
|
-
def write_df(
|
|
460
|
+
def write_df(
|
|
461
|
+
self,
|
|
462
|
+
df: Any,
|
|
463
|
+
dst: str,
|
|
464
|
+
extension: str | None = None,
|
|
465
|
+
**kwargs,
|
|
466
|
+
) -> str:
|
|
413
467
|
"""
|
|
414
468
|
Write a dataframe to S3 based storage. Kwargs are passed to df.to_parquet().
|
|
415
469
|
|
|
@@ -419,6 +473,8 @@ class S3Store(Store):
|
|
|
419
473
|
The dataframe.
|
|
420
474
|
dst : str
|
|
421
475
|
The destination path on S3 based storage.
|
|
476
|
+
extension : str
|
|
477
|
+
The extension of the file.
|
|
422
478
|
**kwargs : dict
|
|
423
479
|
Keyword arguments.
|
|
424
480
|
|
|
@@ -430,15 +486,13 @@ class S3Store(Store):
|
|
|
430
486
|
fileobj = BytesIO()
|
|
431
487
|
reader = get_reader_by_object(df)
|
|
432
488
|
reader.write_df(df, fileobj, extension=extension, **kwargs)
|
|
433
|
-
|
|
434
|
-
key = self._get_key(dst)
|
|
435
|
-
return self.upload_fileobject(fileobj, key)
|
|
489
|
+
return self.upload_fileobject(fileobj, dst)
|
|
436
490
|
|
|
437
491
|
##############################
|
|
438
492
|
# Helper methods
|
|
439
493
|
##############################
|
|
440
494
|
|
|
441
|
-
def _get_bucket(self) -> str:
|
|
495
|
+
def _get_bucket(self, root: str) -> str:
|
|
442
496
|
"""
|
|
443
497
|
Get the name of the S3 bucket from the URI.
|
|
444
498
|
|
|
@@ -447,7 +501,7 @@ class S3Store(Store):
|
|
|
447
501
|
str
|
|
448
502
|
The name of the S3 bucket.
|
|
449
503
|
"""
|
|
450
|
-
return
|
|
504
|
+
return get_bucket_name(root)
|
|
451
505
|
|
|
452
506
|
def _get_client(self) -> S3Client:
|
|
453
507
|
"""
|
|
@@ -465,7 +519,7 @@ class S3Store(Store):
|
|
|
465
519
|
}
|
|
466
520
|
return boto3.client("s3", **cfg)
|
|
467
521
|
|
|
468
|
-
def _check_factory(self) -> tuple[S3Client, str]:
|
|
522
|
+
def _check_factory(self, root: str) -> tuple[S3Client, str]:
|
|
469
523
|
"""
|
|
470
524
|
Check if the S3 bucket is accessible by sending a head_bucket request.
|
|
471
525
|
|
|
@@ -475,7 +529,7 @@ class S3Store(Store):
|
|
|
475
529
|
A tuple containing the S3 client object and the name of the S3 bucket.
|
|
476
530
|
"""
|
|
477
531
|
client = self._get_client()
|
|
478
|
-
bucket = self._get_bucket()
|
|
532
|
+
bucket = self._get_bucket(root)
|
|
479
533
|
self._check_access_to_storage(client, bucket)
|
|
480
534
|
return client, bucket
|
|
481
535
|
|
|
@@ -99,7 +99,11 @@ class SqlStore(Store):
|
|
|
99
99
|
table = self._get_table_name(root)
|
|
100
100
|
return self._download_table(schema, table, str(dst))
|
|
101
101
|
|
|
102
|
-
def upload(
|
|
102
|
+
def upload(
|
|
103
|
+
self,
|
|
104
|
+
src: str | list[str],
|
|
105
|
+
dst: str,
|
|
106
|
+
) -> list[tuple[str, str]]:
|
|
103
107
|
"""
|
|
104
108
|
Upload an artifact to storage.
|
|
105
109
|
|
|
@@ -110,7 +114,11 @@ class SqlStore(Store):
|
|
|
110
114
|
"""
|
|
111
115
|
raise StoreError("SQL store does not support upload.")
|
|
112
116
|
|
|
113
|
-
def get_file_info(
|
|
117
|
+
def get_file_info(
|
|
118
|
+
self,
|
|
119
|
+
root: str,
|
|
120
|
+
paths: list[tuple[str, str]],
|
|
121
|
+
) -> list[dict]:
|
|
114
122
|
"""
|
|
115
123
|
Get file information from SQL based storage.
|
|
116
124
|
|
|
@@ -7,6 +7,23 @@ from urllib.parse import urlparse
|
|
|
7
7
|
from boto3 import client as boto3_client
|
|
8
8
|
|
|
9
9
|
|
|
10
|
+
def get_bucket_name(path: str) -> str:
|
|
11
|
+
"""
|
|
12
|
+
Get bucket name from path.
|
|
13
|
+
|
|
14
|
+
Parameters
|
|
15
|
+
----------
|
|
16
|
+
path : str
|
|
17
|
+
The source path to get the key from.
|
|
18
|
+
|
|
19
|
+
Returns
|
|
20
|
+
-------
|
|
21
|
+
str
|
|
22
|
+
The bucket name.
|
|
23
|
+
"""
|
|
24
|
+
return urlparse(path).netloc
|
|
25
|
+
|
|
26
|
+
|
|
10
27
|
def get_bucket_and_key(path: str) -> tuple[str, str]:
|
|
11
28
|
"""
|
|
12
29
|
Get bucket and key from path.
|
|
@@ -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.0b4"
|
|
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.0b4"
|
|
81
81
|
version_pattern = "MAJOR.MINOR.PATCH[PYTAGNUM]"
|
|
82
82
|
commit_message = "Bump version {old_version} -> {new_version}"
|
|
83
83
|
commit = false
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/entity/_constructors/__init__.py
RENAMED
|
File without changes
|
{digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/entity/_constructors/metadata.py
RENAMED
|
File without changes
|
{digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/entity/_constructors/name.py
RENAMED
|
File without changes
|
{digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/entity/_constructors/spec.py
RENAMED
|
File without changes
|
{digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/entity/_constructors/status.py
RENAMED
|
File without changes
|
{digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/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.0b3 → digitalhub-0.9.0b4}/digitalhub/entities/_base/runtime_entity/__init__.py
RENAMED
|
File without changes
|
{digitalhub-0.9.0b3 → digitalhub-0.9.0b4}/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
|