zrb 0.23.4__py3-none-any.whl → 0.24.1__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 (234) hide show
  1. zrb/__init__.py +2 -0
  2. zrb/action/runner.py +6 -5
  3. zrb/advertisement.py +1 -2
  4. zrb/builtin/base64/decode.py +1 -1
  5. zrb/builtin/base64/encode.py +1 -1
  6. zrb/builtin/devtool/install/_helper.py +2 -1
  7. zrb/builtin/devtool/install/_input.py +2 -2
  8. zrb/builtin/env/get.py +3 -2
  9. zrb/builtin/eval.py +2 -1
  10. zrb/builtin/git/get_file_changes.py +2 -1
  11. zrb/builtin/md5/hash.py +1 -1
  12. zrb/builtin/md5/sum.py +1 -1
  13. zrb/builtin/project/_helper.py +3 -3
  14. zrb/builtin/project/add/app/generator/generator.py +1 -1
  15. zrb/builtin/project/add/app/generator/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/snake_zrb_generator_name/snake_zrb_generator_name.py +1 -1
  16. zrb/builtin/project/add/app/generator/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/snake_zrb_generator_name/template/_automate/snake_zrb_app_name/container/remove.py +1 -1
  17. zrb/builtin/project/add/app/generator/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/snake_zrb_generator_name/template/_automate/snake_zrb_app_name/container/start.py +6 -7
  18. zrb/builtin/project/add/app/generator/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/snake_zrb_generator_name/template/_automate/snake_zrb_app_name/container/stop.py +1 -1
  19. zrb/builtin/project/add/app/generator/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/snake_zrb_generator_name/template/src/kebab-zrb-app-name/docker-compose.yml +0 -2
  20. zrb/builtin/project/add/app/python/python.py +1 -1
  21. zrb/builtin/project/add/app/python/template/_automate/snake_zrb_app_name/container/remove.py +1 -1
  22. zrb/builtin/project/add/app/python/template/_automate/snake_zrb_app_name/container/start.py +6 -7
  23. zrb/builtin/project/add/app/python/template/_automate/snake_zrb_app_name/container/stop.py +1 -1
  24. zrb/builtin/project/add/app/python/template/src/kebab-zrb-app-name/docker-compose.yml +0 -2
  25. zrb/builtin/project/add/fastapp/app/app.py +3 -1
  26. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/_helper.py +2 -53
  27. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/_service_config.py +1 -1
  28. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/microservices/_helper.py +2 -2
  29. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/microservices/start.py +5 -6
  30. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/monolith/_helper.py +2 -2
  31. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/monolith/start.py +5 -6
  32. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/support/_helper.py +5 -3
  33. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/support/start.py +4 -6
  34. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/frontend/build-once.sh +1 -1
  35. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/frontend/build.sh +1 -1
  36. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/microservices/_helper.py +3 -5
  37. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/microservices/start.py +3 -3
  38. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/microservices/{start_microservices.py → start_services.py} +2 -3
  39. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/.generator-version +1 -0
  40. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/deployment/_common.py +5 -5
  41. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/deployment/app_helper.py +5 -5
  42. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/docker-compose.yml +2 -2
  43. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/loadtest/locustfile.py +1 -3
  44. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/loadtest/template.env +1 -1
  45. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/error.py +2 -1
  46. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/kafka/admin.py +4 -3
  47. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/kafka/consumer.py +2 -1
  48. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/messagebus.py +4 -3
  49. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/mock.py +4 -3
  50. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/rabbitmq/admin.py +4 -3
  51. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/rabbitmq/consumer.py +3 -2
  52. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/model/repo_model.py +3 -3
  53. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/repo/db_repo.py +7 -6
  54. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/repo/repo.py +2 -2
  55. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/repo/search_filter.py +2 -1
  56. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/rpc/messagebus/caller.py +2 -1
  57. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/rpc/messagebus/server.py +2 -1
  58. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/rpc/rpc.py +3 -2
  59. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/serializer/serializer.py +2 -1
  60. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/config.py +59 -62
  61. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/helper/async_task.py +1 -1
  62. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/app/app.py +28 -28
  63. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/app/app_lifespan.py +15 -15
  64. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/app/app_state.py +2 -2
  65. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/db_connection.py +14 -2
  66. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/frontend_index.py +2 -2
  67. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/log.py +6 -6
  68. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/messagebus.py +33 -33
  69. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/rpc.py +9 -9
  70. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/component/access_token/scheme.py +2 -1
  71. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/component/access_token/util.py +2 -1
  72. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/group/repo.py +2 -1
  73. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/group/rpc.py +2 -1
  74. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/rpc.py +2 -1
  75. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/user/api.py +2 -1
  76. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/user/model.py +3 -2
  77. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/user/repo.py +3 -2
  78. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/user/rpc.py +3 -2
  79. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/access_token_scheme.py +2 -2
  80. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/access_token_util.py +7 -7
  81. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/model/user_model.py +6 -6
  82. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/refresh_token_util.py +7 -7
  83. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/user.py +18 -18
  84. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/migrate.py +2 -2
  85. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/register_module.py +8 -8
  86. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/register_permission.py +2 -2
  87. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/schema/group.py +3 -5
  88. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/schema/permission.py +1 -3
  89. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/schema/request.py +1 -3
  90. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/schema/user.py +5 -7
  91. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/entity/activity/event.py +2 -1
  92. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/entity/activity/rpc.py +2 -1
  93. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/migrate.py +2 -2
  94. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/register_module.py +8 -8
  95. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/schema/activity.py +1 -3
  96. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/template.env +5 -2
  97. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_group_crud.py +8 -8
  98. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_permission_crud.py +8 -8
  99. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_user_crud.py +8 -8
  100. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_user_login.py +15 -15
  101. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/test_liveness_and_readiness.py +4 -4
  102. zrb/builtin/project/add/fastapp/crud/_helper/__init__.py +7 -0
  103. zrb/builtin/project/add/fastapp/crud/_helper/_common.py +8 -0
  104. zrb/builtin/project/add/fastapp/crud/_helper/register_api.py +45 -0
  105. zrb/builtin/project/add/fastapp/crud/_helper/register_permission.py +40 -0
  106. zrb/builtin/project/add/fastapp/crud/_helper/register_rpc.py +45 -0
  107. zrb/builtin/project/add/fastapp/crud/_task_factory.py +1 -2
  108. zrb/builtin/project/add/fastapp/crud/crud.py +4 -25
  109. zrb/builtin/project/add/fastapp/crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/repo.py +12 -1
  110. zrb/builtin/project/add/fastapp/crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/rpc.py +2 -1
  111. zrb/builtin/project/add/fastapp/crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/schema/snake_zrb_entity_name.py +3 -2
  112. zrb/builtin/project/add/fastapp/crud/template/src/kebab-zrb-app-name/test/snake_zrb_module_name/test_snake_zrb_entity_name.py +9 -8
  113. zrb/builtin/project/add/fastapp/field/_helper/__init__.py +17 -0
  114. zrb/builtin/project/add/fastapp/field/_helper/_common.py +102 -0
  115. zrb/builtin/project/add/fastapp/field/_helper/inject_delete_page.py +49 -0
  116. zrb/builtin/project/add/fastapp/field/_helper/inject_detail_page.py +49 -0
  117. zrb/builtin/project/add/fastapp/field/_helper/inject_insert_page.py +62 -0
  118. zrb/builtin/project/add/fastapp/field/_helper/inject_list_page.py +47 -0
  119. zrb/builtin/project/add/fastapp/field/_helper/inject_repo.py +47 -0
  120. zrb/builtin/project/add/fastapp/field/_helper/inject_schema.py +45 -0
  121. zrb/builtin/project/add/fastapp/field/_helper/inject_test.py +49 -0
  122. zrb/builtin/project/add/fastapp/field/_helper/inject_update_page.py +50 -0
  123. zrb/builtin/project/add/fastapp/field/_input.py +14 -2
  124. zrb/builtin/project/add/fastapp/field/field.py +52 -70
  125. zrb/builtin/project/add/fastapp/module/_helper/__init__.py +17 -0
  126. zrb/builtin/project/add/fastapp/module/_helper/append_all_disabled_env.py +22 -0
  127. zrb/builtin/project/add/fastapp/module/_helper/append_all_enabled_env.py +22 -0
  128. zrb/builtin/project/add/fastapp/module/_helper/append_deployment_template_env.py +25 -0
  129. zrb/builtin/project/add/fastapp/module/_helper/append_src_template_env.py +25 -0
  130. zrb/builtin/project/add/fastapp/module/_helper/create_app_config.py +29 -0
  131. zrb/builtin/project/add/fastapp/module/_helper/create_microservice_config.py +157 -0
  132. zrb/builtin/project/add/fastapp/module/_helper/register_migration.py +35 -0
  133. zrb/builtin/project/add/fastapp/module/_helper/register_module.py +33 -0
  134. zrb/builtin/project/add/fastapp/module/module.py +9 -38
  135. zrb/builtin/project/add/fastapp/module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/migrate.py +2 -2
  136. zrb/builtin/project/add/fastapp/module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/register_module.py +8 -8
  137. zrb/builtin/project/add/plugin/plugin.py +3 -3
  138. zrb/builtin/project/add/project_task/add.py +1 -1
  139. zrb/builtin/project/add/project_task/template/_automate/_project/build.py +2 -1
  140. zrb/builtin/project/add/project_task/template/_automate/_project/container/remove.py +2 -1
  141. zrb/builtin/project/add/project_task/template/_automate/_project/container/start.py +2 -1
  142. zrb/builtin/project/add/project_task/template/_automate/_project/container/stop.py +2 -1
  143. zrb/builtin/project/add/project_task/template/_automate/_project/deploy.py +2 -1
  144. zrb/builtin/project/add/project_task/template/_automate/_project/destroy.py +2 -1
  145. zrb/builtin/project/add/project_task/template/_automate/_project/get_env.py +2 -1
  146. zrb/builtin/project/add/project_task/template/_automate/_project/image/build.py +2 -1
  147. zrb/builtin/project/add/project_task/template/_automate/_project/image/push.py +2 -1
  148. zrb/builtin/project/add/project_task/template/_automate/_project/publish.py +2 -1
  149. zrb/builtin/project/add/project_task/template/_automate/_project/start.py +2 -1
  150. zrb/builtin/project/add/task/cmd/add.py +1 -1
  151. zrb/builtin/project/add/task/docker_compose/add.py +1 -1
  152. zrb/builtin/project/add/task/docker_compose/template/src/kebab-zrb-task-name/docker-compose.yml +0 -2
  153. zrb/builtin/project/add/task/python/add.py +1 -1
  154. zrb/builtin/project/add/task/python/template/_automate/snake_zrb_task_name.py +1 -1
  155. zrb/builtin/project/create/_helper.py +1 -1
  156. zrb/builtin/project/create/create.py +3 -3
  157. zrb/builtin/say.py +3 -3
  158. zrb/builtin/version.py +5 -4
  159. zrb/config/config.py +14 -14
  160. zrb/helper/accessories/color.py +2 -1
  161. zrb/helper/advertisement.py +2 -1
  162. zrb/helper/callable.py +4 -1
  163. zrb/helper/cli.py +4 -4
  164. zrb/helper/codemod/add_import_module.py +3 -2
  165. zrb/helper/codemod/add_property_to_class.py +2 -1
  166. zrb/helper/default_env.py +2 -1
  167. zrb/helper/docker_compose/fetch_external_env.py +4 -2
  168. zrb/helper/docker_compose/file.py +3 -1
  169. zrb/helper/env_map/fetch.py +3 -2
  170. zrb/helper/file/copy_tree.py +2 -1
  171. zrb/helper/file/match.py +2 -2
  172. zrb/helper/git/detect_changes.py +1 -1
  173. zrb/helper/log.py +3 -3
  174. zrb/helper/map/conversion.py +3 -1
  175. zrb/helper/string/jinja.py +2 -1
  176. zrb/helper/string/parse_replacement.py +1 -1
  177. zrb/helper/typecheck.py +2 -2
  178. zrb/helper/typing.py +5 -27
  179. zrb/helper/util.py +13 -1
  180. zrb/runner.py +2 -2
  181. zrb/task/any_task.py +9 -17
  182. zrb/task/any_task_event_handler.py +3 -1
  183. zrb/task/base_remote_cmd_task.py +3 -10
  184. zrb/task/base_task/base_task.py +12 -11
  185. zrb/task/base_task/component/base_task_model.py +15 -22
  186. zrb/task/base_task/component/common_task_model.py +15 -22
  187. zrb/task/base_task/component/renderer.py +3 -1
  188. zrb/task/base_task/component/trackers.py +1 -1
  189. zrb/task/checker.py +2 -1
  190. zrb/task/cmd_task.py +8 -15
  191. zrb/task/decorator.py +3 -1
  192. zrb/task/docker_compose_start_task.py +146 -0
  193. zrb/task/docker_compose_task.py +43 -34
  194. zrb/task/flow_task.py +19 -17
  195. zrb/task/http_checker.py +3 -9
  196. zrb/task/looper.py +4 -2
  197. zrb/task/notifier.py +3 -1
  198. zrb/task/parallel.py +4 -4
  199. zrb/task/path_checker.py +6 -12
  200. zrb/task/path_watcher.py +5 -13
  201. zrb/task/port_checker.py +3 -9
  202. zrb/task/recurring_task.py +5 -4
  203. zrb/task/remote_cmd_task.py +2 -1
  204. zrb/task/resource_maker.py +6 -13
  205. zrb/task/rsync_task.py +3 -1
  206. zrb/task/server.py +13 -12
  207. zrb/task/time_watcher.py +3 -10
  208. zrb/task/watcher.py +2 -1
  209. zrb/task/wiki_task.py +4 -3
  210. zrb/task_env/env.py +2 -1
  211. zrb/task_env/env_file.py +7 -6
  212. zrb/task_group/group.py +8 -7
  213. zrb/task_input/any_input.py +4 -3
  214. zrb/task_input/base_input.py +7 -5
  215. zrb/task_input/bool_input.py +2 -1
  216. zrb/task_input/choice_input.py +3 -1
  217. zrb/task_input/float_input.py +2 -1
  218. zrb/task_input/int_input.py +2 -1
  219. zrb/task_input/multiline_input.py +5 -3
  220. zrb/task_input/password_input.py +2 -1
  221. zrb/task_input/str_input.py +2 -1
  222. {zrb-0.23.4.dist-info → zrb-0.24.1.dist-info}/METADATA +2 -2
  223. {zrb-0.23.4.dist-info → zrb-0.24.1.dist-info}/RECORD +226 -208
  224. zrb/builtin/project/add/app/generator/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/snake_zrb_generator_name/template/_automate/snake_zrb_app_name/container/init.py +0 -34
  225. zrb/builtin/project/add/app/python/template/_automate/snake_zrb_app_name/container/init.py +0 -34
  226. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/microservices/init.py +0 -36
  227. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/monolith/init.py +0 -36
  228. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/support/init.py +0 -26
  229. zrb/builtin/project/add/fastapp/crud/_helper.py +0 -118
  230. zrb/builtin/project/add/fastapp/field/_helper.py +0 -328
  231. zrb/builtin/project/add/fastapp/module/_helper.py +0 -313
  232. {zrb-0.23.4.dist-info → zrb-0.24.1.dist-info}/LICENSE +0 -0
  233. {zrb-0.23.4.dist-info → zrb-0.24.1.dist-info}/WHEEL +0 -0
  234. {zrb-0.23.4.dist-info → zrb-0.24.1.dist-info}/entry_points.txt +0 -0
@@ -1,19 +1,12 @@
1
1
  import os
2
+ from collections.abc import Callable, Iterable, Mapping
3
+ from typing import Any, Optional, Union
2
4
 
3
5
  from zrb.helper.accessories.color import get_random_color
4
6
  from zrb.helper.accessories.icon import get_random_icon
5
7
  from zrb.helper.string.conversion import to_cli_name
6
8
  from zrb.helper.typecheck import typechecked
7
- from zrb.helper.typing import (
8
- Any,
9
- Callable,
10
- Iterable,
11
- JinjaTemplate,
12
- List,
13
- Mapping,
14
- Optional,
15
- Union,
16
- )
9
+ from zrb.helper.typing import JinjaTemplate
17
10
  from zrb.helper.util import coalesce_str
18
11
  from zrb.task.any_task import AnyTask
19
12
  from zrb.task.any_task_event_handler import (
@@ -39,7 +32,7 @@ class CommonTaskModel:
39
32
  name: str,
40
33
  group: Optional[Group] = None,
41
34
  description: str = "",
42
- inputs: List[AnyInput] = [],
35
+ inputs: list[AnyInput] = [],
43
36
  envs: Iterable[Env] = [],
44
37
  env_files: Iterable[EnvFile] = [],
45
38
  icon: Optional[str] = None,
@@ -65,7 +58,7 @@ class CommonTaskModel:
65
58
  self._group = group
66
59
  if group is not None:
67
60
  group._add_task(self)
68
- checkers_cp: List[AnyTask] = [checker.copy() for checker in checkers]
61
+ checkers_cp: list[AnyTask] = [checker.copy() for checker in checkers]
69
62
  for checker in checkers_cp:
70
63
  checker.add_env(*envs)
71
64
  checker.add_env_file(*env_files)
@@ -104,7 +97,7 @@ class CommonTaskModel:
104
97
  self.__has_already_inject_inputs: bool = False
105
98
  self.__has_already_inject_upstreams: bool = False
106
99
  self.__has_already_inject_fallbacks: bool = False
107
- self.__all_inputs: Optional[List[AnyInput]] = None
100
+ self.__all_inputs: Optional[list[AnyInput]] = None
108
101
 
109
102
  def _lock_checkers(self):
110
103
  self.__allow_add_checkers = False
@@ -185,7 +178,7 @@ class CommonTaskModel:
185
178
  def inject_inputs(self):
186
179
  pass
187
180
 
188
- def _get_inputs(self) -> List[AnyInput]:
181
+ def _get_inputs(self) -> list[AnyInput]:
189
182
  if not self.__has_already_inject_inputs:
190
183
  self.inject_inputs()
191
184
  self.__has_already_inject_inputs = True
@@ -197,7 +190,7 @@ class CommonTaskModel:
197
190
  """
198
191
  if self.__all_inputs is not None:
199
192
  return self.__all_inputs
200
- self.__all_inputs: List[AnyInput] = []
193
+ self.__all_inputs: list[AnyInput] = []
201
194
  existing_input_names: Mapping[str, bool] = {}
202
195
  # Add task inputs
203
196
  inputs = self._get_inputs()
@@ -244,7 +237,7 @@ class CommonTaskModel:
244
237
  def inject_envs(self):
245
238
  pass
246
239
 
247
- def _get_envs(self) -> List[Env]:
240
+ def _get_envs(self) -> list[Env]:
248
241
  if not self.__has_already_inject_envs:
249
242
  self.inject_envs()
250
243
  self.__has_already_inject_envs = True
@@ -297,7 +290,7 @@ class CommonTaskModel:
297
290
  def inject_upstreams(self):
298
291
  pass
299
292
 
300
- def _get_upstreams(self) -> List[AnyTask]:
293
+ def _get_upstreams(self) -> list[AnyTask]:
301
294
  if not self.__has_already_inject_upstreams:
302
295
  self.inject_upstreams()
303
296
  self.__has_already_inject_upstreams = True
@@ -316,7 +309,7 @@ class CommonTaskModel:
316
309
  def inject_fallbacks(self):
317
310
  pass
318
311
 
319
- def _get_fallbacks(self) -> List[AnyTask]:
312
+ def _get_fallbacks(self) -> list[AnyTask]:
320
313
  if not self.__has_already_inject_fallbacks:
321
314
  self.inject_fallbacks()
322
315
  self.__has_already_inject_fallbacks = True
@@ -328,7 +321,7 @@ class CommonTaskModel:
328
321
  def get_color(self) -> str:
329
322
  return self._color
330
323
 
331
- def _get_env_files(self) -> List[EnvFile]:
324
+ def _get_env_files(self) -> list[EnvFile]:
332
325
  if not self.__has_already_inject_env_files:
333
326
  self.inject_env_files()
334
327
  self.__has_already_inject_env_files = True
@@ -346,11 +339,11 @@ class CommonTaskModel:
346
339
  additional_checkers = self.__complete_new_checkers(checkers)
347
340
  self._checkers = self._checkers + additional_checkers
348
341
 
349
- def __complete_new_checkers(self, new_checkers: List[AnyTask]) -> List[AnyTask]:
342
+ def __complete_new_checkers(self, new_checkers: Iterable[AnyTask]) -> list[AnyTask]:
350
343
  """
351
344
  For internal use: copy and completing new checkers
352
345
  """
353
- checkers: List[AnyTask] = [checker.copy() for checker in new_checkers]
346
+ checkers: list[AnyTask] = [checker.copy() for checker in new_checkers]
354
347
  for checker in checkers:
355
348
  checker.add_input(*self._get_inputs())
356
349
  checker.add_env(*self._get_envs())
@@ -360,7 +353,7 @@ class CommonTaskModel:
360
353
  def inject_checkers(self):
361
354
  pass
362
355
 
363
- def _get_checkers(self) -> List[AnyTask]:
356
+ def _get_checkers(self) -> list[AnyTask]:
364
357
  if not self.__allow_add_checkers:
365
358
  self.inject_checkers()
366
359
  self.__allow_add_checkers = True
@@ -1,4 +1,6 @@
1
1
  import os
2
+ from collections.abc import Mapping
3
+ from typing import Any, Optional, Union
2
4
 
3
5
  import jinja2
4
6
 
@@ -6,7 +8,7 @@ from zrb.helper.render_data import DEFAULT_RENDER_DATA
6
8
  from zrb.helper.string.conversion import to_boolean
7
9
  from zrb.helper.string.jinja import is_probably_jinja
8
10
  from zrb.helper.typecheck import typechecked
9
- from zrb.helper.typing import Any, JinjaTemplate, Mapping, Optional, Union
11
+ from zrb.helper.typing import JinjaTemplate
10
12
  from zrb.task.any_task import AnyTask
11
13
 
12
14
 
@@ -1,8 +1,8 @@
1
1
  import asyncio
2
2
  import time
3
+ from typing import Optional, Union
3
4
 
4
5
  from zrb.helper.typecheck import typechecked
5
- from zrb.helper.typing import Optional, Union
6
6
 
7
7
  LOG_NAME_LENGTH = 20
8
8
 
zrb/task/checker.py CHANGED
@@ -1,9 +1,10 @@
1
1
  import asyncio
2
+ from collections.abc import Callable, Iterable
3
+ from typing import Any, Optional, Union
2
4
 
3
5
  from zrb.helper.accessories.color import colored
4
6
  from zrb.helper.log import logger
5
7
  from zrb.helper.typecheck import typechecked
6
- from zrb.helper.typing import Any, Callable, Iterable, Optional, Union
7
8
  from zrb.task.any_task import AnyTask
8
9
  from zrb.task.any_task_event_handler import (
9
10
  OnFailed,
zrb/task/cmd_task.py CHANGED
@@ -7,21 +7,14 @@ import signal
7
7
  import subprocess
8
8
  import sys
9
9
  import time
10
+ from collections.abc import Callable, Iterable
11
+ from typing import Any, Optional, TypeVar, Union
10
12
 
11
- from zrb.config.config import default_shell, logging_level
13
+ from zrb.config.config import DEFAULT_SHELL, LOGGING_LEVEL
12
14
  from zrb.helper.accessories.color import colored
13
15
  from zrb.helper.log import logger
14
16
  from zrb.helper.typecheck import typechecked
15
- from zrb.helper.typing import (
16
- Any,
17
- Callable,
18
- Iterable,
19
- JinjaTemplate,
20
- List,
21
- Optional,
22
- TypeVar,
23
- Union,
24
- )
17
+ from zrb.helper.typing import JinjaTemplate
25
18
  from zrb.task.any_task import AnyTask
26
19
  from zrb.task.any_task_event_handler import (
27
20
  OnFailed,
@@ -57,7 +50,7 @@ def _reset_stty():
57
50
 
58
51
 
59
52
  def _log_error(message: Any):
60
- if logging_level > logging.ERROR:
53
+ if LOGGING_LEVEL > logging.ERROR:
61
54
  return
62
55
  colored_message = colored(f"{message}", color="red", attrs=["bold"])
63
56
  logger.error(colored_message, exc_info=True)
@@ -111,7 +104,7 @@ class CmdTask(BaseTask):
111
104
  >>> runner.register(hello)
112
105
  """
113
106
 
114
- _pids: List[int] = []
107
+ _pids: list[int] = []
115
108
  _global_state = CmdGlobalState()
116
109
 
117
110
  def __init__(
@@ -187,8 +180,8 @@ class CmdTask(BaseTask):
187
180
  self._max_error_size = max_error_line
188
181
  self._output_buffer: Iterable[str] = []
189
182
  self._error_buffer: Iterable[str] = []
190
- if executable is None and default_shell != "":
191
- executable = default_shell
183
+ if executable is None and DEFAULT_SHELL != "":
184
+ executable = DEFAULT_SHELL
192
185
  self._executable = executable
193
186
  self._process: Optional[asyncio.subprocess.Process]
194
187
  self._preexec_fn = preexec_fn
zrb/task/decorator.py CHANGED
@@ -1,8 +1,10 @@
1
+ from collections.abc import Callable, Iterable
2
+ from typing import Any, Optional, Union
3
+
1
4
  from zrb.action.runner import Runner
2
5
  from zrb.helper.accessories.color import colored
3
6
  from zrb.helper.log import logger
4
7
  from zrb.helper.typecheck import typechecked
5
- from zrb.helper.typing import Any, Callable, Iterable, Optional, Union
6
8
  from zrb.task.any_task import AnyTask
7
9
  from zrb.task.any_task_event_handler import (
8
10
  OnFailed,
@@ -0,0 +1,146 @@
1
+ import os
2
+ import pathlib
3
+ from collections.abc import Callable, Iterable, Mapping
4
+ from typing import Any, Optional, Union
5
+
6
+ from zrb.helper.accessories.color import colored
7
+ from zrb.helper.log import logger
8
+ from zrb.helper.typecheck import typechecked
9
+ from zrb.helper.typing import JinjaTemplate
10
+ from zrb.task.any_task import AnyTask
11
+ from zrb.task.any_task_event_handler import (
12
+ OnFailed,
13
+ OnReady,
14
+ OnRetry,
15
+ OnSkipped,
16
+ OnStarted,
17
+ OnTriggered,
18
+ OnWaiting,
19
+ )
20
+ from zrb.task.cmd_task import CmdVal
21
+ from zrb.task.docker_compose_task import DockerComposeTask, ServiceConfig
22
+ from zrb.task_env.env import Env
23
+ from zrb.task_env.env_file import EnvFile
24
+ from zrb.task_group.group import Group
25
+ from zrb.task_input.any_input import AnyInput
26
+
27
+ logger.debug(colored("Loading zrb.task.docker_compose_task", attrs=["dark"]))
28
+
29
+
30
+ @typechecked
31
+ class DockerComposeStartTask(DockerComposeTask):
32
+ def __init__(
33
+ self,
34
+ name: str,
35
+ group: Optional[Group] = None,
36
+ inputs: Iterable[AnyInput] = [],
37
+ envs: Iterable[Env] = [],
38
+ env_files: Iterable[EnvFile] = [],
39
+ icon: Optional[str] = None,
40
+ color: Optional[str] = None,
41
+ description: str = "",
42
+ executable: Optional[str] = None,
43
+ compose_service_configs: Mapping[str, ServiceConfig] = {},
44
+ compose_file: Optional[str] = None,
45
+ compose_options: Mapping[JinjaTemplate, JinjaTemplate] = {},
46
+ compose_flags: Iterable[JinjaTemplate] = [],
47
+ compose_args: Iterable[JinjaTemplate] = [],
48
+ compose_env_prefix: str = "",
49
+ setup_cmd: CmdVal = "",
50
+ setup_cmd_path: CmdVal = "",
51
+ cwd: Optional[Union[JinjaTemplate, pathlib.Path]] = None,
52
+ should_render_cwd: bool = True,
53
+ upstreams: Iterable[AnyTask] = [],
54
+ fallbacks: Iterable[AnyTask] = [],
55
+ on_triggered: Optional[OnTriggered] = None,
56
+ on_waiting: Optional[OnWaiting] = None,
57
+ on_skipped: Optional[OnSkipped] = None,
58
+ on_started: Optional[OnStarted] = None,
59
+ on_ready: Optional[OnReady] = None,
60
+ on_retry: Optional[OnRetry] = None,
61
+ on_failed: Optional[OnFailed] = None,
62
+ checkers: Iterable[AnyTask] = [],
63
+ checking_interval: Union[float, int] = 0.05,
64
+ retry: int = 2,
65
+ retry_interval: Union[float, int] = 1,
66
+ max_output_line: int = 1000,
67
+ max_error_line: int = 1000,
68
+ preexec_fn: Optional[Callable[[], Any]] = os.setsid,
69
+ should_execute: Union[bool, str, Callable[..., bool]] = True,
70
+ return_upstream_result: bool = False,
71
+ should_print_cmd_result: bool = True,
72
+ should_show_cmd: bool = True,
73
+ should_show_working_directory: bool = True,
74
+ ):
75
+ DockerComposeTask.__init__(
76
+ self,
77
+ name=name,
78
+ group=group,
79
+ inputs=inputs,
80
+ envs=envs,
81
+ env_files=env_files,
82
+ icon=icon,
83
+ color=color,
84
+ description=description,
85
+ executable=executable,
86
+ compose_service_configs=compose_service_configs,
87
+ compose_file=compose_file,
88
+ compose_options=compose_options,
89
+ compose_flags=compose_flags,
90
+ compose_args=compose_args,
91
+ compose_env_prefix=compose_env_prefix,
92
+ setup_cmd=setup_cmd,
93
+ setup_cmd_path=setup_cmd_path,
94
+ cwd=cwd,
95
+ should_render_cwd=should_render_cwd,
96
+ upstreams=upstreams,
97
+ fallbacks=fallbacks,
98
+ on_triggered=on_triggered,
99
+ on_waiting=on_waiting,
100
+ on_skipped=on_skipped,
101
+ on_started=on_started,
102
+ on_ready=on_ready,
103
+ on_retry=on_retry,
104
+ on_failed=on_failed,
105
+ checkers=checkers,
106
+ checking_interval=checking_interval,
107
+ retry=retry,
108
+ retry_interval=retry_interval,
109
+ max_output_line=max_output_line,
110
+ max_error_line=max_error_line,
111
+ preexec_fn=preexec_fn,
112
+ should_execute=should_execute,
113
+ return_upstream_result=return_upstream_result,
114
+ should_print_cmd_result=should_print_cmd_result,
115
+ should_show_cmd=should_show_cmd,
116
+ should_show_working_directory=should_show_working_directory,
117
+ )
118
+
119
+ def get_cmd_script(self, *args: Any, **kwargs: Any) -> str:
120
+ # setup
121
+ setup_cmd = self._create_cmd_script(
122
+ self._setup_cmd_path, self._setup_cmd, *args, **kwargs
123
+ )
124
+ cmd_list = [setup_cmd] if setup_cmd.strip() != "" else []
125
+ # compose command
126
+ cmd_list = cmd_list + [
127
+ # compose start
128
+ self._get_docker_compose_cmd_script(
129
+ compose_cmd="up",
130
+ compose_options=self._compose_options,
131
+ compose_flags=list(self._compose_flags) + ["-d"],
132
+ compose_args=self._compose_args,
133
+ *args,
134
+ ),
135
+ # compose log
136
+ self._get_docker_compose_cmd_script(
137
+ compose_cmd="logs",
138
+ compose_options={},
139
+ compose_flags=["-f"],
140
+ compose_args=[],
141
+ *args,
142
+ ),
143
+ ]
144
+ cmd_str = "\n".join(cmd_list)
145
+ self.log_info(f"Command: {cmd_str}")
146
+ return cmd_str
@@ -1,7 +1,9 @@
1
1
  import os
2
2
  import pathlib
3
+ from collections.abc import Callable, Iterable, Mapping
4
+ from typing import Any, Optional, TypeVar, Union
3
5
 
4
- from zrb.config.config import container_backend
6
+ from zrb.config.config import CONTAINER_BACKEND
5
7
  from zrb.helper.accessories.color import colored
6
8
  from zrb.helper.accessories.name import get_random_name
7
9
  from zrb.helper.docker_compose.fetch_external_env import fetch_compose_file_env_map
@@ -10,17 +12,7 @@ from zrb.helper.log import logger
10
12
  from zrb.helper.string.conversion import to_cli_name
11
13
  from zrb.helper.string.modification import double_quote
12
14
  from zrb.helper.typecheck import typechecked
13
- from zrb.helper.typing import (
14
- Any,
15
- Callable,
16
- Iterable,
17
- JinjaTemplate,
18
- List,
19
- Mapping,
20
- Optional,
21
- TypeVar,
22
- Union,
23
- )
15
+ from zrb.helper.typing import JinjaTemplate
24
16
  from zrb.helper.util import to_snake_case
25
17
  from zrb.task.any_task import AnyTask
26
18
  from zrb.task.any_task_event_handler import (
@@ -66,19 +58,19 @@ def _get_ensure_zrb_network_task(backend: str):
66
58
 
67
59
 
68
60
  TDockerComposeTask = TypeVar("TDockerComposeTask", bound="DockerComposeTask")
69
- ensure_zrb_network_task = _get_ensure_zrb_network_task(container_backend)
61
+ ensure_zrb_network_task = _get_ensure_zrb_network_task(CONTAINER_BACKEND)
70
62
 
71
63
 
72
64
  @typechecked
73
65
  class ServiceConfig:
74
- def __init__(self, envs: List[Env] = [], env_files: List[EnvFile] = []):
66
+ def __init__(self, envs: list[Env] = [], env_files: list[EnvFile] = []):
75
67
  self._envs = envs
76
68
  self._env_files = env_files
77
69
 
78
- def get_envs(self) -> List[Env]:
70
+ def get_envs(self) -> list[Env]:
79
71
  return self._envs
80
72
 
81
- def get_env_files(self) -> List[EnvFile]:
73
+ def get_env_files(self) -> list[EnvFile]:
82
74
  return self._env_files
83
75
 
84
76
 
@@ -224,7 +216,7 @@ class DockerComposeTask(CmdTask):
224
216
  def __generate_compose_runtime_file(self):
225
217
  compose_data = read_compose_file(self._compose_template_file)
226
218
  for service, service_config in self._compose_service_configs.items():
227
- envs: List[Env] = []
219
+ envs: list[Env] = []
228
220
  env_files = service_config.get_env_files()
229
221
  for env_file in env_files:
230
222
  envs += env_file.get_envs()
@@ -233,7 +225,7 @@ class DockerComposeTask(CmdTask):
233
225
  write_compose_file(self._compose_runtime_file, compose_data)
234
226
 
235
227
  def __apply_service_env(
236
- self, compose_data: Any, service_name: str, envs: List[Env]
228
+ self, compose_data: Any, service_name: str, envs: list[Env]
237
229
  ) -> Any:
238
230
  # service not found
239
231
  service_map = compose_data["services"]
@@ -269,7 +261,7 @@ class DockerComposeTask(CmdTask):
269
261
  return compose_data
270
262
 
271
263
  def __get_service_new_env_map(
272
- self, service_name: str, service_env_map: Mapping[str, str], new_envs: List[Env]
264
+ self, service_name: str, service_env_map: Mapping[str, str], new_envs: list[Env]
273
265
  ) -> Mapping[str, str]:
274
266
  new_service_envs: Mapping[str, str] = {}
275
267
  for env in new_envs:
@@ -280,9 +272,9 @@ class DockerComposeTask(CmdTask):
280
272
  return new_service_envs
281
273
 
282
274
  def __get_service_new_env_list(
283
- self, service_name: str, service_env_list: List[str], new_envs: List[Env]
284
- ) -> List[str]:
285
- new_service_envs: List[str] = []
275
+ self, service_name: str, service_env_list: list[str], new_envs: list[Env]
276
+ ) -> list[str]:
277
+ new_service_envs: list[str] = []
286
278
  for env in new_envs:
287
279
  should_be_added = 0 == len(
288
280
  [
@@ -341,10 +333,34 @@ class DockerComposeTask(CmdTask):
341
333
  raise Exception(f"Invalid compose file: {compose_file}")
342
334
 
343
335
  def get_cmd_script(self, *args: Any, **kwargs: Any) -> str:
344
- setup_cmd_str = self._create_cmd_script(
336
+ # setup
337
+ setup_cmd = self._create_cmd_script(
345
338
  self._setup_cmd_path, self._setup_cmd, *args, **kwargs
346
339
  )
347
- command_options = dict(self._compose_options)
340
+ cmd_list = [setup_cmd] if setup_cmd.strip() != "" else []
341
+ # compose command
342
+ cmd_list.append(
343
+ self._get_docker_compose_cmd_script(
344
+ compose_cmd=self._compose_cmd,
345
+ compose_options=self._compose_options,
346
+ compose_flags=self._compose_flags,
347
+ compose_args=self._compose_args,
348
+ *args,
349
+ )
350
+ )
351
+ cmd_str = "\n".join(cmd_list)
352
+ self.log_info(f"Command: {cmd_str}")
353
+ return cmd_str
354
+
355
+ def _get_docker_compose_cmd_script(
356
+ self,
357
+ compose_cmd: str,
358
+ compose_options: Mapping[JinjaTemplate, JinjaTemplate],
359
+ compose_flags: Iterable[JinjaTemplate],
360
+ compose_args: Iterable[JinjaTemplate],
361
+ *args: Any,
362
+ ) -> str:
363
+ command_options = dict(compose_options)
348
364
  command_options["--file"] = self._compose_runtime_file
349
365
  options = " ".join(
350
366
  [
@@ -356,22 +372,15 @@ class DockerComposeTask(CmdTask):
356
372
  flags = " ".join(
357
373
  [
358
374
  self.render_str(flag)
359
- for flag in self._compose_flags
375
+ for flag in compose_flags
360
376
  if self.render_str(flag) != ""
361
377
  ]
362
378
  )
363
379
  args = " ".join(
364
380
  [
365
381
  double_quote(self.render_str(arg))
366
- for arg in self._compose_args
382
+ for arg in compose_args
367
383
  if self.render_str(arg) != ""
368
384
  ]
369
385
  )
370
- cmd_str = "\n".join(
371
- [
372
- setup_cmd_str,
373
- f"{container_backend} compose {options} {self._compose_cmd} {flags} {args}", # noqa
374
- ]
375
- )
376
- self.log_info(f"Command: {cmd_str}")
377
- return cmd_str
386
+ return f"{CONTAINER_BACKEND} compose {options} {compose_cmd} {flags} {args}"
zrb/task/flow_task.py CHANGED
@@ -1,7 +1,9 @@
1
+ from collections.abc import Callable, Iterable
2
+ from typing import Optional, TypeVar, Union
3
+
1
4
  from zrb.helper.accessories.color import colored
2
5
  from zrb.helper.log import logger
3
6
  from zrb.helper.typecheck import typechecked
4
- from zrb.helper.typing import Callable, Iterable, List, Optional, TypeVar, Union
5
7
  from zrb.task.any_task import AnyTask
6
8
  from zrb.task.any_task_event_handler import (
7
9
  OnFailed,
@@ -48,7 +50,7 @@ class FlowTask(BaseTask):
48
50
  checking_interval: Union[float, int] = 0.05,
49
51
  retry: int = 2,
50
52
  retry_interval: Union[float, int] = 1,
51
- steps: List[Union[AnyTask, List[AnyTask]]] = [],
53
+ steps: list[Union[AnyTask, list[AnyTask]]] = [],
52
54
  should_execute: Union[bool, str, Callable[..., bool]] = True,
53
55
  return_upstream_result: bool = False,
54
56
  ):
@@ -91,12 +93,12 @@ class FlowTask(BaseTask):
91
93
 
92
94
  def _create_flow_upstreams(
93
95
  self,
94
- steps: List[Union[AnyTask, List[AnyTask]]],
95
- upstreams: List[AnyTask],
96
- inputs: List[AnyInput],
97
- envs: List[Env],
98
- env_files: List[EnvFile],
99
- ) -> List[AnyTask]:
96
+ steps: list[Union[AnyTask, list[AnyTask]]],
97
+ upstreams: list[AnyTask],
98
+ inputs: list[AnyInput],
99
+ envs: list[Env],
100
+ env_files: list[EnvFile],
101
+ ) -> list[AnyTask]:
100
102
  flow_upstreams = upstreams
101
103
  for step in steps:
102
104
  tasks = [task.copy() for task in self._step_to_tasks(step)]
@@ -110,20 +112,20 @@ class FlowTask(BaseTask):
110
112
  flow_upstreams = new_upstreams
111
113
  return flow_upstreams
112
114
 
113
- def _step_to_tasks(self, step: Union[AnyTask, List[AnyTask]]) -> List[AnyTask]:
115
+ def _step_to_tasks(self, step: Union[AnyTask, list[AnyTask]]) -> list[AnyTask]:
114
116
  if isinstance(step, AnyTask):
115
117
  return [step]
116
118
  return step
117
119
 
118
120
  def _create_embeded_tasks(
119
121
  self,
120
- tasks: List[AnyTask],
121
- upstreams: List[AnyTask],
122
- inputs: List[AnyInput],
123
- envs: List[Env],
124
- env_files: List[EnvFile],
125
- ) -> List[AnyTask]:
126
- embeded_tasks: List[AnyTask] = []
122
+ tasks: list[AnyTask],
123
+ upstreams: list[AnyTask],
124
+ inputs: list[AnyInput],
125
+ envs: list[Env],
126
+ env_files: list[EnvFile],
127
+ ) -> list[AnyTask]:
128
+ embeded_tasks: list[AnyTask] = []
127
129
  for embeded_task in tasks:
128
130
  embeded_task_upstreams = self._get_all_upstreams(tasks=[embeded_task])
129
131
  for embeded_task_upstream in embeded_task_upstreams:
@@ -134,7 +136,7 @@ class FlowTask(BaseTask):
134
136
  embeded_tasks.append(embeded_task)
135
137
  return embeded_tasks
136
138
 
137
- def _get_all_upstreams(self, tasks: List[AnyTask]):
139
+ def _get_all_upstreams(self, tasks: list[AnyTask]):
138
140
  all_upstreams = []
139
141
  for task in tasks:
140
142
  upstreams = task._get_upstreams()
zrb/task/http_checker.py CHANGED
@@ -1,17 +1,11 @@
1
+ from collections.abc import Callable, Iterable
1
2
  from http.client import HTTPConnection, HTTPSConnection
3
+ from typing import Any, Optional, TypeVar, Union
2
4
 
3
5
  from zrb.helper.accessories.color import colored
4
6
  from zrb.helper.log import logger
5
7
  from zrb.helper.typecheck import typechecked
6
- from zrb.helper.typing import (
7
- Any,
8
- Callable,
9
- Iterable,
10
- JinjaTemplate,
11
- Optional,
12
- TypeVar,
13
- Union,
14
- )
8
+ from zrb.helper.typing import JinjaTemplate
15
9
  from zrb.task.any_task import AnyTask
16
10
  from zrb.task.any_task_event_handler import (
17
11
  OnFailed,
zrb/task/looper.py CHANGED
@@ -1,14 +1,16 @@
1
+ from collections.abc import Callable
2
+ from typing import Optional
3
+
1
4
  from zrb.helper.accessories.color import colored
2
5
  from zrb.helper.callable import run_async
3
6
  from zrb.helper.log import logger
4
- from zrb.helper.typing import Callable, List, Mapping, Optional
5
7
 
6
8
  logger.debug(colored("Loading zrb.task.looper", attrs=["dark"]))
7
9
 
8
10
 
9
11
  class Looper:
10
12
  def __init__(self):
11
- self._queue: Mapping[str, List[Optional[bool]]] = {}
13
+ self._queue: Mapping[str, list[Optional[bool]]] = {}
12
14
  self._should_stop = False
13
15
 
14
16
  async def pop(self, identifier: str) -> Optional[bool]:
zrb/task/notifier.py CHANGED
@@ -1,12 +1,14 @@
1
1
  import os
2
2
  import subprocess
3
+ from collections.abc import Callable, Iterable
4
+ from typing import Any, Optional, Union
3
5
 
4
6
  from zrb.helper.accessories.color import colored
5
7
  from zrb.helper.accessories.icon import get_random_icon
6
8
  from zrb.helper.log import logger
7
9
  from zrb.helper.string.modification import double_quote
8
10
  from zrb.helper.typecheck import typechecked
9
- from zrb.helper.typing import Any, Callable, Iterable, JinjaTemplate, Optional, Union
11
+ from zrb.helper.typing import JinjaTemplate
10
12
  from zrb.task.any_task import AnyTask
11
13
  from zrb.task.any_task_event_handler import (
12
14
  OnFailed,