bluer-objects 6.28.1__tar.gz → 6.30.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.

Files changed (143) hide show
  1. {bluer_objects-6.28.1/bluer_objects.egg-info → bluer_objects-6.30.1}/PKG-INFO +2 -2
  2. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/README.md +1 -1
  3. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/tests/gif.sh +1 -1
  4. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/__init__.py +1 -1
  5. bluer_objects-6.30.1/bluer_objects/config.env +5 -0
  6. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/env.py +0 -7
  7. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/metadata/post.py +1 -1
  8. bluer_objects-6.30.1/bluer_objects/objects.py +87 -0
  9. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/storage/WebDAVzip.py +8 -0
  10. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/tests/test_env.py +0 -6
  11. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/tests/test_file_load_save.py +12 -5
  12. bluer_objects-6.30.1/bluer_objects/tests/test_graphics.py +13 -0
  13. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/tests/test_graphics_gif.py +7 -10
  14. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/tests/test_objects.py +39 -10
  15. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/tests/test_storage.py +2 -2
  16. {bluer_objects-6.28.1 → bluer_objects-6.30.1/bluer_objects.egg-info}/PKG-INFO +2 -2
  17. bluer_objects-6.28.1/bluer_objects/config.env +0 -9
  18. bluer_objects-6.28.1/bluer_objects/objects.py +0 -163
  19. bluer_objects-6.28.1/bluer_objects/tests/test_graphics.py +0 -29
  20. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/LICENSE +0 -0
  21. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/MANIFEST.in +0 -0
  22. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/abcli.sh +0 -0
  23. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/actions.sh +0 -0
  24. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/aka.sh +0 -0
  25. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/alias.sh +0 -0
  26. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/bluer_objects.sh +0 -0
  27. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/cache.sh +0 -0
  28. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/clone.sh +0 -0
  29. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/download.sh +0 -0
  30. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/file.sh +0 -0
  31. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/gif.sh +0 -0
  32. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/host.sh +0 -0
  33. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/ls.sh +0 -0
  34. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/metadata/get.sh +0 -0
  35. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/metadata/post.sh +0 -0
  36. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/metadata.sh +0 -0
  37. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/mlflow/browse.sh +0 -0
  38. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/mlflow/cache.sh +0 -0
  39. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/mlflow/list_registered_models.sh +0 -0
  40. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/mlflow/log_artifacts.sh +0 -0
  41. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/mlflow/log_run.sh +0 -0
  42. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/mlflow/run.sh +0 -0
  43. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/mlflow/tags/clone.sh +0 -0
  44. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/mlflow/tags/get.sh +0 -0
  45. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/mlflow/tags/search.sh +0 -0
  46. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/mlflow/tags/set.sh +0 -0
  47. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/mlflow/tags.sh +0 -0
  48. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/mlflow/test.sh +0 -0
  49. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/mlflow/transition.sh +0 -0
  50. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/mlflow.sh +0 -0
  51. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/object.sh +0 -0
  52. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/publish.sh +0 -0
  53. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/select.sh +0 -0
  54. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/storage/clear.sh +0 -0
  55. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/storage/download_file.sh +0 -0
  56. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/storage/exists.sh +0 -0
  57. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/storage/list.sh +0 -0
  58. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/storage/rm.sh +0 -0
  59. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/storage/status.sh +0 -0
  60. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/storage.sh +0 -0
  61. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/tests/README.sh +0 -0
  62. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/tests/clone.sh +0 -0
  63. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/tests/help.sh +0 -0
  64. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/tests/host.sh +0 -0
  65. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/tests/ls.sh +0 -0
  66. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/tests/metadata.sh +0 -0
  67. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/tests/mlflow_cache.sh +0 -0
  68. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/tests/mlflow_logging.sh +0 -0
  69. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/tests/mlflow_tags.sh +0 -0
  70. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/tests/mlflow_test.sh +0 -0
  71. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/tests/storage.sh +0 -0
  72. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/tests/version.sh +0 -0
  73. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/.abcli/upload.sh +0 -0
  74. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/README/__init__.py +0 -0
  75. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/README/functions.py +0 -0
  76. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/README/items.py +0 -0
  77. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/__main__.py +0 -0
  78. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/file/__init__.py +0 -0
  79. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/file/__main__.py +0 -0
  80. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/file/classes.py +0 -0
  81. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/file/functions.py +0 -0
  82. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/file/load.py +0 -0
  83. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/file/save.py +0 -0
  84. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/graphics/__init__.py +0 -0
  85. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/graphics/__main__.py +0 -0
  86. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/graphics/frame.py +0 -0
  87. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/graphics/gif.py +0 -0
  88. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/graphics/screen.py +0 -0
  89. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/graphics/signature.py +0 -0
  90. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/graphics/text.py +0 -0
  91. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/help/__init__.py +0 -0
  92. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/help/__main__.py +0 -0
  93. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/help/download.py +0 -0
  94. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/help/functions.py +0 -0
  95. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/help/upload.py +0 -0
  96. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/host/__init__.py +0 -0
  97. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/host/__main__.py +0 -0
  98. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/host/functions.py +0 -0
  99. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/logger/__init__.py +0 -0
  100. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/logger/matrix.py +0 -0
  101. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/markdown.py +0 -0
  102. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/metadata/__init__.py +0 -0
  103. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/metadata/__main__.py +0 -0
  104. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/metadata/enums.py +0 -0
  105. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/metadata/get.py +0 -0
  106. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/mlflow/__init__.py +0 -0
  107. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/mlflow/__main__.py +0 -0
  108. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/mlflow/cache.py +0 -0
  109. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/mlflow/logging.py +0 -0
  110. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/mlflow/models.py +0 -0
  111. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/mlflow/objects.py +0 -0
  112. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/mlflow/runs.py +0 -0
  113. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/mlflow/tags.py +0 -0
  114. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/mlflow/testing.py +0 -0
  115. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/path.py +0 -0
  116. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/sample.env +0 -0
  117. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/storage/WebDAV.py +0 -0
  118. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/storage/__init__.py +0 -0
  119. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/storage/__main__.py +0 -0
  120. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/storage/base.py +0 -0
  121. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/tests/__init__.py +0 -0
  122. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/tests/test_README.py +0 -0
  123. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/tests/test_fullname.py +0 -0
  124. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/tests/test_graphics_frame.py +0 -0
  125. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/tests/test_graphics_screen.py +0 -0
  126. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/tests/test_graphics_signature.py +0 -0
  127. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/tests/test_graphics_text.py +0 -0
  128. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/tests/test_logger.py +0 -0
  129. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/tests/test_logger_matrix.py +0 -0
  130. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/tests/test_markdown.py +0 -0
  131. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/tests/test_metadata.py +0 -0
  132. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/tests/test_mlflow.py +0 -0
  133. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/tests/test_path.py +0 -0
  134. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/tests/test_version.py +0 -0
  135. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects/urls.py +0 -0
  136. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects.egg-info/SOURCES.txt +0 -0
  137. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects.egg-info/dependency_links.txt +0 -0
  138. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects.egg-info/requires.txt +0 -0
  139. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/bluer_objects.egg-info/top_level.txt +0 -0
  140. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/pyproject.toml +0 -0
  141. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/requirements.txt +0 -0
  142. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/setup.cfg +0 -0
  143. {bluer_objects-6.28.1 → bluer_objects-6.30.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_objects
3
- Version: 6.28.1
3
+ Version: 6.30.1
4
4
  Summary: 🌀 data objects for Bash.
5
5
  Home-page: https://github.com/kamangir/bluer-objects
6
6
  Author: Arash Abadpour (Kamangir)
@@ -53,6 +53,6 @@ Also home to [blue README](https://github.com/kamangir/bluer-objects/blob/main/b
53
53
 
54
54
  [![pylint](https://github.com/kamangir/bluer-objects/actions/workflows/pylint.yml/badge.svg)](https://github.com/kamangir/bluer-objects/actions/workflows/pylint.yml) [![pytest](https://github.com/kamangir/bluer-objects/actions/workflows/pytest.yml/badge.svg)](https://github.com/kamangir/bluer-objects/actions/workflows/pytest.yml) [![bashtest](https://github.com/kamangir/bluer-objects/actions/workflows/bashtest.yml/badge.svg)](https://github.com/kamangir/bluer-objects/actions/workflows/bashtest.yml) [![PyPI version](https://img.shields.io/pypi/v/bluer-objects.svg)](https://pypi.org/project/bluer-objects/) [![PyPI - Downloads](https://img.shields.io/pypi/dd/bluer-objects)](https://pypistats.org/packages/bluer-objects)
55
55
 
56
- built by 🌀 [`bluer_options-5.26.1`](https://github.com/kamangir/awesome-bash-cli), based on 🌀 [`bluer_objects-6.28.1`](https://github.com/kamangir/bluer-objects).
56
+ built by 🌀 [`bluer_options-5.28.1`](https://github.com/kamangir/awesome-bash-cli), based on 🌀 [`bluer_objects-6.30.1`](https://github.com/kamangir/bluer-objects).
57
57
 
58
58
  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
  [![pylint](https://github.com/kamangir/bluer-objects/actions/workflows/pylint.yml/badge.svg)](https://github.com/kamangir/bluer-objects/actions/workflows/pylint.yml) [![pytest](https://github.com/kamangir/bluer-objects/actions/workflows/pytest.yml/badge.svg)](https://github.com/kamangir/bluer-objects/actions/workflows/pytest.yml) [![bashtest](https://github.com/kamangir/bluer-objects/actions/workflows/bashtest.yml/badge.svg)](https://github.com/kamangir/bluer-objects/actions/workflows/bashtest.yml) [![PyPI version](https://img.shields.io/pypi/v/bluer-objects.svg)](https://pypi.org/project/bluer-objects/) [![PyPI - Downloads](https://img.shields.io/pypi/dd/bluer-objects)](https://pypistats.org/packages/bluer-objects)
21
21
 
22
- built by 🌀 [`bluer_options-5.26.1`](https://github.com/kamangir/awesome-bash-cli), based on 🌀 [`bluer_objects-6.28.1`](https://github.com/kamangir/bluer-objects).
22
+ built by 🌀 [`bluer_options-5.28.1`](https://github.com/kamangir/awesome-bash-cli), based on 🌀 [`bluer_objects-6.30.1`](https://github.com/kamangir/bluer-objects).
@@ -9,5 +9,5 @@ function test_bluer_objects_gif() {
9
9
  --frame_duration 200 \
10
10
  --output_filename test.gif \
11
11
  --scale 2 \
12
- --suffix .jpg
12
+ --suffix .png
13
13
  }
@@ -4,7 +4,7 @@ ICON = "🌀"
4
4
 
5
5
  DESCRIPTION = f"{ICON} data objects for Bash."
6
6
 
7
- VERSION = "6.28.1"
7
+ VERSION = "6.30.1"
8
8
 
9
9
  REPO_NAME = "bluer-objects"
10
10
 
@@ -0,0 +1,5 @@
1
+ ABCLI_MLFLOW_URL_SUBDOMAIN=ml
2
+
3
+ ABCLI_MLFLOW_EXPERIMENT_PREFIX=experiment/
4
+
5
+ BLUER_OBJECTS_STORAGE_INTERFACE=webdavzip
@@ -30,16 +30,9 @@ abcli_path_git = get_env(
30
30
 
31
31
  ABCLI_PATH_STATIC = get_env("ABCLI_PATH_STATIC")
32
32
 
33
- VANWATCH_TEST_OBJECT = get_env("VANWATCH_TEST_OBJECT")
34
-
35
33
  # https://www.randomtextgenerator.com/
36
34
  DUMMY_TEXT = "This is some dummy text. This is some dummy text. This is some dummy text. This is some dummy text. This is some dummy text. This is some dummy text. This is some dummy text. This is some dummy text. This is some dummy text. This is some dummy text."
37
35
 
38
- DATABRICKS_WORKSPACE = get_env("DATABRICKS_WORKSPACE")
39
-
40
- DATABRICKS_HOST = get_env("DATABRICKS_HOST")
41
- DATABRICKS_TOKEN = get_env("DATABRICKS_TOKEN")
42
-
43
36
  ABCLI_MLFLOW_EXPERIMENT_PREFIX = get_env("ABCLI_MLFLOW_EXPERIMENT_PREFIX")
44
37
 
45
38
  ABCLI_S3_OBJECT_PREFIX = "to-be-removed"
@@ -81,7 +81,7 @@ def post_to_object(
81
81
  ):
82
82
  return False
83
83
 
84
- return not upload or objects.upload(
84
+ return not upload or storage.upload(
85
85
  object_name=object_name,
86
86
  filename="metadata.yaml",
87
87
  )
@@ -0,0 +1,87 @@
1
+ import os
2
+
3
+ from bluer_options import string
4
+
5
+ from bluer_objects import file, path
6
+ from bluer_objects.env import (
7
+ ABCLI_OBJECT_ROOT,
8
+ abcli_object_name,
9
+ ABCLI_S3_OBJECT_PREFIX,
10
+ )
11
+ from bluer_objects.host import shell
12
+ from bluer_objects.logger import logger
13
+
14
+
15
+ def list_of_files(
16
+ object_name: str,
17
+ cloud: bool = False,
18
+ **kwargs,
19
+ ):
20
+ if cloud:
21
+ # TODO
22
+ return []
23
+
24
+ return file.list_of(
25
+ os.path.join(
26
+ ABCLI_OBJECT_ROOT,
27
+ object_name,
28
+ "*",
29
+ ),
30
+ **kwargs,
31
+ )
32
+
33
+
34
+ def object_path(
35
+ object_name=".",
36
+ create=False,
37
+ ):
38
+ output = os.path.join(
39
+ ABCLI_OBJECT_ROOT,
40
+ abcli_object_name if object_name == "." else object_name,
41
+ )
42
+
43
+ if create:
44
+ os.makedirs(output, exist_ok=True)
45
+
46
+ return output
47
+
48
+
49
+ def path_of(
50
+ filename,
51
+ object_name=".",
52
+ create=False,
53
+ ):
54
+ return os.path.join(
55
+ object_path(object_name, create),
56
+ filename,
57
+ )
58
+
59
+
60
+ def signature(info=None, object_name="."):
61
+ return [
62
+ "{}{}".format(
63
+ abcli_object_name if object_name == "." else object_name,
64
+ "" if info is None else f"/{str(info)}",
65
+ ),
66
+ string.pretty_date(include_time=False),
67
+ string.pretty_date(include_date=False, include_zone=True),
68
+ ]
69
+
70
+
71
+ def unique_object(
72
+ prefix: str = "",
73
+ include_time: bool = True,
74
+ ):
75
+ object_name = string.pretty_date(
76
+ as_filename=True,
77
+ include_time=include_time,
78
+ unique=True,
79
+ )
80
+ if prefix:
81
+ object_name = f"{prefix}-{object_name}"
82
+
83
+ path.create(object_path(object_name))
84
+
85
+ logger.info(f"📂 {object_name}")
86
+
87
+ return object_name
@@ -31,6 +31,14 @@ class WebDAVzipInterface(StorageInterface):
31
31
  object_path = objects.object_path(object_name=object_name)
32
32
  zip_filename = f"{object_path}.zip"
33
33
 
34
+ try:
35
+ if not self.client.check(remote_path=f"{object_name}.zip"):
36
+ logger.warning(f"{object_name} doesn't exist.")
37
+ return True
38
+ except Exception as e:
39
+ logger.error(e)
40
+ return False
41
+
34
42
  try:
35
43
  self.client.download_sync(
36
44
  remote_path=f"{object_name}.zip",
@@ -10,12 +10,6 @@ def test_required_env():
10
10
 
11
11
 
12
12
  def test_bluer_objects_env():
13
- assert env.VANWATCH_TEST_OBJECT
14
-
15
- assert env.DATABRICKS_WORKSPACE
16
- assert env.DATABRICKS_HOST
17
- assert env.DATABRICKS_TOKEN
18
-
19
13
  assert env.ABCLI_MLFLOW_EXPERIMENT_PREFIX
20
14
 
21
15
  assert env.BLUER_OBJECTS_STORAGE_INTERFACE in [
@@ -1,21 +1,23 @@
1
1
  import pytest
2
- from typing import Callable, Union, Tuple, List
2
+ from typing import Callable, Union, Tuple
3
3
  import numpy as np
4
4
 
5
5
  from bluer_options import string
6
6
 
7
- from bluer_objects import file, objects, env
7
+ from bluer_objects import file, objects
8
8
  from bluer_objects.file.load import (
9
9
  load_image,
10
10
  load_json,
11
11
  load_matrix,
12
12
  load_text,
13
+ load_yaml,
13
14
  )
14
15
  from bluer_objects.file.save import (
15
16
  save_image,
16
17
  save_json,
17
18
  save_matrix,
18
19
  save_text,
20
+ save_yaml,
19
21
  )
20
22
  from bluer_objects.tests.test_objects import test_object
21
23
 
@@ -29,19 +31,24 @@ from bluer_objects.tests.test_objects import test_object
29
31
  [
30
32
  [
31
33
  load_image,
32
- "Victoria41East.jpg",
34
+ "test-00.png",
33
35
  save_image,
34
36
  ],
35
37
  [
36
38
  load_json,
37
- "vancouver.json",
39
+ "test.json",
38
40
  save_json,
39
41
  ],
40
42
  [
41
43
  load_text,
42
- "vancouver.json",
44
+ "test.yaml",
43
45
  save_text,
44
46
  ],
47
+ [
48
+ load_yaml,
49
+ "test.yaml",
50
+ save_yaml,
51
+ ],
45
52
  ],
46
53
  )
47
54
  def test_file_load_save(
@@ -0,0 +1,13 @@
1
+ import pytest
2
+ import numpy as np
3
+
4
+ from bluer_objects.logger import logger
5
+
6
+
7
+ @pytest.fixture
8
+ def test_image():
9
+ matrix = (np.random.rand(512, 512, 3) * 255).astype(np.uint8)
10
+
11
+ yield matrix
12
+
13
+ logger.info(f"deleting test_image ...")
@@ -3,28 +3,25 @@ import glob
3
3
 
4
4
  from bluer_objects import objects
5
5
  from bluer_objects import storage
6
+ from bluer_objects.tests.test_objects import test_object
6
7
  from bluer_objects.graphics.gif import generate_animated_gif
7
8
 
8
9
 
9
10
  @pytest.mark.parametrize(
10
- ["object_name", "scale"],
11
+ ["scale"],
11
12
  [
12
- ["void", 1],
13
- ["2024-05-07-18-45-13-31678", 2],
13
+ [1],
14
+ [2],
14
15
  ],
15
16
  )
16
17
  def test_graphics_gif_generate_animated_gif(
17
- object_name: str,
18
+ test_object,
18
19
  scale: int,
19
20
  ):
20
- assert storage.download(object_name)
21
-
22
- list_of_images = list(glob.glob(objects.path_of("*.png", object_name)))
23
- if object_name != "void":
24
- assert list_of_images
21
+ list_of_images = list(glob.glob(objects.path_of("*.png", test_object)))
25
22
 
26
23
  assert generate_animated_gif(
27
24
  list_of_images,
28
- objects.path_of("test.gif", object_name),
25
+ objects.path_of("test.gif", test_object),
29
26
  scale=scale,
30
27
  )
@@ -1,24 +1,49 @@
1
1
  import pytest
2
+ import numpy as np
2
3
 
3
- from blueness import module
4
+ from bluer_options import string
4
5
 
5
- from bluer_objects import file, path, objects, NAME
6
+ from bluer_objects import file, path, objects
6
7
  from bluer_objects import storage
7
- from bluer_objects.env import VANWATCH_TEST_OBJECT
8
8
  from bluer_objects.logger import logger
9
9
 
10
- NAME = module.name(__file__, NAME)
11
-
12
10
 
13
11
  @pytest.fixture
14
12
  def test_object():
15
- object_name = VANWATCH_TEST_OBJECT
13
+ object_name = objects.unique_object("test_object")
14
+ for suffix in range(10):
15
+ assert file.save_image(
16
+ objects.path_of(
17
+ object_name=object_name,
18
+ filename=f"test-{suffix:02d}.png",
19
+ ),
20
+ (np.random.rand(512, 512, 3) * 255).astype(np.uint8),
21
+ )
22
+
23
+ depth = 10
24
+ data = {
25
+ string.random(length=depth): string.random(length=depth) for _ in range(depth)
26
+ }
16
27
 
17
- assert storage.download(object_name=object_name)
28
+ assert file.save_yaml(
29
+ objects.path_of(
30
+ object_name=object_name,
31
+ filename="test.yaml",
32
+ ),
33
+ data,
34
+ )
35
+
36
+ assert file.save_json(
37
+ objects.path_of(
38
+ object_name=object_name,
39
+ filename="test.json",
40
+ ),
41
+ data,
42
+ )
18
43
 
19
44
  yield object_name
20
45
 
21
- logger.info(f"deleting {NAME}.test_object ...")
46
+ logger.info(f"deleting test_object ...")
22
47
 
23
48
 
24
49
  @pytest.mark.parametrize(
@@ -29,6 +54,10 @@ def test_objects_list_of_files(
29
54
  test_object,
30
55
  cloud: bool,
31
56
  ):
57
+ if cloud:
58
+ # TODO: enable when implemented
59
+ return
60
+
32
61
  list_of_files = [
33
62
  file.name_and_extension(filename)
34
63
  for filename in objects.list_of_files(
@@ -37,7 +66,7 @@ def test_objects_list_of_files(
37
66
  )
38
67
  ]
39
68
 
40
- assert "vancouver.json" in list_of_files
69
+ assert "test-00.png" in list_of_files
41
70
 
42
71
 
43
72
  def test_object_object_path():
@@ -51,7 +80,7 @@ def test_objects_path_of(test_object):
51
80
  assert file.exists(
52
81
  objects.path_of(
53
82
  object_name=test_object,
54
- filename="vancouver.json",
83
+ filename="test-00.png",
55
84
  )
56
85
  )
57
86
 
@@ -35,7 +35,7 @@ def test_storage():
35
35
  filename=filename,
36
36
  )
37
37
 
38
- assert objects.upload(object_name=object_name)
38
+ assert storage.upload(object_name=object_name)
39
39
 
40
40
  for filename in [
41
41
  "this.yaml",
@@ -46,4 +46,4 @@ def test_storage():
46
46
  filename=filename,
47
47
  )
48
48
 
49
- assert objects.download(object_name=object_name)
49
+ assert storage.download(object_name=object_name)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_objects
3
- Version: 6.28.1
3
+ Version: 6.30.1
4
4
  Summary: 🌀 data objects for Bash.
5
5
  Home-page: https://github.com/kamangir/bluer-objects
6
6
  Author: Arash Abadpour (Kamangir)
@@ -53,6 +53,6 @@ Also home to [blue README](https://github.com/kamangir/bluer-objects/blob/main/b
53
53
 
54
54
  [![pylint](https://github.com/kamangir/bluer-objects/actions/workflows/pylint.yml/badge.svg)](https://github.com/kamangir/bluer-objects/actions/workflows/pylint.yml) [![pytest](https://github.com/kamangir/bluer-objects/actions/workflows/pytest.yml/badge.svg)](https://github.com/kamangir/bluer-objects/actions/workflows/pytest.yml) [![bashtest](https://github.com/kamangir/bluer-objects/actions/workflows/bashtest.yml/badge.svg)](https://github.com/kamangir/bluer-objects/actions/workflows/bashtest.yml) [![PyPI version](https://img.shields.io/pypi/v/bluer-objects.svg)](https://pypi.org/project/bluer-objects/) [![PyPI - Downloads](https://img.shields.io/pypi/dd/bluer-objects)](https://pypistats.org/packages/bluer-objects)
55
55
 
56
- built by 🌀 [`bluer_options-5.26.1`](https://github.com/kamangir/awesome-bash-cli), based on 🌀 [`bluer_objects-6.28.1`](https://github.com/kamangir/bluer-objects).
56
+ built by 🌀 [`bluer_options-5.28.1`](https://github.com/kamangir/awesome-bash-cli), based on 🌀 [`bluer_objects-6.30.1`](https://github.com/kamangir/bluer-objects).
57
57
 
58
58
  built by 🌀 [`blueness-3.96.1`](https://github.com/kamangir/blueness).
@@ -1,9 +0,0 @@
1
- VANWATCH_TEST_OBJECT=vanwatch-test-object-v2
2
-
3
- DATABRICKS_WORKSPACE=abcli-v4
4
-
5
- ABCLI_MLFLOW_URL_SUBDOMAIN=ml
6
-
7
- ABCLI_MLFLOW_EXPERIMENT_PREFIX=experiment/
8
-
9
- BLUER_OBJECTS_STORAGE_INTERFACE=webdavzip
@@ -1,163 +0,0 @@
1
- import os
2
-
3
- from bluer_options import string
4
-
5
- from bluer_objects import file, path
6
- from bluer_objects.env import (
7
- ABCLI_OBJECT_ROOT,
8
- abcli_object_name,
9
- ABCLI_S3_OBJECT_PREFIX,
10
- )
11
- from bluer_objects.host import shell
12
- from bluer_objects.logger import logger
13
-
14
-
15
- def download(
16
- object_name: str,
17
- filename: str = "",
18
- overwrite: bool = False,
19
- ) -> bool:
20
- if not ABCLI_S3_OBJECT_PREFIX:
21
- logger.error("ABCLI_S3_OBJECT_PREFIX is not set.")
22
- return False
23
-
24
- if not object_name:
25
- logger.error("object_name not found.")
26
- return False
27
-
28
- if (
29
- filename
30
- and not overwrite
31
- and file.exists(
32
- path_of(
33
- object_name=object_name,
34
- filename=filename,
35
- )
36
- )
37
- ):
38
- return True
39
-
40
- return (
41
- shell(
42
- "aws s3 cp {}/{}/{} {}".format(
43
- ABCLI_S3_OBJECT_PREFIX,
44
- object_name,
45
- filename,
46
- object_path(object_name, create=True),
47
- )
48
- )
49
- if filename
50
- else shell(
51
- "aws s3 sync {}/{}/ {}".format(
52
- ABCLI_S3_OBJECT_PREFIX,
53
- object_name,
54
- object_path(object_name, create=True),
55
- )
56
- )
57
- )
58
-
59
-
60
- def list_of_files(
61
- object_name: str,
62
- cloud: bool = False,
63
- **kwargs,
64
- ):
65
- if cloud:
66
- # TODO
67
- return []
68
-
69
- return file.list_of(
70
- os.path.join(
71
- ABCLI_OBJECT_ROOT,
72
- object_name,
73
- "*",
74
- ),
75
- **kwargs,
76
- )
77
-
78
-
79
- def object_path(
80
- object_name=".",
81
- create=False,
82
- ):
83
- output = os.path.join(
84
- ABCLI_OBJECT_ROOT,
85
- abcli_object_name if object_name == "." else object_name,
86
- )
87
-
88
- if create:
89
- os.makedirs(output, exist_ok=True)
90
-
91
- return output
92
-
93
-
94
- def path_of(
95
- filename,
96
- object_name=".",
97
- create=False,
98
- ):
99
- return os.path.join(
100
- object_path(object_name, create),
101
- filename,
102
- )
103
-
104
-
105
- def signature(info=None, object_name="."):
106
- return [
107
- "{}{}".format(
108
- abcli_object_name if object_name == "." else object_name,
109
- "" if info is None else f"/{str(info)}",
110
- ),
111
- string.pretty_date(include_time=False),
112
- string.pretty_date(include_date=False, include_zone=True),
113
- ]
114
-
115
-
116
- def unique_object(
117
- prefix: str = "",
118
- include_time: bool = True,
119
- ):
120
- object_name = string.pretty_date(
121
- as_filename=True,
122
- include_time=include_time,
123
- unique=True,
124
- )
125
- if prefix:
126
- object_name = f"{prefix}-{object_name}"
127
-
128
- path.create(object_path(object_name))
129
-
130
- logger.info(f"📂 {object_name}")
131
-
132
- return object_name
133
-
134
-
135
- def upload(
136
- object_name: str,
137
- filename: str = "",
138
- ) -> bool:
139
- if not ABCLI_S3_OBJECT_PREFIX:
140
- logger.error("ABCLI_S3_OBJECT_PREFIX is not set.")
141
- return False
142
-
143
- if not object_name:
144
- logger.error("object_name not found.")
145
- return False
146
-
147
- return (
148
- shell(
149
- "aws s3 cp {} {}/{}/".format(
150
- path_of(filename=filename, object_name=object_name),
151
- ABCLI_S3_OBJECT_PREFIX,
152
- object_name,
153
- )
154
- )
155
- if filename
156
- else shell(
157
- "aws s3 sync {} {}/{}/".format(
158
- object_path(object_name, create=True),
159
- ABCLI_S3_OBJECT_PREFIX,
160
- object_name,
161
- )
162
- )
163
- )
@@ -1,29 +0,0 @@
1
- import pytest
2
-
3
- from blueness import module
4
-
5
- from bluer_objects import file, objects, NAME
6
- from bluer_objects import storage
7
- from bluer_objects.env import VANWATCH_TEST_OBJECT
8
- from bluer_objects.logger import logger
9
-
10
- NAME = module.name(__file__, NAME)
11
-
12
-
13
- @pytest.fixture
14
- def test_image():
15
- object_name = VANWATCH_TEST_OBJECT
16
-
17
- assert storage.download(object_name)
18
-
19
- success, matrix = file.load_image(
20
- objects.path_of(
21
- "Victoria41East.jpg",
22
- object_name,
23
- )
24
- )
25
- assert success
26
-
27
- yield matrix
28
-
29
- logger.info(f"deleting {NAME}.test_object ...")
File without changes
File without changes
File without changes