bluer-objects 6.258.1__tar.gz → 6.268.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 (191) hide show
  1. {bluer_objects-6.258.1/bluer_objects.egg-info → bluer_objects-6.268.1}/PKG-INFO +2 -2
  2. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/README.md +1 -1
  3. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/gif.sh +18 -0
  4. bluer_objects-6.268.1/bluer_objects/.abcli/ls.sh +24 -0
  5. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/tests/help.sh +1 -4
  6. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/tests/ls.sh +5 -1
  7. bluer_objects-6.268.1/bluer_objects/.abcli/tests/open.sh +11 -0
  8. bluer_objects-6.268.1/bluer_objects/.abcli/tests/open_gif_open.sh +14 -0
  9. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/__init__.py +1 -1
  10. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/config.env +3 -1
  11. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/env.py +2 -0
  12. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/help/functions.py +1 -1
  13. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/help/gif.py +24 -0
  14. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/help/ls.py +15 -5
  15. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/storage/__init__.py +10 -0
  16. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/storage/__main__.py +17 -6
  17. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/storage/base.py +30 -0
  18. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/storage/s3.py +57 -35
  19. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_env.py +2 -0
  20. {bluer_objects-6.258.1 → bluer_objects-6.268.1/bluer_objects.egg-info}/PKG-INFO +2 -2
  21. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects.egg-info/SOURCES.txt +2 -4
  22. bluer_objects-6.258.1/bluer_objects/.abcli/ls.sh +0 -18
  23. bluer_objects-6.258.1/bluer_objects/.abcli/storage/download_file.sh +0 -9
  24. bluer_objects-6.258.1/bluer_objects/.abcli/storage/exists.sh +0 -8
  25. bluer_objects-6.258.1/bluer_objects/.abcli/storage/list.sh +0 -8
  26. bluer_objects-6.258.1/bluer_objects/.abcli/storage/rm.sh +0 -11
  27. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/LICENSE +0 -0
  28. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/MANIFEST.in +0 -0
  29. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/abcli.sh +0 -0
  30. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/actions.sh +0 -0
  31. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/aka.sh +0 -0
  32. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/alias.sh +0 -0
  33. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/bluer_objects.sh +0 -0
  34. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/clone.sh +0 -0
  35. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/create_test_asset.sh +0 -0
  36. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/download.sh +0 -0
  37. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/file.sh +0 -0
  38. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/host.sh +0 -0
  39. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/metadata/get.sh +0 -0
  40. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/metadata/post.sh +0 -0
  41. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/metadata.sh +0 -0
  42. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/mlflow/browse.sh +0 -0
  43. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/mlflow/cache.sh +0 -0
  44. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/mlflow/deploy.sh +0 -0
  45. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/mlflow/list_registered_models.sh +0 -0
  46. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/mlflow/lock/lock.sh +0 -0
  47. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/mlflow/lock/unlock.sh +0 -0
  48. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/mlflow/lock.sh +0 -0
  49. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/mlflow/log_artifacts.sh +0 -0
  50. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/mlflow/log_run.sh +0 -0
  51. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/mlflow/run.sh +0 -0
  52. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/mlflow/tags/clone.sh +0 -0
  53. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/mlflow/tags/get.sh +0 -0
  54. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/mlflow/tags/search.sh +0 -0
  55. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/mlflow/tags/set.sh +0 -0
  56. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/mlflow/tags.sh +0 -0
  57. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/mlflow/test.sh +0 -0
  58. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/mlflow/transition.sh +0 -0
  59. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/mlflow.sh +0 -0
  60. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/object.sh +0 -0
  61. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/select.sh +0 -0
  62. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/storage/clear.sh +0 -0
  63. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/storage/status.sh +0 -0
  64. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/storage.sh +0 -0
  65. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/tests/README.sh +0 -0
  66. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/tests/clone.sh +0 -0
  67. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/tests/create_test_asset.sh +0 -0
  68. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/tests/gif.sh +0 -0
  69. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/tests/host.sh +0 -0
  70. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/tests/metadata.sh +0 -0
  71. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/tests/mlflow_cache.sh +0 -0
  72. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/tests/mlflow_lock.sh +0 -0
  73. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/tests/mlflow_logging.sh +0 -0
  74. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/tests/mlflow_tags.sh +0 -0
  75. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/tests/mlflow_test.sh +0 -0
  76. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/tests/storage_public_upload.sh +0 -0
  77. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/tests/storage_upload_download.sh +0 -0
  78. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/tests/version.sh +0 -0
  79. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/tests/web_is_accessible.sh +0 -0
  80. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/tests/web_where_am_ai.sh +0 -0
  81. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/upload.sh +0 -0
  82. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/url.sh +0 -0
  83. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/web/is_accessible.sh +0 -0
  84. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/.abcli/web/where_am_i.sh +0 -0
  85. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/README/__init__.py +0 -0
  86. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/README/functions.py +0 -0
  87. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/README/items.py +0 -0
  88. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/README/utils.py +0 -0
  89. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/__main__.py +0 -0
  90. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/file/__init__.py +0 -0
  91. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/file/__main__.py +0 -0
  92. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/file/classes.py +0 -0
  93. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/file/functions.py +0 -0
  94. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/file/load.py +0 -0
  95. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/file/save.py +0 -0
  96. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/graphics/__init__.py +0 -0
  97. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/graphics/__main__.py +0 -0
  98. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/graphics/frame.py +0 -0
  99. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/graphics/gif.py +0 -0
  100. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/graphics/screen.py +0 -0
  101. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/graphics/signature.py +0 -0
  102. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/graphics/text.py +0 -0
  103. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/help/__init__.py +0 -0
  104. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/help/__main__.py +0 -0
  105. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/help/clone.py +0 -0
  106. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/help/create_test_asset.py +0 -0
  107. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/help/download.py +0 -0
  108. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/help/host.py +0 -0
  109. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/help/metadata.py +0 -0
  110. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/help/mlflow/__init__.py +0 -0
  111. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/help/mlflow/cache.py +0 -0
  112. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/help/mlflow/lock.py +0 -0
  113. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/help/mlflow/tags.py +0 -0
  114. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/help/upload.py +0 -0
  115. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/help/web.py +0 -0
  116. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/host/__init__.py +0 -0
  117. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/host/__main__.py +0 -0
  118. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/host/functions.py +0 -0
  119. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/logger/__init__.py +0 -0
  120. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/logger/image.py +0 -0
  121. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/logger/matrix.py +0 -0
  122. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/markdown.py +0 -0
  123. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/metadata/__init__.py +0 -0
  124. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/metadata/__main__.py +0 -0
  125. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/metadata/enums.py +0 -0
  126. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/metadata/flatten.py +0 -0
  127. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/metadata/get.py +0 -0
  128. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/metadata/post.py +0 -0
  129. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/mlflow/__init__.py +0 -0
  130. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/mlflow/__main__.py +0 -0
  131. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/mlflow/cache.py +0 -0
  132. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/mlflow/lock/__init__.py +0 -0
  133. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/mlflow/lock/__main__.py +0 -0
  134. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/mlflow/lock/functions.py +0 -0
  135. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/mlflow/logging.py +0 -0
  136. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/mlflow/models.py +0 -0
  137. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/mlflow/objects.py +0 -0
  138. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/mlflow/runs.py +0 -0
  139. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/mlflow/tags.py +0 -0
  140. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/mlflow/testing.py +0 -0
  141. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/objects.py +0 -0
  142. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/path.py +0 -0
  143. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/sample.env +0 -0
  144. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/storage/WebDAV.py +0 -0
  145. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/storage/WebDAVrequest.py +0 -0
  146. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/storage/WebDAVzip.py +0 -0
  147. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/storage/policies.py +0 -0
  148. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/testing/__init__.py +0 -0
  149. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/testing/__main__.py +0 -0
  150. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/testing/functions.py +0 -0
  151. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/__init__.py +0 -0
  152. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_README.py +0 -0
  153. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_file_download.py +0 -0
  154. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_file_load_save.py +0 -0
  155. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_file_load_save_text.py +0 -0
  156. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_fullname.py +0 -0
  157. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_graphics.py +0 -0
  158. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_graphics_frame.py +0 -0
  159. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_graphics_gif.py +0 -0
  160. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_graphics_screen.py +0 -0
  161. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_graphics_signature.py +0 -0
  162. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_graphics_text.py +0 -0
  163. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_log_image_grid.py +0 -0
  164. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_logger.py +0 -0
  165. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_logger_matrix.py +0 -0
  166. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_markdown.py +0 -0
  167. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_metadata.py +0 -0
  168. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_metadata_flatten.py +0 -0
  169. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_mlflow.py +0 -0
  170. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_mlflow_lock.py +0 -0
  171. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_objects.py +0 -0
  172. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_path.py +0 -0
  173. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_storage.py +0 -0
  174. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_storage_base.py +0 -0
  175. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_storage_s3.py +0 -0
  176. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_storage_webdav_request.py +0 -0
  177. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_storage_webdav_zip.py +0 -0
  178. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_testing.py +0 -0
  179. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_version.py +0 -0
  180. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/tests/test_web_is_accessible.py +0 -0
  181. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/urls.py +0 -0
  182. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/web/__init__.py +0 -0
  183. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/web/__main__.py +0 -0
  184. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects/web/functions.py +0 -0
  185. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects.egg-info/dependency_links.txt +0 -0
  186. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects.egg-info/requires.txt +0 -0
  187. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/bluer_objects.egg-info/top_level.txt +0 -0
  188. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/pyproject.toml +0 -0
  189. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/requirements.txt +0 -0
  190. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/setup.cfg +0 -0
  191. {bluer_objects-6.258.1 → bluer_objects-6.268.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_objects
3
- Version: 6.258.1
3
+ Version: 6.268.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.258.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.268.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.258.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.268.1`](https://github.com/kamangir/bluer-objects).
@@ -2,6 +2,24 @@
2
2
 
3
3
  function bluer_objects_gif() {
4
4
  local options=$1
5
+ local do_open=$(bluer_ai_option_int "$options" open 0)
6
+ if [[ "$do_open" == 1 ]]; then
7
+ local options=$2
8
+ local do_download=$(bluer_ai_option_int "$options" download 0)
9
+
10
+ local object_name=$(bluer_ai_clarify_object $3 .)
11
+ local filename=$(bluer_ai_option "$options" filename $object_name.gif)
12
+
13
+ [[ "$do_download" == 1 ]] &&
14
+ bluer_objects_download \
15
+ filename=$filename \
16
+ $object_name
17
+
18
+ bluer_ai_browse $ABCLI_OBJECT_ROOT/$object_name/$filename
19
+
20
+ return
21
+ fi
22
+
5
23
  local do_dryrun=$(bluer_ai_option_int "$options" dryrun 0)
6
24
  local do_download=$(bluer_ai_option_int "$options" download $(bluer_ai_not $do_dryrun))
7
25
  local do_upload=$(bluer_ai_option_int "$options" upload $(bluer_ai_not $do_dryrun))
@@ -0,0 +1,24 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function bluer_objects_ls() {
4
+ local options=$1
5
+ local where=$(bluer_ai_option_choice "$options" cloud,local local)
6
+ local objects=$(bluer_ai_option_int "$options" objects 0)
7
+
8
+ if [[ "$objects" == 1 ]]; then
9
+ python3 -m bluer_objects.storage \
10
+ ls_objects \
11
+ --where $where \
12
+ "${@:2}"
13
+
14
+ return
15
+ fi
16
+
17
+ local object_name=$(bluer_ai_clarify_object $2 .)
18
+
19
+ python3 -m bluer_objects.storage \
20
+ ls \
21
+ --object_name $object_name \
22
+ --where $where \
23
+ "${@:3}"
24
+ }
@@ -29,6 +29,7 @@ function test_bluer_objects_help() {
29
29
  "@download" \
30
30
  \
31
31
  "@gif" \
32
+ "@gif open" \
32
33
  \
33
34
  "@ls" \
34
35
  \
@@ -69,10 +70,6 @@ function test_bluer_objects_help() {
69
70
  \
70
71
  "@storage" \
71
72
  "@storage clear" \
72
- "@storage download_file" \
73
- "@storage exists" \
74
- "@storage list" \
75
- "@storage rm" \
76
73
  "@storage status" \
77
74
  \
78
75
  "@upload" \
@@ -20,5 +20,9 @@ function test_bluer_objects_ls() {
20
20
  [[ $? -ne 0 ]] && return 1
21
21
  bluer_ai_hr
22
22
 
23
- bluer_objects_ls $abcli_path_bash/tests/
23
+ bluer_objects_ls cloud,objects --prefix 2025-09
24
+ [[ $? -ne 0 ]] && return 1
25
+ bluer_ai_hr
26
+
27
+ bluer_objects_ls local,objects --prefix 2025-09
24
28
  }
@@ -0,0 +1,11 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function test_bluer_objects_open() {
4
+ local options=$1
5
+
6
+ bluer_ai_eval ,$options \
7
+ bluer_ai_open \
8
+ ,$options \
9
+ $BLUER_OBJECTS_TEST_OBJECT \
10
+ "${@:2}"
11
+ }
@@ -0,0 +1,14 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function test_bluer_objects_gif_open() {
4
+ local options=$1
5
+
6
+ bluer_ai_eval ,$options \
7
+ bluer_objects_gif \
8
+ open \
9
+ download \
10
+ $BLUER_OBJECTS_TEST_OBJECT \
11
+ "${@:2}"
12
+
13
+ return 0
14
+ }
@@ -4,7 +4,7 @@ ICON = "🌀"
4
4
 
5
5
  DESCRIPTION = f"{ICON} Object management in Bash."
6
6
 
7
- VERSION = "6.258.1"
7
+ VERSION = "6.268.1"
8
8
 
9
9
  REPO_NAME = "bluer-objects"
10
10
 
@@ -6,4 +6,6 @@ MLFLOW_LOCK_WAIT_FOR_EXCLUSIVITY=1
6
6
  S3_STORAGE_BUCKET=kamangir
7
7
  S3_PUBLIC_STORAGE_BUCKET=kamangir-public
8
8
 
9
- BLUER_OBJECTS_STORAGE_INTERFACE=s3
9
+ BLUER_OBJECTS_STORAGE_INTERFACE=s3
10
+
11
+ BLUER_OBJECTS_TEST_OBJECT=2025-09-22-13-11-08-cjbb3q
@@ -61,3 +61,5 @@ MLFLOW_LOCK_WAIT_FOR_EXCLUSIVITY = get_env("MLFLOW_LOCK_WAIT_FOR_EXCLUSIVITY", 1
61
61
  WEBDAV_HOSTNAME = get_env("WEBDAV_HOSTNAME")
62
62
  WEBDAV_LOGIN = get_env("WEBDAV_LOGIN")
63
63
  WEBDAV_PASSWORD = get_env("WEBDAV_PASSWORD")
64
+
65
+ BLUER_OBJECTS_TEST_OBJECT = get_env("BLUER_OBJECTS_TEST_OBJECT")
@@ -4,7 +4,7 @@ from bluer_objects import ALIAS
4
4
  from bluer_objects.help.clone import help_clone
5
5
  from bluer_objects.help.create_test_asset import help_create_test_asset
6
6
  from bluer_objects.help.download import help_download
7
- from bluer_objects.help.gif import help_gif
7
+ from bluer_objects.help.gif import help_functions as help_gif
8
8
  from bluer_objects.help.host import help_functions as help_host
9
9
  from bluer_objects.help.ls import help_ls
10
10
  from bluer_objects.help.metadata import help_functions as help_metadata
@@ -26,3 +26,27 @@ def help_gif(
26
26
  "generate <object-name>.gif.",
27
27
  mono=mono,
28
28
  )
29
+
30
+
31
+ def help_gif_open(
32
+ tokens: List[str],
33
+ mono: bool,
34
+ ) -> str:
35
+ options = xtra("download,filename=<filename.gif>", mono=mono)
36
+
37
+ return show_usage(
38
+ [
39
+ "@gif",
40
+ "open",
41
+ f"[{options}]",
42
+ "[.|<object-name>]",
43
+ ],
44
+ "open <object-name>.gif.",
45
+ mono=mono,
46
+ )
47
+
48
+
49
+ help_functions = {
50
+ "": help_gif,
51
+ "open": help_gif_open,
52
+ }
@@ -15,20 +15,30 @@ def help_ls(
15
15
  usage_1 = show_usage(
16
16
  [
17
17
  "@ls",
18
- "cloud | local",
19
- "<object-name>",
18
+ "[cloud|local]",
19
+ "[.|<object-name>]",
20
20
  ]
21
21
  + args,
22
22
  "ls <object-name>.",
23
23
  mono=mono,
24
24
  )
25
25
 
26
+ # ---
27
+
28
+ args = [
29
+ "[--delim <space>]",
30
+ "[--log <0>]",
31
+ "[--prefix <prefix>]",
32
+ ]
33
+
26
34
  usage_2 = show_usage(
27
35
  [
28
36
  "@ls",
29
- "<path>",
30
- ],
31
- "ls <path>.",
37
+ "[cloud|local]",
38
+ "objects",
39
+ ]
40
+ + args,
41
+ "ls objects.",
32
42
  mono=mono,
33
43
  )
34
44
 
@@ -56,6 +56,16 @@ def ls(
56
56
  )
57
57
 
58
58
 
59
+ def ls_objects(
60
+ prefix: str,
61
+ where: str = "local",
62
+ ) -> Tuple[bool, List[str]]:
63
+ return interface.ls_objects(
64
+ prefix=prefix,
65
+ where=where,
66
+ )
67
+
68
+
59
69
  def upload(
60
70
  object_name: str,
61
71
  filename: str = "",
@@ -2,6 +2,7 @@ import argparse
2
2
 
3
3
  from blueness import module
4
4
  from blueness.argparse.generic import sys_exit
5
+ from bluer_options.logger.config import log_list
5
6
 
6
7
  from bluer_objects import NAME
7
8
  from bluer_objects import storage
@@ -14,7 +15,7 @@ parser = argparse.ArgumentParser(NAME)
14
15
  parser.add_argument(
15
16
  "task",
16
17
  type=str,
17
- help="clear | download | ls | upload",
18
+ help="clear | download | ls | ls_objects | upload",
18
19
  )
19
20
  parser.add_argument(
20
21
  "--object_name",
@@ -66,6 +67,11 @@ parser.add_argument(
66
67
  default="none",
67
68
  help=" | ".join(sorted([policy.name.lower() for policy in DownloadPolicy])),
68
69
  )
70
+ parser.add_argument(
71
+ "--prefix",
72
+ type=str,
73
+ default="",
74
+ )
69
75
  args = parser.parse_args()
70
76
 
71
77
  delim = " " if args.delim == "space" else args.delim
@@ -88,14 +94,19 @@ elif args.task == "ls":
88
94
  )
89
95
 
90
96
  if args.log:
91
- logger.info(
92
- "{:,} file(s).".format(len(list_of_files)),
93
- )
94
- for index, filename in enumerate(list_of_files):
95
- logger.info(f"#{index+1: 4d} - {filename}")
97
+ log_list(logger, "", list_of_files, "file(s)", 999)
96
98
  else:
97
99
  print(delim.join(list_of_files))
100
+ elif args.task == "ls_objects":
101
+ success, list_of_objects = storage.ls_objects(
102
+ prefix=args.prefix,
103
+ where=args.where,
104
+ )
98
105
 
106
+ if args.log:
107
+ log_list(logger, "", list_of_objects, "objects(s)", 999)
108
+ else:
109
+ print(delim.join(list_of_objects))
99
110
  elif args.task == "upload":
100
111
  success = storage.upload(
101
112
  object_name=args.object_name,
@@ -3,8 +3,10 @@ import glob
3
3
  from typing import Tuple, List
4
4
 
5
5
  from bluer_objects import objects
6
+ from bluer_objects import path
6
7
  from bluer_objects.storage.policies import DownloadPolicy
7
8
  from bluer_objects.logger import logger
9
+ from bluer_objects.env import ABCLI_OBJECT_ROOT
8
10
 
9
11
 
10
12
  class StorageInterface:
@@ -69,6 +71,34 @@ class StorageInterface:
69
71
  logger.error(f"Unknown 'where': {where}")
70
72
  return False, []
71
73
 
74
+ def ls_objects(
75
+ self,
76
+ prefix: str,
77
+ where: str = "local",
78
+ ) -> Tuple[bool, List[str]]:
79
+ if where == "local":
80
+ return True, sorted(
81
+ [
82
+ os.path.relpath(dirname, start=ABCLI_OBJECT_ROOT)
83
+ for dirname in glob.glob(
84
+ os.path.join(
85
+ ABCLI_OBJECT_ROOT,
86
+ "*",
87
+ ),
88
+ recursive=False,
89
+ )
90
+ if not os.path.isfile(dirname)
91
+ and path.name(dirname).startswith(prefix)
92
+ ]
93
+ )
94
+
95
+ if where == "cloud":
96
+ logger.error("not implemented")
97
+ return False, []
98
+
99
+ logger.error(f"Unknown 'where': {where}")
100
+ return False, []
101
+
72
102
  def upload(
73
103
  self,
74
104
  object_name: str,
@@ -31,41 +31,9 @@ class S3Interface(StorageInterface):
31
31
  )
32
32
  )
33
33
 
34
- try:
35
- s3 = boto3.client(
36
- "s3",
37
- endpoint_url=env.S3_STORAGE_ENDPOINT_URL,
38
- aws_access_key_id=env.S3_STORAGE_AWS_ACCESS_KEY_ID,
39
- aws_secret_access_key=env.S3_STORAGE_AWS_SECRET_ACCESS_KEY,
40
- )
41
-
42
- paginator = s3.get_paginator("list_objects_v2")
43
- pages = paginator.paginate(
44
- Bucket=env.S3_STORAGE_BUCKET,
45
- Prefix="test",
46
- )
47
- except Exception as e:
48
- logger.error(e)
49
- return False
50
-
51
- list_of_objects = sorted(
52
- list(
53
- set(
54
- reduce(
55
- lambda x, y: x + y,
56
- [
57
- [
58
- obj["Key"].split("/", 1)[0]
59
- for obj in page.get("Contents", [])
60
- ]
61
- for page in pages
62
- ],
63
- [],
64
- )
65
- )
66
- )
67
- )
68
-
34
+ success, list_of_objects = self.list_of_objects(prefix="test")
35
+ if not success:
36
+ return success
69
37
  logger.info(f"{len(list_of_objects)} object(s) to delete.")
70
38
 
71
39
  for object_name in tqdm(list_of_objects):
@@ -188,6 +156,47 @@ class S3Interface(StorageInterface):
188
156
 
189
157
  return True
190
158
 
159
+ def list_of_objects(
160
+ self,
161
+ prefix: str = "",
162
+ ) -> Tuple[bool, List[str]]:
163
+ try:
164
+ s3 = boto3.client(
165
+ "s3",
166
+ endpoint_url=env.S3_STORAGE_ENDPOINT_URL,
167
+ aws_access_key_id=env.S3_STORAGE_AWS_ACCESS_KEY_ID,
168
+ aws_secret_access_key=env.S3_STORAGE_AWS_SECRET_ACCESS_KEY,
169
+ )
170
+
171
+ paginator = s3.get_paginator("list_objects_v2")
172
+ pages = paginator.paginate(
173
+ Bucket=env.S3_STORAGE_BUCKET,
174
+ Prefix=prefix,
175
+ )
176
+ except Exception as e:
177
+ logger.error(e)
178
+ return False, []
179
+
180
+ list_of_objects = sorted(
181
+ list(
182
+ set(
183
+ reduce(
184
+ lambda x, y: x + y,
185
+ [
186
+ [
187
+ obj["Key"].split("/", 1)[0]
188
+ for obj in page.get("Contents", [])
189
+ ]
190
+ for page in pages
191
+ ],
192
+ [],
193
+ )
194
+ )
195
+ )
196
+ )
197
+
198
+ return True, list_of_objects
199
+
191
200
  def ls(
192
201
  self,
193
202
  object_name: str,
@@ -232,6 +241,19 @@ class S3Interface(StorageInterface):
232
241
  where=where,
233
242
  )
234
243
 
244
+ def ls_objects(
245
+ self,
246
+ prefix: str,
247
+ where: str = "local",
248
+ ) -> Tuple[bool, List[str]]:
249
+ if where == "cloud":
250
+ return self.list_of_objects(prefix)
251
+
252
+ return super().ls_objects(
253
+ prefix=prefix,
254
+ where=where,
255
+ )
256
+
235
257
  def upload(
236
258
  self,
237
259
  object_name: str,
@@ -41,3 +41,5 @@ def test_bluer_objects_env():
41
41
  assert env.WEBDAV_HOSTNAME
42
42
  assert env.WEBDAV_LOGIN
43
43
  assert env.WEBDAV_PASSWORD
44
+
45
+ assert env.BLUER_OBJECTS_TEST_OBJECT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_objects
3
- Version: 6.258.1
3
+ Version: 6.268.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.258.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.268.1`](https://github.com/kamangir/bluer-objects).
68
68
 
69
69
  built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
@@ -57,10 +57,6 @@ bluer_objects/.abcli/mlflow/tags/get.sh
57
57
  bluer_objects/.abcli/mlflow/tags/search.sh
58
58
  bluer_objects/.abcli/mlflow/tags/set.sh
59
59
  bluer_objects/.abcli/storage/clear.sh
60
- bluer_objects/.abcli/storage/download_file.sh
61
- bluer_objects/.abcli/storage/exists.sh
62
- bluer_objects/.abcli/storage/list.sh
63
- bluer_objects/.abcli/storage/rm.sh
64
60
  bluer_objects/.abcli/storage/status.sh
65
61
  bluer_objects/.abcli/tests/README.sh
66
62
  bluer_objects/.abcli/tests/clone.sh
@@ -75,6 +71,8 @@ bluer_objects/.abcli/tests/mlflow_lock.sh
75
71
  bluer_objects/.abcli/tests/mlflow_logging.sh
76
72
  bluer_objects/.abcli/tests/mlflow_tags.sh
77
73
  bluer_objects/.abcli/tests/mlflow_test.sh
74
+ bluer_objects/.abcli/tests/open.sh
75
+ bluer_objects/.abcli/tests/open_gif_open.sh
78
76
  bluer_objects/.abcli/tests/storage_public_upload.sh
79
77
  bluer_objects/.abcli/tests/storage_upload_download.sh
80
78
  bluer_objects/.abcli/tests/version.sh
@@ -1,18 +0,0 @@
1
- #! /usr/bin/env bash
2
-
3
- function bluer_objects_ls() {
4
- local options=$1
5
- local where=$(bluer_ai_option_choice "$options" cloud,local)
6
-
7
- if [[ -z "$where" ]]; then
8
- ls -1 "$@"
9
- else
10
- local object_name=$(bluer_ai_clarify_object $2 .)
11
-
12
- python3 -m bluer_objects.storage \
13
- ls \
14
- --object_name $object_name \
15
- --where $where \
16
- "${@:3}"
17
- fi
18
- }
@@ -1,9 +0,0 @@
1
- #! /usr/bin/env bash
2
-
3
- function bluer_ai_storage_download_file() {
4
- python3 -m bluer_objects.storage \
5
- download_file \
6
- --object_name "$1" \
7
- --filename "$2" \
8
- "${@:3}"
9
- }
@@ -1,8 +0,0 @@
1
- #! /usr/bin/env bash
2
-
3
- function bluer_ai_storage_exists() {
4
- python3 -m bluer_objects.storage \
5
- exists \
6
- --object_name "$1" \
7
- "${@:2}"
8
- }
@@ -1,8 +0,0 @@
1
- #! /usr/bin/env bash
2
-
3
- function bluer_ai_storage_list() {
4
- python3 -m bluer_objects.storage \
5
- list_of_objects \
6
- --prefix "$1" \
7
- "${@:2}"
8
- }
@@ -1,11 +0,0 @@
1
- #! /usr/bin/env bash
2
-
3
- function bluer_ai_storage_rm() {
4
- local options=$1
5
- local do_dryrun=$(bluer_ai_option_int "$options" dryrun 1)
6
-
7
- local object_name=$(bluer_ai_clarify_object $2 void)
8
-
9
- bluer_ai_eval dryrun=$do_dryrun \
10
- rm -rfv $ABCLI_OBJECT_ROOT/$object_name
11
- }
File without changes