bluer-objects 6.164.1__tar.gz → 6.167.1__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 bluer-objects might be problematic. Click here for more details.
- {bluer_objects-6.164.1/bluer_objects.egg-info → bluer_objects-6.167.1}/PKG-INFO +2 -2
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/README.md +1 -1
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/__init__.py +1 -1
- bluer_objects-6.167.1/bluer_objects/mlflow/lock/__init__.py +1 -0
- bluer_objects-6.167.1/bluer_objects/mlflow/lock/__main__.py +58 -0
- bluer_objects-6.167.1/bluer_objects/mlflow/lock/functions.py +121 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1/bluer_objects.egg-info}/PKG-INFO +2 -2
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects.egg-info/SOURCES.txt +3 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/setup.py +1 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/LICENSE +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/MANIFEST.in +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/abcli.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/actions.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/aka.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/alias.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/bluer_objects.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/clone.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/create_test_asset.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/download.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/file.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/gif.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/host.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/ls.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/metadata/get.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/metadata/post.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/metadata.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/mlflow/browse.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/mlflow/cache.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/mlflow/deploy.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/mlflow/list_registered_models.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/mlflow/lock/lock.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/mlflow/lock/unlock.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/mlflow/lock.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/mlflow/log_artifacts.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/mlflow/log_run.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/mlflow/run.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/mlflow/tags/clone.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/mlflow/tags/get.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/mlflow/tags/search.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/mlflow/tags/set.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/mlflow/tags.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/mlflow/test.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/mlflow/transition.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/mlflow.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/object.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/select.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/storage/clear.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/storage/download_file.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/storage/exists.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/storage/list.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/storage/rm.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/storage/status.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/storage.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/tests/README.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/tests/clone.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/tests/create_test_asset.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/tests/gif.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/tests/help.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/tests/host.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/tests/ls.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/tests/metadata.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/tests/mlflow_cache.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/tests/mlflow_lock.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/tests/mlflow_logging.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/tests/mlflow_tags.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/tests/mlflow_test.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/tests/storage.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/tests/version.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/upload.sh +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/README/__init__.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/README/functions.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/README/items.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/__main__.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/config.env +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/env.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/file/__init__.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/file/__main__.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/file/classes.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/file/functions.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/file/load.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/file/save.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/graphics/__init__.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/graphics/__main__.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/graphics/frame.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/graphics/gif.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/graphics/screen.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/graphics/signature.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/graphics/text.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/help/__init__.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/help/__main__.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/help/clone.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/help/create_test_asset.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/help/download.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/help/functions.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/help/gif.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/help/host.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/help/ls.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/help/metadata.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/help/mlflow/__init__.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/help/mlflow/cache.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/help/mlflow/lock.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/help/mlflow/tags.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/help/upload.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/host/__init__.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/host/__main__.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/host/functions.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/logger/__init__.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/logger/matrix.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/markdown.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/metadata/__init__.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/metadata/__main__.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/metadata/enums.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/metadata/get.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/metadata/post.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/mlflow/__init__.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/mlflow/__main__.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/mlflow/cache.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/mlflow/logging.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/mlflow/models.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/mlflow/objects.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/mlflow/runs.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/mlflow/tags.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/mlflow/testing.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/objects.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/path.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/sample.env +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/storage/WebDAV.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/storage/WebDAVrequest.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/storage/WebDAVzip.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/storage/__init__.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/storage/__main__.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/storage/base.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/storage/s3.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/testing/__init__.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/testing/__main__.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/testing/functions.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/__init__.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_README.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_env.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_file_download.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_file_load_save.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_file_load_save_text.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_fullname.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_graphics.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_graphics_frame.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_graphics_gif.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_graphics_screen.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_graphics_signature.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_graphics_text.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_logger.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_logger_matrix.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_markdown.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_metadata.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_mlflow.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_mlflow_lock.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_objects.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_path.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_storage.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_storage_base.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_storage_s3.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_storage_webdav_request.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_storage_webdav_zip.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_testing.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_version.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/urls.py +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects.egg-info/dependency_links.txt +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects.egg-info/requires.txt +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects.egg-info/top_level.txt +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/pyproject.toml +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/requirements.txt +0 -0
- {bluer_objects-6.164.1 → bluer_objects-6.167.1}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bluer_objects
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.167.1
|
|
4
4
|
Summary: 🌀 Object management in Bash.
|
|
5
5
|
Home-page: https://github.com/kamangir/bluer-objects
|
|
6
6
|
Author: Arash Abadpour (Kamangir)
|
|
@@ -64,6 +64,6 @@ pip install bluer-objects
|
|
|
64
64
|
|
|
65
65
|
[](https://github.com/kamangir/bluer-objects/actions/workflows/pylint.yml) [](https://github.com/kamangir/bluer-objects/actions/workflows/pytest.yml) [](https://github.com/kamangir/bluer-objects/actions/workflows/bashtest.yml) [](https://pypi.org/project/bluer-objects/) [](https://pypistats.org/packages/bluer-objects)
|
|
66
66
|
|
|
67
|
-
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.
|
|
67
|
+
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.167.1`](https://github.com/kamangir/bluer-objects).
|
|
68
68
|
|
|
69
69
|
built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
|
|
@@ -30,4 +30,4 @@ pip install bluer-objects
|
|
|
30
30
|
|
|
31
31
|
[](https://github.com/kamangir/bluer-objects/actions/workflows/pylint.yml) [](https://github.com/kamangir/bluer-objects/actions/workflows/pytest.yml) [](https://github.com/kamangir/bluer-objects/actions/workflows/bashtest.yml) [](https://pypi.org/project/bluer-objects/) [](https://pypistats.org/packages/bluer-objects)
|
|
32
32
|
|
|
33
|
-
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.
|
|
33
|
+
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.167.1`](https://github.com/kamangir/bluer-objects).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
|
|
3
|
+
from blueness import module
|
|
4
|
+
from blueness.argparse.generic import sys_exit
|
|
5
|
+
|
|
6
|
+
from bluer_objects import NAME
|
|
7
|
+
from bluer_objects.mlflow.lock.functions import lock, unlock
|
|
8
|
+
from bluer_objects.logger import logger
|
|
9
|
+
|
|
10
|
+
NAME = module.name(__file__, NAME)
|
|
11
|
+
|
|
12
|
+
parser = argparse.ArgumentParser(NAME)
|
|
13
|
+
parser.add_argument(
|
|
14
|
+
"task",
|
|
15
|
+
type=str,
|
|
16
|
+
help="lock | unlock",
|
|
17
|
+
)
|
|
18
|
+
parser.add_argument(
|
|
19
|
+
"--object_name",
|
|
20
|
+
type=str,
|
|
21
|
+
)
|
|
22
|
+
parser.add_argument(
|
|
23
|
+
"--lock",
|
|
24
|
+
type=str,
|
|
25
|
+
default="lock",
|
|
26
|
+
)
|
|
27
|
+
parser.add_argument(
|
|
28
|
+
"--timeout",
|
|
29
|
+
type=int,
|
|
30
|
+
default=-1,
|
|
31
|
+
help="in seconds",
|
|
32
|
+
)
|
|
33
|
+
parser.add_argument(
|
|
34
|
+
"--verbose",
|
|
35
|
+
type=int,
|
|
36
|
+
default=1,
|
|
37
|
+
help="0 | 1",
|
|
38
|
+
)
|
|
39
|
+
args = parser.parse_args()
|
|
40
|
+
|
|
41
|
+
success = False
|
|
42
|
+
if args.task == "lock":
|
|
43
|
+
success = lock(
|
|
44
|
+
object_name=args.object_name,
|
|
45
|
+
lock_name=args.lock,
|
|
46
|
+
timeout=args.timeout,
|
|
47
|
+
verbose=args.verbose == 1,
|
|
48
|
+
)
|
|
49
|
+
elif args.task == "unlock":
|
|
50
|
+
success = unlock(
|
|
51
|
+
object_name=args.object_name,
|
|
52
|
+
lock_name=args.lock,
|
|
53
|
+
verbose=args.verbose == 1,
|
|
54
|
+
)
|
|
55
|
+
else:
|
|
56
|
+
success = None
|
|
57
|
+
|
|
58
|
+
sys_exit(logger, NAME, args.task, success)
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import time
|
|
2
|
+
|
|
3
|
+
from blueness import module
|
|
4
|
+
from bluer_options import string
|
|
5
|
+
|
|
6
|
+
from bluer_objects import NAME, env
|
|
7
|
+
from bluer_objects.mlflow.tags import get_tags, set_tags
|
|
8
|
+
from bluer_objects.logger import logger
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
NAME = module.name(__file__, NAME)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def lock(
|
|
15
|
+
object_name: str,
|
|
16
|
+
lock_name: str = "lock",
|
|
17
|
+
timeout: int = -1,
|
|
18
|
+
verbose: bool = True,
|
|
19
|
+
) -> bool:
|
|
20
|
+
logger.info(
|
|
21
|
+
"{}.lock: {}.{}{}".format(
|
|
22
|
+
NAME,
|
|
23
|
+
object_name,
|
|
24
|
+
lock_name,
|
|
25
|
+
"" if timeout == -1 else " @ {}".format(string.pretty_duration(timeout)),
|
|
26
|
+
)
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
start_time = time.time()
|
|
30
|
+
while True:
|
|
31
|
+
if timeout > 0 and time.time() - start_time > timeout:
|
|
32
|
+
if verbose:
|
|
33
|
+
logger.warning(
|
|
34
|
+
"{}.lock: {}.{} timeout.".format(
|
|
35
|
+
NAME,
|
|
36
|
+
object_name,
|
|
37
|
+
lock_name,
|
|
38
|
+
)
|
|
39
|
+
)
|
|
40
|
+
return False
|
|
41
|
+
|
|
42
|
+
success, list_of_tags = get_tags(object_name=object_name)
|
|
43
|
+
if not success:
|
|
44
|
+
return False
|
|
45
|
+
|
|
46
|
+
lock_value = list_of_tags.get(lock_name, "")
|
|
47
|
+
if lock_value:
|
|
48
|
+
if verbose:
|
|
49
|
+
logger.warning(
|
|
50
|
+
"{}.lock: {}.{} is locked by {}.".format(
|
|
51
|
+
NAME,
|
|
52
|
+
object_name,
|
|
53
|
+
lock_name,
|
|
54
|
+
lock_value,
|
|
55
|
+
)
|
|
56
|
+
)
|
|
57
|
+
time.sleep(env.MLFLOW_LOCK_WAIT_FOR_CLEARANCE)
|
|
58
|
+
continue
|
|
59
|
+
|
|
60
|
+
lock_value = string.random()
|
|
61
|
+
if not set_tags(
|
|
62
|
+
object_name=object_name,
|
|
63
|
+
tags={lock_name: lock_value},
|
|
64
|
+
log=verbose,
|
|
65
|
+
icon="🔒",
|
|
66
|
+
):
|
|
67
|
+
return False
|
|
68
|
+
|
|
69
|
+
time.sleep(env.MLFLOW_LOCK_WAIT_FOR_EXCLUSIVITY)
|
|
70
|
+
|
|
71
|
+
success, list_of_tags = get_tags(object_name=object_name)
|
|
72
|
+
if not success:
|
|
73
|
+
return False
|
|
74
|
+
|
|
75
|
+
lock_value_read = list_of_tags.get(lock_name, "")
|
|
76
|
+
if lock_value_read != lock_value:
|
|
77
|
+
if verbose:
|
|
78
|
+
logger.warning(
|
|
79
|
+
"{}.lock: {}.{} is relocked by {} != {}.".format(
|
|
80
|
+
NAME,
|
|
81
|
+
object_name,
|
|
82
|
+
lock_name,
|
|
83
|
+
lock_value_read,
|
|
84
|
+
lock_value,
|
|
85
|
+
)
|
|
86
|
+
)
|
|
87
|
+
time.sleep(env.MLFLOW_LOCK_WAIT_FOR_CLEARANCE)
|
|
88
|
+
continue
|
|
89
|
+
|
|
90
|
+
break
|
|
91
|
+
|
|
92
|
+
logger.info(
|
|
93
|
+
"{}.lock: {}.{} is locked by {}.".format(
|
|
94
|
+
NAME,
|
|
95
|
+
object_name,
|
|
96
|
+
lock_name,
|
|
97
|
+
lock_value,
|
|
98
|
+
)
|
|
99
|
+
)
|
|
100
|
+
return True
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def unlock(
|
|
104
|
+
object_name: str,
|
|
105
|
+
lock_name: str = "lock",
|
|
106
|
+
verbose: bool = True,
|
|
107
|
+
) -> bool:
|
|
108
|
+
logger.info(
|
|
109
|
+
"{}.unlock: {}.{}".format(
|
|
110
|
+
NAME,
|
|
111
|
+
object_name,
|
|
112
|
+
lock_name,
|
|
113
|
+
)
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
return set_tags(
|
|
117
|
+
object_name=object_name,
|
|
118
|
+
tags={lock_name: ""},
|
|
119
|
+
log=verbose,
|
|
120
|
+
icon="🔒",
|
|
121
|
+
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bluer_objects
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.167.1
|
|
4
4
|
Summary: 🌀 Object management in Bash.
|
|
5
5
|
Home-page: https://github.com/kamangir/bluer-objects
|
|
6
6
|
Author: Arash Abadpour (Kamangir)
|
|
@@ -64,6 +64,6 @@ pip install bluer-objects
|
|
|
64
64
|
|
|
65
65
|
[](https://github.com/kamangir/bluer-objects/actions/workflows/pylint.yml) [](https://github.com/kamangir/bluer-objects/actions/workflows/pytest.yml) [](https://github.com/kamangir/bluer-objects/actions/workflows/bashtest.yml) [](https://pypi.org/project/bluer-objects/) [](https://pypistats.org/packages/bluer-objects)
|
|
66
66
|
|
|
67
|
-
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.
|
|
67
|
+
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.167.1`](https://github.com/kamangir/bluer-objects).
|
|
68
68
|
|
|
69
69
|
built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
|
|
@@ -126,6 +126,9 @@ bluer_objects/mlflow/objects.py
|
|
|
126
126
|
bluer_objects/mlflow/runs.py
|
|
127
127
|
bluer_objects/mlflow/tags.py
|
|
128
128
|
bluer_objects/mlflow/testing.py
|
|
129
|
+
bluer_objects/mlflow/lock/__init__.py
|
|
130
|
+
bluer_objects/mlflow/lock/__main__.py
|
|
131
|
+
bluer_objects/mlflow/lock/functions.py
|
|
129
132
|
bluer_objects/storage/WebDAV.py
|
|
130
133
|
bluer_objects/storage/WebDAVrequest.py
|
|
131
134
|
bluer_objects/storage/WebDAVzip.py
|
|
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
|
{bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/mlflow/log_artifacts.sh
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
|
{bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/storage/download_file.sh
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
|
{bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/tests/create_test_asset.sh
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
|
{bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/.abcli/tests/mlflow_logging.sh
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_file_load_save_text.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_graphics_signature.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
|
{bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_storage_webdav_request.py
RENAMED
|
File without changes
|
{bluer_objects-6.164.1 → bluer_objects-6.167.1}/bluer_objects/tests/test_storage_webdav_zip.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
|