bluer-objects 6.155.1__tar.gz → 6.164.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.155.1/bluer_objects.egg-info → bluer_objects-6.164.1}/PKG-INFO +3 -3
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/README.md +2 -2
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/alias.sh +2 -0
- bluer_objects-6.164.1/bluer_objects/.abcli/mlflow/lock/lock.sh +11 -0
- bluer_objects-6.164.1/bluer_objects/.abcli/mlflow/lock/unlock.sh +12 -0
- bluer_objects-6.164.1/bluer_objects/.abcli/mlflow/lock.sh +15 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/tests/help.sh +4 -0
- bluer_objects-6.164.1/bluer_objects/.abcli/tests/mlflow_lock.sh +30 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/README/__init__.py +2 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/__init__.py +1 -1
- bluer_objects-6.164.1/bluer_objects/config.env +8 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/env.py +3 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/help/mlflow/__init__.py +2 -0
- bluer_objects-6.164.1/bluer_objects/help/mlflow/lock.py +52 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_env.py +6 -0
- bluer_objects-6.164.1/bluer_objects/tests/test_mlflow_lock.py +26 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1/bluer_objects.egg-info}/PKG-INFO +3 -3
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects.egg-info/SOURCES.txt +6 -0
- bluer_objects-6.155.1/bluer_objects/config.env +0 -5
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/LICENSE +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/MANIFEST.in +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/abcli.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/actions.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/aka.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/bluer_objects.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/clone.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/create_test_asset.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/download.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/file.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/gif.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/host.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/ls.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/metadata/get.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/metadata/post.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/metadata.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/mlflow/browse.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/mlflow/cache.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/mlflow/deploy.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/mlflow/list_registered_models.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/mlflow/log_artifacts.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/mlflow/log_run.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/mlflow/run.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/mlflow/tags/clone.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/mlflow/tags/get.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/mlflow/tags/search.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/mlflow/tags/set.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/mlflow/tags.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/mlflow/test.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/mlflow/transition.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/mlflow.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/object.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/select.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/storage/clear.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/storage/download_file.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/storage/exists.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/storage/list.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/storage/rm.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/storage/status.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/storage.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/tests/README.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/tests/clone.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/tests/create_test_asset.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/tests/gif.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/tests/host.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/tests/ls.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/tests/metadata.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/tests/mlflow_cache.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/tests/mlflow_logging.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/tests/mlflow_tags.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/tests/mlflow_test.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/tests/storage.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/tests/version.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/.abcli/upload.sh +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/README/functions.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/README/items.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/__main__.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/file/__init__.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/file/__main__.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/file/classes.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/file/functions.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/file/load.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/file/save.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/graphics/__init__.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/graphics/__main__.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/graphics/frame.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/graphics/gif.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/graphics/screen.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/graphics/signature.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/graphics/text.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/help/__init__.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/help/__main__.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/help/clone.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/help/create_test_asset.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/help/download.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/help/functions.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/help/gif.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/help/host.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/help/ls.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/help/metadata.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/help/mlflow/cache.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/help/mlflow/tags.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/help/upload.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/host/__init__.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/host/__main__.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/host/functions.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/logger/__init__.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/logger/matrix.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/markdown.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/metadata/__init__.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/metadata/__main__.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/metadata/enums.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/metadata/get.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/metadata/post.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/mlflow/__init__.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/mlflow/__main__.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/mlflow/cache.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/mlflow/logging.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/mlflow/models.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/mlflow/objects.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/mlflow/runs.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/mlflow/tags.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/mlflow/testing.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/objects.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/path.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/sample.env +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/storage/WebDAV.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/storage/WebDAVrequest.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/storage/WebDAVzip.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/storage/__init__.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/storage/__main__.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/storage/base.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/storage/s3.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/testing/__init__.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/testing/__main__.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/testing/functions.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/__init__.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_README.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_file_download.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_file_load_save.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_file_load_save_text.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_fullname.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_graphics.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_graphics_frame.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_graphics_gif.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_graphics_screen.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_graphics_signature.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_graphics_text.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_logger.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_logger_matrix.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_markdown.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_metadata.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_mlflow.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_objects.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_path.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_storage.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_storage_base.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_storage_s3.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_storage_webdav_request.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_storage_webdav_zip.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_testing.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_version.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/urls.py +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects.egg-info/dependency_links.txt +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects.egg-info/requires.txt +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects.egg-info/top_level.txt +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/pyproject.toml +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/requirements.txt +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/setup.cfg +0 -0
- {bluer_objects-6.155.1 → bluer_objects-6.164.1}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bluer_objects
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.164.1
|
|
4
4
|
Summary: 🌀 Object management in Bash.
|
|
5
5
|
Home-page: https://github.com/kamangir/bluer-objects
|
|
6
6
|
Author: Arash Abadpour (Kamangir)
|
|
@@ -36,7 +36,7 @@ Dynamic: summary
|
|
|
36
36
|
|
|
37
37
|
🌀 `bluer-objects` are the inputs and outputs of [AI algo](https://github.com/kamangir/giza). They are maintained in cloud storage (supports [WebDav](https://pypi.org/project/webdavclient3/)) and their metadata is tracked by [MLflow](https://mlflow.org/). Examples are the Sentinel-2 [datacube](https://github.com/kamangir/blue-geo/tree/main/blue_geo/datacube) `datacube-EarthSearch-sentinel_2_l1c-S2A_10UDC_20240731_0_L1C` and 🌐 [`@geo watch` outputs](https://github.com/kamangir/blue-geo/tree/main/blue_geo/watch).
|
|
38
38
|
|
|
39
|
-
Also home to 🌀 [bluer README](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/README/).
|
|
39
|
+
Also home to 🌀 [bluer README](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/README/), and the 🔒 [`Lock`](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/mlflow/lock/).
|
|
40
40
|
|
|
41
41
|
# installation
|
|
42
42
|
|
|
@@ -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.164.1`](https://github.com/kamangir/bluer-objects).
|
|
68
68
|
|
|
69
69
|
built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
🌀 `bluer-objects` are the inputs and outputs of [AI algo](https://github.com/kamangir/giza). They are maintained in cloud storage (supports [WebDav](https://pypi.org/project/webdavclient3/)) and their metadata is tracked by [MLflow](https://mlflow.org/). Examples are the Sentinel-2 [datacube](https://github.com/kamangir/blue-geo/tree/main/blue_geo/datacube) `datacube-EarthSearch-sentinel_2_l1c-S2A_10UDC_20240731_0_L1C` and 🌐 [`@geo watch` outputs](https://github.com/kamangir/blue-geo/tree/main/blue_geo/watch).
|
|
4
4
|
|
|
5
|
-
Also home to 🌀 [bluer README](./bluer_objects/README/).
|
|
5
|
+
Also home to 🌀 [bluer README](./bluer_objects/README/), and the 🔒 [`Lock`](./bluer_objects/mlflow/lock/).
|
|
6
6
|
|
|
7
7
|
# installation
|
|
8
8
|
|
|
@@ -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.164.1`](https://github.com/kamangir/bluer-objects).
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#! /usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
function bluer_objects_mlflow_lock_unlock() {
|
|
4
|
+
local object_name=$(bluer_ai_clarify_object $1 .)
|
|
5
|
+
|
|
6
|
+
bluer_ai_eval dryrun=$do_dryrun \
|
|
7
|
+
python3 -m bluer_objects.mlflow.lock \
|
|
8
|
+
unlock \
|
|
9
|
+
--object_name $object_name \
|
|
10
|
+
"${@:2}"
|
|
11
|
+
|
|
12
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#! /usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
function bluer_objects_mlflow_lock() {
|
|
4
|
+
local task=$1
|
|
5
|
+
|
|
6
|
+
local function_name=bluer_objects_mlflow_lock_$task
|
|
7
|
+
if [[ $(type -t $function_name) == "function" ]]; then
|
|
8
|
+
$function_name "${@:2}"
|
|
9
|
+
return
|
|
10
|
+
fi
|
|
11
|
+
|
|
12
|
+
python3 -m bluer_objects.mlflow.lock "$@"
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
bluer_ai_source_caller_suffix_path /lock
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#! /usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
function test_bluer_objects_mlflow_lock() {
|
|
4
|
+
local options=$1
|
|
5
|
+
|
|
6
|
+
local object_name="test-object-$(bluer_ai_string_timestamp_short)"
|
|
7
|
+
local lock_name="lock-$(bluer_ai_string_random)"
|
|
8
|
+
|
|
9
|
+
bluer_ai_eval ,$options \
|
|
10
|
+
bluer_objects_mlflow_lock \
|
|
11
|
+
lock \
|
|
12
|
+
$object_name \
|
|
13
|
+
--lock $lock_name \
|
|
14
|
+
--timeout 10
|
|
15
|
+
[[ $? -ne 0 ]] && return 1
|
|
16
|
+
|
|
17
|
+
bluer_ai_eval ,$options \
|
|
18
|
+
bluer_objects_mlflow_lock \
|
|
19
|
+
lock \
|
|
20
|
+
$object_name \
|
|
21
|
+
--lock $lock_name \
|
|
22
|
+
--timeout 10
|
|
23
|
+
[[ $? -eq 0 ]] && return 1
|
|
24
|
+
|
|
25
|
+
bluer_ai_eval ,$options \
|
|
26
|
+
bluer_objects_mlflow_lock \
|
|
27
|
+
unlock \
|
|
28
|
+
$object_name \
|
|
29
|
+
--lock $lock_name
|
|
30
|
+
}
|
|
@@ -54,6 +54,9 @@ else:
|
|
|
54
54
|
os.environ["MLFLOW_TRACKING_URI"] = MLFLOW_TRACKING_URI
|
|
55
55
|
MLFLOW_LOG_ARTIFACTS = "arvan" not in MLFLOW_DEPLOYMENT
|
|
56
56
|
|
|
57
|
+
MLFLOW_LOCK_WAIT_FOR_CLEARANCE = get_env("MLFLOW_LOCK_WAIT_FOR_CLEARANCE", 3)
|
|
58
|
+
MLFLOW_LOCK_WAIT_FOR_EXCLUSIVITY = get_env("MLFLOW_LOCK_WAIT_FOR_EXCLUSIVITY", 1)
|
|
59
|
+
|
|
57
60
|
WEBDAV_HOSTNAME = get_env("WEBDAV_HOSTNAME")
|
|
58
61
|
WEBDAV_LOGIN = get_env("WEBDAV_LOGIN")
|
|
59
62
|
WEBDAV_PASSWORD = get_env("WEBDAV_PASSWORD")
|
|
@@ -3,6 +3,7 @@ from typing import List
|
|
|
3
3
|
from bluer_options.terminal import show_usage, xtra
|
|
4
4
|
|
|
5
5
|
from bluer_objects.help.mlflow.cache import help_functions as help_cache
|
|
6
|
+
from bluer_objects.help.mlflow.lock import help_functions as help_lock
|
|
6
7
|
from bluer_objects.help.mlflow.tags import help_functions as help_tags
|
|
7
8
|
from bluer_ai import env
|
|
8
9
|
|
|
@@ -202,6 +203,7 @@ help_functions = {
|
|
|
202
203
|
"get_id": help_get_id,
|
|
203
204
|
"get_run_id": help_get_run_id,
|
|
204
205
|
"list_registered_models": help_list_registered_models,
|
|
206
|
+
"lock": help_lock,
|
|
205
207
|
"log_artifacts": help_log_artifacts,
|
|
206
208
|
"log_run": help_log_run,
|
|
207
209
|
"rm": help_rm,
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
from typing import List
|
|
2
|
+
|
|
3
|
+
from bluer_options.terminal import show_usage, xtra
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def help_lock(
|
|
7
|
+
tokens: List[str],
|
|
8
|
+
mono: bool,
|
|
9
|
+
) -> str:
|
|
10
|
+
args = [
|
|
11
|
+
"[--lock <lock-name>]",
|
|
12
|
+
"[--timeout <10>]",
|
|
13
|
+
"[--verbose 0]",
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
return show_usage(
|
|
17
|
+
[
|
|
18
|
+
"@lock",
|
|
19
|
+
"lock",
|
|
20
|
+
"[.|<object-name>]",
|
|
21
|
+
]
|
|
22
|
+
+ args,
|
|
23
|
+
"lock <object-name>.",
|
|
24
|
+
mono=mono,
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def help_unlock(
|
|
29
|
+
tokens: List[str],
|
|
30
|
+
mono: bool,
|
|
31
|
+
) -> str:
|
|
32
|
+
args = [
|
|
33
|
+
"[--lock <lock-name>]",
|
|
34
|
+
"[--verbose 0]",
|
|
35
|
+
]
|
|
36
|
+
|
|
37
|
+
return show_usage(
|
|
38
|
+
[
|
|
39
|
+
"@lock",
|
|
40
|
+
"unlock",
|
|
41
|
+
"[.|<object-name>]",
|
|
42
|
+
]
|
|
43
|
+
+ args,
|
|
44
|
+
"unlock <object-name>.",
|
|
45
|
+
mono=mono,
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
help_functions = {
|
|
50
|
+
"lock": help_lock,
|
|
51
|
+
"unlock": help_unlock,
|
|
52
|
+
}
|
|
@@ -31,6 +31,12 @@ def test_bluer_objects_env():
|
|
|
31
31
|
|
|
32
32
|
assert env.MLFLOW_DEPLOYMENT
|
|
33
33
|
|
|
34
|
+
assert isinstance(env.MLFLOW_LOCK_WAIT_FOR_CLEARANCE, int)
|
|
35
|
+
assert env.MLFLOW_LOCK_WAIT_FOR_CLEARANCE > 0
|
|
36
|
+
|
|
37
|
+
assert isinstance(env.MLFLOW_LOCK_WAIT_FOR_EXCLUSIVITY, int)
|
|
38
|
+
assert env.MLFLOW_LOCK_WAIT_FOR_EXCLUSIVITY > 0
|
|
39
|
+
|
|
34
40
|
assert env.WEBDAV_HOSTNAME
|
|
35
41
|
assert env.WEBDAV_LOGIN
|
|
36
42
|
assert env.WEBDAV_PASSWORD
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
from bluer_options import string
|
|
2
|
+
|
|
3
|
+
from bluer_objects import objects
|
|
4
|
+
from bluer_objects.mlflow.lock.functions import lock, unlock
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def test_mlflow_lock():
|
|
8
|
+
object_name = objects.unique_object("test_mlflow_lock")
|
|
9
|
+
lock_name = "lock-{}".format(string.random())
|
|
10
|
+
|
|
11
|
+
assert lock(
|
|
12
|
+
object_name=object_name,
|
|
13
|
+
lock_name=lock_name,
|
|
14
|
+
timeout=10,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
assert not lock(
|
|
18
|
+
object_name=object_name,
|
|
19
|
+
lock_name=lock_name,
|
|
20
|
+
timeout=10,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
assert unlock(
|
|
24
|
+
object_name=object_name,
|
|
25
|
+
lock_name=lock_name,
|
|
26
|
+
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bluer_objects
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.164.1
|
|
4
4
|
Summary: 🌀 Object management in Bash.
|
|
5
5
|
Home-page: https://github.com/kamangir/bluer-objects
|
|
6
6
|
Author: Arash Abadpour (Kamangir)
|
|
@@ -36,7 +36,7 @@ Dynamic: summary
|
|
|
36
36
|
|
|
37
37
|
🌀 `bluer-objects` are the inputs and outputs of [AI algo](https://github.com/kamangir/giza). They are maintained in cloud storage (supports [WebDav](https://pypi.org/project/webdavclient3/)) and their metadata is tracked by [MLflow](https://mlflow.org/). Examples are the Sentinel-2 [datacube](https://github.com/kamangir/blue-geo/tree/main/blue_geo/datacube) `datacube-EarthSearch-sentinel_2_l1c-S2A_10UDC_20240731_0_L1C` and 🌐 [`@geo watch` outputs](https://github.com/kamangir/blue-geo/tree/main/blue_geo/watch).
|
|
38
38
|
|
|
39
|
-
Also home to 🌀 [bluer README](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/README/).
|
|
39
|
+
Also home to 🌀 [bluer README](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/README/), and the 🔒 [`Lock`](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/mlflow/lock/).
|
|
40
40
|
|
|
41
41
|
# installation
|
|
42
42
|
|
|
@@ -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.164.1`](https://github.com/kamangir/bluer-objects).
|
|
68
68
|
|
|
69
69
|
built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
|
|
@@ -42,12 +42,15 @@ bluer_objects/.abcli/mlflow/browse.sh
|
|
|
42
42
|
bluer_objects/.abcli/mlflow/cache.sh
|
|
43
43
|
bluer_objects/.abcli/mlflow/deploy.sh
|
|
44
44
|
bluer_objects/.abcli/mlflow/list_registered_models.sh
|
|
45
|
+
bluer_objects/.abcli/mlflow/lock.sh
|
|
45
46
|
bluer_objects/.abcli/mlflow/log_artifacts.sh
|
|
46
47
|
bluer_objects/.abcli/mlflow/log_run.sh
|
|
47
48
|
bluer_objects/.abcli/mlflow/run.sh
|
|
48
49
|
bluer_objects/.abcli/mlflow/tags.sh
|
|
49
50
|
bluer_objects/.abcli/mlflow/test.sh
|
|
50
51
|
bluer_objects/.abcli/mlflow/transition.sh
|
|
52
|
+
bluer_objects/.abcli/mlflow/lock/lock.sh
|
|
53
|
+
bluer_objects/.abcli/mlflow/lock/unlock.sh
|
|
51
54
|
bluer_objects/.abcli/mlflow/tags/clone.sh
|
|
52
55
|
bluer_objects/.abcli/mlflow/tags/get.sh
|
|
53
56
|
bluer_objects/.abcli/mlflow/tags/search.sh
|
|
@@ -67,6 +70,7 @@ bluer_objects/.abcli/tests/host.sh
|
|
|
67
70
|
bluer_objects/.abcli/tests/ls.sh
|
|
68
71
|
bluer_objects/.abcli/tests/metadata.sh
|
|
69
72
|
bluer_objects/.abcli/tests/mlflow_cache.sh
|
|
73
|
+
bluer_objects/.abcli/tests/mlflow_lock.sh
|
|
70
74
|
bluer_objects/.abcli/tests/mlflow_logging.sh
|
|
71
75
|
bluer_objects/.abcli/tests/mlflow_tags.sh
|
|
72
76
|
bluer_objects/.abcli/tests/mlflow_test.sh
|
|
@@ -101,6 +105,7 @@ bluer_objects/help/metadata.py
|
|
|
101
105
|
bluer_objects/help/upload.py
|
|
102
106
|
bluer_objects/help/mlflow/__init__.py
|
|
103
107
|
bluer_objects/help/mlflow/cache.py
|
|
108
|
+
bluer_objects/help/mlflow/lock.py
|
|
104
109
|
bluer_objects/help/mlflow/tags.py
|
|
105
110
|
bluer_objects/host/__init__.py
|
|
106
111
|
bluer_objects/host/__main__.py
|
|
@@ -149,6 +154,7 @@ bluer_objects/tests/test_logger_matrix.py
|
|
|
149
154
|
bluer_objects/tests/test_markdown.py
|
|
150
155
|
bluer_objects/tests/test_metadata.py
|
|
151
156
|
bluer_objects/tests/test_mlflow.py
|
|
157
|
+
bluer_objects/tests/test_mlflow_lock.py
|
|
152
158
|
bluer_objects/tests/test_objects.py
|
|
153
159
|
bluer_objects/tests/test_path.py
|
|
154
160
|
bluer_objects/tests/test_storage.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
|
{bluer_objects-6.155.1 → bluer_objects-6.164.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.155.1 → bluer_objects-6.164.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.155.1 → bluer_objects-6.164.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
|
{bluer_objects-6.155.1 → bluer_objects-6.164.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
|
{bluer_objects-6.155.1 → bluer_objects-6.164.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.155.1 → bluer_objects-6.164.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
|
{bluer_objects-6.155.1 → bluer_objects-6.164.1}/bluer_objects/tests/test_storage_webdav_request.py
RENAMED
|
File without changes
|
{bluer_objects-6.155.1 → bluer_objects-6.164.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
|
|
File without changes
|