zrb 0.23.4__py3-none-any.whl → 0.26.0__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 (250) hide show
  1. zrb/__init__.py +2 -0
  2. zrb/action/runner.py +8 -5
  3. zrb/advertisement.py +1 -2
  4. zrb/builtin/__init__.py +4 -0
  5. zrb/builtin/base64/decode.py +1 -1
  6. zrb/builtin/base64/encode.py +1 -1
  7. zrb/builtin/devtool/install/_helper.py +2 -1
  8. zrb/builtin/devtool/install/_input.py +2 -2
  9. zrb/builtin/docker/prune.py +11 -3
  10. zrb/builtin/env/get.py +3 -2
  11. zrb/builtin/eval.py +2 -1
  12. zrb/builtin/git/get_file_changes.py +2 -1
  13. zrb/builtin/md5/hash.py +1 -1
  14. zrb/builtin/md5/sum.py +1 -1
  15. zrb/builtin/monorepo/__init__.py +7 -0
  16. zrb/builtin/monorepo/_config.py +11 -0
  17. zrb/builtin/monorepo/_group.py +3 -0
  18. zrb/builtin/monorepo/_task.py +99 -0
  19. zrb/builtin/monorepo/add.py +40 -0
  20. zrb/builtin/monorepo/pull.py +23 -0
  21. zrb/builtin/monorepo/push.py +35 -0
  22. zrb/builtin/project/_helper.py +3 -3
  23. zrb/builtin/project/_input.py +2 -2
  24. zrb/builtin/project/add/app/generator/generator.py +1 -1
  25. 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
  26. 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
  27. 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
  28. 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
  29. 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
  30. zrb/builtin/project/add/app/python/python.py +1 -1
  31. zrb/builtin/project/add/app/python/template/_automate/snake_zrb_app_name/container/remove.py +1 -1
  32. zrb/builtin/project/add/app/python/template/_automate/snake_zrb_app_name/container/start.py +6 -7
  33. zrb/builtin/project/add/app/python/template/_automate/snake_zrb_app_name/container/stop.py +1 -1
  34. zrb/builtin/project/add/app/python/template/src/kebab-zrb-app-name/docker-compose.yml +0 -2
  35. zrb/builtin/project/add/fastapp/app/app.py +3 -1
  36. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/_helper.py +2 -53
  37. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/_service_config.py +1 -1
  38. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/microservices/_helper.py +2 -2
  39. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/microservices/start.py +5 -6
  40. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/monolith/_helper.py +2 -2
  41. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/monolith/start.py +5 -6
  42. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/stop.py +2 -0
  43. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/support/_helper.py +5 -3
  44. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/support/start.py +4 -6
  45. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/frontend/build-once.sh +1 -1
  46. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/frontend/build.sh +1 -1
  47. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/microservices/_helper.py +3 -5
  48. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/microservices/start.py +3 -3
  49. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/microservices/{start_microservices.py → start_services.py} +2 -3
  50. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/.generator-version +1 -0
  51. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/deployment/_common.py +5 -5
  52. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/deployment/app_helper.py +5 -5
  53. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/docker-compose.yml +2 -2
  54. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/loadtest/locustfile.py +1 -3
  55. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/loadtest/template.env +1 -1
  56. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/error.py +2 -1
  57. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/kafka/admin.py +4 -3
  58. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/kafka/consumer.py +2 -1
  59. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/messagebus.py +4 -3
  60. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/mock.py +4 -3
  61. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/rabbitmq/admin.py +4 -3
  62. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/rabbitmq/consumer.py +3 -2
  63. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/model/repo_model.py +3 -3
  64. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/repo/db_repo.py +7 -6
  65. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/repo/repo.py +2 -2
  66. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/repo/search_filter.py +2 -1
  67. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/rpc/messagebus/caller.py +2 -1
  68. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/rpc/messagebus/server.py +2 -1
  69. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/rpc/rpc.py +3 -2
  70. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/serializer/serializer.py +2 -1
  71. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/config.py +59 -62
  72. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/package-lock.json +4443 -0
  73. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/helper/async_task.py +1 -1
  74. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/app/app.py +28 -28
  75. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/app/app_lifespan.py +15 -15
  76. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/app/app_state.py +2 -2
  77. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/db_connection.py +14 -2
  78. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/frontend_index.py +2 -2
  79. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/log.py +6 -6
  80. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/messagebus.py +33 -33
  81. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/rpc.py +9 -9
  82. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/component/access_token/scheme.py +2 -1
  83. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/component/access_token/util.py +2 -1
  84. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/group/repo.py +2 -1
  85. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/group/rpc.py +2 -1
  86. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/rpc.py +2 -1
  87. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/user/api.py +2 -1
  88. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/user/model.py +3 -2
  89. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/user/repo.py +3 -2
  90. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/user/rpc.py +3 -2
  91. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/access_token_scheme.py +2 -2
  92. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/access_token_util.py +7 -7
  93. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/model/user_model.py +6 -6
  94. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/refresh_token_util.py +7 -7
  95. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/user.py +18 -18
  96. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/migrate.py +2 -2
  97. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/register_module.py +8 -8
  98. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/register_permission.py +2 -2
  99. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/schema/group.py +3 -5
  100. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/schema/permission.py +1 -3
  101. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/schema/request.py +1 -3
  102. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/schema/user.py +5 -7
  103. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/entity/activity/event.py +2 -1
  104. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/entity/activity/rpc.py +2 -1
  105. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/migrate.py +2 -2
  106. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/register_module.py +8 -8
  107. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/schema/activity.py +1 -3
  108. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/template.env +5 -2
  109. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_group_crud.py +8 -8
  110. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_permission_crud.py +8 -8
  111. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_user_crud.py +8 -8
  112. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_user_login.py +15 -15
  113. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/test_liveness_and_readiness.py +4 -4
  114. zrb/builtin/project/add/fastapp/crud/_helper/__init__.py +7 -0
  115. zrb/builtin/project/add/fastapp/crud/_helper/_common.py +8 -0
  116. zrb/builtin/project/add/fastapp/crud/_helper/register_api.py +45 -0
  117. zrb/builtin/project/add/fastapp/crud/_helper/register_permission.py +40 -0
  118. zrb/builtin/project/add/fastapp/crud/_helper/register_rpc.py +45 -0
  119. zrb/builtin/project/add/fastapp/crud/_task_factory.py +1 -2
  120. zrb/builtin/project/add/fastapp/crud/crud.py +4 -25
  121. zrb/builtin/project/add/fastapp/crud/nodejs/codemod/package-lock.json +3 -3
  122. 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
  123. 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
  124. 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
  125. 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
  126. zrb/builtin/project/add/fastapp/field/_helper/__init__.py +17 -0
  127. zrb/builtin/project/add/fastapp/field/_helper/_common.py +102 -0
  128. zrb/builtin/project/add/fastapp/field/_helper/inject_delete_page.py +49 -0
  129. zrb/builtin/project/add/fastapp/field/_helper/inject_detail_page.py +49 -0
  130. zrb/builtin/project/add/fastapp/field/_helper/inject_insert_page.py +62 -0
  131. zrb/builtin/project/add/fastapp/field/_helper/inject_list_page.py +47 -0
  132. zrb/builtin/project/add/fastapp/field/_helper/inject_repo.py +47 -0
  133. zrb/builtin/project/add/fastapp/field/_helper/inject_schema.py +45 -0
  134. zrb/builtin/project/add/fastapp/field/_helper/inject_test.py +49 -0
  135. zrb/builtin/project/add/fastapp/field/_helper/inject_update_page.py +50 -0
  136. zrb/builtin/project/add/fastapp/field/_input.py +14 -2
  137. zrb/builtin/project/add/fastapp/field/field.py +52 -70
  138. zrb/builtin/project/add/fastapp/module/_helper/__init__.py +17 -0
  139. zrb/builtin/project/add/fastapp/module/_helper/append_all_disabled_env.py +22 -0
  140. zrb/builtin/project/add/fastapp/module/_helper/append_all_enabled_env.py +22 -0
  141. zrb/builtin/project/add/fastapp/module/_helper/append_deployment_template_env.py +25 -0
  142. zrb/builtin/project/add/fastapp/module/_helper/append_src_template_env.py +25 -0
  143. zrb/builtin/project/add/fastapp/module/_helper/create_app_config.py +29 -0
  144. zrb/builtin/project/add/fastapp/module/_helper/create_microservice_config.py +157 -0
  145. zrb/builtin/project/add/fastapp/module/_helper/register_migration.py +35 -0
  146. zrb/builtin/project/add/fastapp/module/_helper/register_module.py +33 -0
  147. zrb/builtin/project/add/fastapp/module/module.py +9 -38
  148. zrb/builtin/project/add/fastapp/module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/migrate.py +2 -2
  149. zrb/builtin/project/add/fastapp/module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/register_module.py +8 -8
  150. zrb/builtin/project/add/plugin/plugin.py +3 -3
  151. zrb/builtin/project/add/project_task/add.py +1 -1
  152. zrb/builtin/project/add/project_task/template/_automate/_project/build.py +2 -1
  153. zrb/builtin/project/add/project_task/template/_automate/_project/container/remove.py +2 -1
  154. zrb/builtin/project/add/project_task/template/_automate/_project/container/start.py +2 -1
  155. zrb/builtin/project/add/project_task/template/_automate/_project/container/stop.py +2 -1
  156. zrb/builtin/project/add/project_task/template/_automate/_project/deploy.py +2 -1
  157. zrb/builtin/project/add/project_task/template/_automate/_project/destroy.py +2 -1
  158. zrb/builtin/project/add/project_task/template/_automate/_project/get_env.py +2 -1
  159. zrb/builtin/project/add/project_task/template/_automate/_project/image/build.py +2 -1
  160. zrb/builtin/project/add/project_task/template/_automate/_project/image/push.py +2 -1
  161. zrb/builtin/project/add/project_task/template/_automate/_project/publish.py +2 -1
  162. zrb/builtin/project/add/project_task/template/_automate/_project/start.py +2 -1
  163. zrb/builtin/project/add/task/cmd/add.py +1 -1
  164. zrb/builtin/project/add/task/docker_compose/add.py +1 -1
  165. zrb/builtin/project/add/task/docker_compose/template/src/kebab-zrb-task-name/docker-compose.yml +0 -2
  166. zrb/builtin/project/add/task/python/add.py +1 -1
  167. zrb/builtin/project/add/task/python/template/_automate/snake_zrb_task_name.py +1 -1
  168. zrb/builtin/project/create/_helper.py +1 -1
  169. zrb/builtin/project/create/create.py +3 -3
  170. zrb/builtin/say.py +3 -3
  171. zrb/builtin/version.py +5 -4
  172. zrb/config/config.py +24 -14
  173. zrb/helper/accessories/color.py +2 -1
  174. zrb/helper/advertisement.py +2 -1
  175. zrb/helper/asyncio_task.py +23 -0
  176. zrb/helper/callable.py +4 -1
  177. zrb/helper/cli.py +20 -6
  178. zrb/helper/codemod/add_import_module.py +3 -2
  179. zrb/helper/codemod/add_property_to_class.py +2 -1
  180. zrb/helper/default_env.py +2 -1
  181. zrb/helper/docker_compose/fetch_external_env.py +4 -2
  182. zrb/helper/docker_compose/file.py +3 -1
  183. zrb/helper/env_map/fetch.py +3 -2
  184. zrb/helper/file/copy_tree.py +2 -1
  185. zrb/helper/file/match.py +2 -2
  186. zrb/helper/git/detect_changes.py +1 -1
  187. zrb/helper/loader/load_module.py +7 -46
  188. zrb/helper/loader/load_script.py +57 -0
  189. zrb/helper/log.py +3 -3
  190. zrb/helper/map/conversion.py +3 -1
  191. zrb/helper/string/jinja.py +2 -1
  192. zrb/helper/string/parse_replacement.py +1 -1
  193. zrb/helper/typecheck.py +2 -2
  194. zrb/helper/typing.py +5 -27
  195. zrb/helper/util.py +13 -1
  196. zrb/runner.py +2 -2
  197. zrb/task/any_task.py +9 -17
  198. zrb/task/any_task_event_handler.py +3 -1
  199. zrb/task/base_remote_cmd_task.py +3 -10
  200. zrb/task/base_task/base_task.py +15 -11
  201. zrb/task/base_task/component/base_task_model.py +15 -22
  202. zrb/task/base_task/component/common_task_model.py +15 -22
  203. zrb/task/base_task/component/renderer.py +3 -1
  204. zrb/task/base_task/component/trackers.py +1 -1
  205. zrb/task/checker.py +2 -1
  206. zrb/task/cmd_task.py +10 -22
  207. zrb/task/decorator.py +3 -1
  208. zrb/task/docker_compose_start_task.py +146 -0
  209. zrb/task/docker_compose_task.py +43 -34
  210. zrb/task/flow_task.py +19 -17
  211. zrb/task/http_checker.py +3 -9
  212. zrb/task/looper.py +4 -2
  213. zrb/task/notifier.py +3 -1
  214. zrb/task/parallel.py +4 -4
  215. zrb/task/path_checker.py +6 -12
  216. zrb/task/path_watcher.py +5 -13
  217. zrb/task/port_checker.py +3 -9
  218. zrb/task/recurring_task.py +5 -4
  219. zrb/task/remote_cmd_task.py +2 -1
  220. zrb/task/resource_maker.py +6 -13
  221. zrb/task/rsync_task.py +3 -1
  222. zrb/task/server.py +13 -12
  223. zrb/task/time_watcher.py +3 -10
  224. zrb/task/watcher.py +2 -1
  225. zrb/task/wiki_task.py +4 -3
  226. zrb/task_env/env.py +2 -1
  227. zrb/task_env/env_file.py +7 -6
  228. zrb/task_group/group.py +8 -7
  229. zrb/task_input/any_input.py +4 -3
  230. zrb/task_input/base_input.py +7 -5
  231. zrb/task_input/bool_input.py +2 -1
  232. zrb/task_input/choice_input.py +3 -1
  233. zrb/task_input/float_input.py +2 -1
  234. zrb/task_input/int_input.py +2 -1
  235. zrb/task_input/multiline_input.py +5 -3
  236. zrb/task_input/password_input.py +2 -1
  237. zrb/task_input/str_input.py +2 -1
  238. {zrb-0.23.4.dist-info → zrb-0.26.0.dist-info}/METADATA +2 -2
  239. {zrb-0.23.4.dist-info → zrb-0.26.0.dist-info}/RECORD +242 -214
  240. 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
  241. zrb/builtin/project/add/app/python/template/_automate/snake_zrb_app_name/container/init.py +0 -34
  242. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/microservices/init.py +0 -36
  243. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/monolith/init.py +0 -36
  244. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/support/init.py +0 -26
  245. zrb/builtin/project/add/fastapp/crud/_helper.py +0 -118
  246. zrb/builtin/project/add/fastapp/field/_helper.py +0 -328
  247. zrb/builtin/project/add/fastapp/module/_helper.py +0 -313
  248. {zrb-0.23.4.dist-info → zrb-0.26.0.dist-info}/LICENSE +0 -0
  249. {zrb-0.23.4.dist-info → zrb-0.26.0.dist-info}/WHEEL +0 -0
  250. {zrb-0.23.4.dist-info → zrb-0.26.0.dist-info}/entry_points.txt +0 -0
@@ -2,9 +2,11 @@ import asyncio
2
2
  import copy
3
3
  import os
4
4
  import shutil
5
+ from collections.abc import Callable, Iterable, Mapping
6
+ from typing import Any, Optional, Union
5
7
 
6
8
  from zrb.advertisement import advertisements
7
- from zrb.config.config import show_advertisement, tmp_dir
9
+ from zrb.config.config import SHOW_ADVERTISEMENT, TMP_DIR
8
10
  from zrb.helper.accessories.name import get_random_name
9
11
  from zrb.helper.advertisement import get_advertisement
10
12
  from zrb.helper.callable import run_async
@@ -12,7 +14,6 @@ from zrb.helper.map.conversion import to_str as map_to_str
12
14
  from zrb.helper.string.conversion import to_variable_name
13
15
  from zrb.helper.string.modification import double_quote
14
16
  from zrb.helper.typecheck import typechecked
15
- from zrb.helper.typing import Any, Callable, Iterable, List, Mapping, Optional, Union
16
17
  from zrb.task.any_task import AnyTask
17
18
  from zrb.task.any_task_event_handler import (
18
19
  OnFailed,
@@ -41,14 +42,14 @@ class BaseTask(FinishTracker, AttemptTracker, Renderer, BaseTaskModel, AnyTask):
41
42
  Every Task definition should be extended from this class.
42
43
  """
43
44
 
44
- __running_tasks: List[AnyTask] = []
45
+ __running_tasks: list[AnyTask] = []
45
46
 
46
47
  def __init__(
47
48
  self,
48
49
  name: str,
49
50
  group: Optional[Group] = None,
50
51
  description: str = "",
51
- inputs: List[AnyInput] = [],
52
+ inputs: list[AnyInput] = [],
52
53
  envs: Iterable[Env] = [],
53
54
  env_files: Iterable[EnvFile] = [],
54
55
  icon: Optional[str] = None,
@@ -119,7 +120,7 @@ class BaseTask(FinishTracker, AttemptTracker, Renderer, BaseTaskModel, AnyTask):
119
120
  operand.add_upstream(self)
120
121
  return operand
121
122
  if isinstance(operand, AnyParallel):
122
- other_tasks: List[AnyTask] = operand.get_tasks()
123
+ other_tasks: list[AnyTask] = operand.get_tasks()
123
124
  for other_task in other_tasks:
124
125
  other_task.add_upstream(self)
125
126
  return operand
@@ -127,7 +128,7 @@ class BaseTask(FinishTracker, AttemptTracker, Renderer, BaseTaskModel, AnyTask):
127
128
  def __get_xcom_dir(self, execution_id: Optional[str] = None) -> str:
128
129
  if execution_id is None:
129
130
  execution_id = self.get_execution_id()
130
- return os.path.join(tmp_dir, f"xcom.{execution_id}")
131
+ return os.path.join(TMP_DIR, f"xcom.{execution_id}")
131
132
 
132
133
  def __ensure_xcom_dir_exists(self, execution_id: Optional[str] = None):
133
134
  xcom_dir = self.__get_xcom_dir(execution_id=execution_id)
@@ -286,6 +287,9 @@ class BaseTask(FinishTracker, AttemptTracker, Renderer, BaseTaskModel, AnyTask):
286
287
  result = results[-1]
287
288
  self._print_result(result)
288
289
  return result
290
+ except RuntimeError as e:
291
+ if "event loop is closed" not in str(e).lower():
292
+ raise e
289
293
  except Exception as e:
290
294
  self.log_error(f"{e}")
291
295
  if raise_error:
@@ -303,7 +307,7 @@ class BaseTask(FinishTracker, AttemptTracker, Renderer, BaseTaskModel, AnyTask):
303
307
  await asyncio.sleep(self._checking_interval)
304
308
  self._end_timer()
305
309
  if show_done_info:
306
- if show_advertisement:
310
+ if SHOW_ADVERTISEMENT:
307
311
  selected_advertisement = get_advertisement(advertisements)
308
312
  selected_advertisement.show()
309
313
  self._show_done_info()
@@ -415,7 +419,7 @@ class BaseTask(FinishTracker, AttemptTracker, Renderer, BaseTaskModel, AnyTask):
415
419
  # wait all upstream checkers to complete
416
420
  await asyncio.gather(*coroutines)
417
421
 
418
- async def __trigger_failure(self, tasks: List[AnyTask]):
422
+ async def __trigger_failure(self, tasks: list[AnyTask]):
419
423
  coroutines = [
420
424
  task.on_failed(is_last_attempt=True, exception=Exception("canceled"))
421
425
  for task in tasks
@@ -423,7 +427,7 @@ class BaseTask(FinishTracker, AttemptTracker, Renderer, BaseTaskModel, AnyTask):
423
427
  await asyncio.gather(*coroutines)
424
428
 
425
429
  async def __trigger_fallbacks(
426
- self, tasks: List[AnyTask], kwargs: Mapping[str, Any]
430
+ self, tasks: list[AnyTask], kwargs: Mapping[str, Any]
427
431
  ):
428
432
  coroutines: Iterable[asyncio.Task] = []
429
433
  for fallback in self.__get_all_fallbacks(tasks):
@@ -431,8 +435,8 @@ class BaseTask(FinishTracker, AttemptTracker, Renderer, BaseTaskModel, AnyTask):
431
435
  coroutines.append(asyncio.create_task(fallback._run_all(**kwargs)))
432
436
  await asyncio.gather(*coroutines)
433
437
 
434
- def __get_all_fallbacks(self, tasks: List[AnyTask]) -> List[AnyTask]:
435
- all_fallbacks: List[AnyTask] = []
438
+ def __get_all_fallbacks(self, tasks: list[AnyTask]) -> list[AnyTask]:
439
+ all_fallbacks: list[AnyTask] = []
436
440
  for task in tasks:
437
441
  task._lock_fallbacks()
438
442
  for fallback in task._get_fallbacks():
@@ -2,24 +2,17 @@ import datetime
2
2
  import logging
3
3
  import os
4
4
  import sys
5
+ from collections.abc import Callable, Iterable, Mapping
5
6
  from functools import lru_cache
7
+ from typing import Any, Optional, Union
6
8
 
7
- from zrb.config.config import env_prefix, logging_level, show_time
9
+ from zrb.config.config import ENV_PREFIX, LOGGING_LEVEL, SHOW_TIME
8
10
  from zrb.helper.accessories.color import colored
9
11
  from zrb.helper.log import logger
10
12
  from zrb.helper.string.conversion import to_variable_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
- Union,
22
- )
15
+ from zrb.helper.typing import JinjaTemplate
23
16
  from zrb.task.any_task import AnyTask
24
17
  from zrb.task.any_task_event_handler import (
25
18
  OnFailed,
@@ -48,7 +41,7 @@ class BaseTaskModel(CommonTaskModel, PidModel, TimeTracker):
48
41
  name: str,
49
42
  group: Optional[Group] = None,
50
43
  description: str = "",
51
- inputs: List[AnyInput] = [],
44
+ inputs: list[AnyInput] = [],
52
45
  envs: Iterable[Env] = [],
53
46
  env_files: Iterable[EnvFile] = [],
54
47
  icon: Optional[str] = None,
@@ -102,7 +95,7 @@ class BaseTaskModel(CommonTaskModel, PidModel, TimeTracker):
102
95
  )
103
96
  PidModel.__init__(self)
104
97
  TimeTracker.__init__(self)
105
- self.__args: List[Any] = []
98
+ self.__args: list[Any] = []
106
99
  self.__kwargs: Mapping[str, Any] = {}
107
100
 
108
101
  def _set_args(self, args: Iterable[Any]):
@@ -118,35 +111,35 @@ class BaseTaskModel(CommonTaskModel, PidModel, TimeTracker):
118
111
  self.__kwargs = kwargs
119
112
 
120
113
  def log_debug(self, message: Any):
121
- if logging_level > logging.DEBUG:
114
+ if LOGGING_LEVEL > logging.DEBUG:
122
115
  return
123
116
  prefix = self.__get_log_prefix()
124
117
  colored_message = colored(f"{prefix} • {message}", attrs=["dark"])
125
118
  logger.debug(colored_message)
126
119
 
127
120
  def log_warn(self, message: Any):
128
- if logging_level > logging.WARNING:
121
+ if LOGGING_LEVEL > logging.WARNING:
129
122
  return
130
123
  prefix = self.__get_log_prefix()
131
124
  colored_message = colored(f"{prefix} • {message}", attrs=["dark"])
132
125
  logger.warning(colored_message)
133
126
 
134
127
  def log_info(self, message: Any):
135
- if logging_level > logging.INFO:
128
+ if LOGGING_LEVEL > logging.INFO:
136
129
  return
137
130
  prefix = self.__get_log_prefix()
138
131
  colored_message = colored(f"{prefix} • {message}", attrs=["dark"])
139
132
  logger.info(colored_message)
140
133
 
141
134
  def log_error(self, message: Any):
142
- if logging_level > logging.ERROR:
135
+ if LOGGING_LEVEL > logging.ERROR:
143
136
  return
144
137
  prefix = self.__get_log_prefix()
145
138
  colored_message = colored(f"{prefix} • {message}", color="red", attrs=["bold"])
146
139
  logger.error(colored_message, exc_info=True)
147
140
 
148
141
  def log_critical(self, message: Any):
149
- if logging_level > logging.CRITICAL:
142
+ if LOGGING_LEVEL > logging.CRITICAL:
150
143
  return
151
144
  prefix = self.__get_log_prefix()
152
145
  colored_message = colored(f"{prefix} • {message}", color="red", attrs=["bold"])
@@ -192,16 +185,16 @@ class BaseTaskModel(CommonTaskModel, PidModel, TimeTracker):
192
185
  self._play_bell()
193
186
 
194
187
  def _show_env_prefix(self):
195
- if env_prefix == "":
188
+ if ENV_PREFIX == "":
196
189
  return
197
- colored_env_prefix = colored(env_prefix, color="yellow")
190
+ colored_env_prefix = colored(ENV_PREFIX, color="yellow")
198
191
  colored_label = colored("Your current environment: ", attrs=["dark"])
199
192
  print(colored(f"{colored_label}{colored_env_prefix}"), file=sys.stderr)
200
193
 
201
194
  def _show_run_command(self):
202
195
  if not self.__has_cli_interface:
203
196
  return
204
- params: List[str] = [double_quote(arg) for arg in self.__args]
197
+ params: list[str] = [double_quote(arg) for arg in self.__args]
205
198
  for task_input in self._get_combined_inputs():
206
199
  if task_input.is_hidden():
207
200
  continue
@@ -225,7 +218,7 @@ class BaseTaskModel(CommonTaskModel, PidModel, TimeTracker):
225
218
  return colored(text, color=self.get_color())
226
219
 
227
220
  def __get_print_prefix(self) -> str:
228
- common_prefix = self.__get_common_prefix(show_time=show_time)
221
+ common_prefix = self.__get_common_prefix(show_time=SHOW_TIME)
229
222
  icon = self.get_icon()
230
223
  length = LOG_NAME_LENGTH - len(icon)
231
224
  rjust_cli_name = self.__get_rjust_full_cli_name(length)
@@ -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,15 @@ 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
15
+ from zrb.helper.asyncio_task import stop_asyncio_sync
13
16
  from zrb.helper.log import logger
14
17
  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
- )
18
+ from zrb.helper.typing import JinjaTemplate
25
19
  from zrb.task.any_task import AnyTask
26
20
  from zrb.task.any_task_event_handler import (
27
21
  OnFailed,
@@ -57,7 +51,7 @@ def _reset_stty():
57
51
 
58
52
 
59
53
  def _log_error(message: Any):
60
- if logging_level > logging.ERROR:
54
+ if LOGGING_LEVEL > logging.ERROR:
61
55
  return
62
56
  colored_message = colored(f"{message}", color="red", attrs=["bold"])
63
57
  logger.error(colored_message, exc_info=True)
@@ -111,7 +105,7 @@ class CmdTask(BaseTask):
111
105
  >>> runner.register(hello)
112
106
  """
113
107
 
114
- _pids: List[int] = []
108
+ _pids: list[int] = []
115
109
  _global_state = CmdGlobalState()
116
110
 
117
111
  def __init__(
@@ -187,8 +181,8 @@ class CmdTask(BaseTask):
187
181
  self._max_error_size = max_error_line
188
182
  self._output_buffer: Iterable[str] = []
189
183
  self._error_buffer: Iterable[str] = []
190
- if executable is None and default_shell != "":
191
- executable = default_shell
184
+ if executable is None and DEFAULT_SHELL != "":
185
+ executable = DEFAULT_SHELL
192
186
  self._executable = executable
193
187
  self._process: Optional[asyncio.subprocess.Process]
194
188
  self._preexec_fn = preexec_fn
@@ -296,13 +290,7 @@ class CmdTask(BaseTask):
296
290
  _print_out_dark(f"Getting signal {signum}")
297
291
  for pid in self._pids:
298
292
  self.__kill_by_pid(pid)
299
- tasks = asyncio.all_tasks()
300
- for task in tasks:
301
- try:
302
- task.cancel()
303
- except Exception as e:
304
- self.print_err(e)
305
- time.sleep(0.3)
293
+ stop_asyncio_sync()
306
294
  _print_out_dark(f"Exiting with signal {signum}")
307
295
  sys.exit(signum)
308
296
 
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