bluer-objects 6.207.1__tar.gz → 6.413.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.
Files changed (248) hide show
  1. {bluer_objects-6.207.1/bluer_objects.egg-info → bluer_objects-6.413.1}/PKG-INFO +20 -11
  2. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/README.md +19 -10
  3. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/alias.sh +11 -8
  4. bluer_objects-6.413.1/bluer_objects/.abcli/assets/cd.sh +20 -0
  5. bluer_objects-6.413.1/bluer_objects/.abcli/assets/mv.sh +34 -0
  6. bluer_objects-6.413.1/bluer_objects/.abcli/assets/publish.sh +37 -0
  7. bluer_objects-6.413.1/bluer_objects/.abcli/assets.sh +15 -0
  8. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/download.sh +3 -1
  9. bluer_objects-6.413.1/bluer_objects/.abcli/file.sh +19 -0
  10. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/gif.sh +18 -0
  11. bluer_objects-6.413.1/bluer_objects/.abcli/host.sh +45 -0
  12. bluer_objects-6.413.1/bluer_objects/.abcli/ls.sh +29 -0
  13. bluer_objects-6.413.1/bluer_objects/.abcli/metadata/download.sh +9 -0
  14. bluer_objects-6.413.1/bluer_objects/.abcli/metadata/edit.sh +15 -0
  15. bluer_objects-6.413.1/bluer_objects/.abcli/metadata/upload.sh +9 -0
  16. bluer_objects-6.413.1/bluer_objects/.abcli/mlflow/tags/search.sh +8 -0
  17. bluer_objects-6.413.1/bluer_objects/.abcli/pdf/convert.sh +92 -0
  18. bluer_objects-6.413.1/bluer_objects/.abcli/pdf.sh +15 -0
  19. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/storage/clear.sh +2 -0
  20. bluer_objects-6.413.1/bluer_objects/.abcli/tests/file.sh +64 -0
  21. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/tests/gif.sh +1 -0
  22. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/tests/help.sh +16 -7
  23. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/tests/ls.sh +9 -1
  24. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/tests/metadata.sh +35 -0
  25. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/tests/mlflow_tags.sh +1 -1
  26. bluer_objects-6.413.1/bluer_objects/.abcli/tests/open.sh +11 -0
  27. bluer_objects-6.413.1/bluer_objects/.abcli/tests/open_gif_open.sh +14 -0
  28. bluer_objects-6.413.1/bluer_objects/.abcli/tests/pdf.sh +31 -0
  29. bluer_objects-6.413.1/bluer_objects/.abcli/tests/storage_clear.sh +11 -0
  30. bluer_objects-6.413.1/bluer_objects/.abcli/tests/storage_status.sh +12 -0
  31. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/tests/storage_upload_download.sh +6 -0
  32. bluer_objects-6.413.1/bluer_objects/README/__init__.py +30 -0
  33. bluer_objects-6.413.1/bluer_objects/README/alias.py +56 -0
  34. bluer_objects-6.413.1/bluer_objects/README/aliases.py +23 -0
  35. bluer_objects-6.413.1/bluer_objects/README/consts.py +39 -0
  36. bluer_objects-6.413.1/bluer_objects/README/docs.py +22 -0
  37. bluer_objects-6.413.1/bluer_objects/README/functions.py +204 -0
  38. bluer_objects-6.413.1/bluer_objects/README/items.py +102 -0
  39. bluer_objects-6.413.1/bluer_objects/README/modules.py +9 -0
  40. bluer_objects-6.413.1/bluer_objects/README/utils.py +275 -0
  41. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/__init__.py +1 -1
  42. bluer_objects-6.413.1/bluer_objects/assets/__main__.py +57 -0
  43. bluer_objects-6.413.1/bluer_objects/assets/functions.py +62 -0
  44. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/config.env +7 -3
  45. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/env.py +4 -0
  46. bluer_objects-6.413.1/bluer_objects/file/__main__.py +101 -0
  47. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/file/functions.py +19 -4
  48. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/file/save.py +16 -5
  49. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/graphics/__main__.py +7 -0
  50. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/graphics/gif.py +11 -7
  51. bluer_objects-6.413.1/bluer_objects/help/assets.py +96 -0
  52. bluer_objects-6.413.1/bluer_objects/help/download.py +37 -0
  53. bluer_objects-6.413.1/bluer_objects/help/file.py +59 -0
  54. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/help/functions.py +7 -1
  55. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/help/gif.py +25 -0
  56. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/help/host.py +6 -4
  57. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/help/ls.py +26 -3
  58. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/help/metadata.py +51 -0
  59. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/help/mlflow/cache.py +2 -4
  60. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/help/mlflow/tags.py +34 -23
  61. bluer_objects-6.413.1/bluer_objects/help/pdf.py +67 -0
  62. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/help/upload.py +8 -6
  63. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/host/functions.py +4 -1
  64. bluer_objects-6.413.1/bluer_objects/logger/confusion_matrix.py +76 -0
  65. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/logger/image.py +22 -7
  66. bluer_objects-6.413.1/bluer_objects/logger/stitch.py +107 -0
  67. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/markdown.py +8 -6
  68. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/metadata/__init__.py +1 -0
  69. bluer_objects-6.413.1/bluer_objects/metadata/flatten.py +27 -0
  70. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/mlflow/__init__.py +1 -1
  71. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/mlflow/__main__.py +49 -31
  72. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/mlflow/logging.py +6 -0
  73. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/mlflow/models.py +7 -0
  74. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/mlflow/objects.py +7 -0
  75. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/mlflow/runs.py +10 -1
  76. bluer_objects-6.413.1/bluer_objects/mlflow/serverless/__init__.py +3 -0
  77. bluer_objects-6.413.1/bluer_objects/mlflow/serverless/api.py +88 -0
  78. bluer_objects-6.413.1/bluer_objects/mlflow/serverless/read.py +19 -0
  79. bluer_objects-6.413.1/bluer_objects/mlflow/serverless/search.py +35 -0
  80. bluer_objects-6.413.1/bluer_objects/mlflow/serverless/write.py +42 -0
  81. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/mlflow/tags.py +59 -9
  82. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/objects.py +3 -1
  83. bluer_objects-6.413.1/bluer_objects/pdf/__main__.py +78 -0
  84. bluer_objects-6.413.1/bluer_objects/pdf/convert/__init__.py +0 -0
  85. bluer_objects-6.413.1/bluer_objects/pdf/convert/batch.py +54 -0
  86. bluer_objects-6.413.1/bluer_objects/pdf/convert/combination.py +32 -0
  87. bluer_objects-6.413.1/bluer_objects/pdf/convert/convert.py +111 -0
  88. bluer_objects-6.413.1/bluer_objects/pdf/convert/image.py +53 -0
  89. bluer_objects-6.413.1/bluer_objects/pdf/convert/md.py +97 -0
  90. bluer_objects-6.413.1/bluer_objects/pdf/convert/missing.py +96 -0
  91. bluer_objects-6.413.1/bluer_objects/pdf/convert/pdf.py +37 -0
  92. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/storage/WebDAV.py +3 -0
  93. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/storage/WebDAVrequest.py +11 -6
  94. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/storage/WebDAVzip.py +13 -8
  95. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/storage/__init__.py +17 -0
  96. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/storage/__main__.py +26 -6
  97. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/storage/base.py +49 -1
  98. bluer_objects-6.413.1/bluer_objects/storage/policies.py +7 -0
  99. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/storage/s3.py +105 -53
  100. bluer_objects-6.413.1/bluer_objects/tests/__init__.py +0 -0
  101. bluer_objects-6.413.1/bluer_objects/tests/test_README_consts.py +71 -0
  102. bluer_objects-6.413.1/bluer_objects/tests/test_README_items.py +128 -0
  103. bluer_objects-6.413.1/bluer_objects/tests/test_alias.py +33 -0
  104. bluer_objects-6.413.1/bluer_objects/tests/test_env.py +50 -0
  105. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_graphics_gif.py +2 -0
  106. bluer_objects-6.413.1/bluer_objects/tests/test_logger_confusion_matrix.py +18 -0
  107. bluer_objects-6.413.1/bluer_objects/tests/test_logger_stitch_images.py +47 -0
  108. bluer_objects-6.413.1/bluer_objects/tests/test_metadata_flatten.py +109 -0
  109. bluer_objects-6.413.1/bluer_objects/tests/test_mlflow.py +169 -0
  110. bluer_objects-6.413.1/bluer_objects/tests/test_shell.py +34 -0
  111. bluer_objects-6.413.1/bluer_objects/web/__init__.py +1 -0
  112. {bluer_objects-6.207.1 → bluer_objects-6.413.1/bluer_objects.egg-info}/PKG-INFO +20 -11
  113. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects.egg-info/SOURCES.txt +53 -5
  114. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/setup.py +4 -0
  115. bluer_objects-6.207.1/bluer_objects/.abcli/file.sh +0 -8
  116. bluer_objects-6.207.1/bluer_objects/.abcli/host.sh +0 -29
  117. bluer_objects-6.207.1/bluer_objects/.abcli/ls.sh +0 -18
  118. bluer_objects-6.207.1/bluer_objects/.abcli/mlflow/tags/search.sh +0 -12
  119. bluer_objects-6.207.1/bluer_objects/.abcli/storage/download_file.sh +0 -9
  120. bluer_objects-6.207.1/bluer_objects/.abcli/storage/exists.sh +0 -8
  121. bluer_objects-6.207.1/bluer_objects/.abcli/storage/list.sh +0 -8
  122. bluer_objects-6.207.1/bluer_objects/.abcli/storage/rm.sh +0 -11
  123. bluer_objects-6.207.1/bluer_objects/.abcli/tests/mlflow_test.sh +0 -7
  124. bluer_objects-6.207.1/bluer_objects/README/__init__.py +0 -47
  125. bluer_objects-6.207.1/bluer_objects/README/functions.py +0 -297
  126. bluer_objects-6.207.1/bluer_objects/README/items.py +0 -30
  127. bluer_objects-6.207.1/bluer_objects/file/__main__.py +0 -56
  128. bluer_objects-6.207.1/bluer_objects/help/download.py +0 -23
  129. bluer_objects-6.207.1/bluer_objects/tests/test_env.py +0 -43
  130. bluer_objects-6.207.1/bluer_objects/tests/test_mlflow.py +0 -60
  131. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/LICENSE +0 -0
  132. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/MANIFEST.in +0 -0
  133. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/abcli.sh +0 -0
  134. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/actions.sh +0 -0
  135. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/aka.sh +0 -0
  136. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/bluer_objects.sh +0 -0
  137. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/clone.sh +0 -0
  138. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/create_test_asset.sh +0 -0
  139. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/metadata/get.sh +0 -0
  140. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/metadata/post.sh +0 -0
  141. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/metadata.sh +0 -0
  142. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/mlflow/browse.sh +0 -0
  143. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/mlflow/cache.sh +0 -0
  144. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/mlflow/deploy.sh +0 -0
  145. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/mlflow/list_registered_models.sh +0 -0
  146. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/mlflow/lock/lock.sh +0 -0
  147. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/mlflow/lock/unlock.sh +0 -0
  148. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/mlflow/lock.sh +0 -0
  149. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/mlflow/log_artifacts.sh +0 -0
  150. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/mlflow/log_run.sh +0 -0
  151. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/mlflow/run.sh +0 -0
  152. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/mlflow/tags/clone.sh +0 -0
  153. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/mlflow/tags/get.sh +0 -0
  154. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/mlflow/tags/set.sh +0 -0
  155. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/mlflow/tags.sh +0 -0
  156. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/mlflow/test.sh +0 -0
  157. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/mlflow/transition.sh +0 -0
  158. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/mlflow.sh +0 -0
  159. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/object.sh +0 -0
  160. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/select.sh +0 -0
  161. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/storage/status.sh +0 -0
  162. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/storage.sh +0 -0
  163. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/tests/README.sh +0 -0
  164. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/tests/clone.sh +0 -0
  165. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/tests/create_test_asset.sh +0 -0
  166. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/tests/host.sh +0 -0
  167. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/tests/mlflow_cache.sh +0 -0
  168. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/tests/mlflow_lock.sh +0 -0
  169. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/tests/mlflow_logging.sh +0 -0
  170. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/tests/storage_public_upload.sh +0 -0
  171. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/tests/version.sh +0 -0
  172. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/tests/web_is_accessible.sh +0 -0
  173. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/tests/web_where_am_ai.sh +0 -0
  174. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/upload.sh +0 -0
  175. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/url.sh +0 -0
  176. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/web/is_accessible.sh +0 -0
  177. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/.abcli/web/where_am_i.sh +0 -0
  178. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/__main__.py +0 -0
  179. {bluer_objects-6.207.1/bluer_objects/help → bluer_objects-6.413.1/bluer_objects/assets}/__init__.py +0 -0
  180. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/file/__init__.py +0 -0
  181. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/file/classes.py +0 -0
  182. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/file/load.py +0 -0
  183. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/graphics/__init__.py +0 -0
  184. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/graphics/frame.py +0 -0
  185. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/graphics/screen.py +0 -0
  186. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/graphics/signature.py +0 -0
  187. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/graphics/text.py +0 -0
  188. {bluer_objects-6.207.1/bluer_objects/tests → bluer_objects-6.413.1/bluer_objects/help}/__init__.py +0 -0
  189. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/help/__main__.py +0 -0
  190. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/help/clone.py +0 -0
  191. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/help/create_test_asset.py +0 -0
  192. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/help/mlflow/__init__.py +0 -0
  193. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/help/mlflow/lock.py +0 -0
  194. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/help/web.py +0 -0
  195. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/host/__init__.py +0 -0
  196. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/host/__main__.py +0 -0
  197. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/logger/__init__.py +0 -0
  198. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/logger/matrix.py +0 -0
  199. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/metadata/__main__.py +0 -0
  200. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/metadata/enums.py +0 -0
  201. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/metadata/get.py +0 -0
  202. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/metadata/post.py +0 -0
  203. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/mlflow/cache.py +0 -0
  204. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/mlflow/lock/__init__.py +0 -0
  205. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/mlflow/lock/__main__.py +0 -0
  206. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/mlflow/lock/functions.py +0 -0
  207. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/mlflow/testing.py +0 -0
  208. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/path.py +0 -0
  209. {bluer_objects-6.207.1/bluer_objects/web → bluer_objects-6.413.1/bluer_objects/pdf}/__init__.py +0 -0
  210. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/sample.env +0 -0
  211. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/testing/__init__.py +0 -0
  212. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/testing/__main__.py +0 -0
  213. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/testing/functions.py +0 -0
  214. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_README.py +0 -0
  215. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_file_download.py +0 -0
  216. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_file_load_save.py +0 -0
  217. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_file_load_save_text.py +0 -0
  218. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_fullname.py +0 -0
  219. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_graphics.py +0 -0
  220. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_graphics_frame.py +0 -0
  221. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_graphics_screen.py +0 -0
  222. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_graphics_signature.py +0 -0
  223. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_graphics_text.py +0 -0
  224. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_log_image_grid.py +0 -0
  225. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_logger.py +0 -0
  226. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_logger_matrix.py +0 -0
  227. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_markdown.py +0 -0
  228. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_metadata.py +0 -0
  229. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_mlflow_lock.py +0 -0
  230. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_objects.py +0 -0
  231. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_path.py +0 -0
  232. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_storage.py +0 -0
  233. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_storage_base.py +0 -0
  234. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_storage_s3.py +0 -0
  235. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_storage_webdav_request.py +0 -0
  236. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_storage_webdav_zip.py +0 -0
  237. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_testing.py +0 -0
  238. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_version.py +0 -0
  239. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/tests/test_web_is_accessible.py +0 -0
  240. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/urls.py +0 -0
  241. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/web/__main__.py +0 -0
  242. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects/web/functions.py +0 -0
  243. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects.egg-info/dependency_links.txt +0 -0
  244. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects.egg-info/requires.txt +0 -0
  245. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/bluer_objects.egg-info/top_level.txt +0 -0
  246. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/pyproject.toml +0 -0
  247. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/requirements.txt +0 -0
  248. {bluer_objects-6.207.1 → bluer_objects-6.413.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_objects
3
- Version: 6.207.1
3
+ Version: 6.413.1
4
4
  Summary: 🌀 Object management in Bash.
5
5
  Home-page: https://github.com/kamangir/bluer-objects
6
6
  Author: Arash Abadpour (Kamangir)
@@ -36,7 +36,7 @@ Dynamic: summary
36
36
 
37
37
  🌀 `bluer-objects` are the inputs and outputs of [AI algo](https://github.com/kamangir/giza). They are maintained in cloud storage (supports [WebDav](https://pypi.org/project/webdavclient3/)) and their metadata is tracked by [MLflow](https://mlflow.org/). Examples are the Sentinel-2 [datacube](https://github.com/kamangir/blue-geo/tree/main/blue_geo/datacube) `datacube-EarthSearch-sentinel_2_l1c-S2A_10UDC_20240731_0_L1C` and 🌐 [`@geo watch` outputs](https://github.com/kamangir/blue-geo/tree/main/blue_geo/watch).
38
38
 
39
- Also home to 🌀 [bluer README](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/README/), and the 🔒 [`Lock`](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/mlflow/lock/).
39
+ also home to 🌀 [bluer README](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/README/), the 🔒 [`lock`](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/mlflow/lock/), and [serverless mlflow](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/mlflow/serverless/).
40
40
 
41
41
  # installation
42
42
 
@@ -46,14 +46,23 @@ pip install bluer-objects
46
46
 
47
47
  # aliases
48
48
 
49
- [@clone](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/clone.md),
50
- [@download](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/download.md),
51
- [@gif](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/gif.md),
52
- [@host](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/host.md),
53
- [@ls](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/ls.md),
54
- [@metadata](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/metadata.md),
55
- [@mlflow](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/mlflow.md),
56
- [@upload](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/upload.md).
49
+ [@assets](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/assets.md)
50
+ [@cache](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/cache.md)
51
+ [@clone](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/clone.md)
52
+ [@cp](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/cp.md)
53
+ [@create_test_asset](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/create_test_asset.md)
54
+ [@download](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/download.md)
55
+ [@file](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/file.md)
56
+ [@gif](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/gif.md)
57
+ [@host](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/host.md)
58
+ [@lock](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/lock.md)
59
+ [@ls](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/ls.md)
60
+ [@metadata](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/metadata.md)
61
+ [@mlflow](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/mlflow.md)
62
+ [@pdf](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/pdf.md)
63
+ [@tags](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/tags.md)
64
+ [@upload](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/upload.md)
65
+ [@web](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/web.md)
57
66
 
58
67
  ---
59
68
 
@@ -64,6 +73,6 @@ pip install bluer-objects
64
73
 
65
74
  [![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
75
 
67
- built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.207.1`](https://github.com/kamangir/bluer-objects).
76
+ built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.413.1`](https://github.com/kamangir/bluer-objects).
68
77
 
69
78
  built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
@@ -2,7 +2,7 @@
2
2
 
3
3
  🌀 `bluer-objects` are the inputs and outputs of [AI algo](https://github.com/kamangir/giza). They are maintained in cloud storage (supports [WebDav](https://pypi.org/project/webdavclient3/)) and their metadata is tracked by [MLflow](https://mlflow.org/). Examples are the Sentinel-2 [datacube](https://github.com/kamangir/blue-geo/tree/main/blue_geo/datacube) `datacube-EarthSearch-sentinel_2_l1c-S2A_10UDC_20240731_0_L1C` and 🌐 [`@geo watch` outputs](https://github.com/kamangir/blue-geo/tree/main/blue_geo/watch).
4
4
 
5
- Also home to 🌀 [bluer README](./bluer_objects/README/), and the 🔒 [`Lock`](./bluer_objects/mlflow/lock/).
5
+ also home to 🌀 [bluer README](./bluer_objects/README/), the 🔒 [`lock`](./bluer_objects/mlflow/lock/), and [serverless mlflow](./bluer_objects/mlflow/serverless/).
6
6
 
7
7
  # installation
8
8
 
@@ -12,14 +12,23 @@ pip install bluer-objects
12
12
 
13
13
  # aliases
14
14
 
15
- [@clone](./bluer_objects/docs/aliases/clone.md),
16
- [@download](./bluer_objects/docs/aliases/download.md),
17
- [@gif](./bluer_objects/docs/aliases/gif.md),
18
- [@host](./bluer_objects/docs/aliases/host.md),
19
- [@ls](./bluer_objects/docs/aliases/ls.md),
20
- [@metadata](./bluer_objects/docs/aliases/metadata.md),
21
- [@mlflow](./bluer_objects/docs/aliases/mlflow.md),
22
- [@upload](./bluer_objects/docs/aliases/upload.md).
15
+ [@assets](./bluer_objects/docs/aliases/assets.md)
16
+ [@cache](./bluer_objects/docs/aliases/cache.md)
17
+ [@clone](./bluer_objects/docs/aliases/clone.md)
18
+ [@cp](./bluer_objects/docs/aliases/cp.md)
19
+ [@create_test_asset](./bluer_objects/docs/aliases/create_test_asset.md)
20
+ [@download](./bluer_objects/docs/aliases/download.md)
21
+ [@file](./bluer_objects/docs/aliases/file.md)
22
+ [@gif](./bluer_objects/docs/aliases/gif.md)
23
+ [@host](./bluer_objects/docs/aliases/host.md)
24
+ [@lock](./bluer_objects/docs/aliases/lock.md)
25
+ [@ls](./bluer_objects/docs/aliases/ls.md)
26
+ [@metadata](./bluer_objects/docs/aliases/metadata.md)
27
+ [@mlflow](./bluer_objects/docs/aliases/mlflow.md)
28
+ [@pdf](./bluer_objects/docs/aliases/pdf.md)
29
+ [@tags](./bluer_objects/docs/aliases/tags.md)
30
+ [@upload](./bluer_objects/docs/aliases/upload.md)
31
+ [@web](./bluer_objects/docs/aliases/web.md)
23
32
 
24
33
  ---
25
34
 
@@ -30,4 +39,4 @@ pip install bluer-objects
30
39
 
31
40
  [![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
41
 
33
- built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.207.1`](https://github.com/kamangir/bluer-objects).
42
+ built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.413.1`](https://github.com/kamangir/bluer-objects).
@@ -1,6 +1,6 @@
1
1
  #! /usr/bin/env bash
2
2
 
3
- alias @ai=bluer_ai
3
+ alias @assets=bluer_objects_assets
4
4
 
5
5
  alias @create_test_asset=bluer_objects_create_test_asset
6
6
 
@@ -9,7 +9,6 @@ alias @download=bluer_objects_download
9
9
  alias @gif=bluer_objects_gif
10
10
 
11
11
  alias @cache=bluer_objects_mlflow_cache
12
- alias @ref="bluer_objects_mlflow_cache read"
13
12
  alias @tags=bluer_objects_mlflow_tags
14
13
 
15
14
  alias @clone=bluer_objects_clone
@@ -27,16 +26,20 @@ alias @metadata=bluer_objects_metadata
27
26
 
28
27
  alias @mlflow=bluer_objects_mlflow
29
28
 
30
- alias @mysql=abcli_mysql
29
+ alias @pdf=bluer_objects_pdf
30
+
31
+ alias @upload=bluer_objects_upload
32
+
33
+ alias @web=bluer_objects_web
34
+
35
+ # ignore
36
+ alias @i=bluer_ai
37
+ alias @ai=bluer_ai
31
38
 
32
39
  alias @objects=bluer_objects
33
40
 
34
- alias @random=bluer_ai_string_random
41
+ alias @ref="bluer_objects_mlflow_cache read"
35
42
 
36
43
  alias @select=bluer_ai_select
37
44
 
38
45
  alias @storage=bluer_ai_storage
39
-
40
- alias @upload=bluer_objects_upload
41
-
42
- alias @web=bluer_objects_web
@@ -0,0 +1,20 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function bluer_objects_assets_cd() {
4
+ local options=$1
5
+ local do_create=$(bluer_ai_option_int "$options" create 0)
6
+ local volume=$(bluer_ai_option "$options" vol)
7
+
8
+ local path=$2
9
+ path=$abcli_path_git/assets$volume/$path
10
+
11
+ if [[ "$do_create" == 1 ]]; then
12
+ mkdir -pv $path
13
+ [[ $? -ne 0 ]] && return 1
14
+ fi
15
+
16
+ cd $path
17
+ [[ $? -ne 0 ]] && return 1
18
+
19
+ bluer_ai_log "🔗 $path"
20
+ }
@@ -0,0 +1,34 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function bluer_objects_assets_mv() {
4
+ local options=$1
5
+ local do_create=$(bluer_ai_option_int "$options" create 0)
6
+ local extension=$(bluer_ai_option "$options" extension jpg)
7
+ local volume=$(bluer_ai_option "$options" vol)
8
+
9
+ local path=$2
10
+ path=$abcli_path_git/assets$volume/$path
11
+
12
+ if [[ "$do_create" == 1 ]]; then
13
+ mkdir -pv $path
14
+ [[ $? -ne 0 ]] && return 1
15
+ fi
16
+
17
+ bluer_ai_log "Downloads/.$extension -> assets$volume/path"
18
+
19
+ mv -v \
20
+ $HOME/Downloads/*.$extension \
21
+ $path
22
+ [[ $? -ne 0 ]] && return 1
23
+
24
+ local push_options=$3
25
+ local do_push=$(bluer_ai_option_int "$push_options" push 0)
26
+ [[ "$do_push" == 0 ]] &&
27
+ return 0
28
+
29
+ bluer_ai_git \
30
+ assets$volume \
31
+ push \
32
+ "$path += " \
33
+ $push_options
34
+ }
@@ -0,0 +1,37 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function bluer_objects_assets_publish() {
4
+ local options=$1
5
+
6
+ local do_download=$(bluer_ai_option_int "$options" download 0)
7
+ local do_pull=$(bluer_ai_option_int "$options" pull 1)
8
+ local do_push=$(bluer_ai_option_int "$options" push 0)
9
+ local extensions=$(bluer_ai_option "$options" extensions png)
10
+
11
+ [[ "$do_pull" == 1 ]] &&
12
+ bluer_ai_git \
13
+ assets \
14
+ pull \
15
+ ~all
16
+
17
+ local object_name=$(bluer_ai_clarify_object $2 .)
18
+
19
+ [[ "$do_download" == 1 ]] &&
20
+ bluer_objects_download - $object_name
21
+
22
+ bluer_ai_eval dryrun=$do_dryrun \
23
+ python3 -m bluer_objects.assets \
24
+ publish \
25
+ --object_name $object_name \
26
+ --extensions $extensions \
27
+ "${@:3}"
28
+ [[ $? -ne 0 ]] && return 1
29
+
30
+ [[ "$do_push" == 1 ]] &&
31
+ bluer_ai_git \
32
+ assets \
33
+ push \
34
+ "$object_name update."
35
+
36
+ return 0
37
+ }
@@ -0,0 +1,15 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function bluer_objects_assets() {
4
+ local task=$1
5
+
6
+ local function_name=bluer_objects_assets_$task
7
+ if [[ $(type -t $function_name) == "function" ]]; then
8
+ $function_name "${@:2}"
9
+ return
10
+ fi
11
+
12
+ python3 -m bluer_objects.assets "$@"
13
+ }
14
+
15
+ bluer_ai_source_caller_suffix_path /assets
@@ -3,13 +3,15 @@
3
3
  function bluer_objects_download() {
4
4
  local options=$1
5
5
  local filename=$(bluer_ai_option "$options" filename)
6
+ local policy=$(bluer_ai_option "$options" policy none)
6
7
 
7
8
  local object_name=$(bluer_ai_clarify_object $2 .)
8
9
 
9
10
  python3 -m bluer_objects.storage \
10
11
  download \
11
12
  --object_name $object_name \
12
- --filename "$filename"
13
+ --filename "$filename" \
14
+ --policy $policy
13
15
  [[ $? -ne 0 ]] && return 1
14
16
 
15
17
  local open_options=$3
@@ -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
+ }
@@ -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,45 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function bluer_objects_host() {
4
+ local task=$1
5
+ local options=$2
6
+
7
+ if [ $task == "get" ]; then
8
+ python3 -m bluer_options.host \
9
+ get \
10
+ --keyword "$2" \
11
+ "${@:3}"
12
+ return
13
+ fi
14
+
15
+ if [[ "|reboot|shutdown|" == *"|$task|"* ]]; then
16
+ local command_line
17
+ [[ $task == "reboot" ]] &&
18
+ command_line="sudo reboot"
19
+ [[ $task == "shutdown" ]] &&
20
+ command_line="sudo shutdown -h now"
21
+
22
+ local rpi=$(bluer_ai_option_int "$options" rpi 0)
23
+ if [[ "$rpi" == 1 ]]; then
24
+ local machine_name=$3
25
+ if [[ -z "$machine_name" ]]; then
26
+ bluer_ai_log_error "machine_name not found."
27
+ return 1
28
+ fi
29
+
30
+ ssh \
31
+ pi@$machine_name.local \
32
+ $command_line
33
+
34
+ return
35
+ fi
36
+
37
+ bluer_ai_eval ,$options \
38
+ $command_line
39
+
40
+ return
41
+ fi
42
+
43
+ bluer_ai_log_error "@host: $task: command not found."
44
+ return 1
45
+ }
@@ -0,0 +1,29 @@
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
+ 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
+ if [[ -z "$where" ]]; then
18
+ ls -1 "$@"
19
+ return
20
+ fi
21
+
22
+ local object_name=$(bluer_ai_clarify_object $2 .)
23
+
24
+ python3 -m bluer_objects.storage \
25
+ ls \
26
+ --object_name $object_name \
27
+ --where $where \
28
+ "${@:3}"
29
+ }
@@ -0,0 +1,9 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function bluer_objects_metadata_download() {
4
+ local object_name=$(bluer_ai_clarify_object $1 .)
5
+
6
+ bluer_objects_download \
7
+ filename=metadata.yaml \
8
+ $object_name
9
+ }
@@ -0,0 +1,15 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function bluer_objects_metadata_edit() {
4
+ local options=$1
5
+ local do_download=$(bluer_ai_option_int "$options" download 0)
6
+
7
+ local object_name=$(bluer_ai_clarify_object $2 .)
8
+
9
+ if [[ "$do_download" == 1 ]]; then
10
+ bluer_objects_metadata_download \
11
+ $object_name
12
+ fi
13
+
14
+ bluer_ai_code $ABCLI_OBJECT_ROOT/$object_name/metadata.yaml
15
+ }
@@ -0,0 +1,9 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function bluer_objects_metadata_upload() {
4
+ local object_name=$(bluer_ai_clarify_object $1 .)
5
+
6
+ bluer_objects_upload \
7
+ filename=metadata.yaml \
8
+ $object_name
9
+ }
@@ -0,0 +1,8 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function bluer_objects_mlflow_tags_search() {
4
+ python3 -m bluer_objects.mlflow \
5
+ search \
6
+ --tags "$1" \
7
+ "${@:2}"
8
+ }
@@ -0,0 +1,92 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function bluer_objects_pdf_convert() {
4
+ local options=$1
5
+ local do_inline=$(bluer_ai_option_int "$options" inline 0)
6
+ local do_install=$(bluer_ai_option_int "$options" install 0)
7
+ local do_combine=$(bluer_ai_option_int "$options" combine 0)
8
+ local do_compress=$(bluer_ai_option_int "$options" compress $do_combine)
9
+ local do_upload=$(bluer_ai_option_int "$options" upload 0)
10
+ local filename=$(bluer_ai_option "$options" filename release.pdf)
11
+
12
+ if [[ "$do_install" == 1 ]]; then
13
+ pip install pypandoc
14
+ pip install PyPDF2
15
+
16
+ if [[ "$abcli_is_mac" == true ]]; then
17
+ brew install pandoc
18
+ brew install wkhtmltopdf
19
+ brew install ghostscript
20
+ fi
21
+ fi
22
+
23
+ if [[ "$do_inline" == 1 ]]; then
24
+ local module_name=${2:-object}
25
+ if alias "$module_name" &>/dev/null; then
26
+ module_name=$(alias "$module_name" | sed -E "s/^alias $module_name='(.*)'$/\1/")
27
+ fi
28
+
29
+ local path_prefix=$(python3 -m $module_name locate)/docs/
30
+
31
+ local suffixes=${3:-metadata}
32
+
33
+ local object_name=$(bluer_ai_clarify_object $4 pdf-$(bluer_ai_string_timestamp))
34
+
35
+ bluer_ai_log "@pdf $module_name/$suffixes -> $object_name ..."
36
+
37
+ bluer_ai_eval dryrun=$do_dryrun \
38
+ python3 -m bluer_objects.pdf \
39
+ convert \
40
+ --path_prefix $path_prefix \
41
+ --object_name $object_name \
42
+ --suffixes $suffixes \
43
+ --combine $do_combine \
44
+ "${@:5}"
45
+ else
46
+ local object_name=$(bluer_ai_clarify_object $2 pdf-$(bluer_ai_string_timestamp))
47
+
48
+ bluer_ai_log "@pdf $object_name ..."
49
+
50
+ bluer_ai_eval dryrun=$do_dryrun \
51
+ python3 -m bluer_objects.pdf \
52
+ convert \
53
+ --object_name $object_name \
54
+ --combine $do_combine \
55
+ --use_metadata 1 \
56
+ "${@:3}"
57
+ fi
58
+ [[ $? -ne 0 ]] && return 1
59
+
60
+ if [[ "$do_compress" == 1 ]]; then
61
+ bluer_ai_log "compressing..."
62
+
63
+ local object_path=$ABCLI_OBJECT_ROOT/$object_name
64
+ mv -v \
65
+ $object_path/$filename \
66
+ $object_path/_$filename
67
+
68
+ gs -sDEVICE=pdfwrite \
69
+ -dCompatibilityLevel=1.4 \
70
+ -dPDFSETTINGS=/ebook \
71
+ -dNOPAUSE \
72
+ -dBATCH \
73
+ -sOutputFile=$object_path/$filename \
74
+ $object_path/_$filename
75
+ [[ $? -ne 0 ]] && return 1
76
+
77
+ rm $object_path/_$filename
78
+ bluer_ai_log "-> $object_path/$filename"
79
+ fi
80
+
81
+ if [[ "$do_upload" == 1 ]]; then
82
+ bluer_objects_upload \
83
+ filename=$filename \
84
+ $object_name
85
+ [[ $? -ne 0 ]] && return 1
86
+
87
+ if [[ "$do_inline" == 0 ]]; then
88
+ bluer_objects_metadata_upload \
89
+ $object_name
90
+ fi
91
+ fi
92
+ }
@@ -0,0 +1,15 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function bluer_objects_pdf() {
4
+ local task=$1
5
+
6
+ local function_name=bluer_objects_pdf_$task
7
+ if [[ $(type -t $function_name) == "function" ]]; then
8
+ $function_name "${@:2}"
9
+ return
10
+ fi
11
+
12
+ python3 bluer_objects.pdf "$@"
13
+ }
14
+
15
+ bluer_ai_source_caller_suffix_path /pdf
@@ -4,11 +4,13 @@ function bluer_ai_storage_clear() {
4
4
  local options=$1
5
5
  local do_cloud=$(bluer_ai_option_int "$options" cloud 0)
6
6
  local do_dryrun=$(bluer_ai_option_int "$options" dryrun 1)
7
+ local do_public=$(bluer_ai_option_int "$options" public 0)
7
8
 
8
9
  if [[ "$do_cloud" == 1 ]]; then
9
10
  python3 -m bluer_objects.storage \
10
11
  clear \
11
12
  --do_dryrun $do_dryrun \
13
+ --public $do_public \
12
14
  "${@:2}"
13
15
  return
14
16
  fi
@@ -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
+ }
@@ -12,6 +12,7 @@ function test_bluer_objects_gif() {
12
12
  bluer_objects_gif \
13
13
  ~upload,$options \
14
14
  $source_object_name \
15
+ --frame_count 20 \
15
16
  --frame_duration 200 \
16
17
  --output_filename test.gif \
17
18
  --scale 2 \