bluer-objects 6.307.1__tar.gz → 6.317.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.307.1/bluer_objects.egg-info → bluer_objects-6.317.1}/PKG-INFO +2 -2
  2. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/README.md +1 -1
  3. bluer_objects-6.317.1/bluer_objects/.abcli/file.sh +19 -0
  4. bluer_objects-6.317.1/bluer_objects/.abcli/tests/file.sh +64 -0
  5. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/tests/help.sh +4 -0
  6. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/README/__init__.py +1 -0
  7. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/__init__.py +1 -1
  8. bluer_objects-6.317.1/bluer_objects/file/__main__.py +101 -0
  9. bluer_objects-6.317.1/bluer_objects/help/file.py +59 -0
  10. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/help/functions.py +2 -0
  11. bluer_objects-6.317.1/bluer_objects/logger/stitch.py +107 -0
  12. bluer_objects-6.317.1/bluer_objects/tests/test_logger_stitch_images.py +47 -0
  13. {bluer_objects-6.307.1 → bluer_objects-6.317.1/bluer_objects.egg-info}/PKG-INFO +2 -2
  14. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects.egg-info/SOURCES.txt +4 -0
  15. bluer_objects-6.307.1/bluer_objects/.abcli/file.sh +0 -8
  16. bluer_objects-6.307.1/bluer_objects/file/__main__.py +0 -56
  17. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/LICENSE +0 -0
  18. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/MANIFEST.in +0 -0
  19. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/abcli.sh +0 -0
  20. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/actions.sh +0 -0
  21. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/aka.sh +0 -0
  22. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/alias.sh +0 -0
  23. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/assets/cd.sh +0 -0
  24. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/assets/mv.sh +0 -0
  25. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/assets/publish.sh +0 -0
  26. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/assets.sh +0 -0
  27. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/bluer_objects.sh +0 -0
  28. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/clone.sh +0 -0
  29. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/create_test_asset.sh +0 -0
  30. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/download.sh +0 -0
  31. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/gif.sh +0 -0
  32. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/host.sh +0 -0
  33. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/ls.sh +0 -0
  34. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/metadata/get.sh +0 -0
  35. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/metadata/post.sh +0 -0
  36. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/metadata.sh +0 -0
  37. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/mlflow/browse.sh +0 -0
  38. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/mlflow/cache.sh +0 -0
  39. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/mlflow/deploy.sh +0 -0
  40. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/mlflow/list_registered_models.sh +0 -0
  41. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/mlflow/lock/lock.sh +0 -0
  42. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/mlflow/lock/unlock.sh +0 -0
  43. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/mlflow/lock.sh +0 -0
  44. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/mlflow/log_artifacts.sh +0 -0
  45. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/mlflow/log_run.sh +0 -0
  46. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/mlflow/run.sh +0 -0
  47. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/mlflow/tags/clone.sh +0 -0
  48. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/mlflow/tags/get.sh +0 -0
  49. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/mlflow/tags/search.sh +0 -0
  50. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/mlflow/tags/set.sh +0 -0
  51. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/mlflow/tags.sh +0 -0
  52. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/mlflow/test.sh +0 -0
  53. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/mlflow/transition.sh +0 -0
  54. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/mlflow.sh +0 -0
  55. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/object.sh +0 -0
  56. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/select.sh +0 -0
  57. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/storage/clear.sh +0 -0
  58. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/storage/status.sh +0 -0
  59. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/storage.sh +0 -0
  60. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/tests/README.sh +0 -0
  61. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/tests/clone.sh +0 -0
  62. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/tests/create_test_asset.sh +0 -0
  63. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/tests/gif.sh +0 -0
  64. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/tests/host.sh +0 -0
  65. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/tests/ls.sh +0 -0
  66. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/tests/metadata.sh +0 -0
  67. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/tests/mlflow_cache.sh +0 -0
  68. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/tests/mlflow_lock.sh +0 -0
  69. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/tests/mlflow_logging.sh +0 -0
  70. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/tests/mlflow_tags.sh +0 -0
  71. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/tests/mlflow_test.sh +0 -0
  72. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/tests/open.sh +0 -0
  73. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/tests/open_gif_open.sh +0 -0
  74. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/tests/storage_public_upload.sh +0 -0
  75. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/tests/storage_upload_download.sh +0 -0
  76. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/tests/version.sh +0 -0
  77. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/tests/web_is_accessible.sh +0 -0
  78. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/tests/web_where_am_ai.sh +0 -0
  79. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/upload.sh +0 -0
  80. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/url.sh +0 -0
  81. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/web/is_accessible.sh +0 -0
  82. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/.abcli/web/where_am_i.sh +0 -0
  83. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/README/consts.py +0 -0
  84. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/README/functions.py +0 -0
  85. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/README/items.py +0 -0
  86. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/README/utils.py +0 -0
  87. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/__main__.py +0 -0
  88. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/assets/__init__.py +0 -0
  89. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/assets/__main__.py +0 -0
  90. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/assets/functions.py +0 -0
  91. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/config.env +0 -0
  92. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/env.py +0 -0
  93. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/file/__init__.py +0 -0
  94. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/file/classes.py +0 -0
  95. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/file/functions.py +0 -0
  96. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/file/load.py +0 -0
  97. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/file/save.py +0 -0
  98. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/graphics/__init__.py +0 -0
  99. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/graphics/__main__.py +0 -0
  100. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/graphics/frame.py +0 -0
  101. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/graphics/gif.py +0 -0
  102. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/graphics/screen.py +0 -0
  103. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/graphics/signature.py +0 -0
  104. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/graphics/text.py +0 -0
  105. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/help/__init__.py +0 -0
  106. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/help/__main__.py +0 -0
  107. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/help/assets.py +0 -0
  108. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/help/clone.py +0 -0
  109. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/help/create_test_asset.py +0 -0
  110. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/help/download.py +0 -0
  111. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/help/gif.py +0 -0
  112. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/help/host.py +0 -0
  113. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/help/ls.py +0 -0
  114. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/help/metadata.py +0 -0
  115. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/help/mlflow/__init__.py +0 -0
  116. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/help/mlflow/cache.py +0 -0
  117. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/help/mlflow/lock.py +0 -0
  118. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/help/mlflow/tags.py +0 -0
  119. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/help/upload.py +0 -0
  120. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/help/web.py +0 -0
  121. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/host/__init__.py +0 -0
  122. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/host/__main__.py +0 -0
  123. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/host/functions.py +0 -0
  124. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/logger/__init__.py +0 -0
  125. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/logger/image.py +0 -0
  126. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/logger/matrix.py +0 -0
  127. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/markdown.py +0 -0
  128. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/metadata/__init__.py +0 -0
  129. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/metadata/__main__.py +0 -0
  130. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/metadata/enums.py +0 -0
  131. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/metadata/flatten.py +0 -0
  132. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/metadata/get.py +0 -0
  133. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/metadata/post.py +0 -0
  134. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/mlflow/__init__.py +0 -0
  135. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/mlflow/__main__.py +0 -0
  136. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/mlflow/cache.py +0 -0
  137. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/mlflow/lock/__init__.py +0 -0
  138. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/mlflow/lock/__main__.py +0 -0
  139. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/mlflow/lock/functions.py +0 -0
  140. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/mlflow/logging.py +0 -0
  141. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/mlflow/models.py +0 -0
  142. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/mlflow/objects.py +0 -0
  143. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/mlflow/runs.py +0 -0
  144. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/mlflow/tags.py +0 -0
  145. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/mlflow/testing.py +0 -0
  146. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/objects.py +0 -0
  147. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/path.py +0 -0
  148. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/sample.env +0 -0
  149. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/storage/WebDAV.py +0 -0
  150. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/storage/WebDAVrequest.py +0 -0
  151. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/storage/WebDAVzip.py +0 -0
  152. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/storage/__init__.py +0 -0
  153. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/storage/__main__.py +0 -0
  154. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/storage/base.py +0 -0
  155. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/storage/policies.py +0 -0
  156. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/storage/s3.py +0 -0
  157. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/testing/__init__.py +0 -0
  158. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/testing/__main__.py +0 -0
  159. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/testing/functions.py +0 -0
  160. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/__init__.py +0 -0
  161. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_README.py +0 -0
  162. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_README_consts.py +0 -0
  163. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_README_items.py +0 -0
  164. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_env.py +0 -0
  165. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_file_download.py +0 -0
  166. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_file_load_save.py +0 -0
  167. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_file_load_save_text.py +0 -0
  168. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_fullname.py +0 -0
  169. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_graphics.py +0 -0
  170. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_graphics_frame.py +0 -0
  171. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_graphics_gif.py +0 -0
  172. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_graphics_screen.py +0 -0
  173. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_graphics_signature.py +0 -0
  174. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_graphics_text.py +0 -0
  175. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_log_image_grid.py +0 -0
  176. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_logger.py +0 -0
  177. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_logger_matrix.py +0 -0
  178. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_markdown.py +0 -0
  179. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_metadata.py +0 -0
  180. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_metadata_flatten.py +0 -0
  181. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_mlflow.py +0 -0
  182. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_mlflow_lock.py +0 -0
  183. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_objects.py +0 -0
  184. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_path.py +0 -0
  185. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_storage.py +0 -0
  186. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_storage_base.py +0 -0
  187. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_storage_s3.py +0 -0
  188. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_storage_webdav_request.py +0 -0
  189. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_storage_webdav_zip.py +0 -0
  190. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_testing.py +0 -0
  191. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_version.py +0 -0
  192. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/tests/test_web_is_accessible.py +0 -0
  193. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/urls.py +0 -0
  194. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/web/__init__.py +0 -0
  195. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/web/__main__.py +0 -0
  196. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects/web/functions.py +0 -0
  197. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects.egg-info/dependency_links.txt +0 -0
  198. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects.egg-info/requires.txt +0 -0
  199. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/bluer_objects.egg-info/top_level.txt +0 -0
  200. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/pyproject.toml +0 -0
  201. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/requirements.txt +0 -0
  202. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/setup.cfg +0 -0
  203. {bluer_objects-6.307.1 → bluer_objects-6.317.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_objects
3
- Version: 6.307.1
3
+ Version: 6.317.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.307.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.317.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.307.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.317.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.307.1"
7
+ VERSION = "6.317.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)
@@ -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,
@@ -0,0 +1,107 @@
1
+ from typing import List
2
+ import numpy as np
3
+
4
+ from blueness import module
5
+ from bluer_options import string
6
+
7
+ from bluer_objects import NAME
8
+ from bluer_objects.logger import logger
9
+
10
+ NAME = module.name(__file__, NAME)
11
+
12
+
13
+ def stitch_images(
14
+ list_of_images: List[np.ndarray],
15
+ cols: int = -1,
16
+ rows: int = -1,
17
+ log: bool = False,
18
+ ) -> np.ndarray:
19
+ if not list_of_images:
20
+ return np.zeros((1, 1, 3), dtype=np.uint8)
21
+
22
+ list_of_images = list_of_images.copy()
23
+
24
+ if rows == -1:
25
+ rows = int(np.floor(np.sqrt(len(list_of_images))))
26
+ cols = -1
27
+
28
+ if cols == -1:
29
+ cols = int(np.ceil(len(list_of_images) / rows))
30
+
31
+ if log:
32
+ logger.info(
33
+ "{}.stitch_images[{}x{}]({}): {}".format(
34
+ NAME,
35
+ rows,
36
+ cols,
37
+ len(list_of_images),
38
+ ", ".join(
39
+ [string.pretty_shape_of_matrix(image) for image in list_of_images]
40
+ ),
41
+ )
42
+ )
43
+
44
+ for image in list_of_images:
45
+ if len(image.shape) == 2:
46
+ image = np.stack([image, image, image], axis=2)
47
+
48
+ if rows == 1:
49
+ output = np.zeros(
50
+ (
51
+ max([image.shape[0] for image in list_of_images]),
52
+ sum([image.shape[1] for image in list_of_images]),
53
+ 3,
54
+ ),
55
+ dtype=np.uint8,
56
+ )
57
+ x: int = 0
58
+ for image in list_of_images:
59
+ x_new = x + image.shape[1]
60
+
61
+ output[
62
+ : image.shape[0],
63
+ x:x_new,
64
+ :,
65
+ ] = image
66
+
67
+ x = x_new
68
+
69
+ return output
70
+
71
+ if cols == 1:
72
+ output = np.zeros(
73
+ (
74
+ sum([image.shape[0] for image in list_of_images]),
75
+ max([image.shape[1] for image in list_of_images]),
76
+ 3,
77
+ ),
78
+ dtype=np.uint8,
79
+ )
80
+ y: int = 0
81
+ for image in list_of_images:
82
+ y_new = y + image.shape[0]
83
+
84
+ output[
85
+ y:y_new,
86
+ : image.shape[1],
87
+ :,
88
+ ] = image
89
+
90
+ y = y_new
91
+
92
+ return output
93
+
94
+ return stitch_images(
95
+ list_of_images=[
96
+ stitch_images(
97
+ list_of_images[row * cols : (row + 1) * cols],
98
+ cols=cols,
99
+ rows=1,
100
+ log=log,
101
+ )
102
+ for row in range(rows)
103
+ ],
104
+ cols=1,
105
+ rows=rows,
106
+ log=log,
107
+ )
@@ -0,0 +1,47 @@
1
+ import pytest
2
+ import numpy as np
3
+ import random
4
+
5
+ from bluer_objects.logger.stitch import stitch_images
6
+
7
+
8
+ @pytest.mark.parametrize(
9
+ ["count"],
10
+ [[count] for count in range(10)],
11
+ )
12
+ @pytest.mark.parametrize(
13
+ ["cols"],
14
+ [[cols] for cols in [-1, 1, 3]],
15
+ )
16
+ @pytest.mark.parametrize(
17
+ ["rows"],
18
+ [[rows] for rows in [-1, 1, 3]],
19
+ )
20
+ def test_logger_stitch_images(
21
+ count: int,
22
+ cols: int,
23
+ rows: int,
24
+ ):
25
+ rng = np.random.default_rng()
26
+
27
+ list_of_images = list_of_images = [
28
+ rng.integers(
29
+ 0,
30
+ 256,
31
+ (
32
+ random.randint(1, 512),
33
+ random.randint(1, 512),
34
+ random.choice([1, 3]),
35
+ ),
36
+ dtype=np.uint8,
37
+ )
38
+ for _ in range(count)
39
+ ]
40
+
41
+ image = stitch_images(
42
+ list_of_images,
43
+ cols=cols,
44
+ rows=rows,
45
+ log=True,
46
+ )
47
+ assert isinstance(image, np.ndarray)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_objects
3
- Version: 6.307.1
3
+ Version: 6.317.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.307.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.317.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
@@ -128,6 +130,7 @@ bluer_objects/host/functions.py
128
130
  bluer_objects/logger/__init__.py
129
131
  bluer_objects/logger/image.py
130
132
  bluer_objects/logger/matrix.py
133
+ bluer_objects/logger/stitch.py
131
134
  bluer_objects/metadata/__init__.py
132
135
  bluer_objects/metadata/__main__.py
133
136
  bluer_objects/metadata/enums.py
@@ -175,6 +178,7 @@ bluer_objects/tests/test_graphics_text.py
175
178
  bluer_objects/tests/test_log_image_grid.py
176
179
  bluer_objects/tests/test_logger.py
177
180
  bluer_objects/tests/test_logger_matrix.py
181
+ bluer_objects/tests/test_logger_stitch_images.py
178
182
  bluer_objects/tests/test_markdown.py
179
183
  bluer_objects/tests/test_metadata.py
180
184
  bluer_objects/tests/test_metadata_flatten.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