zrb 0.6.0__py3-none-any.whl → 0.6.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 (316) hide show
  1. zrb/__init__.py +24 -20
  2. zrb/__main__.py +5 -5
  3. zrb/action/runner.py +22 -30
  4. zrb/advertisement.py +10 -9
  5. zrb/builtin/__init__.py +18 -16
  6. zrb/builtin/base64.py +13 -18
  7. zrb/builtin/devtool/__init__.py +14 -3
  8. zrb/builtin/devtool/devtool_install.py +207 -221
  9. zrb/builtin/env.py +9 -12
  10. zrb/builtin/eval.py +9 -9
  11. zrb/builtin/explain.py +73 -74
  12. zrb/builtin/generator/__init__.py +7 -11
  13. zrb/builtin/generator/app_generator/add.py +86 -87
  14. zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/add.py +78 -77
  15. zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_checker.py +6 -6
  16. zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_common.py +14 -15
  17. zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/container.py +32 -32
  18. zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/deployment.py +29 -30
  19. zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/image.py +1 -3
  20. zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/local.py +5 -4
  21. zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/__main__.py +24 -32
  22. zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/add.py +89 -87
  23. zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_common.py +14 -15
  24. zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/container.py +42 -54
  25. zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/deployment.py +34 -32
  26. zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/image.py +19 -22
  27. zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/local.py +18 -18
  28. zrb/builtin/generator/app_generator/template/http-port/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_checker.py +10 -10
  29. zrb/builtin/generator/app_generator/template/http-port-build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/local.py +19 -19
  30. zrb/builtin/generator/app_generator/template/use-helm/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/__main__.py +12 -14
  31. zrb/builtin/generator/cmd_task/add.py +23 -25
  32. zrb/builtin/generator/cmd_task/template/_automate/snake_zrb_task_name.py +3 -5
  33. zrb/builtin/generator/common/helper.py +15 -20
  34. zrb/builtin/generator/common/task_factory.py +29 -26
  35. zrb/builtin/generator/common/task_input.py +97 -91
  36. zrb/builtin/generator/docker_compose_task/add.py +38 -39
  37. zrb/builtin/generator/docker_compose_task/template/_automate/snake_zrb_task_name.py +13 -19
  38. zrb/builtin/generator/docker_compose_task/template/src/kebab-zrb-task-name/image/main.py +18 -14
  39. zrb/builtin/generator/fastapp/add.py +94 -90
  40. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_checker.py +28 -27
  41. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_config.py +68 -39
  42. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_env.py +24 -22
  43. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_env_file.py +12 -12
  44. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_get_start_microservices.py +43 -41
  45. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_helper.py +23 -24
  46. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_input.py +21 -20
  47. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-load-test.sh +1 -1
  48. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-start.sh +1 -1
  49. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-test.sh +2 -2
  50. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/container.py +46 -39
  51. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/deployment.py +28 -20
  52. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/frontend.py +21 -27
  53. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/image.py +23 -18
  54. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/load_test.py +35 -36
  55. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/local.py +68 -58
  56. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/test.py +24 -38
  57. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/__main__.py +23 -21
  58. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/_common.py +72 -75
  59. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/app_helper.py +70 -75
  60. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_postgresql_helper.py +18 -21
  61. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_rabbitmq_helper.py +11 -19
  62. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_redpanda_helper.py +18 -15
  63. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_signoz_helper.py +17 -21
  64. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/docker-compose.yml +12 -12
  65. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/loadtest/locustfile.py +10 -12
  66. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/Dockerfile +1 -0
  67. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/app.py +35 -30
  68. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/app_lifespan.py +21 -17
  69. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/app_state.py +3 -2
  70. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/db_connection.py +18 -20
  71. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/frontend_index.py +5 -6
  72. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/log.py +7 -15
  73. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/messagebus.py +38 -34
  74. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/rpc.py +19 -18
  75. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/config.py +68 -103
  76. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/error.py +11 -10
  77. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/__init__.py +2 -4
  78. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/kafka/admin.py +38 -35
  79. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/kafka/consumer.py +38 -45
  80. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/kafka/publisher.py +26 -29
  81. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/messagebus.py +8 -14
  82. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/mock.py +12 -8
  83. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/rabbitmq/admin.py +37 -44
  84. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/rabbitmq/consumer.py +42 -67
  85. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/rabbitmq/publisher.py +32 -55
  86. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/model/repo_model.py +11 -10
  87. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/__init__.py +2 -2
  88. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/db_entity_mixin.py +3 -6
  89. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/db_repo.py +76 -83
  90. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/repo.py +5 -5
  91. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/search_filter.py +1 -0
  92. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/__init__.py +1 -1
  93. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/messagebus/caller.py +17 -19
  94. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/messagebus/server.py +14 -18
  95. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/rpc.py +15 -28
  96. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/schema/__init__.py +1 -1
  97. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/schema/base_schema.py +6 -5
  98. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/serializer/__init__.py +1 -3
  99. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/serializer/serializer.py +3 -4
  100. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/helper/async_task.py +3 -5
  101. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/helper/conversion.py +10 -10
  102. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/helper/migration.py +6 -10
  103. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/migrate.py +3 -2
  104. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/api.py +7 -12
  105. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/__init__.py +4 -6
  106. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/access_token_scheme.py +9 -10
  107. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/access_token_util.py +6 -5
  108. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/authorizer.py +4 -4
  109. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/bearer_token_scheme.py +1 -1
  110. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/model/user_model.py +8 -10
  111. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/password_hasher.py +1 -1
  112. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/refresh_token_util.py +7 -6
  113. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/repo/group_repo.py +3 -8
  114. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/repo/permission_repo.py +3 -7
  115. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/repo/user_repo.py +3 -5
  116. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/user.py +12 -7
  117. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/__init__.py +7 -12
  118. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/access_token/scheme.py +7 -12
  119. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/access_token/util.py +20 -30
  120. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/authorizer/authorizer.py +1 -3
  121. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/authorizer/rpc_authorizer.py +5 -12
  122. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/password_hasher/bcrypt_password_hasher.py +3 -8
  123. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/password_hasher/password_hasher.py +0 -1
  124. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/refresh_token/util.py +15 -21
  125. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/api.py +42 -49
  126. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/model.py +3 -7
  127. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/repo.py +18 -16
  128. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/rpc.py +26 -41
  129. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/api.py +46 -51
  130. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/model.py +5 -7
  131. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/repo.py +11 -8
  132. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/rpc.py +28 -45
  133. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/table.py +10 -10
  134. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/api.py +60 -72
  135. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/model.py +32 -61
  136. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/repo.py +33 -36
  137. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/rpc.py +42 -61
  138. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/event.py +2 -4
  139. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/migrate.py +3 -5
  140. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/register_module.py +11 -12
  141. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/register_permission.py +19 -26
  142. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/rpc.py +5 -13
  143. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/group.py +6 -4
  144. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/permission.py +3 -1
  145. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/request.py +1 -0
  146. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/token.py +2 -2
  147. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/user.py +4 -3
  148. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/api.py +4 -5
  149. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/component/model/activity_model.py +3 -9
  150. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/component/repo/activity_repo.py +3 -7
  151. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/core/historical_repo_model.py +13 -13
  152. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/api.py +22 -23
  153. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/event.py +5 -7
  154. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/model.py +2 -6
  155. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/repo.py +8 -8
  156. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/rpc.py +28 -45
  157. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/table.py +3 -3
  158. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/event.py +4 -8
  159. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/migrate.py +2 -4
  160. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/register_module.py +10 -11
  161. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/rpc.py +3 -5
  162. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/schema/activity.py +3 -1
  163. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/requirements.txt +12 -12
  164. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_group_crud.py +76 -106
  165. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_permission_crud.py +73 -103
  166. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_user_crud.py +92 -122
  167. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_user_login.py +107 -134
  168. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/conftest.py +2 -2
  169. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/test_liveness_and_readiness.py +8 -15
  170. zrb/builtin/generator/fastapp_crud/add.py +74 -79
  171. zrb/builtin/generator/fastapp_crud/helper.py +51 -48
  172. zrb/builtin/generator/fastapp_crud/task_factory.py +17 -14
  173. zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/component/model/snake_zrb_entity_name_model.py +2 -2
  174. zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/component/repo/snake_zrb_entity_name_repo.py +3 -2
  175. zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/api.py +58 -40
  176. zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/model.py +7 -3
  177. zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/repo.py +9 -4
  178. zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/rpc.py +32 -39
  179. zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/schema/snake_zrb_entity_name.py +3 -1
  180. zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/test/snake_zrb_module_name/test_snake_zrb_entity_name.py +68 -98
  181. zrb/builtin/generator/fastapp_field/add.py +143 -85
  182. zrb/builtin/generator/fastapp_field/helper.py +184 -125
  183. zrb/builtin/generator/fastapp_module/add.py +90 -67
  184. zrb/builtin/generator/fastapp_module/helper.py +141 -155
  185. zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/api.py +3 -2
  186. zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/table.py +3 -3
  187. zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/event.py +3 -5
  188. zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/migrate.py +2 -4
  189. zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/register_module.py +10 -11
  190. zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/rpc.py +3 -5
  191. zrb/builtin/generator/pip_package/add.py +39 -40
  192. zrb/builtin/generator/pip_package/template/_automate/snake_zrb_package_name/local.py +30 -30
  193. zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/__init__.py +1 -0
  194. zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/__main__.py +1 -0
  195. zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/util.py +2 -2
  196. zrb/builtin/generator/plugin/create.py +39 -36
  197. zrb/builtin/generator/plugin/template/src/snake_zrb_package_name/__init__.py +1 -1
  198. zrb/builtin/generator/plugin/template/src/snake_zrb_package_name/__main__.py +1 -0
  199. zrb/builtin/generator/plugin/template/src/snake_zrb_package_name/task/example_task.py +6 -4
  200. zrb/builtin/generator/plugin/template/zrb_init.py +27 -27
  201. zrb/builtin/generator/project/create.py +38 -46
  202. zrb/builtin/generator/project/template/.flake8 +3 -0
  203. zrb/builtin/generator/project/template/project.sh +19 -10
  204. zrb/builtin/generator/project_task/task_factory.py +60 -61
  205. zrb/builtin/generator/project_task/template/_automate/_project/__init__.py +2 -2
  206. zrb/builtin/generator/project_task/template/_automate/_project/build_project_images.py +4 -4
  207. zrb/builtin/generator/project_task/template/_automate/_project/deploy_project.py +4 -4
  208. zrb/builtin/generator/project_task/template/_automate/_project/destroy_project.py +4 -4
  209. zrb/builtin/generator/project_task/template/_automate/_project/push_project_images.py +4 -4
  210. zrb/builtin/generator/project_task/template/_automate/_project/remove_project_containers.py +4 -4
  211. zrb/builtin/generator/project_task/template/_automate/_project/start_project.py +4 -4
  212. zrb/builtin/generator/project_task/template/_automate/_project/start_project_containers.py +4 -4
  213. zrb/builtin/generator/project_task/template/_automate/_project/stop_project_containers.py +4 -4
  214. zrb/builtin/generator/python_task/add.py +25 -33
  215. zrb/builtin/generator/python_task/template/_automate/snake_zrb_task_name.py +8 -7
  216. zrb/builtin/generator/simple_python_app/add.py +81 -75
  217. zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/_common.py +14 -15
  218. zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/container.py +46 -61
  219. zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/deployment.py +34 -32
  220. zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/image.py +19 -22
  221. zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/local.py +23 -25
  222. zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/deployment/__main__.py +24 -32
  223. zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/src/main.py +18 -14
  224. zrb/builtin/git.py +46 -46
  225. zrb/builtin/group.py +13 -34
  226. zrb/builtin/helper/reccuring_action.py +26 -29
  227. zrb/builtin/md5.py +17 -30
  228. zrb/builtin/process.py +19 -19
  229. zrb/builtin/project.py +13 -15
  230. zrb/builtin/say.py +69 -88
  231. zrb/builtin/schedule.py +15 -19
  232. zrb/builtin/ubuntu.py +44 -35
  233. zrb/builtin/update.py +5 -5
  234. zrb/builtin/version.py +3 -7
  235. zrb/builtin/watch_changes.py +24 -25
  236. zrb/config/config.py +19 -18
  237. zrb/helper/accessories/color.py +18 -6
  238. zrb/helper/accessories/icon.py +24 -3
  239. zrb/helper/accessories/name.py +120 -28
  240. zrb/helper/advertisement.py +9 -13
  241. zrb/helper/callable.py +2 -4
  242. zrb/helper/cli.py +27 -31
  243. zrb/helper/codemod/add_argument_to_function.py +3 -4
  244. zrb/helper/codemod/add_argument_to_function_call.py +4 -7
  245. zrb/helper/codemod/add_assert_resource.py +7 -7
  246. zrb/helper/codemod/add_function_call.py +3 -5
  247. zrb/helper/codemod/add_import_module.py +15 -26
  248. zrb/helper/codemod/add_key_value_to_dict.py +7 -10
  249. zrb/helper/codemod/add_property_to_class.py +10 -8
  250. zrb/helper/codemod/add_upstream_to_task.py +21 -33
  251. zrb/helper/codemod/append_code_to_function.py +6 -13
  252. zrb/helper/codemod/format_code.py +2 -1
  253. zrb/helper/default_env.py +25 -25
  254. zrb/helper/docker_compose/fetch_external_env.py +18 -18
  255. zrb/helper/docker_compose/file.py +5 -4
  256. zrb/helper/docstring.py +44 -47
  257. zrb/helper/env_map/fetch.py +7 -12
  258. zrb/helper/file/copy_tree.py +12 -17
  259. zrb/helper/file/match.py +6 -7
  260. zrb/helper/file/text.py +8 -6
  261. zrb/helper/git/detect_changes.py +9 -8
  262. zrb/helper/loader/load_module.py +14 -13
  263. zrb/helper/log.py +4 -3
  264. zrb/helper/map/conversion.py +4 -5
  265. zrb/helper/python_task.py +2 -4
  266. zrb/helper/render_data.py +25 -18
  267. zrb/helper/string/constant.py +2 -2
  268. zrb/helper/string/conversion.py +17 -16
  269. zrb/helper/string/jinja.py +2 -2
  270. zrb/helper/typecheck.py +6 -4
  271. zrb/helper/typing.py +10 -2
  272. zrb/helper/util.py +44 -40
  273. zrb/task/any_task.py +251 -251
  274. zrb/task/base_remote_cmd_task.py +76 -59
  275. zrb/task/base_task/base_task.py +95 -108
  276. zrb/task/base_task/component/base_task_model.py +73 -71
  277. zrb/task/base_task/component/common_task_model.py +42 -29
  278. zrb/task/base_task/component/pid_model.py +3 -5
  279. zrb/task/base_task/component/renderer.py +26 -36
  280. zrb/task/base_task/component/trackers.py +6 -9
  281. zrb/task/checker.py +14 -9
  282. zrb/task/cmd_task.py +102 -100
  283. zrb/task/decorator.py +19 -13
  284. zrb/task/docker_compose_task.py +127 -98
  285. zrb/task/flow_task.py +16 -19
  286. zrb/task/http_checker.py +40 -36
  287. zrb/task/notifier.py +50 -38
  288. zrb/task/parallel.py +3 -3
  289. zrb/task/path_checker.py +34 -27
  290. zrb/task/path_watcher.py +49 -40
  291. zrb/task/port_checker.py +33 -26
  292. zrb/task/recurring_task.py +36 -42
  293. zrb/task/remote_cmd_task.py +31 -28
  294. zrb/task/resource_maker.py +66 -52
  295. zrb/task/rsync_task.py +24 -21
  296. zrb/task/task.py +4 -3
  297. zrb/task/time_watcher.py +36 -31
  298. zrb/task_env/constant.py +1 -1
  299. zrb/task_env/env.py +33 -31
  300. zrb/task_env/env_file.py +24 -23
  301. zrb/task_group/group.py +27 -30
  302. zrb/task_input/any_input.py +18 -16
  303. zrb/task_input/base_input.py +26 -26
  304. zrb/task_input/bool_input.py +6 -6
  305. zrb/task_input/choice_input.py +11 -9
  306. zrb/task_input/constant.py +1 -1
  307. zrb/task_input/float_input.py +6 -5
  308. zrb/task_input/int_input.py +8 -8
  309. zrb/task_input/password_input.py +9 -9
  310. zrb/task_input/str_input.py +8 -8
  311. zrb/task_input/task_input.py +4 -2
  312. {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/METADATA +3 -1
  313. {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/RECORD +316 -315
  314. {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/LICENSE +0 -0
  315. {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/WHEEL +0 -0
  316. {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/entry_points.txt +0 -0
@@ -1,49 +1,50 @@
1
- from zrb.helper.typing import (
2
- Any, Callable, Iterable, List, Mapping, Optional, Union
3
- )
1
+ import asyncio
2
+ import copy
3
+
4
+ from zrb.advertisement import advertisements
5
+ from zrb.config.config import show_advertisement
6
+ from zrb.helper.accessories.name import get_random_name
7
+ from zrb.helper.advertisement import get_advertisement
4
8
  from zrb.helper.callable import run_async
9
+ from zrb.helper.map.conversion import to_str as map_to_str
10
+ from zrb.helper.string.conversion import to_variable_name
11
+ from zrb.helper.string.modification import double_quote
5
12
  from zrb.helper.typecheck import typechecked
13
+ from zrb.helper.typing import Any, Callable, Iterable, List, Mapping, Optional, Union
6
14
  from zrb.task.any_task import AnyTask
7
15
  from zrb.task.any_task_event_handler import (
8
- OnTriggered, OnWaiting, OnSkipped, OnStarted, OnReady, OnRetry, OnFailed
9
- )
10
- from zrb.task.base_task.component.trackers import (
11
- AttemptTracker, FinishTracker
16
+ OnFailed,
17
+ OnReady,
18
+ OnRetry,
19
+ OnSkipped,
20
+ OnStarted,
21
+ OnTriggered,
22
+ OnWaiting,
12
23
  )
13
- from zrb.task.base_task.component.renderer import Renderer
14
24
  from zrb.task.base_task.component.base_task_model import BaseTaskModel
25
+ from zrb.task.base_task.component.renderer import Renderer
26
+ from zrb.task.base_task.component.trackers import AttemptTracker, FinishTracker
15
27
  from zrb.task.parallel import AnyParallel
16
- from zrb.advertisement import advertisements
17
- from zrb.task_group.group import Group
18
28
  from zrb.task_env.env import Env
19
29
  from zrb.task_env.env_file import EnvFile
30
+ from zrb.task_group.group import Group
20
31
  from zrb.task_input.any_input import AnyInput
21
- from zrb.helper.accessories.name import get_random_name
22
- from zrb.helper.advertisement import get_advertisement
23
- from zrb.helper.string.conversion import to_variable_name
24
- from zrb.helper.string.modification import double_quote
25
- from zrb.helper.map.conversion import to_str as map_to_str
26
- from zrb.config.config import show_advertisement
27
-
28
- import asyncio
29
- import copy
30
32
 
31
33
 
32
34
  @typechecked
33
- class BaseTask(
34
- FinishTracker, AttemptTracker, Renderer, BaseTaskModel, AnyTask
35
- ):
36
- '''
35
+ class BaseTask(FinishTracker, AttemptTracker, Renderer, BaseTaskModel, AnyTask):
36
+ """
37
37
  Base class for all tasks.
38
38
  Every task definition should be extended from this class.
39
- '''
39
+ """
40
+
40
41
  __xcom: Mapping[str, Mapping[str, str]] = {}
41
42
 
42
43
  def __init__(
43
44
  self,
44
45
  name: str,
45
46
  group: Optional[Group] = None,
46
- description: str = '',
47
+ description: str = "",
47
48
  inputs: List[AnyInput] = [],
48
49
  envs: Iterable[Env] = [],
49
50
  env_files: Iterable[EnvFile] = [],
@@ -63,7 +64,7 @@ class BaseTask(
63
64
  on_retry: Optional[OnRetry] = None,
64
65
  on_failed: Optional[OnFailed] = None,
65
66
  should_execute: Union[bool, str, Callable[..., bool]] = True,
66
- return_upstream_result: bool = False
67
+ return_upstream_result: bool = False,
67
68
  ):
68
69
  # init properties
69
70
  retry_interval = retry_interval if retry_interval >= 0 else 0
@@ -97,7 +98,7 @@ class BaseTask(
97
98
  on_retry=on_retry,
98
99
  on_failed=on_failed,
99
100
  should_execute=should_execute,
100
- return_upstream_result=return_upstream_result
101
+ return_upstream_result=return_upstream_result,
101
102
  )
102
103
  # init private flags
103
104
  self.__is_keyval_set = False
@@ -119,52 +120,50 @@ class BaseTask(
119
120
  return operand
120
121
 
121
122
  def set_task_xcom(self, key: str, value: Any) -> str:
122
- return self.set_xcom(
123
- key='.'.join([self.get_name(), key]),
124
- value=value
125
- )
123
+ return self.set_xcom(key=".".join([self.get_name(), key]), value=value)
126
124
 
127
125
  def set_xcom(self, key: str, value: Any) -> str:
128
126
  execution_id = self.get_execution_id()
129
127
  if execution_id not in self.__xcom:
130
128
  self.__xcom[execution_id] = {}
131
129
  execution_id = self.get_execution_id()
132
- self.__xcom[execution_id][key] = f'{value}'
133
- return ''
130
+ self.__xcom[execution_id][key] = f"{value}"
131
+ return ""
134
132
 
135
133
  def get_xcom(self, key: str) -> str:
136
134
  execution_id = self.get_execution_id()
137
135
  if execution_id not in self.__xcom:
138
- return ''
139
- return self.__xcom[execution_id].get(key, '')
136
+ return ""
137
+ return self.__xcom[execution_id].get(key, "")
140
138
 
141
- def clear_xcom(self, execution_id: str = '') -> str:
142
- if execution_id == '':
139
+ def clear_xcom(self, execution_id: str = "") -> str:
140
+ if execution_id == "":
143
141
  execution_id = self.get_execution_id()
144
142
  if execution_id in self.__xcom:
145
143
  del self.__xcom[execution_id]
146
- return ''
144
+ return ""
147
145
 
148
146
  def copy(self) -> AnyTask:
149
147
  return copy.deepcopy(self)
150
148
 
151
149
  def to_function(
152
150
  self,
153
- env_prefix: str = '',
151
+ env_prefix: str = "",
154
152
  raise_error: bool = True,
155
153
  is_async: bool = False,
156
- show_done_info: bool = True
154
+ show_done_info: bool = True,
157
155
  ) -> Callable[..., Any]:
158
156
  async def function(*args: Any, **kwargs: Any) -> Any:
159
- self.log_info('Copy task')
157
+ self.log_info("Copy task")
160
158
  self_cp = self.copy()
161
159
  return await self_cp._run_and_check_all(
162
160
  env_prefix=env_prefix,
163
161
  raise_error=raise_error,
164
162
  args=args,
165
163
  kwargs=kwargs,
166
- show_done_info=show_done_info
164
+ show_done_info=show_done_info,
167
165
  )
166
+
168
167
  if is_async:
169
168
  return function
170
169
  return lambda *args, **kwargs: asyncio.run(function(*args, **kwargs))
@@ -175,42 +174,42 @@ class BaseTask(
175
174
  return None
176
175
 
177
176
  async def on_triggered(self):
178
- self.log_info('State: triggered')
177
+ self.log_info("State: triggered")
179
178
  execution_id = self.get_execution_id()
180
- self.log_info(f'Execution id: {execution_id}')
179
+ self.log_info(f"Execution id: {execution_id}")
181
180
  if self._on_triggered is not None:
182
181
  await run_async(self._on_triggered, self)
183
182
 
184
183
  async def on_waiting(self):
185
- self.log_info('State: waiting')
184
+ self.log_info("State: waiting")
186
185
  if self._on_waiting is not None:
187
186
  await run_async(self._on_waiting, self)
188
187
 
189
188
  async def on_skipped(self):
190
- self.log_info('State: skipped')
189
+ self.log_info("State: skipped")
191
190
  if self._on_skipped is not None:
192
191
  await run_async(self._on_skipped, self)
193
192
 
194
193
  async def on_started(self):
195
- self.log_info('State: started')
194
+ self.log_info("State: started")
196
195
  if self._on_started is not None:
197
196
  await run_async(self._on_started, self)
198
197
 
199
198
  async def on_ready(self):
200
- self.log_info('State: ready')
199
+ self.log_info("State: ready")
201
200
  if self._on_ready is not None:
202
201
  await run_async(self._on_ready, self)
203
202
 
204
203
  async def on_failed(self, is_last_attempt: bool, exception: Exception):
205
- failed_state_message = 'State failed'
204
+ failed_state_message = "State failed"
206
205
  if is_last_attempt:
207
- failed_state_message = 'State failed (last attempt)'
206
+ failed_state_message = "State failed (last attempt)"
208
207
  self.log_info(failed_state_message)
209
208
  if self._on_failed is not None:
210
209
  await run_async(self._on_failed, self, is_last_attempt, exception)
211
210
 
212
211
  async def on_retry(self):
213
- self.log_info('State: retry')
212
+ self.log_info("State: retry")
214
213
  if self._on_retry is not None:
215
214
  await run_async(self._on_retry, self)
216
215
 
@@ -223,42 +222,40 @@ class BaseTask(
223
222
  raise_error: bool,
224
223
  args: Iterable[Any],
225
224
  kwargs: Mapping[str, Any],
226
- show_done_info: bool = True
225
+ show_done_info: bool = True,
227
226
  ):
228
227
  try:
229
228
  self._start_timer()
230
- if self.get_execution_id() == '':
229
+ if self.get_execution_id() == "":
231
230
  self._set_execution_id(
232
231
  get_random_name(add_random_digit=True, digit_count=5)
233
232
  )
234
233
  self._propagate_execution_id()
235
- self.log_info('Set input and env map')
234
+ self.log_info("Set input and env map")
236
235
  await self._set_keyval(kwargs=kwargs, env_prefix=env_prefix)
237
- self.log_info('Set run kwargs')
236
+ self.log_info("Set run kwargs")
238
237
  new_kwargs = self.get_input_map()
239
238
  # make sure args and kwargs['_args'] are the same
240
- self.log_info('Set run args')
239
+ self.log_info("Set run args")
241
240
  new_args = copy.deepcopy(args)
242
- if len(args) == 0 and '_args' in kwargs:
243
- new_args = kwargs['_args']
244
- new_kwargs['_args'] = new_args
241
+ if len(args) == 0 and "_args" in kwargs:
242
+ new_args = kwargs["_args"]
243
+ new_kwargs["_args"] = new_args
245
244
  # inject self as input_map['_task']
246
- new_kwargs['_task'] = self
245
+ new_kwargs["_task"] = self
247
246
  self._set_args(new_args)
248
247
  self._set_kwargs(new_kwargs)
249
248
  # run the task
250
249
  coroutines = [
251
- asyncio.create_task(
252
- self._loop_check(show_done_info=show_done_info)
253
- ),
254
- asyncio.create_task(self._run_all(*new_args, **new_kwargs))
250
+ asyncio.create_task(self._loop_check(show_done_info=show_done_info)),
251
+ asyncio.create_task(self._run_all(*new_args, **new_kwargs)),
255
252
  ]
256
253
  results = await asyncio.gather(*coroutines)
257
254
  result = results[-1]
258
255
  self._print_result(result)
259
256
  return result
260
257
  except Exception as e:
261
- self.log_error(f'{e}')
258
+ self.log_error(f"{e}")
262
259
  if raise_error:
263
260
  raise
264
261
  finally:
@@ -268,9 +265,9 @@ class BaseTask(
268
265
  self._play_bell()
269
266
 
270
267
  async def _loop_check(self, show_done_info: bool = False) -> bool:
271
- self.log_info('Start readiness checking')
268
+ self.log_info("Start readiness checking")
272
269
  while not await self._cached_check():
273
- self.log_debug('Task is not ready')
270
+ self.log_debug("Task is not ready")
274
271
  await asyncio.sleep(self._checking_interval)
275
272
  self._end_timer()
276
273
  if show_done_info:
@@ -283,7 +280,7 @@ class BaseTask(
283
280
 
284
281
  async def _cached_check(self) -> bool:
285
282
  if self.__is_check_triggered:
286
- self.log_debug('Waiting readiness flag to be set')
283
+ self.log_debug("Waiting readiness flag to be set")
287
284
  while not self.__is_ready:
288
285
  await asyncio.sleep(0.1)
289
286
  return True
@@ -291,28 +288,26 @@ class BaseTask(
291
288
  check_result = await self._check()
292
289
  if check_result:
293
290
  self.__is_ready = True
294
- self.log_debug('Set readiness flag to True')
291
+ self.log_debug("Set readiness flag to True")
295
292
  return check_result
296
293
 
297
294
  async def _check(self) -> bool:
298
- '''
295
+ """
299
296
  Check current task readiness.
300
297
  - If self.checkers is defined,
301
298
  this will return True once every self.checkers is completed
302
299
  - Otherwise, this will return check method's return value.
303
- '''
300
+ """
304
301
  if len(self._get_checkers()) == 0:
305
302
  return await run_async(self.check)
306
- self.log_debug('Waiting execution to be started')
303
+ self.log_debug("Waiting execution to be started")
307
304
  while not self.__is_execution_started:
308
305
  # Don't start checking before the execution itself has been started
309
306
  await asyncio.sleep(0.1)
310
307
  check_coroutines: Iterable[asyncio.Task] = []
311
308
  for checker_task in self._get_checkers():
312
309
  checker_task._set_execution_id(self.get_execution_id())
313
- check_coroutines.append(
314
- asyncio.create_task(checker_task._run_all())
315
- )
310
+ check_coroutines.append(asyncio.create_task(checker_task._run_all()))
316
311
  await asyncio.gather(*check_coroutines)
317
312
  return True
318
313
 
@@ -323,9 +318,7 @@ class BaseTask(
323
318
  self._lock_upstreams()
324
319
  for upstream_task in self._get_upstreams():
325
320
  upstream_task._set_execution_id(self.get_execution_id())
326
- coroutines.append(asyncio.create_task(
327
- upstream_task._run_all(**kwargs)
328
- ))
321
+ coroutines.append(asyncio.create_task(upstream_task._run_all(**kwargs)))
329
322
  # Add current task to processes
330
323
  coroutines.append(self._cached_run(*args, **kwargs))
331
324
  # Wait everything to complete
@@ -336,7 +329,7 @@ class BaseTask(
336
329
 
337
330
  async def _cached_run(self, *args: Any, **kwargs: Any) -> Any:
338
331
  if self.__is_execution_triggered:
339
- self.log_debug('Task has been triggered')
332
+ self.log_debug("Task has been triggered")
340
333
  return
341
334
  await self.on_triggered()
342
335
  self.__is_execution_triggered = True
@@ -345,15 +338,15 @@ class BaseTask(
345
338
  upstream_check_processes: Iterable[asyncio.Task] = []
346
339
  self._lock_upstreams()
347
340
  for upstream_task in self._get_upstreams():
348
- upstream_check_processes.append(asyncio.create_task(
349
- upstream_task._loop_check()
350
- ))
341
+ upstream_check_processes.append(
342
+ asyncio.create_task(upstream_task._loop_check())
343
+ )
351
344
  # wait all upstream checkers to complete
352
345
  await asyncio.gather(*upstream_check_processes)
353
346
  # mark execution as started, so that checkers can start checking
354
347
  self.__is_execution_started = True
355
348
  local_kwargs = dict(kwargs)
356
- local_kwargs['_task'] = self
349
+ local_kwargs["_task"] = self
357
350
  if not await self._check_should_execute(*args, **local_kwargs):
358
351
  await self.on_skipped()
359
352
  await self._mark_done()
@@ -362,9 +355,7 @@ class BaseTask(
362
355
  result: Any = None
363
356
  while self._should_attempt():
364
357
  try:
365
- self.log_debug(
366
- f'Started with args: {args} and kwargs: {local_kwargs}'
367
- )
358
+ self.log_debug(f"Started with args: {args} and kwargs: {local_kwargs}")
368
359
  await self.on_started()
369
360
  result = await run_async(self.run, *args, **local_kwargs)
370
361
  break
@@ -374,12 +365,12 @@ class BaseTask(
374
365
  if is_last_attempt:
375
366
  raise e
376
367
  attempt = self._get_attempt()
377
- self.log_error(f'Encounter error on attempt {attempt}')
368
+ self.log_error(f"Encounter error on attempt {attempt}")
378
369
  self._increase_attempt()
379
370
  await asyncio.sleep(self._retry_interval)
380
371
  await self.on_retry()
381
- self.set_xcom(self.get_name(), f'{result}')
382
- self.log_debug(f'XCom: {self.__xcom}')
372
+ self.set_xcom(self.get_name(), f"{result}")
373
+ self.log_debug(f"XCom: {self.__xcom}")
383
374
  await self._mark_done()
384
375
  return result
385
376
 
@@ -404,35 +395,33 @@ class BaseTask(
404
395
  # set upstreams keyval
405
396
  self._lock_upstreams()
406
397
  for upstream_task in self._get_upstreams():
407
- upstream_coroutines.append(asyncio.create_task(
408
- upstream_task._set_keyval(
409
- kwargs=new_kwargs, env_prefix=env_prefix
398
+ upstream_coroutines.append(
399
+ asyncio.create_task(
400
+ upstream_task._set_keyval(kwargs=new_kwargs, env_prefix=env_prefix)
410
401
  )
411
- ))
402
+ )
412
403
  # set checker keyval
413
404
  checker_coroutines = []
414
405
  for checker_task in self._get_checkers():
415
406
  checker_task.add_input(*self._get_inputs())
416
407
  checker_task.add_env(*self._get_envs())
417
- checker_coroutines.append(asyncio.create_task(
418
- checker_task._set_keyval(
419
- kwargs=new_kwargs, env_prefix=env_prefix
408
+ checker_coroutines.append(
409
+ asyncio.create_task(
410
+ checker_task._set_keyval(kwargs=new_kwargs, env_prefix=env_prefix)
420
411
  )
421
- ))
412
+ )
422
413
  # wait for checker and upstreams
423
414
  coroutines = checker_coroutines + upstream_coroutines
424
415
  await asyncio.gather(*coroutines)
425
416
 
426
- async def _set_local_keyval(
427
- self, kwargs: Mapping[str, Any], env_prefix: str = ''
428
- ):
417
+ async def _set_local_keyval(self, kwargs: Mapping[str, Any], env_prefix: str = ""):
429
418
  if self.__is_keyval_set:
430
419
  return True
431
420
  self.__is_keyval_set = True
432
421
  # set task for rendering
433
422
  self._set_task(self)
434
423
  # Set input_map for rendering
435
- self.log_info('Set input map')
424
+ self.log_info("Set input map")
436
425
  for task_input in self._get_combined_inputs():
437
426
  input_name = to_variable_name(task_input.get_name())
438
427
  input_value = kwargs.get(input_name, task_input.get_default())
@@ -440,21 +429,19 @@ class BaseTask(
440
429
  input_value = self.render_any(input_value)
441
430
  self._set_input_map(input_name, input_value)
442
431
  self.log_debug(
443
- 'Input map:\n' + map_to_str(self.get_input_map(), item_prefix=' ')
432
+ "Input map:\n" + map_to_str(self.get_input_map(), item_prefix=" ")
444
433
  )
445
- self.log_info('Merging task envs, task env files, and native envs')
434
+ self.log_info("Merging task envs, task env files, and native envs")
446
435
  # Set env_map for rendering
447
436
  for env_name, env in self._get_combined_env().items():
448
437
  env_value = env.get(env_prefix)
449
438
  if env.should_render():
450
439
  env_value = self.render_any(env_value)
451
440
  self._set_env_map(env_name, env_value)
452
- self._set_env_map('_ZRB_EXECUTION_ID', self.get_execution_id())
453
- self.log_debug(
454
- 'Env map:\n' + map_to_str(self.get_env_map(), item_prefix=' ')
455
- )
441
+ self._set_env_map("_ZRB_EXECUTION_ID", self.get_execution_id())
442
+ self.log_debug("Env map:\n" + map_to_str(self.get_env_map(), item_prefix=" "))
456
443
 
457
444
  def __repr__(self) -> str:
458
445
  cls_name = self.__class__.__name__
459
446
  full_cli_name = double_quote(self._get_full_cli_name())
460
- return f'<{cls_name} {full_cli_name}>'
447
+ return f"<{cls_name} {full_cli_name}>"