zrb 1.0.0a2__py3-none-any.whl → 1.0.0a4__py3-none-any.whl

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 (174) hide show
  1. zrb/__init__.py +49 -40
  2. zrb/__main__.py +5 -3
  3. zrb/attr/type.py +2 -1
  4. zrb/builtin/__init__.py +42 -2
  5. zrb/builtin/base64.py +34 -0
  6. zrb/builtin/git.py +156 -0
  7. zrb/builtin/git_subtree.py +88 -0
  8. zrb/builtin/group.py +34 -0
  9. zrb/builtin/llm/llm_chat.py +47 -0
  10. zrb/builtin/llm/tool/cli.py +9 -0
  11. zrb/builtin/llm/tool/rag.py +189 -0
  12. zrb/builtin/llm/tool/web.py +74 -0
  13. zrb/builtin/md5.py +36 -0
  14. zrb/builtin/project/add/fastapp.py +72 -0
  15. zrb/builtin/project/add/fastapp_template/.gitignore +4 -0
  16. zrb/builtin/project/add/fastapp_template/README.md +7 -0
  17. zrb/builtin/project/add/fastapp_template/_zrb/config.py +17 -0
  18. zrb/builtin/project/add/fastapp_template/_zrb/group.py +16 -0
  19. zrb/builtin/project/add/fastapp_template/_zrb/helper.py +97 -0
  20. zrb/builtin/project/add/fastapp_template/_zrb/main.py +132 -0
  21. zrb/builtin/project/add/fastapp_template/_zrb/venv_task.py +22 -0
  22. zrb/builtin/project/add/fastapp_template/common/app.py +18 -0
  23. zrb/builtin/project/add/fastapp_template/common/db_engine.py +5 -0
  24. zrb/builtin/project/add/fastapp_template/common/db_repository.py +134 -0
  25. zrb/builtin/project/add/fastapp_template/common/error.py +8 -0
  26. zrb/builtin/project/add/fastapp_template/common/schema.py +5 -0
  27. zrb/builtin/project/add/fastapp_template/common/usecase.py +232 -0
  28. zrb/builtin/project/add/fastapp_template/config.py +29 -0
  29. zrb/builtin/project/add/fastapp_template/main.py +7 -0
  30. zrb/builtin/project/add/fastapp_template/migrate.py +3 -0
  31. zrb/builtin/project/add/fastapp_template/module/__init__.py +0 -0
  32. zrb/builtin/project/add/fastapp_template/module/auth/alembic.ini +117 -0
  33. zrb/builtin/project/add/fastapp_template/module/auth/client/api_client.py +7 -0
  34. zrb/builtin/project/add/fastapp_template/module/auth/client/base_client.py +27 -0
  35. zrb/builtin/project/add/fastapp_template/module/auth/client/direct_client.py +6 -0
  36. zrb/builtin/project/add/fastapp_template/module/auth/client/factory.py +9 -0
  37. zrb/builtin/project/add/fastapp_template/module/auth/migration/README +1 -0
  38. zrb/builtin/project/add/fastapp_template/module/auth/migration/env.py +108 -0
  39. zrb/builtin/project/add/fastapp_template/module/auth/migration/script.py.mako +26 -0
  40. zrb/builtin/project/add/fastapp_template/module/auth/migration/versions/3093c7336477_add_user_table.py +37 -0
  41. zrb/builtin/project/add/fastapp_template/module/auth/migration_metadata.py +6 -0
  42. zrb/builtin/project/add/fastapp_template/module/auth/route.py +22 -0
  43. zrb/builtin/project/add/fastapp_template/module/auth/service/__init__.py +0 -0
  44. zrb/builtin/project/add/fastapp_template/module/auth/service/user/__init__.py +0 -0
  45. zrb/builtin/project/add/fastapp_template/module/auth/service/user/repository/__init__.py +0 -0
  46. zrb/builtin/project/add/fastapp_template/module/auth/service/user/repository/db_repository.py +39 -0
  47. zrb/builtin/project/add/fastapp_template/module/auth/service/user/repository/factory.py +13 -0
  48. zrb/builtin/project/add/fastapp_template/module/auth/service/user/repository/repository.py +34 -0
  49. zrb/builtin/project/add/fastapp_template/module/auth/service/user/usecase.py +45 -0
  50. zrb/builtin/project/add/fastapp_template/module/gateway/alembic.ini +117 -0
  51. zrb/builtin/project/add/fastapp_template/module/gateway/migration/README +1 -0
  52. zrb/builtin/project/add/fastapp_template/module/gateway/migration/env.py +108 -0
  53. zrb/builtin/project/add/fastapp_template/module/gateway/migration/script.py.mako +26 -0
  54. zrb/builtin/project/add/fastapp_template/module/gateway/migration/versions/.gitkeep +0 -0
  55. zrb/builtin/project/add/fastapp_template/module/gateway/migration_metadata.py +3 -0
  56. zrb/builtin/project/add/fastapp_template/module/gateway/route.py +27 -0
  57. zrb/builtin/project/add/fastapp_template/requirements.txt +6 -0
  58. zrb/builtin/project/add/fastapp_template/schema/__init__.py +0 -0
  59. zrb/builtin/project/add/fastapp_template/schema/role.py +31 -0
  60. zrb/builtin/project/add/fastapp_template/schema/user.py +31 -0
  61. zrb/builtin/project/add/fastapp_template/template.env +2 -0
  62. zrb/builtin/project/create/__init__.py +0 -0
  63. zrb/builtin/project/create/create.py +41 -0
  64. zrb/builtin/project/create/project-template/README.md +3 -0
  65. zrb/builtin/project/create/project-template/zrb_init.py +7 -0
  66. zrb/builtin/python.py +11 -0
  67. zrb/builtin/shell/__init__.py +0 -5
  68. zrb/builtin/shell/autocomplete/__init__.py +0 -9
  69. zrb/builtin/shell/autocomplete/bash.py +5 -6
  70. zrb/builtin/shell/autocomplete/subcmd.py +7 -8
  71. zrb/builtin/shell/autocomplete/zsh.py +5 -6
  72. zrb/builtin/todo.py +219 -0
  73. zrb/callback/any_callback.py +1 -1
  74. zrb/callback/callback.py +5 -5
  75. zrb/cmd/cmd_val.py +2 -2
  76. zrb/config.py +16 -3
  77. zrb/content_transformer/any_content_transformer.py +1 -1
  78. zrb/content_transformer/content_transformer.py +2 -2
  79. zrb/context/any_context.py +1 -1
  80. zrb/context/any_shared_context.py +3 -3
  81. zrb/context/context.py +10 -8
  82. zrb/context/shared_context.py +9 -8
  83. zrb/env/__init__.py +0 -3
  84. zrb/env/any_env.py +1 -1
  85. zrb/env/env.py +3 -4
  86. zrb/env/env_file.py +4 -4
  87. zrb/env/env_map.py +2 -2
  88. zrb/group/__init__.py +0 -3
  89. zrb/group/any_group.py +3 -3
  90. zrb/group/group.py +7 -6
  91. zrb/input/any_input.py +1 -1
  92. zrb/input/base_input.py +4 -4
  93. zrb/input/bool_input.py +5 -5
  94. zrb/input/float_input.py +3 -3
  95. zrb/input/int_input.py +3 -3
  96. zrb/input/option_input.py +51 -0
  97. zrb/input/password_input.py +2 -2
  98. zrb/input/str_input.py +1 -1
  99. zrb/input/text_input.py +12 -10
  100. zrb/runner/cli.py +80 -45
  101. zrb/runner/web_app.py +150 -0
  102. zrb/runner/web_controller/__init__.py +0 -0
  103. zrb/runner/web_controller/group_info_ui/__init__.py +0 -0
  104. zrb/runner/{web_app → web_controller}/group_info_ui/controller.py +7 -8
  105. zrb/runner/{web_app → web_controller}/group_info_ui/view.html +2 -2
  106. zrb/runner/web_controller/home_page/__init__.py +0 -0
  107. zrb/runner/{web_app → web_controller}/home_page/controller.py +7 -6
  108. zrb/runner/{web_app → web_controller}/home_page/view.html +2 -2
  109. zrb/runner/web_controller/task_ui/__init__.py +0 -0
  110. zrb/runner/{web_app → web_controller}/task_ui/controller.py +8 -12
  111. zrb/runner/{web_app → web_controller}/task_ui/view.html +2 -2
  112. zrb/runner/web_util.py +5 -35
  113. zrb/session/any_session.py +13 -7
  114. zrb/session/session.py +78 -40
  115. zrb/session_state_log/session_state_log.py +7 -5
  116. zrb/session_state_logger/any_session_state_logger.py +1 -1
  117. zrb/session_state_logger/default_session_state_logger.py +2 -2
  118. zrb/session_state_logger/file_session_state_logger.py +19 -27
  119. zrb/task/any_task.py +4 -4
  120. zrb/task/base_task.py +33 -23
  121. zrb/task/base_trigger.py +11 -12
  122. zrb/task/cmd_task.py +72 -65
  123. zrb/task/http_check.py +13 -13
  124. zrb/task/llm_task.py +215 -0
  125. zrb/task/make_task.py +9 -9
  126. zrb/task/rsync_task.py +25 -25
  127. zrb/task/scaffolder.py +18 -15
  128. zrb/task/scheduler.py +6 -7
  129. zrb/task/task.py +1 -1
  130. zrb/task/tcp_check.py +11 -13
  131. zrb/util/attr.py +19 -3
  132. zrb/util/cli/style.py +71 -2
  133. zrb/util/cli/subcommand.py +2 -2
  134. zrb/util/codemod/__init__.py +0 -0
  135. zrb/util/codemod/add_code_to_class.py +35 -0
  136. zrb/util/codemod/add_code_to_function.py +36 -0
  137. zrb/util/codemod/add_code_to_method.py +55 -0
  138. zrb/util/codemod/add_key_to_dict.py +51 -0
  139. zrb/util/codemod/add_param_to_function_call.py +39 -0
  140. zrb/util/codemod/add_property_to_class.py +55 -0
  141. zrb/util/git.py +156 -0
  142. zrb/util/git_subtree.py +94 -0
  143. zrb/util/group.py +2 -2
  144. zrb/util/llm/tool.py +63 -0
  145. zrb/util/string/conversion.py +7 -0
  146. zrb/util/todo.py +259 -0
  147. {zrb-1.0.0a2.dist-info → zrb-1.0.0a4.dist-info}/METADATA +13 -5
  148. zrb-1.0.0a4.dist-info/RECORD +197 -0
  149. zrb/builtin/shell/_group.py +0 -9
  150. zrb/builtin/shell/autocomplete/_group.py +0 -6
  151. zrb/runner/web_app/any_request_handler.py +0 -24
  152. zrb/runner/web_server.py +0 -224
  153. zrb-1.0.0a2.dist-info/RECORD +0 -120
  154. /zrb/{runner/web_app → builtin/project}/__init__.py +0 -0
  155. /zrb/{runner/web_app/group_info_ui → builtin/project/add}/__init__.py +0 -0
  156. /zrb/{runner/web_app/home_page → builtin/project/add/fastapp_template}/__init__.py +0 -0
  157. /zrb/{runner/web_app/task_ui → builtin/project/add/fastapp_template/common}/__init__.py +0 -0
  158. /zrb/runner/{web_app → web_controller}/group_info_ui/partial/group_info.html +0 -0
  159. /zrb/runner/{web_app → web_controller}/group_info_ui/partial/group_li.html +0 -0
  160. /zrb/runner/{web_app → web_controller}/group_info_ui/partial/task_info.html +0 -0
  161. /zrb/runner/{web_app → web_controller}/group_info_ui/partial/task_li.html +0 -0
  162. /zrb/runner/{web_app → web_controller}/home_page/partial/group_info.html +0 -0
  163. /zrb/runner/{web_app → web_controller}/home_page/partial/group_li.html +0 -0
  164. /zrb/runner/{web_app → web_controller}/home_page/partial/task_info.html +0 -0
  165. /zrb/runner/{web_app → web_controller}/home_page/partial/task_li.html +0 -0
  166. /zrb/runner/{web_app → web_controller}/static/favicon-32x32.png +0 -0
  167. /zrb/runner/{web_app → web_controller}/static/pico.min.css +0 -0
  168. /zrb/runner/{web_app → web_controller}/task_ui/partial/common-util.js +0 -0
  169. /zrb/runner/{web_app → web_controller}/task_ui/partial/input.html +0 -0
  170. /zrb/runner/{web_app → web_controller}/task_ui/partial/main.js +0 -0
  171. /zrb/runner/{web_app → web_controller}/task_ui/partial/show-existing-session.js +0 -0
  172. /zrb/runner/{web_app → web_controller}/task_ui/partial/visualize-history.js +0 -0
  173. {zrb-1.0.0a2.dist-info → zrb-1.0.0a4.dist-info}/WHEEL +0 -0
  174. {zrb-1.0.0a2.dist-info → zrb-1.0.0a4.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,197 @@
1
+ zrb/__init__.py,sha256=ESskletjBpLO78a6wLigi9wnEGtmhfc3i_rbyMvrSyU,2767
2
+ zrb/__main__.py,sha256=Z3nrDdLh5qz4fHhsxMzo8-ui543uAkeE9PMeREX7DwQ,388
3
+ zrb/attr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ zrb/attr/type.py,sha256=4TV5gPYMMrKh5V-yB6iRYKCbsXAH_AvGXMsjxKLHcUs,568
5
+ zrb/builtin/__init__.py,sha256=hBnr175f1UsMFYPeD5GBoyL-uqEUy9jSrtosq87pmkU,1347
6
+ zrb/builtin/base64.py,sha256=1YnSwASp7OEAvQcsnHZGpJEvYoI1Z2zTIJ1bCDHfcPQ,921
7
+ zrb/builtin/git.py,sha256=m3uFadPTQvnwH4hxZVoU52znY5G3OST0-Xh_GplN0Ms,4351
8
+ zrb/builtin/git_subtree.py,sha256=5SndE5zdjBGERJjOg30W5pIvti3dlGakAFvY6NXXSmE,2603
9
+ zrb/builtin/group.py,sha256=FQnBUlHN2JFtVXTBQj0FYJDMMC-BJXoj74NFlsARwNU,1415
10
+ zrb/builtin/llm/llm_chat.py,sha256=ATENrihXUMkQ8IoarhacohUe-I_43yb7c0Tl5f69mAI,1397
11
+ zrb/builtin/llm/tool/cli.py,sha256=n8THj513k1vrXUoZrTcxESmdZzhBOP1-L3Dmup5ZW54,225
12
+ zrb/builtin/llm/tool/rag.py,sha256=rpfTMhLpkH9ZEyBcmFqLTz3UB2F6VP6w_Se2mPQVZXM,6845
13
+ zrb/builtin/llm/tool/web.py,sha256=cc-3vg8vKRq-uOk-7Z1Xe70Sn1omNqZCvePUcRptEgw,2216
14
+ zrb/builtin/md5.py,sha256=0pNlrfZA0wlZlHvFHLgyqN0JZJWGKQIF5oXxO44_OJk,949
15
+ zrb/builtin/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
+ zrb/builtin/project/add/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ zrb/builtin/project/add/fastapp.py,sha256=0Gjgh2NQyy_fCUz8X-GGK06b5W-jIz49444dd5YE3Lo,2331
18
+ zrb/builtin/project/add/fastapp_template/.gitignore,sha256=1BMFpr_M5OyTs-weCZZlVlf85sWikzdbvmKu86YD7G0,28
19
+ zrb/builtin/project/add/fastapp_template/README.md,sha256=MAo7ZFbg7LLiAfQbXcippMgjJ2-VXMKtiTDEZ3I4AAg,221
20
+ zrb/builtin/project/add/fastapp_template/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
+ zrb/builtin/project/add/fastapp_template/_zrb/config.py,sha256=UyfX4XeecKo5goVGjFzWaQN-AZL_FriwHkI5x5btgG0,536
22
+ zrb/builtin/project/add/fastapp_template/_zrb/group.py,sha256=fXrIk8TRwiX5aQ-FQW6xSOo2uDfm6Ef7IXkGVBKDXgw,487
23
+ zrb/builtin/project/add/fastapp_template/_zrb/helper.py,sha256=uz0q4vnjxX942STY9qLEebDwwL_TLhOSTH9Z1DVKNu0,2842
24
+ zrb/builtin/project/add/fastapp_template/_zrb/main.py,sha256=A2Xs37r9WIfh4LW0NaDqD5TtgTwvKk4_8BzcEnHAK_o,4109
25
+ zrb/builtin/project/add/fastapp_template/_zrb/venv_task.py,sha256=hJaPGXeAjljA-sDq5RYF35diKFQLGY8sp81DHPo8bYU,571
26
+ zrb/builtin/project/add/fastapp_template/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
+ zrb/builtin/project/add/fastapp_template/common/app.py,sha256=GX3_HVcpT2KvnETTslffUzWzyVoOCpaQGGjsTNobL0I,474
28
+ zrb/builtin/project/add/fastapp_template/common/db_engine.py,sha256=8uDn6eLloVnw58Z2gA77-K8cWE0G6DGzDVEvyIqt41M,189
29
+ zrb/builtin/project/add/fastapp_template/common/db_repository.py,sha256=tyE5ZKapKtRrjbAww2kG8eSXGhfREas0vtwd3XjD37k,6023
30
+ zrb/builtin/project/add/fastapp_template/common/error.py,sha256=hgRvoCH3C7t_iZuLThiqJVs20zUasQWbH_8jDceF8nk,243
31
+ zrb/builtin/project/add/fastapp_template/common/schema.py,sha256=dbRryeP5u7ObGX3GjF9ZID00yXffOp-AxyXu8oVJP0I,82
32
+ zrb/builtin/project/add/fastapp_template/common/usecase.py,sha256=j-FBqrFAAfFbfTN8jAIctwXOIFf75S7T8gn9iLmBsC8,9275
33
+ zrb/builtin/project/add/fastapp_template/config.py,sha256=R_InkY0f2tMNgtoDlc1JuobrGwhvITsetRpWC223npo,933
34
+ zrb/builtin/project/add/fastapp_template/main.py,sha256=npRXgrPmAN32rjbykKP--Lth3PGKoaj51wTVjcl0k-w,223
35
+ zrb/builtin/project/add/fastapp_template/migrate.py,sha256=bpIKOHZ0sV3sJrUznhKt72tKXe-Uoq9dJ7f2Uh7E0g8,92
36
+ zrb/builtin/project/add/fastapp_template/module/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
+ zrb/builtin/project/add/fastapp_template/module/auth/alembic.ini,sha256=mgQyBAIwdkZZJWLu_FQWPx1FkyaARCNp6-rLqSVvMbA,3723
38
+ zrb/builtin/project/add/fastapp_template/module/auth/client/api_client.py,sha256=rsfS8_2FjSpZrqYEr8Jxu6VgJbIXso1USRyPDuTp-dY,296
39
+ zrb/builtin/project/add/fastapp_template/module/auth/client/base_client.py,sha256=sczw_a8fgxypgBmXwEU4YJkvYxqEE0ueVdbzrncfOAc,697
40
+ zrb/builtin/project/add/fastapp_template/module/auth/client/direct_client.py,sha256=RJ57_1EK4jG6fPOQ2sHAjfAOe47Ill-ovG5cFfZV3T8,222
41
+ zrb/builtin/project/add/fastapp_template/module/auth/client/factory.py,sha256=UoWSTOiYMQHGPfERyebKtKLKU30d5G95M3sfBFYuLIs,414
42
+ zrb/builtin/project/add/fastapp_template/module/auth/migration/README,sha256=MVlc9TYmr57RbhXET6QxgyCcwWP7w-vLkEsirENqiIQ,38
43
+ zrb/builtin/project/add/fastapp_template/module/auth/migration/env.py,sha256=66zA_MPR6CCEe3yYKDibtv4eRZx4p6ZX-8waFxmzQZE,3489
44
+ zrb/builtin/project/add/fastapp_template/module/auth/migration/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl93dMj8,635
45
+ zrb/builtin/project/add/fastapp_template/module/auth/migration/versions/3093c7336477_add_user_table.py,sha256=j4tkh9NaTKNMefcy1dUdgRI5CzydUidli7i0Q6Ap-7Q,1021
46
+ zrb/builtin/project/add/fastapp_template/module/auth/migration_metadata.py,sha256=ONHEUZn4EDxKKiOt0UD9_8g7-XujRaXX0zU_PsjHZ0c,162
47
+ zrb/builtin/project/add/fastapp_template/module/auth/route.py,sha256=peU-HfXeyTRRNXJYhNhwwEkHE7_PTc_DxW7z5CVq8mA,793
48
+ zrb/builtin/project/add/fastapp_template/module/auth/service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
+ zrb/builtin/project/add/fastapp_template/module/auth/service/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
+ zrb/builtin/project/add/fastapp_template/module/auth/service/user/repository/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
+ zrb/builtin/project/add/fastapp_template/module/auth/service/user/repository/db_repository.py,sha256=lIPvHj5I09U8A0hjyTHSaO-sE7ruGugQb74NhmtL1VM,1513
52
+ zrb/builtin/project/add/fastapp_template/module/auth/service/user/repository/factory.py,sha256=45S_u8yyTx__DzAq_5ioMeQr6r_K91n1bTEAczovvDE,459
53
+ zrb/builtin/project/add/fastapp_template/module/auth/service/user/repository/repository.py,sha256=vq_1EtjC3Oosu0V9NVhzSLeazFI4PaH3na83XyQz5Wk,849
54
+ zrb/builtin/project/add/fastapp_template/module/auth/service/user/usecase.py,sha256=12EneEK0vj24KO8WVdC_7MiUa76xcKSptOW7Y4x86w4,1624
55
+ zrb/builtin/project/add/fastapp_template/module/gateway/alembic.ini,sha256=mgQyBAIwdkZZJWLu_FQWPx1FkyaARCNp6-rLqSVvMbA,3723
56
+ zrb/builtin/project/add/fastapp_template/module/gateway/migration/README,sha256=MVlc9TYmr57RbhXET6QxgyCcwWP7w-vLkEsirENqiIQ,38
57
+ zrb/builtin/project/add/fastapp_template/module/gateway/migration/env.py,sha256=q7KtNXDlHgO8DATx--CesiUHDcDM-oYtCyw75E7ILvs,3495
58
+ zrb/builtin/project/add/fastapp_template/module/gateway/migration/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl93dMj8,635
59
+ zrb/builtin/project/add/fastapp_template/module/gateway/migration/versions/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
+ zrb/builtin/project/add/fastapp_template/module/gateway/migration_metadata.py,sha256=NbIb5ncy6x5RrFD2TZMDwxBK_wDTyJEIvieMRmNpf9M,55
61
+ zrb/builtin/project/add/fastapp_template/module/gateway/route.py,sha256=pClO2mBmiDMps3PJEk75icnbak-nrPAt6eN-1WlC9QA,1176
62
+ zrb/builtin/project/add/fastapp_template/requirements.txt,sha256=J5qXx0sBagP-u-pdXsDnkPg66Gg-0ty4Mvz0WZXLAZY,108
63
+ zrb/builtin/project/add/fastapp_template/schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
+ zrb/builtin/project/add/fastapp_template/schema/role.py,sha256=tbpF67NsX3K7WNsxtx-3b0ClRnOo7pkTxdNs5UEn8oo,581
65
+ zrb/builtin/project/add/fastapp_template/schema/user.py,sha256=5yiBVTuf9FcU7i_nM4sRRFztMhXCg0W1YAjnVlPgVRE,556
66
+ zrb/builtin/project/add/fastapp_template/template.env,sha256=OZeV5cn9I7Wm6yJakyQ4lq5wVqGHuShYc_t3LqQK1Xk,55
67
+ zrb/builtin/project/create/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
+ zrb/builtin/project/create/create.py,sha256=IUU-4oUlESiw-ZHtnkbhnEA62_thKMDwGdAq8whEOTw,1156
69
+ zrb/builtin/project/create/project-template/README.md,sha256=BHeWF_txdTDzKewWdWfGhO3YOTiW8E3YwTMnd0T1LVA,39
70
+ zrb/builtin/project/create/project-template/zrb_init.py,sha256=cbPl2xZbr1LXBGd296yCvfullzmryG5nTZ8mcBmu_vU,89
71
+ zrb/builtin/python.py,sha256=herHFZl5wHsMFcqHhpisg9Ql3pQXqoCuTTwzNUTXzkw,281
72
+ zrb/builtin/shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
+ zrb/builtin/shell/autocomplete/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
+ zrb/builtin/shell/autocomplete/bash.py,sha256=-7YDVV7txgJH9mAYSYN0jmvUEeDIzWFvVNY-cY0myF8,1181
75
+ zrb/builtin/shell/autocomplete/subcmd.py,sha256=WZI6cGWJcn80zSyxOHG7sCMO3Ucix3mZf4xm_xyB_Y0,606
76
+ zrb/builtin/shell/autocomplete/zsh.py,sha256=9hlq0Wt3fhRz326mAQTypEd4_4lZdrbBx_3A-Ti3mvw,1022
77
+ zrb/builtin/todo.py,sha256=tMz3ACo5TibJok9Dyw3T8rtSIFZYyL4ZdqXvL6sfmT8,6855
78
+ zrb/callback/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
+ zrb/callback/any_callback.py,sha256=Yhdv5UWHAZSVzj5K2JdxcVQx8x8VX8aZJEivj3NTfZc,247
80
+ zrb/callback/callback.py,sha256=IQ7r9EnXYHHcNXKBJAk4WFqCqj7WDvflAuCyu5y-27I,849
81
+ zrb/cmd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
+ zrb/cmd/cmd_result.py,sha256=L8bQJzWCpcYexIxHBNsXj2pT3BtLmWex0iJSMkvimOA,597
83
+ zrb/cmd/cmd_val.py,sha256=LGuE85zQt0KSjpmW7bwIE5dnfIq-ULB8V2CDAiQ-SFk,960
84
+ zrb/config.py,sha256=1mLvHi7YFbr4JTeD7gxNSCBP0MVS8bsD0Sngy233Eww,2927
85
+ zrb/content_transformer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
+ zrb/content_transformer/any_content_transformer.py,sha256=3XHM6ZdsJFXxRD7YlUkv0Gn7-mexsH8c8zdHt3C0x8k,741
87
+ zrb/content_transformer/content_transformer.py,sha256=8luyLZZneBIBAMgGZvydy0TTjhI-TWFgEiQbuCxCAbk,1640
88
+ zrb/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
+ zrb/context/any_context.py,sha256=KZy6NtX9cg7r9FCY-wHMTx5RNoDqH5077Rjv56Wdp4M,6245
90
+ zrb/context/any_shared_context.py,sha256=p1i9af_CUDz5Mf1h1kBZMAa2AEhf17I3O5IgAcjRLoY,1768
91
+ zrb/context/context.py,sha256=au1PLgAkx1wg5BudjxNfY_UbcGaZ1zzfHKSm3fNZ7tk,6246
92
+ zrb/context/shared_context.py,sha256=47Tnnor1ttpwpe_N07rMNM1jgIYPY9abMe1Q5igkMtE,2735
93
+ zrb/dot_dict/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
+ zrb/dot_dict/dot_dict.py,sha256=ubw_x8I7AOJ59xxtFVJ00VGmq_IYdZP3mUhNlO4nEK0,556
95
+ zrb/env/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
+ zrb/env/any_env.py,sha256=_Xd56VO09mPeogkWcZ7H8mQkWU7dmZP7ImKfxPfvlLQ,211
97
+ zrb/env/env.py,sha256=zT-xj0l5G_lp_ginV_InuBr5qTqZMcGaMKE_p5FoqlU,1061
98
+ zrb/env/env_file.py,sha256=dccsR_cjXp1Q_qz692YPaZSny3Xa049V5NAZ-WLDDEQ,746
99
+ zrb/env/env_map.py,sha256=CKMmXUbuvf6h2rgFWj-WvW_xLZNgG3TtWdfrqHDe4qk,1253
100
+ zrb/group/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
+ zrb/group/any_group.py,sha256=1rNcsi5eu_86JAx_6Jy46SK4BTeppcb89MORynJd-4o,1115
102
+ zrb/group/group.py,sha256=KVaBZQ9Evihm84JCg5ZayWMbbA6iNTUiLmMgCk4OTcc,1862
103
+ zrb/input/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
+ zrb/input/any_input.py,sha256=07KgoPusxLMOwBHRjiImL955J33qC-24qGf_3My6fCE,701
105
+ zrb/input/base_input.py,sha256=zW2X2H-s4snu_xthgHwEsbBlqDwFbSKMxt4F1PaZW7w,2572
106
+ zrb/input/bool_input.py,sha256=Pgr34bpVpXkR3rrxnF_rsST-yGv_XvCWra9z9589Iyo,1383
107
+ zrb/input/float_input.py,sha256=YOPxMq6iOQXc0C3fS1k03fBSzToPV-gK5IFeuyMtlmQ,1004
108
+ zrb/input/int_input.py,sha256=DmzgGjaxgq3uLUtjI8VVvYDAwol3lu2InPBcltR_BLE,1005
109
+ zrb/input/option_input.py,sha256=KE2gJqxYT0I1M60KQf9eJ14xOscBla42FxUWdw3UvsQ,1940
110
+ zrb/input/password_input.py,sha256=SNZZv3YCfX5MAgVSiM69IMdRyH4Kd6QovXEBC48HVHA,1312
111
+ zrb/input/str_input.py,sha256=NevZHX9rf1g8eMatPyy-kUX3DglrVAQpzvVpKAzf7bA,81
112
+ zrb/input/text_input.py,sha256=te86xFpzIZnWb9xOeKHykNKTbY3pe1CdoaRCKr7UUQM,3054
113
+ zrb/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
114
+ zrb/runner/cli.py,sha256=tM61thLwJNfjrHFVJqWmGuzE0MB273JZ8ANlROsKH1E,7024
115
+ zrb/runner/web_app.py,sha256=Y44CxXCnsEjgGIDdGqTTzTF2M8hVojt5R_1-EcDEu-Q,6182
116
+ zrb/runner/web_controller/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
+ zrb/runner/web_controller/group_info_ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
+ zrb/runner/web_controller/group_info_ui/controller.py,sha256=sI1UKnRcr5K-a_lGMm5H54hbhdQwIMLlXYmwfxoIqSY,2831
119
+ zrb/runner/web_controller/group_info_ui/partial/group_info.html,sha256=njcPd6_imhPiUy3eGqtDpY_oX2R9nEh2dJQsh5PAl3M,35
120
+ zrb/runner/web_controller/group_info_ui/partial/group_li.html,sha256=n9d_EBEMUg1rGmNhkYloCwc1jHmwovw3ScxEB_fNL-w,61
121
+ zrb/runner/web_controller/group_info_ui/partial/task_info.html,sha256=dKHHuLIXi37XBbq0Xv2mYFcmJ3oAmz5vH1yKgpunfdE,34
122
+ zrb/runner/web_controller/group_info_ui/partial/task_li.html,sha256=x5Pqa_iN0IyUvzojseGUrHm2Y-xUeO8OFb7Zagui2g0,62
123
+ zrb/runner/web_controller/group_info_ui/view.html,sha256=7yIMx0yxSsmdmwPvXkm8tLgbmw7iqW068xzfFROmh9Y,836
124
+ zrb/runner/web_controller/home_page/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
125
+ zrb/runner/web_controller/home_page/controller.py,sha256=5JULWw3ZibK4Y5FkX2qPJD67TeFUGvbJ3ifSqUTTCY0,2246
126
+ zrb/runner/web_controller/home_page/partial/group_info.html,sha256=njcPd6_imhPiUy3eGqtDpY_oX2R9nEh2dJQsh5PAl3M,35
127
+ zrb/runner/web_controller/home_page/partial/group_li.html,sha256=gHF-RP8LG2ur8_mo1JwPXAZWvPM8BevAsdYrsv0uN6U,60
128
+ zrb/runner/web_controller/home_page/partial/task_info.html,sha256=dKHHuLIXi37XBbq0Xv2mYFcmJ3oAmz5vH1yKgpunfdE,34
129
+ zrb/runner/web_controller/home_page/partial/task_li.html,sha256=m-fs4VhbX27fZKgxBA0_Gv_Utntq5aaXD4sFk3zNMlk,61
130
+ zrb/runner/web_controller/home_page/view.html,sha256=RuYx2V52_kTzb4Fkjpc2H97ZpSvlSB8ElbMng2uMDUI,606
131
+ zrb/runner/web_controller/static/favicon-32x32.png,sha256=yu9AIU4k_qD4YHpul6XwJgOxIbmu0thv9ymm2QOsrAk,1456
132
+ zrb/runner/web_controller/static/pico.min.css,sha256=3V_VWRr9ge4h3MEXrYXAFNw_HxncLXt9EB6grMKSdMI,82194
133
+ zrb/runner/web_controller/task_ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
134
+ zrb/runner/web_controller/task_ui/controller.py,sha256=mLyUlaiIXZTo9_uyI7vqY2sGJ-s4Gus2JFYQvhfw7PQ,2481
135
+ zrb/runner/web_controller/task_ui/partial/common-util.js,sha256=Un5HxlFMzNa16UBJZEWvEldFJaZpt6O3Qddd9Zlw0Io,931
136
+ zrb/runner/web_controller/task_ui/partial/input.html,sha256=DDOCdHfwrU8ZF1SSNb0KDaQzbhzn-gipEGaa_ZH5k9I,154
137
+ zrb/runner/web_controller/task_ui/partial/main.js,sha256=3rjahRpypoQ6U2FwDTg21Zx7qt9zfbgzSxk6b6mNOQY,6514
138
+ zrb/runner/web_controller/task_ui/partial/show-existing-session.js,sha256=o5J-O5poWMIL1ujBXparwA4YalFuGXyA8S_wFw8obsM,3637
139
+ zrb/runner/web_controller/task_ui/partial/visualize-history.js,sha256=xKFmE-eXy9PXTWXhG_aQZ15DWStSGRrA8xzHntO-rmY,3916
140
+ zrb/runner/web_controller/task_ui/view.html,sha256=SARL-Dt03ar8IT9RJt7ULJLsjRm5u8K_F4VFwQwhxAs,2668
141
+ zrb/runner/web_util.py,sha256=FBMnS7qMp31ogm0pCZBObNjrlopIwzYM7UuZjCX1n8Q,428
142
+ zrb/session/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
143
+ zrb/session/any_session.py,sha256=x57mS15E-AfUjdVxwOWEzCBjW32zjer7WoeBw0guoDc,5266
144
+ zrb/session/session.py,sha256=s3rIcpddCAW79tuAcCNKuEWsHvgl-gwhL5usYeT8TQ8,9763
145
+ zrb/session_state_log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
146
+ zrb/session_state_log/session_state_log.py,sha256=VVghDMU72PbrvnzQ7MJuc-KTJ5P5fX0FYuCh3Rlwd9M,709
147
+ zrb/session_state_logger/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
148
+ zrb/session_state_logger/any_session_state_logger.py,sha256=W_G1fCw9ZVj4LRTplTpBZlXR-wNueGtc26jF5Gzmh74,611
149
+ zrb/session_state_logger/default_session_state_logger.py,sha256=w_cAaNUg1ZmJk-ge1kh3xtag3SApC3ZdB3VbxUvU5Ro,197
150
+ zrb/session_state_logger/file_session_state_logger.py,sha256=0lMtx7Othu4-jhL_iDHFbZWF_5HX84StU134QNCVgeQ,3753
151
+ zrb/task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
152
+ zrb/task/any_task.py,sha256=QCuFCDXmfzvS09SWN1uFGUHheJlkKkii5oZDjO3s9tA,3896
153
+ zrb/task/base_task.py,sha256=pXFhZ0aJNdGXBBnOLSNiAXQ9MCRIpuqjB-Yfn_t8MB8,16293
154
+ zrb/task/base_trigger.py,sha256=milE5BNeIeq8jGCP38qTfstSvrc0CkSnO2sV-vlhzsM,4491
155
+ zrb/task/cmd_task.py,sha256=3N3pyvz7qZ8lDB9pxGVFvfpubE33hXo48UKSmuZDGc0,10249
156
+ zrb/task/http_check.py,sha256=TwQCql3589a4-H2c7hgS1HayyU-NdBAdJ4qQNTvjXHM,2474
157
+ zrb/task/llm_task.py,sha256=5TQPEvuHKex8qj9zhQcgX6TNTFOFU4E27JfR7UxWvNI,8333
158
+ zrb/task/make_task.py,sha256=ldXRfe3rA8utJrEPjWrie-_tg6NM2G8sFnZ0UNqzT08,2179
159
+ zrb/task/rsync_task.py,sha256=rmC2lWEkIrN4ejnV7gNZjN5sB-IbXmSHiTbs-PGh80c,6267
160
+ zrb/task/scaffolder.py,sha256=tRSHsy3nXSRNu9QY7hRMZ8ppfjYmFswiWDMRmLlv3VI,6220
161
+ zrb/task/scheduler.py,sha256=kggRClk_RrAa5fAHfkqM6c-e2tUQiFSeyeLuFT26UZ4,3047
162
+ zrb/task/task.py,sha256=KCrCaWYOQQvv1RJsYtHDeo9RBFmlXQ28oKyEFU4Q7pA,73
163
+ zrb/task/tcp_check.py,sha256=UQ3rMrwDwhuvz-lf1qx6Z3D4mWPqdJIjxqcIKCOKVes,2420
164
+ zrb/task_status/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
165
+ zrb/task_status/task_status.py,sha256=aRygkj0DKrOYWgz2eF5wNmYcpVbLeklxL521BqIQN4A,3005
166
+ zrb/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
167
+ zrb/util/attr.py,sha256=HkXd2N-eUXw2o4WWWJpo2q8N0kS7k08jsMLXpK_3zq0,2353
168
+ zrb/util/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
169
+ zrb/util/cli/style.py,sha256=Pbqzu_fuhMDYDRjAH6Wl-oUW4-68tEOmv_ugJ3xH8qI,3671
170
+ zrb/util/cli/subcommand.py,sha256=gYr-CzVeKFQhY43s_FDstPwn8r-ypUz1Q2Rv_l2r-ck,1027
171
+ zrb/util/cmd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
+ zrb/util/cmd/remote.py,sha256=VklVORobTmE7FqdtYsVLq9xkSYTR2W5r2Zou0-soidw,710
173
+ zrb/util/codemod/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
174
+ zrb/util/codemod/add_code_to_class.py,sha256=jg-ISD3sHCecOJ1CCJGR9quizRgvzddKH9GZ33-IQ1A,1358
175
+ zrb/util/codemod/add_code_to_function.py,sha256=iJT-cDxS_H72j3ec03Lqmm4YPe-6svB2314ooJljtvQ,1482
176
+ zrb/util/codemod/add_code_to_method.py,sha256=TiYj9N0eMi3dutwQw_y4gnu1G6PW_-fZDqHatvZxJDo,2359
177
+ zrb/util/codemod/add_key_to_dict.py,sha256=ROw7Ds73gP5G5vOYlSqcHGUQQmJP_6Vb2jPnV2kZPQM,2110
178
+ zrb/util/codemod/add_param_to_function_call.py,sha256=cNC16uYbkjl33QEZ7i3pYvifGJXSXEoyfyCYx96S8ZI,1567
179
+ zrb/util/codemod/add_property_to_class.py,sha256=43ll7b7SUWHPDpIoMp8Zp_I71wG1eAvnW_acp-HVF_4,2075
180
+ zrb/util/cron.py,sha256=9fTGatUMYCRgmDFGg-z6_XerT4U5Vq72nD05NnEVUm4,2852
181
+ zrb/util/git.py,sha256=4HJk15tpFmsBcnU1iapv6osx250SPAtWOo99e6mpwfY,4457
182
+ zrb/util/git_subtree.py,sha256=7hxiLWw7el77amT1hrXMHrPyi76KMp11jciEfvfKXHk,2509
183
+ zrb/util/group.py,sha256=Bg7HrSycoK110U5s_Tca6-uUQuZ5CMgb8wxZSrvDQ98,2790
184
+ zrb/util/llm/tool.py,sha256=9ezbPEAyMKLWABgeqAimJ82KBFl7ciWNFVGhtllXg6s,2106
185
+ zrb/util/load.py,sha256=VMScnycP8blLFOGXjFAKShbV-yvPXwRA_J2vt96T-wc,1552
186
+ zrb/util/run.py,sha256=DGHUP9x1Q8V8UF3FbpmjLGuhVVCCLfjTH2teT8qXlNI,207
187
+ zrb/util/string/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
188
+ zrb/util/string/conversion.py,sha256=utfzaCLS2LTWMr9YbjXt2Z0a_pgzOjq76ZEPUh2UKCc,2876
189
+ zrb/util/string/format.py,sha256=LuKznDICnnbMOjM7_CEY0drlIlpdNqbBL-n6M4yEUVI,306
190
+ zrb/util/string/name.py,sha256=8picJfUBXNpdh64GNaHv3om23QHhUZux7DguFLrXHp8,1163
191
+ zrb/util/todo.py,sha256=Nbe1a-7O5FSkIE7BZxQQt7AhbHFPDbreJJI6C7Rga4o,9171
192
+ zrb/xcom/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
193
+ zrb/xcom/xcom.py,sha256=P4aYHdE3FRsTsNrXGyW8N44IWZjw-vG_qys1Ymn3aBg,1572
194
+ zrb-1.0.0a4.dist-info/METADATA,sha256=sasI6wQ_ZB5ckHwgVeKkOjrpvjN_O_whxw6sBHyJHr8,4105
195
+ zrb-1.0.0a4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
196
+ zrb-1.0.0a4.dist-info/entry_points.txt,sha256=-Pg3ElWPfnaSM-XvXqCxEAa-wfVI6BEgcs386s8C8v8,46
197
+ zrb-1.0.0a4.dist-info/RECORD,,
@@ -1,9 +0,0 @@
1
- from ...group.group import Group
2
- from ...runner.cli import cli
3
-
4
- shell_group = cli.add_group(
5
- Group(
6
- name="shell",
7
- description="Shell related commands",
8
- )
9
- )
@@ -1,6 +0,0 @@
1
- from ....group.group import Group
2
- from .._group import shell_group
3
-
4
- shell_autocomplete_group: Group = shell_group.add_group(
5
- Group(name="autocomplete", description="Shell autocomplete related commands")
6
- )
@@ -1,24 +0,0 @@
1
- from abc import ABC, abstractmethod
2
- from typing import Any
3
-
4
-
5
- class AnyRequestHandler(ABC):
6
- @abstractmethod
7
- def send_json_response(self, data: Any, http_status: int = 200):
8
- pass
9
-
10
- @abstractmethod
11
- def send_html_response(self, html: str, http_status: int = 200):
12
- pass
13
-
14
- @abstractmethod
15
- def read_json_request(self) -> Any:
16
- pass
17
-
18
- @abstractmethod
19
- def send_css_response(self, css_path: str):
20
- pass
21
-
22
- @abstractmethod
23
- def send_image_response(self, image_path: str):
24
- pass
zrb/runner/web_server.py DELETED
@@ -1,224 +0,0 @@
1
- import asyncio
2
- import datetime
3
- import json
4
- import os
5
- from concurrent.futures import ThreadPoolExecutor
6
- from functools import partial
7
- from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
8
- from threading import Thread
9
- from typing import Any
10
- from urllib.parse import parse_qs, urlparse
11
-
12
- from ..config import BANNER, SESSION_LOG_DIR, WEB_HTTP_PORT
13
- from ..context.any_context import AnyContext
14
- from ..context.shared_context import SharedContext
15
- from ..group.any_group import AnyGroup
16
- from ..session.session import Session
17
- from ..session_state_logger.default_session_state_logger import (
18
- default_session_state_logger,
19
- )
20
- from ..task.any_task import AnyTask
21
- from ..util.group import extract_node_from_args, get_node_path
22
- from .web_app.group_info_ui.controller import handle_group_info_ui
23
- from .web_app.home_page.controller import handle_home_page
24
- from .web_app.task_ui.controller import handle_task_ui
25
- from .web_util import node_path_to_url, start_event_loop, url_to_args
26
-
27
- _DIR = os.path.dirname(__file__)
28
- _STATIC_DIR = os.path.join(_DIR, "web_app", "static")
29
- executor = ThreadPoolExecutor()
30
-
31
-
32
- class WebRequestHandler(BaseHTTPRequestHandler):
33
- def __init__(
34
- self,
35
- request: Any,
36
- client_address: Any,
37
- server: Any,
38
- root_group: AnyGroup,
39
- event_loop: asyncio.AbstractEventLoop,
40
- session_dir: str,
41
- coros: list,
42
- ):
43
- self._root_group = root_group
44
- self._event_loop = event_loop
45
- self._session_dir = session_dir
46
- self._coros = coros
47
- super().__init__(request=request, client_address=client_address, server=server)
48
-
49
- def do_GET(self):
50
- parsed_url = urlparse(self.path)
51
- if parsed_url.path in ["/", "/ui", "/ui/"]:
52
- handle_home_page(self, self._root_group)
53
- elif parsed_url.path == "/pico.min.css":
54
- self.send_css_response(os.path.join(_STATIC_DIR, "pico.min.css"))
55
- elif parsed_url.path == "/favicon-32x32.png":
56
- self.send_image_response(os.path.join(_STATIC_DIR, "favicon-32x32.png"))
57
- elif parsed_url.path.startswith("/ui/"):
58
- args = url_to_args(parsed_url.path[3:])
59
- node, node_path, residual_args = extract_node_from_args(
60
- self._root_group, args
61
- )
62
- url = f"/ui{node_path_to_url(node_path)}"
63
- if isinstance(node, AnyTask):
64
- shared_ctx = SharedContext(env=dict(os.environ))
65
- session = Session(shared_ctx=shared_ctx, root_group=self._root_group)
66
- handle_task_ui(
67
- self, self._root_group, node, session, url, residual_args
68
- )
69
- elif isinstance(node, AnyGroup):
70
- handle_group_info_ui(self, self._root_group, node, url)
71
- else:
72
- self.send_error(404, "Not Found")
73
- elif parsed_url.path.startswith("/api/"):
74
- args = url_to_args(parsed_url.path[5:])
75
- node, _, residual_args = extract_node_from_args(self._root_group, args)
76
- if isinstance(node, AnyTask) and len(residual_args) > 0:
77
- if residual_args[0] == "list":
78
- task_path = get_node_path(self._root_group, node)
79
- query_params = parse_qs(parsed_url.query)
80
- self.send_session_list_json_data(task_path, query_params)
81
- else:
82
- self.send_session_json_data(residual_args[0])
83
- else:
84
- self.send_error(404, "Not Found")
85
- else:
86
- self.send_error(404, "Not Found")
87
-
88
- def do_POST(self):
89
- parsed_url = urlparse(self.path)
90
- if parsed_url.path.startswith("/api/"):
91
- args = url_to_args(parsed_url.path[5:])
92
- task, _, residual_args = extract_node_from_args(self._root_group, args)
93
- session_name = residual_args[0] if len(residual_args) > 0 else None
94
- if not isinstance(task, AnyTask):
95
- self.send_error(404, "Not found")
96
- elif session_name is None:
97
- str_kwargs: dict[str, str] = self.read_json_request()
98
- shared_ctx = SharedContext(env=dict(os.environ))
99
- session = Session(shared_ctx=shared_ctx, root_group=self._root_group)
100
- coro = asyncio.run_coroutine_threadsafe(
101
- task.async_run(session, str_kwargs=str_kwargs),
102
- self._event_loop,
103
- )
104
- self._coros.append(coro)
105
- coro.add_done_callback(lambda coro: self._coros.remove(coro))
106
- self.send_json_response({"session_name": session.name})
107
- else:
108
- self.send_error(404, "Not Found")
109
-
110
- def send_session_list_json_data(
111
- self, task_path: list[str], query_params: dict[str, list[Any]]
112
- ):
113
- print(query_params)
114
- max_start_time = datetime.datetime.now()
115
- if "to" in query_params and len(query_params["to"]) > 0:
116
- max_start_time = datetime.datetime.strptime(
117
- query_params["to"][0], "%Y-%m-%d %H:%M:%S"
118
- )
119
- min_start_time = max_start_time - datetime.timedelta(hours=1)
120
- if "from" in query_params and len(query_params["from"]) > 0:
121
- min_start_time = datetime.datetime.strptime(
122
- query_params["from"][0], "%Y-%m-%d %H:%M:%S"
123
- )
124
- page = 0
125
- if "page" in query_params and len(query_params["page"]) > 0:
126
- page = int(query_params["page"][0])
127
- limit = 10
128
- if "limit" in query_params and len(query_params["limit"]) > 0:
129
- limit = int(query_params["limit"][0])
130
- try:
131
- self.send_json_response(
132
- default_session_state_logger.list(
133
- task_path,
134
- min_start_time=min_start_time,
135
- max_start_time=max_start_time,
136
- page=page,
137
- limit=limit,
138
- )
139
- )
140
- except Exception as e:
141
- self.send_json_response({"error": f"{e}"}, 500)
142
-
143
- def send_session_json_data(self, session_name: str):
144
- try:
145
- self.send_json_response(default_session_state_logger.read(session_name))
146
- except Exception as e:
147
- self.send_json_response({"error": f"{e}"}, 500)
148
-
149
- def send_json_response(self, data: Any, http_status: int = 200):
150
- self.send_response(http_status)
151
- self.send_header("Content-type", "application/json")
152
- self.end_headers()
153
- self.wfile.write(f"{json.dumps(data)}".encode())
154
-
155
- def send_html_response(self, html: str, http_status: int = 200):
156
- self.send_response(http_status)
157
- self.send_header("Content-type", "text/html")
158
- self.end_headers()
159
- self.wfile.write(f"{html}".encode())
160
-
161
- def send_css_response(self, css_path: str):
162
- self.send_response(200)
163
- self.send_header("Content-type", "text/css")
164
- self.end_headers()
165
- # If css_content is provided, send it; otherwise, you could read from a file here
166
- with open(css_path, "r") as f:
167
- css_content = f.read()
168
- self.wfile.write(css_content.encode())
169
-
170
- def send_image_response(self, image_path: str):
171
- try:
172
- with open(image_path, "rb") as img:
173
- self.send_response(200)
174
- if image_path.endswith(".png"):
175
- self.send_header("Content-type", "image/png")
176
- elif image_path.endswith(".jpg") or image_path.endswith(".jpeg"):
177
- self.send_header("Content-type", "image/jpeg")
178
- self.end_headers()
179
- self.wfile.write(img.read())
180
- except FileNotFoundError:
181
- self.send_error(404, "Image Not Found")
182
-
183
- def read_json_request(self) -> Any:
184
- content_length = int(self.headers["Content-Length"])
185
- post_data = self.rfile.read(content_length)
186
- try:
187
- return json.loads(post_data.decode())
188
- except json.JSONDecodeError:
189
- self.send_json_response({"error": "Invalid JSON"}, http_status=400)
190
- return None
191
-
192
-
193
- def run_web_server(ctx: AnyContext, root_group: AnyGroup, port: int = WEB_HTTP_PORT):
194
- server_address = ("", port)
195
- event_loop = asyncio.new_event_loop()
196
- coros = []
197
- # Use functools.partial to bind the custom attribute
198
- handler = partial(
199
- WebRequestHandler,
200
- root_group=root_group,
201
- event_loop=event_loop,
202
- session_dir=SESSION_LOG_DIR,
203
- coros=coros,
204
- )
205
- httpd = ThreadingHTTPServer(server_address, handler)
206
- banner_lines = BANNER.split("\n") + [
207
- f"Zrb Server running on http://localhost:{port}"
208
- ]
209
- for line in banner_lines:
210
- ctx.print(line)
211
- loop_thread = Thread(target=start_event_loop, args=[event_loop], daemon=True)
212
- loop_thread.start()
213
- try:
214
- httpd.serve_forever()
215
- finally:
216
- for coro in coros:
217
- coro.cancel()
218
- httpd.shutdown()
219
- httpd.server_close()
220
- # Cancel all tasks
221
- for task in asyncio.all_tasks(event_loop):
222
- task.cancel()
223
- event_loop.call_soon_threadsafe(event_loop.stop)
224
- loop_thread.join()
@@ -1,120 +0,0 @@
1
- zrb/__init__.py,sha256=RA7Vs7KuhAv8XTWgk3devrmchKsWY6x3E6VYlNzns6M,2401
2
- zrb/__main__.py,sha256=zlH2ZuqL9zn5xzfrv1H9wF-ltdZkdccOr5i0NR7n0PY,271
3
- zrb/attr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- zrb/attr/type.py,sha256=nfOt5SYFJ7qsYHa18mPB7KJs5TYsKLM-ys-3sF4qBOA,496
5
- zrb/builtin/__init__.py,sha256=746GkBkli7HHcBOegTpJWU1HKcWNNcs7D2Ek0DZnw1E,34
6
- zrb/builtin/shell/__init__.py,sha256=UG0y0tkCHdmWsvwaZzYZJeJEu78OkU-r-I7B6TcKgS8,99
7
- zrb/builtin/shell/_group.py,sha256=tuVZKhjlknDZtgu3KahBmkfTAP7wv0zu0LOHEVg3pZM,180
8
- zrb/builtin/shell/autocomplete/__init__.py,sha256=FxkxPR9Y6O1Du30KsRFtB9W7E6Yr4236NuJDqSbCAd4,288
9
- zrb/builtin/shell/autocomplete/_group.py,sha256=5-kpomAKxaXFzcjUutW9iNANguU88GSnrBauSrDXrw4,209
10
- zrb/builtin/shell/autocomplete/bash.py,sha256=BpLY1lkJKiOXs5wGu44_jfj3QLVMGi1A0vSfmS3ZRvA,1185
11
- zrb/builtin/shell/autocomplete/subcmd.py,sha256=ICnxz625mwTQssMx1dz3n8uQ29Cxj1wthrSehBjrT8Y,609
12
- zrb/builtin/shell/autocomplete/zsh.py,sha256=FDegIKuhuSgGj2J3CjsHfVwPBI7fTtUZgq3myvKP-60,1025
13
- zrb/callback/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- zrb/callback/any_callback.py,sha256=a5JcpZ2lfIFKuztUAfyMjJpck26XObthy9DIfclIi3E,245
15
- zrb/callback/callback.py,sha256=JDMeM_pSwJTQFZ4At3pR37BEMS-ZaY7gP53iKmT_kiE,829
16
- zrb/cmd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
- zrb/cmd/cmd_result.py,sha256=L8bQJzWCpcYexIxHBNsXj2pT3BtLmWex0iJSMkvimOA,597
18
- zrb/cmd/cmd_val.py,sha256=Woqa0oEgbeoeLwG8bQxyyEMpEw0zP7sDlyOscVI6VbE,956
19
- zrb/config.py,sha256=zO_w3UroXXpHCbxAMGhV4FW87NROBMrtksnYorlnJ3k,2229
20
- zrb/content_transformer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
- zrb/content_transformer/any_content_transformer.py,sha256=jA2GF7Il_AuApml2KMzaN3urQU0WP_UnWqhtYos40Do,739
22
- zrb/content_transformer/content_transformer.py,sha256=q4Es3xiMZT0VpYaDSuW0S3JiXJjLpiMbfEkQYs1XqI0,1615
23
- zrb/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
- zrb/context/any_context.py,sha256=0QyLh1IBff25TKMWvK2C9ZNUyjGTpRx-CpkqHxlru94,6234
25
- zrb/context/any_shared_context.py,sha256=bWp2r9BF_b5W9HuMs15V68_-R25o9UzKkOA6w1aZTTY,1762
26
- zrb/context/context.py,sha256=h9etXi4AenrvAA6GZmzbM3nwy1U5EHOYWD_Ha2zQMMs,6033
27
- zrb/context/shared_context.py,sha256=EdAXSnel-1F6Pyag2upuUagVw8hsUpzvknYr7tfGfhM,2678
28
- zrb/dot_dict/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
- zrb/dot_dict/dot_dict.py,sha256=ubw_x8I7AOJ59xxtFVJ00VGmq_IYdZP3mUhNlO4nEK0,556
30
- zrb/env/__init__.py,sha256=poMQqx2UQHqlvAJmJ6ApkjAN0-h3raCYMCEKmRsGT54,33
31
- zrb/env/any_env.py,sha256=dMkx2jnpVxaTVw1Jkf3dbsdHz2h3IxZf5-c59cKxqRc,209
32
- zrb/env/env.py,sha256=tAaVIrex5HHyPc2FgIzqKQI5qjcqRHIT3nKSDK5daQY,1051
33
- zrb/env/env_file.py,sha256=_RHJRvPIJTmpwmyaa5zsEXKo4lSTPG3nFtaRJiNSeWc,733
34
- zrb/env/env_map.py,sha256=FoxG14dPlpeYsJtxMYIp3JdVRC3OlgXUR9fAxkhBHsg,1244
35
- zrb/group/__init__.py,sha256=3kqdBRThwO6hJkCGh0F7NtTtzUB9nXrt4dqDqY0ywA0,39
36
- zrb/group/any_group.py,sha256=fJKAVo2uHa2aUMfSjkK5S9V9RrNcJlsTQarCaEkPAcs,1094
37
- zrb/group/group.py,sha256=V8DjuiFODBG69lxBSL3pXJElOaYG-Ub7NxUb3MvA8zw,1759
38
- zrb/input/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
- zrb/input/any_input.py,sha256=h6ECoL9AlEVc7KwkAA2eCf9T37PHCzgvs5B4GegAnBY,699
40
- zrb/input/base_input.py,sha256=gpA9UVBdcuJS5rr0ZA--qiKa-tiiVvb9wE4rer_DsOA,2557
41
- zrb/input/bool_input.py,sha256=MS4d0WeUzxU-QnVVsyizec6upGWjZAUVMZvZ7gs9s-M,1367
42
- zrb/input/float_input.py,sha256=y7ZGT0HTH4q12ISYWUwir3FHjdrSmeAZ9E8XJxSJCJI,991
43
- zrb/input/int_input.py,sha256=rSUrC5namx1dLVOdfaI2Mj1nAl3IJmi_1wHMSPFqxKU,992
44
- zrb/input/password_input.py,sha256=c69kq_PYMltJoJCRsp_25FfDXGhF-PEgXu7QDZmCk20,1301
45
- zrb/input/str_input.py,sha256=_gbOh2xds610Gb1_YByWfEusYBR-jQmrUoNUFJ-kv1c,72
46
- zrb/input/text_input.py,sha256=UBfc_0itxvI9hP-goqV9M4YdF27Bu81rXfRZ1VPaQ5w,3021
47
- zrb/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
- zrb/runner/cli.py,sha256=HHFaPRC2lfQE5o0HGXtTGIajd-KrunHJv4eeztsxGxs,5717
49
- zrb/runner/web_app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
- zrb/runner/web_app/any_request_handler.py,sha256=QZsr0uxMWvD0VgqhJ04zQVAqkrib5d2D4HuSaJH5moM,538
51
- zrb/runner/web_app/group_info_ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
- zrb/runner/web_app/group_info_ui/controller.py,sha256=Mv8ir5veGz6wwYk2N04AWtXjQCSr7UCxvfus3jHoDMY,2876
53
- zrb/runner/web_app/group_info_ui/partial/group_info.html,sha256=njcPd6_imhPiUy3eGqtDpY_oX2R9nEh2dJQsh5PAl3M,35
54
- zrb/runner/web_app/group_info_ui/partial/group_li.html,sha256=n9d_EBEMUg1rGmNhkYloCwc1jHmwovw3ScxEB_fNL-w,61
55
- zrb/runner/web_app/group_info_ui/partial/task_info.html,sha256=dKHHuLIXi37XBbq0Xv2mYFcmJ3oAmz5vH1yKgpunfdE,34
56
- zrb/runner/web_app/group_info_ui/partial/task_li.html,sha256=x5Pqa_iN0IyUvzojseGUrHm2Y-xUeO8OFb7Zagui2g0,62
57
- zrb/runner/web_app/group_info_ui/view.html,sha256=Ib31OpKoled-a4wkA3Fmngmewttocjro8MQoAul9ESA,822
58
- zrb/runner/web_app/home_page/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
- zrb/runner/web_app/home_page/controller.py,sha256=75G51Wln3adILH7rYnUMI-J6bxSZS2qb8pVxixi500s,2285
60
- zrb/runner/web_app/home_page/partial/group_info.html,sha256=njcPd6_imhPiUy3eGqtDpY_oX2R9nEh2dJQsh5PAl3M,35
61
- zrb/runner/web_app/home_page/partial/group_li.html,sha256=gHF-RP8LG2ur8_mo1JwPXAZWvPM8BevAsdYrsv0uN6U,60
62
- zrb/runner/web_app/home_page/partial/task_info.html,sha256=dKHHuLIXi37XBbq0Xv2mYFcmJ3oAmz5vH1yKgpunfdE,34
63
- zrb/runner/web_app/home_page/partial/task_li.html,sha256=m-fs4VhbX27fZKgxBA0_Gv_Utntq5aaXD4sFk3zNMlk,61
64
- zrb/runner/web_app/home_page/view.html,sha256=fSlyYU2L9YG6pAk5y83N5TWwjlhH8Mcg0IuK5gdVnsQ,592
65
- zrb/runner/web_app/static/favicon-32x32.png,sha256=yu9AIU4k_qD4YHpul6XwJgOxIbmu0thv9ymm2QOsrAk,1456
66
- zrb/runner/web_app/static/pico.min.css,sha256=3V_VWRr9ge4h3MEXrYXAFNw_HxncLXt9EB6grMKSdMI,82194
67
- zrb/runner/web_app/task_ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
- zrb/runner/web_app/task_ui/controller.py,sha256=5BcpGw89UZMoEJErTNw68ygQ90R-4jpraJ0qrrewPqo,2541
69
- zrb/runner/web_app/task_ui/partial/common-util.js,sha256=Un5HxlFMzNa16UBJZEWvEldFJaZpt6O3Qddd9Zlw0Io,931
70
- zrb/runner/web_app/task_ui/partial/input.html,sha256=DDOCdHfwrU8ZF1SSNb0KDaQzbhzn-gipEGaa_ZH5k9I,154
71
- zrb/runner/web_app/task_ui/partial/main.js,sha256=3rjahRpypoQ6U2FwDTg21Zx7qt9zfbgzSxk6b6mNOQY,6514
72
- zrb/runner/web_app/task_ui/partial/show-existing-session.js,sha256=o5J-O5poWMIL1ujBXparwA4YalFuGXyA8S_wFw8obsM,3637
73
- zrb/runner/web_app/task_ui/partial/visualize-history.js,sha256=xKFmE-eXy9PXTWXhG_aQZ15DWStSGRrA8xzHntO-rmY,3916
74
- zrb/runner/web_app/task_ui/view.html,sha256=M3qOXAEercUcDy_K6Kb1hkaZXuOah-xdqjwDrKQH23U,2654
75
- zrb/runner/web_server.py,sha256=5h2NyqQm8Tlp_loUsIiTiTADm1EC_8PJF_wYBzK8idk,9168
76
- zrb/runner/web_util.py,sha256=Fn17emtjg2Z4GfySGIYptDn0zmAakolyQ6YkoVlYjgc,1188
77
- zrb/session/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
- zrb/session/any_session.py,sha256=UPqBtNODIaRbRh5iEQEBCcqByc-KFz0fijONDkcky-M,5124
79
- zrb/session/session.py,sha256=ITgjR7haZ6JkUAX8Pn6xPqQSjlJ_Ist_-QJABiX8-ro,8972
80
- zrb/session_state_log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
- zrb/session_state_log/session_state_log.py,sha256=bJj7L_kX7HMC9cd-de6j4xb3ExIVQQ94aV-oC4ghgPE,688
82
- zrb/session_state_logger/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
- zrb/session_state_logger/any_session_state_logger.py,sha256=QLxzrS_DYmAJgjMNrEI8WYZWj0FvqXaanWI6GMyKwSk,609
84
- zrb/session_state_logger/default_session_state_logger.py,sha256=4Mk_ONxN9PGx2tCKHXMJHlS52rC62CtJCJyzop66LNw,171
85
- zrb/session_state_logger/file_session_state_logger.py,sha256=efkAAXs9kVUpTpnIgGPWeOB9gPrVExI2Tq1Qh6y9O7U,3942
86
- zrb/task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
- zrb/task/any_task.py,sha256=oXS0lqPb_DIMRd7KfbBelkQXyav8Q2pIW7eD4-CR2q4,3888
88
- zrb/task/base_task.py,sha256=RvK5P1i6yCCCaBlRrOGDVJE_o8YiCe-G8r1QtXIMaXI,15765
89
- zrb/task/base_trigger.py,sha256=_jSr35bjoVee7s0-ktrn1sYY2bTqUwWICbz3-ATVrPU,4454
90
- zrb/task/cmd_task.py,sha256=T18V_uFx4OeK-MerkMng2OEjeLLXTy59aapwGWNfe80,9976
91
- zrb/task/http_check.py,sha256=hxaC_evUIEM16asny_m6b1JvltQGG-k3Fa3RvYJ2ts0,2458
92
- zrb/task/make_task.py,sha256=t9yrEjxFdcFPPyjUDr8kou9S1RU8UgvTdSexfi-RBRc,2139
93
- zrb/task/rsync_task.py,sha256=J9NoBjcMJDpC2Agbk8QlWKXEWIiAmO9M6hHnahq0Hkw,6351
94
- zrb/task/scaffolder.py,sha256=0DnKN8ao16tqFGUoDzzi9Q6ytfRXmLeLRucM_KiXn2Q,6115
95
- zrb/task/scheduler.py,sha256=x8SgbiD7tqZdXHpzNRdYs8A2sVN7KwmOncLGEkBJgmg,3020
96
- zrb/task/task.py,sha256=NQ3N3QYKHJhiyfN4QZXm_PoJLoEXi_Sb5dv6nXuncE8,65
97
- zrb/task/tcp_check.py,sha256=OM8D_SJ2ZZMmi2XWnSuBxJwOCkC9kIZJywujluyCNvw,2434
98
- zrb/task_status/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
- zrb/task_status/task_status.py,sha256=aRygkj0DKrOYWgz2eF5wNmYcpVbLeklxL521BqIQN4A,3005
100
- zrb/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
- zrb/util/attr.py,sha256=KGp0NchjDzZbF01zLd8mHkFbOCp5o9omPCbxaAUkK9k,2044
102
- zrb/util/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
- zrb/util/cli/style.py,sha256=BUsc4obp-L_3aO9lK1S_R1Qcl3MW7zJla6jkMYg_mWI,2503
104
- zrb/util/cli/subcommand.py,sha256=YeZISsE9Nhql4oM42gNoKxrKACtvAysCrelt3JonrnI,1019
105
- zrb/util/cmd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
- zrb/util/cmd/remote.py,sha256=VklVORobTmE7FqdtYsVLq9xkSYTR2W5r2Zou0-soidw,710
107
- zrb/util/cron.py,sha256=9fTGatUMYCRgmDFGg-z6_XerT4U5Vq72nD05NnEVUm4,2852
108
- zrb/util/group.py,sha256=a1rgMEiSpr6vc5xwjPYCXkTxmub0Apx6K5pSdRhsllY,2786
109
- zrb/util/load.py,sha256=VMScnycP8blLFOGXjFAKShbV-yvPXwRA_J2vt96T-wc,1552
110
- zrb/util/run.py,sha256=DGHUP9x1Q8V8UF3FbpmjLGuhVVCCLfjTH2teT8qXlNI,207
111
- zrb/util/string/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
112
- zrb/util/string/conversion.py,sha256=lem0DFkw0VT9j-bgK7Thh3W_RSjt09KACH2M8snFZaA,2641
113
- zrb/util/string/format.py,sha256=LuKznDICnnbMOjM7_CEY0drlIlpdNqbBL-n6M4yEUVI,306
114
- zrb/util/string/name.py,sha256=8picJfUBXNpdh64GNaHv3om23QHhUZux7DguFLrXHp8,1163
115
- zrb/xcom/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
- zrb/xcom/xcom.py,sha256=P4aYHdE3FRsTsNrXGyW8N44IWZjw-vG_qys1Ymn3aBg,1572
117
- zrb-1.0.0a2.dist-info/METADATA,sha256=5iPazsPnoJtYmMc9uaUP-3k16UUhoSJLLr7G0c5u-C4,3751
118
- zrb-1.0.0a2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
119
- zrb-1.0.0a2.dist-info/entry_points.txt,sha256=-Pg3ElWPfnaSM-XvXqCxEAa-wfVI6BEgcs386s8C8v8,46
120
- zrb-1.0.0a2.dist-info/RECORD,,
File without changes