bluer-objects 6.5.1__tar.gz → 6.6.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.5.1/bluer_objects.egg-info → bluer_objects-6.6.1}/PKG-INFO +2 -2
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/README.md +1 -1
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/__init__.py +1 -1
- {bluer_objects-6.5.1 → bluer_objects-6.6.1/bluer_objects.egg-info}/PKG-INFO +2 -2
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects.egg-info/SOURCES.txt +0 -18
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/setup.py +0 -5
- bluer_objects-6.5.1/bluer_objects/mysql/cache/__init__.py +0 -8
- bluer_objects-6.5.1/bluer_objects/mysql/cache/__main__.py +0 -91
- bluer_objects-6.5.1/bluer_objects/mysql/cache/functions.py +0 -181
- bluer_objects-6.5.1/bluer_objects/mysql/relations/__init__.py +0 -9
- bluer_objects-6.5.1/bluer_objects/mysql/relations/__main__.py +0 -138
- bluer_objects-6.5.1/bluer_objects/mysql/relations/functions.py +0 -180
- bluer_objects-6.5.1/bluer_objects/mysql/table.py +0 -144
- bluer_objects-6.5.1/bluer_objects/mysql/tags/__init__.py +0 -1
- bluer_objects-6.5.1/bluer_objects/mysql/tags/__main__.py +0 -130
- bluer_objects-6.5.1/bluer_objects/mysql/tags/functions.py +0 -203
- bluer_objects-6.5.1/bluer_objects/storage/__init__.py +0 -3
- bluer_objects-6.5.1/bluer_objects/storage/__main__.py +0 -114
- bluer_objects-6.5.1/bluer_objects/storage/classes.py +0 -237
- bluer_objects-6.5.1/bluer_objects/tests/test_mysql_cache.py +0 -14
- bluer_objects-6.5.1/bluer_objects/tests/test_mysql_relations.py +0 -16
- bluer_objects-6.5.1/bluer_objects/tests/test_mysql_table.py +0 -9
- bluer_objects-6.5.1/bluer_objects/tests/test_mysql_tags.py +0 -13
- bluer_objects-6.5.1/bluer_objects/tests/test_storage.py +0 -7
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/LICENSE +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/MANIFEST.in +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/abcli.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/actions.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/aka.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/alias.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/blue_objects.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/cache.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/clone.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/download.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/file.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/gif.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/host.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/ls.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/metadata/get.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/metadata/post.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/metadata.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/mlflow/browse.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/mlflow/cache.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/mlflow/list_registered_models.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/mlflow/log_artifacts.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/mlflow/log_run.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/mlflow/run.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/mlflow/tags/clone.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/mlflow/tags/get.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/mlflow/tags/search.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/mlflow/tags/set.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/mlflow/tags.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/mlflow/test.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/mlflow/transition.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/mlflow.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/mysql/cache.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/mysql/relations.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/mysql/tags.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/mysql.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/object.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/publish.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/select.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/storage/clear.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/storage/download_file.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/storage/exists.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/storage/list.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/storage/rm.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/storage/status.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/storage.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/tags.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/tests/README.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/tests/clone.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/tests/help.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/tests/host.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/tests/ls.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/tests/metadata.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/tests/mlflow_cache.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/tests/mlflow_logging.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/tests/mlflow_tags.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/tests/mlflow_test.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/tests/mysql_cache.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/tests/mysql_relations.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/tests/mysql_tags.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/tests/test_gif.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/tests/version.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/.abcli/upload.sh +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/README/__init__.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/README/functions.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/README/items.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/__main__.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/config.env +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/env.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/file/__init__.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/file/__main__.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/file/classes.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/file/functions.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/file/load.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/file/save.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/graphics/__init__.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/graphics/__main__.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/graphics/frame.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/graphics/gif.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/graphics/screen.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/graphics/signature.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/graphics/text.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/help/__init__.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/help/__main__.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/help/functions.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/host/__init__.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/host/__main__.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/host/functions.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/logger/__init__.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/logger/matrix.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/markdown.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/metadata/__init__.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/metadata/__main__.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/metadata/enums.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/metadata/get.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/metadata/post.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/mlflow/__init__.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/mlflow/__main__.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/mlflow/cache.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/mlflow/logging.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/mlflow/models.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/mlflow/objects.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/mlflow/runs.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/mlflow/tags.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/mlflow/testing.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/objects.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/path.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/sample.env +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/tests/__init__.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/tests/test_README.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/tests/test_env.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/tests/test_file_load_save.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/tests/test_fullname.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/tests/test_graphics.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/tests/test_graphics_frame.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/tests/test_graphics_gif.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/tests/test_graphics_screen.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/tests/test_graphics_signature.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/tests/test_graphics_text.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/tests/test_logger.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/tests/test_logger_matrix.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/tests/test_markdown.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/tests/test_metadata.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/tests/test_mlflow.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/tests/test_objects.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/tests/test_path.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/tests/test_version.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects/urls.py +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects.egg-info/dependency_links.txt +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects.egg-info/requires.txt +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/bluer_objects.egg-info/top_level.txt +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/pyproject.toml +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.1}/requirements.txt +0 -0
- {bluer_objects-6.5.1 → bluer_objects-6.6.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.6.1
|
|
4
4
|
Summary: 🌀 data objects for Bash.
|
|
5
5
|
Home-page: https://github.com/kamangir/bluer-objects
|
|
6
6
|
Author: Arash Abadpour (Kamangir)
|
|
@@ -52,6 +52,6 @@ Also home to [blue README](https://github.com/kamangir/bluer-objects/blob/main/b
|
|
|
52
52
|
|
|
53
53
|
[](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)
|
|
54
54
|
|
|
55
|
-
built by 🌀 [`blue_options-4.240.1`](https://github.com/kamangir/awesome-bash-cli), based on 🌀 [`bluer_objects-6.
|
|
55
|
+
built by 🌀 [`blue_options-4.240.1`](https://github.com/kamangir/awesome-bash-cli), based on 🌀 [`bluer_objects-6.6.1`](https://github.com/kamangir/bluer-objects).
|
|
56
56
|
|
|
57
57
|
built by 🌀 [`blueness-3.96.1`](https://github.com/kamangir/blueness).
|
|
@@ -19,4 +19,4 @@ Also home to [blue README](./bluer_objects/README/).
|
|
|
19
19
|
|
|
20
20
|
[](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)
|
|
21
21
|
|
|
22
|
-
built by 🌀 [`blue_options-4.240.1`](https://github.com/kamangir/awesome-bash-cli), based on 🌀 [`bluer_objects-6.
|
|
22
|
+
built by 🌀 [`blue_options-4.240.1`](https://github.com/kamangir/awesome-bash-cli), based on 🌀 [`bluer_objects-6.6.1`](https://github.com/kamangir/bluer-objects).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bluer_objects
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.6.1
|
|
4
4
|
Summary: 🌀 data objects for Bash.
|
|
5
5
|
Home-page: https://github.com/kamangir/bluer-objects
|
|
6
6
|
Author: Arash Abadpour (Kamangir)
|
|
@@ -52,6 +52,6 @@ Also home to [blue README](https://github.com/kamangir/bluer-objects/blob/main/b
|
|
|
52
52
|
|
|
53
53
|
[](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)
|
|
54
54
|
|
|
55
|
-
built by 🌀 [`blue_options-4.240.1`](https://github.com/kamangir/awesome-bash-cli), based on 🌀 [`bluer_objects-6.
|
|
55
|
+
built by 🌀 [`blue_options-4.240.1`](https://github.com/kamangir/awesome-bash-cli), based on 🌀 [`bluer_objects-6.6.1`](https://github.com/kamangir/bluer-objects).
|
|
56
56
|
|
|
57
57
|
built by 🌀 [`blueness-3.96.1`](https://github.com/kamangir/blueness).
|
|
@@ -116,19 +116,6 @@ bluer_objects/mlflow/objects.py
|
|
|
116
116
|
bluer_objects/mlflow/runs.py
|
|
117
117
|
bluer_objects/mlflow/tags.py
|
|
118
118
|
bluer_objects/mlflow/testing.py
|
|
119
|
-
bluer_objects/mysql/table.py
|
|
120
|
-
bluer_objects/mysql/cache/__init__.py
|
|
121
|
-
bluer_objects/mysql/cache/__main__.py
|
|
122
|
-
bluer_objects/mysql/cache/functions.py
|
|
123
|
-
bluer_objects/mysql/relations/__init__.py
|
|
124
|
-
bluer_objects/mysql/relations/__main__.py
|
|
125
|
-
bluer_objects/mysql/relations/functions.py
|
|
126
|
-
bluer_objects/mysql/tags/__init__.py
|
|
127
|
-
bluer_objects/mysql/tags/__main__.py
|
|
128
|
-
bluer_objects/mysql/tags/functions.py
|
|
129
|
-
bluer_objects/storage/__init__.py
|
|
130
|
-
bluer_objects/storage/__main__.py
|
|
131
|
-
bluer_objects/storage/classes.py
|
|
132
119
|
bluer_objects/tests/__init__.py
|
|
133
120
|
bluer_objects/tests/test_README.py
|
|
134
121
|
bluer_objects/tests/test_env.py
|
|
@@ -145,11 +132,6 @@ bluer_objects/tests/test_logger_matrix.py
|
|
|
145
132
|
bluer_objects/tests/test_markdown.py
|
|
146
133
|
bluer_objects/tests/test_metadata.py
|
|
147
134
|
bluer_objects/tests/test_mlflow.py
|
|
148
|
-
bluer_objects/tests/test_mysql_cache.py
|
|
149
|
-
bluer_objects/tests/test_mysql_relations.py
|
|
150
|
-
bluer_objects/tests/test_mysql_table.py
|
|
151
|
-
bluer_objects/tests/test_mysql_tags.py
|
|
152
135
|
bluer_objects/tests/test_objects.py
|
|
153
136
|
bluer_objects/tests/test_path.py
|
|
154
|
-
bluer_objects/tests/test_storage.py
|
|
155
137
|
bluer_objects/tests/test_version.py
|
|
@@ -16,12 +16,7 @@ setup(
|
|
|
16
16
|
f"{NAME}.logger",
|
|
17
17
|
f"{NAME}.metadata",
|
|
18
18
|
f"{NAME}.mlflow",
|
|
19
|
-
f"{NAME}.mysql",
|
|
20
|
-
f"{NAME}.mysql.cache",
|
|
21
|
-
f"{NAME}.mysql.relations",
|
|
22
|
-
f"{NAME}.mysql.tags",
|
|
23
19
|
f"{NAME}.README",
|
|
24
|
-
f"{NAME}.storage",
|
|
25
20
|
f"{NAME}.tests",
|
|
26
21
|
],
|
|
27
22
|
include_package_data=True,
|
|
@@ -1,91 +0,0 @@
|
|
|
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.mysql.cache.functions import create, clone, read, write, search
|
|
8
|
-
from bluer_objects.logger import logger
|
|
9
|
-
|
|
10
|
-
NAME = module.name(__file__, NAME)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
parser = argparse.ArgumentParser(NAME)
|
|
14
|
-
parser.add_argument(
|
|
15
|
-
"task",
|
|
16
|
-
type=str,
|
|
17
|
-
default="read",
|
|
18
|
-
help="clone,create,read,search,write",
|
|
19
|
-
)
|
|
20
|
-
parser.add_argument(
|
|
21
|
-
"--all",
|
|
22
|
-
default=0,
|
|
23
|
-
type=int,
|
|
24
|
-
)
|
|
25
|
-
parser.add_argument(
|
|
26
|
-
"--dataframe",
|
|
27
|
-
default=0,
|
|
28
|
-
type=int,
|
|
29
|
-
)
|
|
30
|
-
parser.add_argument(
|
|
31
|
-
"--destination",
|
|
32
|
-
type=str,
|
|
33
|
-
default="",
|
|
34
|
-
)
|
|
35
|
-
parser.add_argument(
|
|
36
|
-
"--keyword",
|
|
37
|
-
type=str,
|
|
38
|
-
)
|
|
39
|
-
parser.add_argument(
|
|
40
|
-
"--like",
|
|
41
|
-
default=0,
|
|
42
|
-
type=int,
|
|
43
|
-
)
|
|
44
|
-
parser.add_argument(
|
|
45
|
-
"--source",
|
|
46
|
-
type=str,
|
|
47
|
-
default="",
|
|
48
|
-
)
|
|
49
|
-
parser.add_argument(
|
|
50
|
-
"--unique",
|
|
51
|
-
default=1,
|
|
52
|
-
type=int,
|
|
53
|
-
help="cache.read('unique')",
|
|
54
|
-
)
|
|
55
|
-
parser.add_argument(
|
|
56
|
-
"--value",
|
|
57
|
-
type=str,
|
|
58
|
-
default="unknown",
|
|
59
|
-
)
|
|
60
|
-
args = parser.parse_args()
|
|
61
|
-
|
|
62
|
-
success = False
|
|
63
|
-
if args.task == "clone":
|
|
64
|
-
success = clone(args.source, args.destination)
|
|
65
|
-
elif args.task == "create":
|
|
66
|
-
success = create()
|
|
67
|
-
elif args.task == "read":
|
|
68
|
-
output = read(
|
|
69
|
-
args.keyword,
|
|
70
|
-
all=args.all,
|
|
71
|
-
like=args.like,
|
|
72
|
-
dataframe=args.dataframe,
|
|
73
|
-
unique=args.unique,
|
|
74
|
-
)
|
|
75
|
-
|
|
76
|
-
print(
|
|
77
|
-
("None" if output.empty else output.drop(columns=["log_id"]))
|
|
78
|
-
if args.dataframe
|
|
79
|
-
else output
|
|
80
|
-
)
|
|
81
|
-
success = True
|
|
82
|
-
elif args.task == "search":
|
|
83
|
-
for keyword, value in search(args.keyword).items():
|
|
84
|
-
print(f"{keyword}: {value}")
|
|
85
|
-
success = True
|
|
86
|
-
elif args.task == "write":
|
|
87
|
-
success = write(args.keyword, args.value)
|
|
88
|
-
else:
|
|
89
|
-
success = None
|
|
90
|
-
|
|
91
|
-
sys_exit(logger, NAME, args.task, success)
|
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
from typing import Any, Dict, List
|
|
2
|
-
from functools import reduce
|
|
3
|
-
import json
|
|
4
|
-
|
|
5
|
-
from blue_options import string
|
|
6
|
-
|
|
7
|
-
from bluer_objects.mysql.table import Table
|
|
8
|
-
from bluer_objects.logger import logger
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
columns = "keyword,value,timestamp".split(",")
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
def create() -> bool:
|
|
15
|
-
return Table.Create(
|
|
16
|
-
"cache",
|
|
17
|
-
[
|
|
18
|
-
"keyword VARCHAR(1024) NOT NULL",
|
|
19
|
-
"value VARCHAR(4096) NOT NULL",
|
|
20
|
-
],
|
|
21
|
-
)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
def clone(
|
|
25
|
-
source: str,
|
|
26
|
-
destination: str,
|
|
27
|
-
) -> bool:
|
|
28
|
-
lut = search(f"{source}.%")
|
|
29
|
-
|
|
30
|
-
lut = {
|
|
31
|
-
"{}.{}".format(
|
|
32
|
-
destination,
|
|
33
|
-
string.after(
|
|
34
|
-
keyword,
|
|
35
|
-
f"{source}.",
|
|
36
|
-
),
|
|
37
|
-
): value
|
|
38
|
-
for keyword, value in lut.items()
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return reduce(
|
|
42
|
-
lambda x, y: x and y,
|
|
43
|
-
[write(keyword, value) for keyword, value in lut.items()],
|
|
44
|
-
True,
|
|
45
|
-
)
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
def read(
|
|
49
|
-
keyword: str,
|
|
50
|
-
all: bool = False,
|
|
51
|
-
dataframe: bool = False,
|
|
52
|
-
like: bool = False,
|
|
53
|
-
unique: bool = False,
|
|
54
|
-
) -> Any:
|
|
55
|
-
if dataframe:
|
|
56
|
-
all = True
|
|
57
|
-
|
|
58
|
-
table = Table(name="cache")
|
|
59
|
-
|
|
60
|
-
if isinstance(keyword, list):
|
|
61
|
-
keyword = ".".join(keyword)
|
|
62
|
-
|
|
63
|
-
if not table.connect():
|
|
64
|
-
return None
|
|
65
|
-
|
|
66
|
-
success, output = table.execute(
|
|
67
|
-
(
|
|
68
|
-
"SELECT {} FROM ".format(
|
|
69
|
-
",".join(["c.{}".format(column) for column in columns])
|
|
70
|
-
)
|
|
71
|
-
+ "abcli.cache c "
|
|
72
|
-
)
|
|
73
|
-
+ (
|
|
74
|
-
(
|
|
75
|
-
"INNER JOIN ( "
|
|
76
|
-
"SELECT keyword, MAX(timestamp) AS max_timestamp "
|
|
77
|
-
"From abcli.cache "
|
|
78
|
-
"GROUP BY keyword "
|
|
79
|
-
") cm ON c.keyword = cm.keyword AND c.timestamp = cm.max_timestamp "
|
|
80
|
-
)
|
|
81
|
-
if unique
|
|
82
|
-
else ""
|
|
83
|
-
)
|
|
84
|
-
+ (
|
|
85
|
-
"WHERE c.keyword {} '{}' ".format("like" if like else "=", keyword)
|
|
86
|
-
+ "ORDER BY c.timestamp DESC "
|
|
87
|
-
+ "{};".format(
|
|
88
|
-
"" if all else "LIMIT 1",
|
|
89
|
-
)
|
|
90
|
-
)
|
|
91
|
-
)
|
|
92
|
-
if not success:
|
|
93
|
-
return None
|
|
94
|
-
|
|
95
|
-
if not table.disconnect():
|
|
96
|
-
return None
|
|
97
|
-
|
|
98
|
-
output = [
|
|
99
|
-
{keyword: item for keyword, item in zip(columns, thing)} for thing in output
|
|
100
|
-
]
|
|
101
|
-
|
|
102
|
-
if not dataframe:
|
|
103
|
-
output = [item["value"] for item in output]
|
|
104
|
-
|
|
105
|
-
if not all:
|
|
106
|
-
output = "" if not output else output[0]
|
|
107
|
-
|
|
108
|
-
if dataframe:
|
|
109
|
-
import pandas as pd
|
|
110
|
-
|
|
111
|
-
output = pd.DataFrame.from_dict(output)
|
|
112
|
-
|
|
113
|
-
return output
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
def search(keyword: str) -> Dict[str, str]:
|
|
117
|
-
table = Table(name="cache")
|
|
118
|
-
|
|
119
|
-
if isinstance(keyword, list):
|
|
120
|
-
keyword = ".".join(keyword)
|
|
121
|
-
|
|
122
|
-
if not table.connect():
|
|
123
|
-
return {}
|
|
124
|
-
|
|
125
|
-
success, output = table.execute(
|
|
126
|
-
"SELECT keyword,value FROM abcli.cache "
|
|
127
|
-
f"WHERE keyword like '{keyword}' "
|
|
128
|
-
"ORDER BY timestamp ASC;"
|
|
129
|
-
)
|
|
130
|
-
|
|
131
|
-
if success:
|
|
132
|
-
success = table.disconnect()
|
|
133
|
-
|
|
134
|
-
return {thing[0]: thing[1] for thing in output} if success else {}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
def search_value(value: str) -> List[str]:
|
|
138
|
-
table = Table(name="cache")
|
|
139
|
-
|
|
140
|
-
if not table.connect():
|
|
141
|
-
return []
|
|
142
|
-
|
|
143
|
-
success, output = table.execute(
|
|
144
|
-
"SELECT keyword,value FROM abcli.cache "
|
|
145
|
-
f"WHERE value = '{value}' "
|
|
146
|
-
"ORDER BY timestamp DESC;"
|
|
147
|
-
)
|
|
148
|
-
|
|
149
|
-
if success:
|
|
150
|
-
success = table.disconnect()
|
|
151
|
-
|
|
152
|
-
return [thing[0] for thing in output] if success else []
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
def write(
|
|
156
|
-
keyword: str,
|
|
157
|
-
value: str,
|
|
158
|
-
) -> bool:
|
|
159
|
-
table = Table(name="cache")
|
|
160
|
-
|
|
161
|
-
if isinstance(keyword, list):
|
|
162
|
-
keyword = ".".join(keyword)
|
|
163
|
-
|
|
164
|
-
if isinstance(value, dict):
|
|
165
|
-
value = json.dumps(value)
|
|
166
|
-
|
|
167
|
-
if not table.connect():
|
|
168
|
-
return False
|
|
169
|
-
|
|
170
|
-
success = table.insert(
|
|
171
|
-
["keyword", "value"],
|
|
172
|
-
[keyword, value],
|
|
173
|
-
)
|
|
174
|
-
|
|
175
|
-
if success:
|
|
176
|
-
success = table.disconnect()
|
|
177
|
-
|
|
178
|
-
if success:
|
|
179
|
-
logger.info("cache[{}] <- {}".format(keyword, value))
|
|
180
|
-
|
|
181
|
-
return success
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import argparse
|
|
2
|
-
|
|
3
|
-
from blueness import module
|
|
4
|
-
from blueness.argparse.generic import sys_exit
|
|
5
|
-
|
|
6
|
-
from bluer_objects import file, NAME
|
|
7
|
-
from bluer_objects.mysql.relations.functions import (
|
|
8
|
-
clone,
|
|
9
|
-
create,
|
|
10
|
-
get,
|
|
11
|
-
search,
|
|
12
|
-
set_,
|
|
13
|
-
inverse_of,
|
|
14
|
-
list_of,
|
|
15
|
-
)
|
|
16
|
-
from bluer_objects.logger import logger
|
|
17
|
-
|
|
18
|
-
NAME = module.name(__file__, NAME)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
parser = argparse.ArgumentParser(NAME)
|
|
22
|
-
parser.add_argument(
|
|
23
|
-
"task",
|
|
24
|
-
type=str,
|
|
25
|
-
default="get",
|
|
26
|
-
help="clone|create|get|list|search|set",
|
|
27
|
-
)
|
|
28
|
-
parser.add_argument(
|
|
29
|
-
"--count",
|
|
30
|
-
type=int,
|
|
31
|
-
default=-1,
|
|
32
|
-
)
|
|
33
|
-
parser.add_argument(
|
|
34
|
-
"--delim",
|
|
35
|
-
type=str,
|
|
36
|
-
default=", ",
|
|
37
|
-
)
|
|
38
|
-
parser.add_argument(
|
|
39
|
-
"--filename",
|
|
40
|
-
type=str,
|
|
41
|
-
)
|
|
42
|
-
parser.add_argument(
|
|
43
|
-
"--item_name",
|
|
44
|
-
default="object",
|
|
45
|
-
type=str,
|
|
46
|
-
)
|
|
47
|
-
parser.add_argument(
|
|
48
|
-
"--log",
|
|
49
|
-
default=1,
|
|
50
|
-
type=int,
|
|
51
|
-
help="0|1",
|
|
52
|
-
)
|
|
53
|
-
parser.add_argument(
|
|
54
|
-
"--object_1",
|
|
55
|
-
type=str,
|
|
56
|
-
)
|
|
57
|
-
parser.add_argument(
|
|
58
|
-
"--object_2",
|
|
59
|
-
type=str,
|
|
60
|
-
)
|
|
61
|
-
parser.add_argument(
|
|
62
|
-
"--relation",
|
|
63
|
-
default="",
|
|
64
|
-
type=str,
|
|
65
|
-
)
|
|
66
|
-
parser.add_argument(
|
|
67
|
-
"--return_list",
|
|
68
|
-
type=int,
|
|
69
|
-
default=0,
|
|
70
|
-
)
|
|
71
|
-
args = parser.parse_args()
|
|
72
|
-
|
|
73
|
-
delim = " " if args.delim == "space" else args.delim
|
|
74
|
-
|
|
75
|
-
success = False
|
|
76
|
-
if args.task == "clone":
|
|
77
|
-
success = clone(args.object_1, args.object_2)
|
|
78
|
-
elif args.task == "create":
|
|
79
|
-
success = create()
|
|
80
|
-
elif args.task == "get":
|
|
81
|
-
relation = get(args.object_1, args.object_2)
|
|
82
|
-
if args.log:
|
|
83
|
-
logger.info(
|
|
84
|
-
f"{args.object_1} -{f'{relation}->' if relation else 'X-'} {args.object_2}"
|
|
85
|
-
)
|
|
86
|
-
else:
|
|
87
|
-
print(relation)
|
|
88
|
-
success = True
|
|
89
|
-
elif args.task == "list":
|
|
90
|
-
if args.return_list:
|
|
91
|
-
output = [relation for relation in list_of if relation]
|
|
92
|
-
|
|
93
|
-
if args.count != -1:
|
|
94
|
-
output = output[: args.count]
|
|
95
|
-
|
|
96
|
-
if args.log:
|
|
97
|
-
logger.info(f"{len(output):,} relations(s): {delim.join(output)}")
|
|
98
|
-
else:
|
|
99
|
-
print(delim.join(output))
|
|
100
|
-
else:
|
|
101
|
-
if args.log:
|
|
102
|
-
for thing in sorted(
|
|
103
|
-
[
|
|
104
|
-
"{} : {}".format(this, that)
|
|
105
|
-
for this, that in inverse_of.items()
|
|
106
|
-
if this
|
|
107
|
-
]
|
|
108
|
-
):
|
|
109
|
-
logger.info(thing)
|
|
110
|
-
else:
|
|
111
|
-
print(
|
|
112
|
-
delim.join(
|
|
113
|
-
[
|
|
114
|
-
"{}:{}".format(this, that)
|
|
115
|
-
for this, that in inverse_of.items()
|
|
116
|
-
if this
|
|
117
|
-
]
|
|
118
|
-
)
|
|
119
|
-
)
|
|
120
|
-
success = True
|
|
121
|
-
elif args.task == "search":
|
|
122
|
-
output = search(args.object_1, args.relation, args.count)
|
|
123
|
-
|
|
124
|
-
if args.relation:
|
|
125
|
-
if args.log:
|
|
126
|
-
logger.info(f"{len(output):,} {args.item_name}(s): {delim.join(output)}")
|
|
127
|
-
else:
|
|
128
|
-
print(delim.join(output))
|
|
129
|
-
else:
|
|
130
|
-
print(output)
|
|
131
|
-
|
|
132
|
-
success = file.save_json(args.filename, output) if args.filename else True
|
|
133
|
-
elif args.task == "set":
|
|
134
|
-
success = set_(args.object_1, args.object_2, args.relation)
|
|
135
|
-
else:
|
|
136
|
-
success = None
|
|
137
|
-
|
|
138
|
-
sys_exit(logger, NAME, args.task, success, log=args.log)
|