bluer-objects 6.309.1__tar.gz → 6.322.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 (203) hide show
  1. {bluer_objects-6.309.1/bluer_objects.egg-info → bluer_objects-6.322.1}/PKG-INFO +2 -2
  2. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/README.md +1 -1
  3. bluer_objects-6.322.1/bluer_objects/.abcli/file.sh +19 -0
  4. bluer_objects-6.322.1/bluer_objects/.abcli/tests/file.sh +64 -0
  5. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/tests/help.sh +4 -0
  6. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/README/__init__.py +1 -0
  7. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/__init__.py +1 -1
  8. bluer_objects-6.322.1/bluer_objects/file/__main__.py +101 -0
  9. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/file/save.py +12 -3
  10. bluer_objects-6.322.1/bluer_objects/help/file.py +59 -0
  11. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/help/functions.py +2 -0
  12. {bluer_objects-6.309.1 → bluer_objects-6.322.1/bluer_objects.egg-info}/PKG-INFO +2 -2
  13. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects.egg-info/SOURCES.txt +2 -0
  14. bluer_objects-6.309.1/bluer_objects/.abcli/file.sh +0 -8
  15. bluer_objects-6.309.1/bluer_objects/file/__main__.py +0 -56
  16. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/LICENSE +0 -0
  17. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/MANIFEST.in +0 -0
  18. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/abcli.sh +0 -0
  19. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/actions.sh +0 -0
  20. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/aka.sh +0 -0
  21. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/alias.sh +0 -0
  22. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/assets/cd.sh +0 -0
  23. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/assets/mv.sh +0 -0
  24. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/assets/publish.sh +0 -0
  25. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/assets.sh +0 -0
  26. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/bluer_objects.sh +0 -0
  27. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/clone.sh +0 -0
  28. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/create_test_asset.sh +0 -0
  29. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/download.sh +0 -0
  30. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/gif.sh +0 -0
  31. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/host.sh +0 -0
  32. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/ls.sh +0 -0
  33. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/metadata/get.sh +0 -0
  34. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/metadata/post.sh +0 -0
  35. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/metadata.sh +0 -0
  36. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/mlflow/browse.sh +0 -0
  37. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/mlflow/cache.sh +0 -0
  38. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/mlflow/deploy.sh +0 -0
  39. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/mlflow/list_registered_models.sh +0 -0
  40. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/mlflow/lock/lock.sh +0 -0
  41. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/mlflow/lock/unlock.sh +0 -0
  42. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/mlflow/lock.sh +0 -0
  43. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/mlflow/log_artifacts.sh +0 -0
  44. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/mlflow/log_run.sh +0 -0
  45. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/mlflow/run.sh +0 -0
  46. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/mlflow/tags/clone.sh +0 -0
  47. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/mlflow/tags/get.sh +0 -0
  48. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/mlflow/tags/search.sh +0 -0
  49. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/mlflow/tags/set.sh +0 -0
  50. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/mlflow/tags.sh +0 -0
  51. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/mlflow/test.sh +0 -0
  52. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/mlflow/transition.sh +0 -0
  53. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/mlflow.sh +0 -0
  54. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/object.sh +0 -0
  55. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/select.sh +0 -0
  56. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/storage/clear.sh +0 -0
  57. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/storage/status.sh +0 -0
  58. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/storage.sh +0 -0
  59. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/tests/README.sh +0 -0
  60. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/tests/clone.sh +0 -0
  61. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/tests/create_test_asset.sh +0 -0
  62. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/tests/gif.sh +0 -0
  63. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/tests/host.sh +0 -0
  64. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/tests/ls.sh +0 -0
  65. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/tests/metadata.sh +0 -0
  66. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/tests/mlflow_cache.sh +0 -0
  67. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/tests/mlflow_lock.sh +0 -0
  68. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/tests/mlflow_logging.sh +0 -0
  69. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/tests/mlflow_tags.sh +0 -0
  70. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/tests/mlflow_test.sh +0 -0
  71. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/tests/open.sh +0 -0
  72. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/tests/open_gif_open.sh +0 -0
  73. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/tests/storage_public_upload.sh +0 -0
  74. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/tests/storage_upload_download.sh +0 -0
  75. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/tests/version.sh +0 -0
  76. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/tests/web_is_accessible.sh +0 -0
  77. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/tests/web_where_am_ai.sh +0 -0
  78. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/upload.sh +0 -0
  79. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/url.sh +0 -0
  80. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/web/is_accessible.sh +0 -0
  81. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/.abcli/web/where_am_i.sh +0 -0
  82. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/README/consts.py +0 -0
  83. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/README/functions.py +0 -0
  84. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/README/items.py +0 -0
  85. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/README/utils.py +0 -0
  86. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/__main__.py +0 -0
  87. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/assets/__init__.py +0 -0
  88. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/assets/__main__.py +0 -0
  89. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/assets/functions.py +0 -0
  90. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/config.env +0 -0
  91. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/env.py +0 -0
  92. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/file/__init__.py +0 -0
  93. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/file/classes.py +0 -0
  94. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/file/functions.py +0 -0
  95. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/file/load.py +0 -0
  96. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/graphics/__init__.py +0 -0
  97. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/graphics/__main__.py +0 -0
  98. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/graphics/frame.py +0 -0
  99. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/graphics/gif.py +0 -0
  100. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/graphics/screen.py +0 -0
  101. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/graphics/signature.py +0 -0
  102. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/graphics/text.py +0 -0
  103. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/help/__init__.py +0 -0
  104. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/help/__main__.py +0 -0
  105. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/help/assets.py +0 -0
  106. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/help/clone.py +0 -0
  107. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/help/create_test_asset.py +0 -0
  108. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/help/download.py +0 -0
  109. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/help/gif.py +0 -0
  110. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/help/host.py +0 -0
  111. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/help/ls.py +0 -0
  112. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/help/metadata.py +0 -0
  113. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/help/mlflow/__init__.py +0 -0
  114. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/help/mlflow/cache.py +0 -0
  115. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/help/mlflow/lock.py +0 -0
  116. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/help/mlflow/tags.py +0 -0
  117. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/help/upload.py +0 -0
  118. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/help/web.py +0 -0
  119. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/host/__init__.py +0 -0
  120. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/host/__main__.py +0 -0
  121. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/host/functions.py +0 -0
  122. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/logger/__init__.py +0 -0
  123. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/logger/image.py +0 -0
  124. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/logger/matrix.py +0 -0
  125. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/logger/stitch.py +0 -0
  126. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/markdown.py +0 -0
  127. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/metadata/__init__.py +0 -0
  128. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/metadata/__main__.py +0 -0
  129. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/metadata/enums.py +0 -0
  130. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/metadata/flatten.py +0 -0
  131. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/metadata/get.py +0 -0
  132. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/metadata/post.py +0 -0
  133. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/mlflow/__init__.py +0 -0
  134. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/mlflow/__main__.py +0 -0
  135. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/mlflow/cache.py +0 -0
  136. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/mlflow/lock/__init__.py +0 -0
  137. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/mlflow/lock/__main__.py +0 -0
  138. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/mlflow/lock/functions.py +0 -0
  139. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/mlflow/logging.py +0 -0
  140. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/mlflow/models.py +0 -0
  141. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/mlflow/objects.py +0 -0
  142. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/mlflow/runs.py +0 -0
  143. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/mlflow/tags.py +0 -0
  144. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/mlflow/testing.py +0 -0
  145. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/objects.py +0 -0
  146. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/path.py +0 -0
  147. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/sample.env +0 -0
  148. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/storage/WebDAV.py +0 -0
  149. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/storage/WebDAVrequest.py +0 -0
  150. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/storage/WebDAVzip.py +0 -0
  151. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/storage/__init__.py +0 -0
  152. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/storage/__main__.py +0 -0
  153. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/storage/base.py +0 -0
  154. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/storage/policies.py +0 -0
  155. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/storage/s3.py +0 -0
  156. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/testing/__init__.py +0 -0
  157. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/testing/__main__.py +0 -0
  158. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/testing/functions.py +0 -0
  159. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/__init__.py +0 -0
  160. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_README.py +0 -0
  161. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_README_consts.py +0 -0
  162. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_README_items.py +0 -0
  163. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_env.py +0 -0
  164. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_file_download.py +0 -0
  165. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_file_load_save.py +0 -0
  166. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_file_load_save_text.py +0 -0
  167. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_fullname.py +0 -0
  168. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_graphics.py +0 -0
  169. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_graphics_frame.py +0 -0
  170. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_graphics_gif.py +0 -0
  171. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_graphics_screen.py +0 -0
  172. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_graphics_signature.py +0 -0
  173. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_graphics_text.py +0 -0
  174. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_log_image_grid.py +0 -0
  175. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_logger.py +0 -0
  176. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_logger_matrix.py +0 -0
  177. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_logger_stitch_images.py +0 -0
  178. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_markdown.py +0 -0
  179. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_metadata.py +0 -0
  180. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_metadata_flatten.py +0 -0
  181. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_mlflow.py +0 -0
  182. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_mlflow_lock.py +0 -0
  183. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_objects.py +0 -0
  184. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_path.py +0 -0
  185. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_storage.py +0 -0
  186. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_storage_base.py +0 -0
  187. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_storage_s3.py +0 -0
  188. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_storage_webdav_request.py +0 -0
  189. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_storage_webdav_zip.py +0 -0
  190. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_testing.py +0 -0
  191. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_version.py +0 -0
  192. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/tests/test_web_is_accessible.py +0 -0
  193. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/urls.py +0 -0
  194. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/web/__init__.py +0 -0
  195. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/web/__main__.py +0 -0
  196. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects/web/functions.py +0 -0
  197. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects.egg-info/dependency_links.txt +0 -0
  198. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects.egg-info/requires.txt +0 -0
  199. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/bluer_objects.egg-info/top_level.txt +0 -0
  200. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/pyproject.toml +0 -0
  201. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/requirements.txt +0 -0
  202. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/setup.cfg +0 -0
  203. {bluer_objects-6.309.1 → bluer_objects-6.322.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_objects
3
- Version: 6.309.1
3
+ Version: 6.322.1
4
4
  Summary: 🌀 Object management in Bash.
5
5
  Home-page: https://github.com/kamangir/bluer-objects
6
6
  Author: Arash Abadpour (Kamangir)
@@ -65,6 +65,6 @@ pip install bluer-objects
65
65
 
66
66
  [![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)
67
67
 
68
- built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.309.1`](https://github.com/kamangir/bluer-objects).
68
+ built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.322.1`](https://github.com/kamangir/bluer-objects).
69
69
 
70
70
  built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
@@ -31,4 +31,4 @@ pip install bluer-objects
31
31
 
32
32
  [![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)
33
33
 
34
- built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.309.1`](https://github.com/kamangir/bluer-objects).
34
+ built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.322.1`](https://github.com/kamangir/bluer-objects).
@@ -0,0 +1,19 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function bluer_objects_file() {
4
+ local options=$1
5
+ local do_sudo=$(bluer_ai_option_int "$options" sudo 0)
6
+
7
+ local task=$2
8
+
9
+ local prefix=""
10
+ [[ "$do_sudo" == 1 ]] &&
11
+ prefix="sudo -E"
12
+
13
+ local filename=$3
14
+
15
+ $prefix $(which python) -m bluer_objects.file \
16
+ "$task" \
17
+ --filename "$filename" \
18
+ "${@:4}"
19
+ }
@@ -0,0 +1,64 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function test_file_asset() {
4
+ echo $abcli_path_git/bluer-objects/bluer_objects/.abcli/tests/file.sh
5
+ }
6
+
7
+ function test_file_replace() {
8
+ local options=$1
9
+
10
+ local filename=$abcli_path_git/file.sh
11
+
12
+ cp -v \
13
+ $(test_file_asset) \
14
+ $filename
15
+ [[ $? -ne 0 ]] && return 1
16
+
17
+ bluer_objects_file - \
18
+ replace \
19
+ $filename \
20
+ --this function+local \
21
+ --that FUNCTION+LOCAL \
22
+ --cat 1 \
23
+ "${@:2}"
24
+ [[ $? -ne 0 ]] && return 1
25
+ bluer_ai_hr
26
+
27
+ # ---
28
+
29
+ bluer_objects_file - \
30
+ replace \
31
+ $filename \
32
+ --this "FUNCTION test_file_asset() {+echo" \
33
+ --that ":)+:(" \
34
+ --cat 1 \
35
+ --whole_line 1 \
36
+ "${@:2}"
37
+ [[ $? -ne 0 ]] && return 1
38
+ rm -v $filename
39
+ }
40
+
41
+ function test_file_size() {
42
+ local options=$1
43
+
44
+ local size=$(bluer_objects_file - \
45
+ size \
46
+ $(test_file_asset))
47
+
48
+ bluer_ai_assert \
49
+ "$size" \
50
+ "1.18 kB"
51
+ [[ $? -ne 0 ]] && return 1
52
+ bluer_ai_hr
53
+
54
+ # ---
55
+
56
+ local size=$(bluer_objects_file - \
57
+ size \
58
+ $(test_file_asset) \
59
+ --pretty 0)
60
+
61
+ bluer_ai_assert \
62
+ "$size" \
63
+ "1209"
64
+ }
@@ -38,6 +38,10 @@ function test_bluer_objects_help() {
38
38
  \
39
39
  "@ls" \
40
40
  \
41
+ "@file" \
42
+ "@file replace" \
43
+ "@file size" \
44
+ \
41
45
  "@host" \
42
46
  "@host get" \
43
47
  "@host reboot" \
@@ -41,6 +41,7 @@ def build_me() -> bool:
41
41
  "assets",
42
42
  "clone",
43
43
  "download",
44
+ "file",
44
45
  "gif",
45
46
  "host",
46
47
  "ls",
@@ -4,7 +4,7 @@ ICON = "🌀"
4
4
 
5
5
  DESCRIPTION = f"{ICON} Object management in Bash."
6
6
 
7
- VERSION = "6.309.1"
7
+ VERSION = "6.322.1"
8
8
 
9
9
  REPO_NAME = "bluer-objects"
10
10
 
@@ -0,0 +1,101 @@
1
+ import argparse
2
+ from tqdm import tqdm
3
+
4
+ from blueness import module
5
+ from blueness.argparse.generic import sys_exit
6
+ from bluer_options import string
7
+
8
+ from bluer_objects import file, NAME
9
+ from bluer_objects.logger import logger
10
+
11
+ NAME = module.name(__file__, NAME)
12
+
13
+ parser = argparse.ArgumentParser(NAME)
14
+ parser.add_argument(
15
+ "task",
16
+ type=str,
17
+ help="replace | size",
18
+ )
19
+ parser.add_argument(
20
+ "--filename",
21
+ type=str,
22
+ )
23
+ parser.add_argument(
24
+ "--this",
25
+ type=str,
26
+ help="<this-1+this-2+this-3>",
27
+ )
28
+ parser.add_argument(
29
+ "--that",
30
+ type=str,
31
+ help="<that-1+that-2+that-3>",
32
+ )
33
+ parser.add_argument(
34
+ "--pretty",
35
+ type=int,
36
+ default=1,
37
+ help="0 | 1",
38
+ )
39
+ parser.add_argument(
40
+ "--save",
41
+ type=int,
42
+ default=1,
43
+ help="0 | 1",
44
+ )
45
+ parser.add_argument(
46
+ "--whole_line",
47
+ type=int,
48
+ default=0,
49
+ help="0 | 1",
50
+ )
51
+ parser.add_argument(
52
+ "--log",
53
+ type=int,
54
+ default=0,
55
+ help="0 | 1",
56
+ )
57
+ parser.add_argument(
58
+ "--cat",
59
+ type=int,
60
+ default=0,
61
+ help="0 | 1",
62
+ )
63
+ args = parser.parse_args()
64
+
65
+ success = False
66
+ if args.task == "replace":
67
+ logger.info(
68
+ f'{NAME}.{args.task}: "{args.this}" -> "{args.that}" in {args.filename}'
69
+ )
70
+
71
+ success, content = file.load_text(
72
+ args.filename,
73
+ log=args.log == 1,
74
+ )
75
+ if success:
76
+ for this, that in tqdm(zip(args.this.split("+"), args.that.split("+"))):
77
+ if args.whole_line:
78
+ content = [that if line == this else line for line in content]
79
+ else:
80
+ content = [line.replace(this, that) for line in content]
81
+
82
+ if args.save == 1:
83
+ success = file.save_text(
84
+ args.filename,
85
+ content,
86
+ log=args.log == 1,
87
+ )
88
+
89
+ if success and args.cat:
90
+ for line in content:
91
+ if any(this in line for this in args.this.split("+")):
92
+ logger.info(line)
93
+
94
+ elif args.task == "size":
95
+ size = file.size(args.filename)
96
+ print(string.pretty_bytes(size) if args.pretty == 1 else size)
97
+ success = True
98
+ else:
99
+ success = None
100
+
101
+ sys_exit(logger, NAME, args.task, success)
@@ -1,4 +1,4 @@
1
- from typing import Any, Dict, List
1
+ from typing import Any, Dict, List, Union
2
2
  import yaml
3
3
  import numpy as np
4
4
  import json
@@ -30,9 +30,15 @@ def finish_saving(
30
30
  success: bool,
31
31
  message: str,
32
32
  log: bool = True,
33
+ exception: Union[Exception, None] = None,
33
34
  ) -> bool:
34
35
  if not success:
35
- crash_report(f"{message}: failed.")
36
+ crash_report(
37
+ "{}: failed: {}".format(
38
+ message,
39
+ exception,
40
+ )
41
+ )
36
42
  elif log:
37
43
  logger.info(message)
38
44
 
@@ -246,12 +252,14 @@ def save_yaml(
246
252
  if not prepare_for_saving(filename):
247
253
  return False
248
254
 
255
+ exception = None
249
256
  success = True
250
257
  try:
251
258
  with open(filename, "w") as f:
252
259
  yaml.dump(data, f)
253
- except:
260
+ except Exception as e:
254
261
  success = False
262
+ exception = e
255
263
 
256
264
  return finish_saving(
257
265
  success,
@@ -261,4 +269,5 @@ def save_yaml(
261
269
  filename,
262
270
  ),
263
271
  log,
272
+ exception,
264
273
  )
@@ -0,0 +1,59 @@
1
+ from typing import List
2
+
3
+ from bluer_options.terminal import show_usage, xtra
4
+
5
+
6
+ def help_replace(
7
+ tokens: List[str],
8
+ mono: bool,
9
+ ) -> str:
10
+ options = xtra("sudo", mono=mono)
11
+
12
+ args = [
13
+ "--cat 1",
14
+ "--save 0",
15
+ "--this this-1+this-2",
16
+ "--that that-1+that-2",
17
+ "--whole_line 1",
18
+ ]
19
+
20
+ return show_usage(
21
+ [
22
+ "@file",
23
+ f"[{options}]",
24
+ "replace",
25
+ "<filename>",
26
+ ]
27
+ + args,
28
+ "<this> -> <that> in <filename>.",
29
+ mono=mono,
30
+ )
31
+
32
+
33
+ def help_size(
34
+ tokens: List[str],
35
+ mono: bool,
36
+ ) -> str:
37
+ options = "-"
38
+
39
+ args = [
40
+ "--pretty 0",
41
+ ]
42
+
43
+ return show_usage(
44
+ [
45
+ "@file",
46
+ f"[{options}]",
47
+ "size",
48
+ "<filename>",
49
+ ]
50
+ + args,
51
+ "size of <filename>",
52
+ mono=mono,
53
+ )
54
+
55
+
56
+ help_functions = {
57
+ "replace": help_replace,
58
+ "size": help_size,
59
+ }
@@ -6,6 +6,7 @@ from bluer_objects.help.clone import help_clone
6
6
  from bluer_objects.help.create_test_asset import help_create_test_asset
7
7
  from bluer_objects.help.download import help_download
8
8
  from bluer_objects.help.gif import help_functions as help_gif
9
+ from bluer_objects.help.file import help_functions as help_file
9
10
  from bluer_objects.help.host import help_functions as help_host
10
11
  from bluer_objects.help.ls import help_ls
11
12
  from bluer_objects.help.metadata import help_functions as help_metadata
@@ -21,6 +22,7 @@ help_functions.update(
21
22
  "clone": help_clone,
22
23
  "create_test_asset": help_create_test_asset,
23
24
  "download": help_download,
25
+ "file": help_file,
24
26
  "gif": help_gif,
25
27
  "host": help_host,
26
28
  "ls": help_ls,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_objects
3
- Version: 6.309.1
3
+ Version: 6.322.1
4
4
  Summary: 🌀 Object management in Bash.
5
5
  Home-page: https://github.com/kamangir/bluer-objects
6
6
  Author: Arash Abadpour (Kamangir)
@@ -65,6 +65,6 @@ pip install bluer-objects
65
65
 
66
66
  [![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)
67
67
 
68
- built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.309.1`](https://github.com/kamangir/bluer-objects).
68
+ built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.322.1`](https://github.com/kamangir/bluer-objects).
69
69
 
70
70
  built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
@@ -65,6 +65,7 @@ bluer_objects/.abcli/storage/status.sh
65
65
  bluer_objects/.abcli/tests/README.sh
66
66
  bluer_objects/.abcli/tests/clone.sh
67
67
  bluer_objects/.abcli/tests/create_test_asset.sh
68
+ bluer_objects/.abcli/tests/file.sh
68
69
  bluer_objects/.abcli/tests/gif.sh
69
70
  bluer_objects/.abcli/tests/help.sh
70
71
  bluer_objects/.abcli/tests/host.sh
@@ -111,6 +112,7 @@ bluer_objects/help/assets.py
111
112
  bluer_objects/help/clone.py
112
113
  bluer_objects/help/create_test_asset.py
113
114
  bluer_objects/help/download.py
115
+ bluer_objects/help/file.py
114
116
  bluer_objects/help/functions.py
115
117
  bluer_objects/help/gif.py
116
118
  bluer_objects/help/host.py
@@ -1,8 +0,0 @@
1
- #! /usr/bin/env bash
2
-
3
- function bluer_objects_file() {
4
- python3 -m bluer_objects.file \
5
- "$1" \
6
- --filename "$2" \
7
- "${@:3}"
8
- }
@@ -1,56 +0,0 @@
1
- import argparse
2
- from tqdm import tqdm
3
-
4
- from blueness import module
5
- from blueness.argparse.generic import sys_exit
6
- from bluer_options import string
7
-
8
- from bluer_objects import file, NAME
9
- from bluer_objects.logger import logger
10
-
11
- NAME = module.name(__file__, NAME)
12
-
13
- parser = argparse.ArgumentParser(NAME)
14
- parser.add_argument(
15
- "task",
16
- type=str,
17
- help="replace | size",
18
- )
19
- parser.add_argument(
20
- "--filename",
21
- type=str,
22
- )
23
- parser.add_argument(
24
- "--this",
25
- type=str,
26
- help="<this-1+this-2+this-3>",
27
- )
28
- parser.add_argument(
29
- "--that",
30
- type=str,
31
- help="<that-1+that-2+that-3>",
32
- )
33
- parser.add_argument(
34
- "--size",
35
- type=int,
36
- default=16,
37
- )
38
- args = parser.parse_args()
39
-
40
- success = False
41
- if args.task == "replace":
42
- logger.info(f"{NAME}.{args.task}: {args.this} -> {args.that} in {args.filename}")
43
-
44
- success, content = file.load_text(args.filename)
45
- if success:
46
- for this, that in tqdm(zip(args.this.split("+"), args.that.split("+"))):
47
- content = [line.replace(this, that) for line in content]
48
-
49
- success = file.save_text(args.filename, content)
50
- elif args.task == "size":
51
- print(string.pretty_bytes(file.size(args.filename)))
52
- success = True
53
- else:
54
- success = None
55
-
56
- sys_exit(logger, NAME, args.task, success)
File without changes