bluer-objects 6.175.1__tar.gz → 6.181.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 (172) hide show
  1. {bluer_objects-6.175.1/bluer_objects.egg-info → bluer_objects-6.181.1}/PKG-INFO +2 -2
  2. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/README.md +1 -1
  3. bluer_objects-6.181.1/bluer_objects/.abcli/tests/storage_public_upload.sh +18 -0
  4. bluer_objects-6.175.1/bluer_objects/.abcli/tests/storage.sh → bluer_objects-6.181.1/bluer_objects/.abcli/tests/storage_upload_download.sh +2 -2
  5. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/upload.sh +4 -2
  6. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/__init__.py +1 -1
  7. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/config.env +1 -0
  8. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/env.py +1 -0
  9. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/help/upload.py +6 -1
  10. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/storage/WebDAV.py +6 -0
  11. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/storage/WebDAVrequest.py +7 -0
  12. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/storage/WebDAVzip.py +6 -0
  13. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/storage/__init__.py +2 -0
  14. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/storage/__main__.py +7 -0
  15. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/storage/base.py +3 -1
  16. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/storage/s3.py +20 -2
  17. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_env.py +1 -0
  18. {bluer_objects-6.175.1 → bluer_objects-6.181.1/bluer_objects.egg-info}/PKG-INFO +2 -2
  19. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects.egg-info/SOURCES.txt +2 -1
  20. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/LICENSE +0 -0
  21. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/MANIFEST.in +0 -0
  22. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/abcli.sh +0 -0
  23. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/actions.sh +0 -0
  24. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/aka.sh +0 -0
  25. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/alias.sh +0 -0
  26. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/bluer_objects.sh +0 -0
  27. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/clone.sh +0 -0
  28. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/create_test_asset.sh +0 -0
  29. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/download.sh +0 -0
  30. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/file.sh +0 -0
  31. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/gif.sh +0 -0
  32. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/host.sh +0 -0
  33. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/ls.sh +0 -0
  34. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/metadata/get.sh +0 -0
  35. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/metadata/post.sh +0 -0
  36. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/metadata.sh +0 -0
  37. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/mlflow/browse.sh +0 -0
  38. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/mlflow/cache.sh +0 -0
  39. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/mlflow/deploy.sh +0 -0
  40. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/mlflow/list_registered_models.sh +0 -0
  41. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/mlflow/lock/lock.sh +0 -0
  42. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/mlflow/lock/unlock.sh +0 -0
  43. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/mlflow/lock.sh +0 -0
  44. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/mlflow/log_artifacts.sh +0 -0
  45. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/mlflow/log_run.sh +0 -0
  46. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/mlflow/run.sh +0 -0
  47. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/mlflow/tags/clone.sh +0 -0
  48. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/mlflow/tags/get.sh +0 -0
  49. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/mlflow/tags/search.sh +0 -0
  50. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/mlflow/tags/set.sh +0 -0
  51. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/mlflow/tags.sh +0 -0
  52. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/mlflow/test.sh +0 -0
  53. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/mlflow/transition.sh +0 -0
  54. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/mlflow.sh +0 -0
  55. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/object.sh +0 -0
  56. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/select.sh +0 -0
  57. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/storage/clear.sh +0 -0
  58. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/storage/download_file.sh +0 -0
  59. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/storage/exists.sh +0 -0
  60. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/storage/list.sh +0 -0
  61. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/storage/rm.sh +0 -0
  62. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/storage/status.sh +0 -0
  63. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/storage.sh +0 -0
  64. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/tests/README.sh +0 -0
  65. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/tests/clone.sh +0 -0
  66. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/tests/create_test_asset.sh +0 -0
  67. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/tests/gif.sh +0 -0
  68. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/tests/help.sh +0 -0
  69. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/tests/host.sh +0 -0
  70. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/tests/ls.sh +0 -0
  71. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/tests/metadata.sh +0 -0
  72. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/tests/mlflow_cache.sh +0 -0
  73. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/tests/mlflow_lock.sh +0 -0
  74. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/tests/mlflow_logging.sh +0 -0
  75. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/tests/mlflow_tags.sh +0 -0
  76. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/tests/mlflow_test.sh +0 -0
  77. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/.abcli/tests/version.sh +0 -0
  78. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/README/__init__.py +0 -0
  79. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/README/functions.py +0 -0
  80. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/README/items.py +0 -0
  81. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/__main__.py +0 -0
  82. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/file/__init__.py +0 -0
  83. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/file/__main__.py +0 -0
  84. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/file/classes.py +0 -0
  85. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/file/functions.py +0 -0
  86. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/file/load.py +0 -0
  87. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/file/save.py +0 -0
  88. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/graphics/__init__.py +0 -0
  89. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/graphics/__main__.py +0 -0
  90. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/graphics/frame.py +0 -0
  91. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/graphics/gif.py +0 -0
  92. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/graphics/screen.py +0 -0
  93. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/graphics/signature.py +0 -0
  94. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/graphics/text.py +0 -0
  95. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/help/__init__.py +0 -0
  96. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/help/__main__.py +0 -0
  97. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/help/clone.py +0 -0
  98. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/help/create_test_asset.py +0 -0
  99. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/help/download.py +0 -0
  100. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/help/functions.py +0 -0
  101. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/help/gif.py +0 -0
  102. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/help/host.py +0 -0
  103. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/help/ls.py +0 -0
  104. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/help/metadata.py +0 -0
  105. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/help/mlflow/__init__.py +0 -0
  106. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/help/mlflow/cache.py +0 -0
  107. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/help/mlflow/lock.py +0 -0
  108. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/help/mlflow/tags.py +0 -0
  109. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/host/__init__.py +0 -0
  110. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/host/__main__.py +0 -0
  111. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/host/functions.py +0 -0
  112. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/logger/__init__.py +0 -0
  113. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/logger/matrix.py +0 -0
  114. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/markdown.py +0 -0
  115. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/metadata/__init__.py +0 -0
  116. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/metadata/__main__.py +0 -0
  117. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/metadata/enums.py +0 -0
  118. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/metadata/get.py +0 -0
  119. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/metadata/post.py +0 -0
  120. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/mlflow/__init__.py +0 -0
  121. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/mlflow/__main__.py +0 -0
  122. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/mlflow/cache.py +0 -0
  123. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/mlflow/lock/__init__.py +0 -0
  124. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/mlflow/lock/__main__.py +0 -0
  125. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/mlflow/lock/functions.py +0 -0
  126. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/mlflow/logging.py +0 -0
  127. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/mlflow/models.py +0 -0
  128. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/mlflow/objects.py +0 -0
  129. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/mlflow/runs.py +0 -0
  130. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/mlflow/tags.py +0 -0
  131. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/mlflow/testing.py +0 -0
  132. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/objects.py +0 -0
  133. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/path.py +0 -0
  134. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/sample.env +0 -0
  135. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/testing/__init__.py +0 -0
  136. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/testing/__main__.py +0 -0
  137. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/testing/functions.py +0 -0
  138. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/__init__.py +0 -0
  139. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_README.py +0 -0
  140. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_file_download.py +0 -0
  141. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_file_load_save.py +0 -0
  142. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_file_load_save_text.py +0 -0
  143. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_fullname.py +0 -0
  144. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_graphics.py +0 -0
  145. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_graphics_frame.py +0 -0
  146. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_graphics_gif.py +0 -0
  147. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_graphics_screen.py +0 -0
  148. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_graphics_signature.py +0 -0
  149. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_graphics_text.py +0 -0
  150. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_logger.py +0 -0
  151. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_logger_matrix.py +0 -0
  152. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_markdown.py +0 -0
  153. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_metadata.py +0 -0
  154. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_mlflow.py +0 -0
  155. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_mlflow_lock.py +0 -0
  156. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_objects.py +0 -0
  157. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_path.py +0 -0
  158. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_storage.py +0 -0
  159. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_storage_base.py +0 -0
  160. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_storage_s3.py +0 -0
  161. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_storage_webdav_request.py +0 -0
  162. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_storage_webdav_zip.py +0 -0
  163. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_testing.py +0 -0
  164. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/tests/test_version.py +0 -0
  165. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects/urls.py +0 -0
  166. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects.egg-info/dependency_links.txt +0 -0
  167. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects.egg-info/requires.txt +0 -0
  168. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/bluer_objects.egg-info/top_level.txt +0 -0
  169. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/pyproject.toml +0 -0
  170. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/requirements.txt +0 -0
  171. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/setup.cfg +0 -0
  172. {bluer_objects-6.175.1 → bluer_objects-6.181.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_objects
3
- Version: 6.175.1
3
+ Version: 6.181.1
4
4
  Summary: 🌀 Object management in Bash.
5
5
  Home-page: https://github.com/kamangir/bluer-objects
6
6
  Author: Arash Abadpour (Kamangir)
@@ -64,6 +64,6 @@ pip install bluer-objects
64
64
 
65
65
  [![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)
66
66
 
67
- built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.175.1`](https://github.com/kamangir/bluer-objects).
67
+ built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.181.1`](https://github.com/kamangir/bluer-objects).
68
68
 
69
69
  built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
@@ -30,4 +30,4 @@ pip install bluer-objects
30
30
 
31
31
  [![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)
32
32
 
33
- built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.175.1`](https://github.com/kamangir/bluer-objects).
33
+ built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.181.1`](https://github.com/kamangir/bluer-objects).
@@ -0,0 +1,18 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function test_bluer_objects_storage_public_upload() {
4
+ local options=$1
5
+
6
+ local object_name=test_bluer_objects_storage_public_upload-$(bluer_ai_string_timestamp_short)
7
+ local object_path=$ABCLI_OBJECT_ROOT/$object_name
8
+ mkdir -pv $object_path
9
+
10
+ bluer_objects_create_test_asset \
11
+ $object_name \
12
+ --depth 1
13
+ [[ $? -ne 0 ]] && return 1
14
+
15
+ bluer_objects_upload \
16
+ public \
17
+ $object_name
18
+ }
@@ -1,9 +1,9 @@
1
1
  #! /usr/bin/env bash
2
2
 
3
- function test_bluer_objects_storage() {
3
+ function test_bluer_objects_storage_upload_download() {
4
4
  local options=$1
5
5
 
6
- local object_name=test_bluer_objects_storage-$(bluer_ai_string_timestamp_short)
6
+ local object_name=test_bluer_objects_storage_upload_download-$(bluer_ai_string_timestamp_short)
7
7
  local object_path=$ABCLI_OBJECT_ROOT/$object_name
8
8
  mkdir -pv $object_path
9
9
 
@@ -3,6 +3,7 @@
3
3
  function bluer_objects_upload() {
4
4
  local options=$1
5
5
  local filename=$(bluer_ai_option "$options" filename)
6
+ local public=$(bluer_ai_option_int "$options" public 0)
6
7
 
7
8
  local object_name=$(bluer_ai_clarify_object $2 .)
8
9
  local object_path=$ABCLI_OBJECT_ROOT/$object_name
@@ -12,10 +13,11 @@ function bluer_objects_upload() {
12
13
  python3 -m bluer_objects.storage \
13
14
  upload \
14
15
  --object_name $object_name \
15
- --filename "$filename"
16
+ --filename "$filename" \
17
+ --public $public
16
18
  [[ $? -ne 0 ]] && return 1
17
19
 
18
- if [[ -z "$filename" ]]; then
20
+ if [[ -z "$filename" ]] && [[ "$public" == 0 ]]; then
19
21
  bluer_objects_mlflow_log_run $object_name
20
22
  fi
21
23
  }
@@ -4,7 +4,7 @@ ICON = "🌀"
4
4
 
5
5
  DESCRIPTION = f"{ICON} Object management in Bash."
6
6
 
7
- VERSION = "6.175.1"
7
+ VERSION = "6.181.1"
8
8
 
9
9
  REPO_NAME = "bluer-objects"
10
10
 
@@ -4,5 +4,6 @@ MLFLOW_LOCK_WAIT_FOR_CLEARANCE=3
4
4
  MLFLOW_LOCK_WAIT_FOR_EXCLUSIVITY=1
5
5
 
6
6
  S3_STORAGE_BUCKET=kamangir
7
+ S3_PUBLIC_STORAGE_BUCKET=kamangir-public
7
8
 
8
9
  BLUER_OBJECTS_STORAGE_INTERFACE=s3
@@ -36,6 +36,7 @@ DUMMY_TEXT = "This is some dummy text. This is some dummy text. This is some dum
36
36
  ABCLI_MLFLOW_EXPERIMENT_PREFIX = get_env("ABCLI_MLFLOW_EXPERIMENT_PREFIX")
37
37
 
38
38
  S3_STORAGE_BUCKET = get_env("S3_STORAGE_BUCKET")
39
+ S3_PUBLIC_STORAGE_BUCKET = get_env("S3_PUBLIC_STORAGE_BUCKET")
39
40
 
40
41
  S3_STORAGE_ENDPOINT_URL = get_env("S3_STORAGE_ENDPOINT_URL")
41
42
  S3_STORAGE_AWS_ACCESS_KEY_ID = get_env("S3_STORAGE_AWS_ACCESS_KEY_ID")
@@ -7,7 +7,12 @@ def help_upload(
7
7
  tokens: List[str],
8
8
  mono: bool,
9
9
  ) -> str:
10
- options = "filename=<filename>"
10
+ options = "".join(
11
+ [
12
+ "filename=<filename>",
13
+ xtra(",public", mono=mono),
14
+ ]
15
+ )
11
16
 
12
17
  return show_usage(
13
18
  [
@@ -86,8 +86,13 @@ class WebDAVInterface(StorageInterface):
86
86
  self,
87
87
  object_name: str,
88
88
  filename: str = "",
89
+ public: bool = False,
89
90
  log: bool = True,
90
91
  ) -> bool:
92
+ if public:
93
+ logger.error("public not supported.")
94
+ return False
95
+
91
96
  if filename:
92
97
  remote_dir = "/".join([object_name] + filename.split("/")[:-1])
93
98
  if not self.mkdir(
@@ -111,5 +116,6 @@ class WebDAVInterface(StorageInterface):
111
116
  return super().upload(
112
117
  object_name=object_name,
113
118
  filename=filename,
119
+ public=public,
114
120
  log=log,
115
121
  )
@@ -278,8 +278,13 @@ class WebDAVRequestInterface(StorageInterface):
278
278
  self,
279
279
  object_name: str,
280
280
  filename: str = "",
281
+ public: bool = False,
281
282
  log: bool = True,
282
283
  ) -> bool:
284
+ if public:
285
+ logger.error("public not supported.")
286
+ return False
287
+
283
288
  if filename:
284
289
  if not self.mkdir(
285
290
  path="{}/{}".format(
@@ -315,6 +320,7 @@ class WebDAVRequestInterface(StorageInterface):
315
320
  return super().upload(
316
321
  object_name=object_name,
317
322
  filename=filename,
323
+ public=public,
318
324
  log=log,
319
325
  )
320
326
 
@@ -339,6 +345,7 @@ class WebDAVRequestInterface(StorageInterface):
339
345
  if not self.upload(
340
346
  object_name=object_name,
341
347
  filename=filename_.split(object_path, 1)[1],
348
+ public=public,
342
349
  log=log,
343
350
  ):
344
351
  return False
@@ -125,8 +125,13 @@ class WebDAVzipInterface(StorageInterface):
125
125
  self,
126
126
  object_name: str,
127
127
  filename: str = "",
128
+ public: bool = False,
128
129
  log: bool = True,
129
130
  ) -> bool:
131
+ if public:
132
+ logger.error("public not supported.")
133
+ return False
134
+
130
135
  object_path = objects.object_path(object_name=object_name)
131
136
 
132
137
  if not zip(
@@ -149,5 +154,6 @@ class WebDAVzipInterface(StorageInterface):
149
154
 
150
155
  return super().upload(
151
156
  object_name=object_name,
157
+ public=public,
152
158
  log=log,
153
159
  )
@@ -56,10 +56,12 @@ def ls(
56
56
  def upload(
57
57
  object_name: str,
58
58
  filename: str = "",
59
+ public: bool = False,
59
60
  log: bool = True,
60
61
  ) -> bool:
61
62
  return interface.upload(
62
63
  object_name=object_name,
63
64
  filename=filename,
65
+ public=public,
64
66
  log=log,
65
67
  )
@@ -24,6 +24,12 @@ parser.add_argument(
24
24
  type=str,
25
25
  default="",
26
26
  )
27
+ parser.add_argument(
28
+ "--public",
29
+ type=int,
30
+ default=0,
31
+ help="0 | 1",
32
+ )
27
33
  parser.add_argument(
28
34
  "--where",
29
35
  type=str,
@@ -80,6 +86,7 @@ elif args.task == "upload":
80
86
  success = storage.upload(
81
87
  object_name=args.object_name,
82
88
  filename=args.filename,
89
+ public=args.public == 1,
83
90
  )
84
91
  else:
85
92
  success = None
@@ -66,14 +66,16 @@ class StorageInterface:
66
66
  self,
67
67
  object_name: str,
68
68
  filename: str = "",
69
+ public: bool = False,
69
70
  log: bool = True,
70
71
  ) -> bool:
71
72
  if log:
72
73
  logger.info(
73
- "{}.upload {}{}".format(
74
+ "{}.upload {}{}{}".format(
74
75
  self.__class__.__name__,
75
76
  object_name,
76
77
  f"/{filename}" if filename else "",
78
+ " [public]" if public else "",
77
79
  )
78
80
  )
79
81
 
@@ -225,6 +225,7 @@ class S3Interface(StorageInterface):
225
225
  self,
226
226
  object_name: str,
227
227
  filename: str = "",
228
+ public: bool = False,
228
229
  log: bool = True,
229
230
  ) -> bool:
230
231
  if filename:
@@ -233,6 +234,10 @@ class S3Interface(StorageInterface):
233
234
  filename=filename,
234
235
  )
235
236
 
237
+ bucket_name = (
238
+ env.S3_PUBLIC_STORAGE_BUCKET if public else env.S3_STORAGE_BUCKET
239
+ )
240
+
236
241
  try:
237
242
  s3_resource = boto3.resource(
238
243
  "s3",
@@ -241,11 +246,11 @@ class S3Interface(StorageInterface):
241
246
  aws_secret_access_key=env.S3_STORAGE_AWS_SECRET_ACCESS_KEY,
242
247
  )
243
248
 
244
- bucket = s3_resource.Bucket(env.S3_STORAGE_BUCKET)
249
+ bucket = s3_resource.Bucket(bucket_name)
245
250
 
246
251
  with open(local_path, "rb") as fp:
247
252
  bucket.put_object(
248
- ACL="private",
253
+ ACL="public-read" if public else "private",
249
254
  Body=fp,
250
255
  Key=f"{object_name}/{filename}",
251
256
  )
@@ -253,9 +258,21 @@ class S3Interface(StorageInterface):
253
258
  logger.error(e)
254
259
  return False
255
260
 
261
+ if public:
262
+
263
+ logger.info(
264
+ "🔗 https://{}.{}/{}/{}".format(
265
+ bucket_name,
266
+ env.S3_STORAGE_ENDPOINT_URL.split("https://", 1)[1],
267
+ object_name,
268
+ filename,
269
+ )
270
+ )
271
+
256
272
  return super().upload(
257
273
  object_name=object_name,
258
274
  filename=filename,
275
+ public=public,
259
276
  log=log,
260
277
  )
261
278
 
@@ -277,6 +294,7 @@ class S3Interface(StorageInterface):
277
294
  if not self.upload(
278
295
  object_name=object_name,
279
296
  filename=filename_.split(object_path, 1)[1],
297
+ public=public,
280
298
  log=log,
281
299
  ):
282
300
  return False
@@ -17,6 +17,7 @@ def test_bluer_objects_env():
17
17
  assert env.ABCLI_MLFLOW_EXPERIMENT_PREFIX
18
18
 
19
19
  assert env.S3_STORAGE_BUCKET
20
+ assert env.S3_PUBLIC_STORAGE_BUCKET
20
21
 
21
22
  assert env.S3_STORAGE_ENDPOINT_URL
22
23
  assert env.S3_STORAGE_AWS_ACCESS_KEY_ID
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_objects
3
- Version: 6.175.1
3
+ Version: 6.181.1
4
4
  Summary: 🌀 Object management in Bash.
5
5
  Home-page: https://github.com/kamangir/bluer-objects
6
6
  Author: Arash Abadpour (Kamangir)
@@ -64,6 +64,6 @@ pip install bluer-objects
64
64
 
65
65
  [![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)
66
66
 
67
- built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.175.1`](https://github.com/kamangir/bluer-objects).
67
+ built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.181.1`](https://github.com/kamangir/bluer-objects).
68
68
 
69
69
  built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
@@ -74,7 +74,8 @@ bluer_objects/.abcli/tests/mlflow_lock.sh
74
74
  bluer_objects/.abcli/tests/mlflow_logging.sh
75
75
  bluer_objects/.abcli/tests/mlflow_tags.sh
76
76
  bluer_objects/.abcli/tests/mlflow_test.sh
77
- bluer_objects/.abcli/tests/storage.sh
77
+ bluer_objects/.abcli/tests/storage_public_upload.sh
78
+ bluer_objects/.abcli/tests/storage_upload_download.sh
78
79
  bluer_objects/.abcli/tests/version.sh
79
80
  bluer_objects/README/__init__.py
80
81
  bluer_objects/README/functions.py
File without changes