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,18 +1,21 @@
1
- from zrb.helper.typecheck import typechecked
2
- from zrb.helper.typing import Any, List, Mapping
1
+ import asyncio
2
+ import os
3
+
4
+ import jsons
3
5
  from dotenv import dotenv_values
4
- from zrb.task.task import Task
5
- from zrb.helper.codemod.add_import_module import add_import_module
6
+
6
7
  from zrb.helper.codemod.add_function_call import add_function_call
8
+ from zrb.helper.codemod.add_import_module import add_import_module
7
9
  from zrb.helper.codemod.append_code_to_function import append_code_to_function
8
10
  from zrb.helper.docker_compose.file import add_services
9
11
  from zrb.helper.file.text import (
10
- read_text_file_async, write_text_file_async, append_text_file_async
12
+ append_text_file_async,
13
+ read_text_file_async,
14
+ write_text_file_async,
11
15
  )
12
-
13
- import asyncio
14
- import os
15
- import jsons
16
+ from zrb.helper.typecheck import typechecked
17
+ from zrb.helper.typing import Any, List, Mapping
18
+ from zrb.task.task import Task
16
19
 
17
20
 
18
21
  @typechecked
@@ -23,20 +26,29 @@ async def create_microservice_config(
23
26
  snake_app_name: str,
24
27
  kebab_module_name: str,
25
28
  snake_module_name: str,
26
- upper_snake_module_name: str
29
+ upper_snake_module_name: str,
27
30
  ):
28
31
  modules = await _create_automation_json_config(
29
32
  task, project_dir, snake_app_name, snake_module_name
30
33
  )
31
34
  return await asyncio.gather(
32
- asyncio.create_task(_add_docker_compose_service(
33
- task, modules, project_dir, kebab_app_name,
34
- snake_app_name, kebab_module_name, snake_module_name,
35
- upper_snake_module_name
36
- )),
37
- asyncio.create_task(_append_compose_env(
38
- task, modules, project_dir, kebab_app_name, upper_snake_module_name
39
- ))
35
+ asyncio.create_task(
36
+ _add_docker_compose_service(
37
+ task,
38
+ modules,
39
+ project_dir,
40
+ kebab_app_name,
41
+ snake_app_name,
42
+ kebab_module_name,
43
+ snake_module_name,
44
+ upper_snake_module_name,
45
+ )
46
+ ),
47
+ asyncio.create_task(
48
+ _append_compose_env(
49
+ task, modules, project_dir, kebab_app_name, upper_snake_module_name
50
+ )
51
+ ),
40
52
  )
41
53
 
42
54
 
@@ -49,22 +61,31 @@ async def _add_docker_compose_service(
49
61
  snake_app_name: str,
50
62
  kebab_module_name: str,
51
63
  snake_module_name: str,
52
- upper_snake_module_name: str
64
+ upper_snake_module_name: str,
53
65
  ):
54
66
  module_app_port = 8080 + len(modules)
55
67
  module_app_port_str = str(module_app_port)
56
68
  docker_compose_file_path = os.path.join(
57
- project_dir, 'src', kebab_app_name, 'docker-compose.yml'
69
+ project_dir, "src", kebab_app_name, "docker-compose.yml"
58
70
  )
59
- app_container_port_env_name = f'APP_{upper_snake_module_name}_MODULE_PORT'
60
- app_container_port_env = '${' + app_container_port_env_name + ':-' + module_app_port_str + '}' # noqa
61
- app_host_port_env_name = f'APP_{upper_snake_module_name}_HOST_MODULE_PORT'
62
- app_host_port_env = '${' + app_host_port_env_name + ':-' + module_app_port_str + '}' # noqa
71
+ app_container_port_env_name = f"APP_{upper_snake_module_name}_MODULE_PORT"
72
+ app_container_port_env = (
73
+ "${" + app_container_port_env_name + ":-" + module_app_port_str + "}"
74
+ ) # noqa
75
+ app_host_port_env_name = f"APP_{upper_snake_module_name}_HOST_MODULE_PORT"
76
+ app_host_port_env = (
77
+ "${" + app_host_port_env_name + ":-" + module_app_port_str + "}"
78
+ ) # noqa
63
79
  service_definition = _get_new_docker_compose_service_definition(
64
- kebab_app_name, snake_app_name, kebab_module_name, snake_module_name,
65
- upper_snake_module_name, app_host_port_env, app_container_port_env
80
+ kebab_app_name,
81
+ snake_app_name,
82
+ kebab_module_name,
83
+ snake_module_name,
84
+ upper_snake_module_name,
85
+ app_host_port_env,
86
+ app_container_port_env,
66
87
  )
67
- task.print_out(f'Add service at: {docker_compose_file_path}')
88
+ task.print_out(f"Add service at: {docker_compose_file_path}")
68
89
  add_services(
69
90
  file_name=docker_compose_file_path,
70
91
  new_services=service_definition,
@@ -79,47 +100,39 @@ def _get_new_docker_compose_service_definition(
79
100
  snake_module_name: str,
80
101
  upper_snake_module_name: str,
81
102
  app_host_port_env: str,
82
- app_container_port_env: str
103
+ app_container_port_env: str,
83
104
  ) -> Mapping[str, Any]:
84
105
  return {
85
- f'{kebab_app_name}-{kebab_module_name}-service': {
86
- 'build': {
87
- 'dockerfile': 'Dockerfile',
88
- 'context': './src'
89
- },
90
- 'image': '${IMAGE:-' + kebab_app_name + '}',
91
- 'container_name': '${CONTAINER_PREFIX:-my}-' + f'{kebab_app_name}-{kebab_module_name}-service', # noqa
92
- 'hostname': f'{kebab_app_name}-{kebab_module_name}-service',
93
- 'env_file': [
94
- 'src/template.env',
95
- 'all-module-disabled.env'
96
- ],
97
- 'environment': {
98
- 'APP_NAME': '${APP_NAME:-' + kebab_app_name + '}-' + f'{kebab_module_name}-service', # noqa
99
- 'APP_PORT': app_container_port_env,
100
- 'APP_ENABLE_EVENT_HANDLER': 'true',
101
- 'APP_ENABLE_RPC_SERVER': 'true',
102
- 'APP_ENABLE_API': 'false',
103
- 'APP_ENABLE_FRONTEND': 'false',
104
- f'APP_ENABLE_{upper_snake_module_name}_MODULE': 'true',
106
+ f"{kebab_app_name}-{kebab_module_name}-service": {
107
+ "build": {"dockerfile": "Dockerfile", "context": "./src"},
108
+ "image": "${IMAGE:-" + kebab_app_name + "}",
109
+ "container_name": "${CONTAINER_PREFIX:-my}-"
110
+ + f"{kebab_app_name}-{kebab_module_name}-service", # noqa
111
+ "hostname": f"{kebab_app_name}-{kebab_module_name}-service",
112
+ "env_file": ["src/template.env", "all-module-disabled.env"],
113
+ "environment": {
114
+ "APP_NAME": "${APP_NAME:-"
115
+ + kebab_app_name
116
+ + "}-"
117
+ + f"{kebab_module_name}-service", # noqa
118
+ "APP_PORT": app_container_port_env,
119
+ "APP_ENABLE_EVENT_HANDLER": "true",
120
+ "APP_ENABLE_RPC_SERVER": "true",
121
+ "APP_ENABLE_API": "false",
122
+ "APP_ENABLE_FRONTEND": "false",
123
+ f"APP_ENABLE_{upper_snake_module_name}_MODULE": "true",
105
124
  },
106
- 'ports': [
107
- f'{app_host_port_env}:{app_container_port_env}'
108
- ],
109
- 'restart': 'unless-stopped',
110
- 'profiles': [
111
- 'microservices'
112
- ],
113
- 'healthcheck': {
114
- 'test': [
115
- 'CMD-SHELL',
116
- 'curl --fail http://localhost:' + app_container_port_env + '/readiness || exit 1' # noqa
117
- ],
118
- 'interval': '5s',
119
- 'timeout': '3s',
120
- 'retries': 10
125
+ "ports": [f"{app_host_port_env}:{app_container_port_env}"],
126
+ "restart": "unless-stopped",
127
+ "profiles": ["microservices"],
128
+ "healthcheck": {
129
+ "test": f"curl --fail http://localhost:{app_container_port_env}/readiness || killall uvicorn", # noqa
130
+ "interval": "20s",
131
+ "timeout": "3s",
132
+ "retries": 10,
133
+ "start_period": "20s",
121
134
  },
122
- 'networks': ['zrb']
135
+ "networks": ["zrb"],
123
136
  }
124
137
  }
125
138
 
@@ -130,87 +143,79 @@ async def _append_compose_env(
130
143
  modules: List[str],
131
144
  project_dir: str,
132
145
  kebab_app_name: str,
133
- upper_snake_module_name: str
146
+ upper_snake_module_name: str,
134
147
  ):
135
148
  compose_template_env_path = os.path.join(
136
- project_dir, 'src', kebab_app_name, 'docker-compose.env'
149
+ project_dir, "src", kebab_app_name, "docker-compose.env"
137
150
  )
138
151
  compose_env_map = dotenv_values(compose_template_env_path)
139
- host_port = int(compose_env_map.get('APP_GATEWAY_HOST_PORT', '8080'))
152
+ host_port = int(compose_env_map.get("APP_GATEWAY_HOST_PORT", "8080"))
140
153
  module_app_port = host_port + len(modules)
141
- new_env_str = '\n'.join([
142
- f'APP_{upper_snake_module_name}_HOST_MODULE_PORT={module_app_port}',
143
- f'APP_{upper_snake_module_name}_MODULE_PORT={module_app_port}',
144
- ])
145
- task.print_out(f'Add new environment to: {compose_template_env_path}')
154
+ new_env_str = "\n".join(
155
+ [
156
+ f"APP_{upper_snake_module_name}_HOST_MODULE_PORT={module_app_port}",
157
+ f"APP_{upper_snake_module_name}_MODULE_PORT={module_app_port}",
158
+ ]
159
+ )
160
+ task.print_out(f"Add new environment to: {compose_template_env_path}")
146
161
  await append_text_file_async(compose_template_env_path, new_env_str)
147
162
 
148
163
 
149
164
  @typechecked
150
165
  async def append_src_template_env(
151
- task: Task,
152
- project_dir: str,
153
- kebab_app_name: str,
154
- upper_snake_module_name: str
166
+ task: Task, project_dir: str, kebab_app_name: str, upper_snake_module_name: str
155
167
  ):
156
168
  src_template_env_path = os.path.join(
157
- project_dir, 'src', kebab_app_name, 'src', 'template.env'
169
+ project_dir, "src", kebab_app_name, "src", "template.env"
170
+ )
171
+ new_env_str = "\n".join(
172
+ [
173
+ f"APP_ENABLE_{upper_snake_module_name}_MODULE=true",
174
+ ]
158
175
  )
159
- new_env_str = '\n'.join([
160
- f'APP_ENABLE_{upper_snake_module_name}_MODULE=true',
161
- ])
162
- task.print_out(f'Add new environment to: {src_template_env_path}')
176
+ task.print_out(f"Add new environment to: {src_template_env_path}")
163
177
  await append_text_file_async(src_template_env_path, new_env_str)
164
178
 
165
179
 
166
180
  @typechecked
167
181
  async def append_deployment_template_env(
168
- task: Task,
169
- project_dir: str,
170
- kebab_app_name: str,
171
- upper_snake_module_name: str
182
+ task: Task, project_dir: str, kebab_app_name: str, upper_snake_module_name: str
172
183
  ):
173
184
  deployment_template_env_path = os.path.join(
174
- project_dir, 'src', kebab_app_name, 'deployment', 'template.env'
185
+ project_dir, "src", kebab_app_name, "deployment", "template.env"
175
186
  )
176
- new_env_str = '\n'.join([
177
- f'REPLICA_{upper_snake_module_name}_SERVICE=1',
178
- ])
179
- task.print_out(f'Add new environment to: {deployment_template_env_path}')
187
+ new_env_str = "\n".join(
188
+ [
189
+ f"REPLICA_{upper_snake_module_name}_SERVICE=1",
190
+ ]
191
+ )
192
+ task.print_out(f"Add new environment to: {deployment_template_env_path}")
180
193
  await append_text_file_async(deployment_template_env_path, new_env_str)
181
194
 
182
195
 
183
196
  @typechecked
184
197
  async def append_all_enabled_env(
185
- task: Task,
186
- project_dir: str,
187
- kebab_app_name: str,
188
- upper_snake_module_name: str
198
+ task: Task, project_dir: str, kebab_app_name: str, upper_snake_module_name: str
189
199
  ):
190
200
  all_enabled_env_path = os.path.join(
191
- project_dir, 'src', kebab_app_name, 'all-module-enabled.env'
201
+ project_dir, "src", kebab_app_name, "all-module-enabled.env"
192
202
  )
193
- task.print_out(f'Add new environment to: {all_enabled_env_path}')
203
+ task.print_out(f"Add new environment to: {all_enabled_env_path}")
194
204
  await append_text_file_async(
195
- all_enabled_env_path,
196
- f'APP_ENABLE_{upper_snake_module_name}_MODULE=true'
205
+ all_enabled_env_path, f"APP_ENABLE_{upper_snake_module_name}_MODULE=true"
197
206
  )
198
207
 
199
208
 
200
209
  @typechecked
201
210
  async def append_all_disabled_env(
202
- task: Task,
203
- project_dir: str,
204
- kebab_app_name: str,
205
- upper_snake_module_name: str
211
+ task: Task, project_dir: str, kebab_app_name: str, upper_snake_module_name: str
206
212
  ):
207
213
  all_disabled_env_path = os.path.join(
208
- project_dir, 'src', kebab_app_name, 'all-module-disabled.env'
214
+ project_dir, "src", kebab_app_name, "all-module-disabled.env"
209
215
  )
210
- task.print_out(f'Add new environment to: {all_disabled_env_path}')
216
+ task.print_out(f"Add new environment to: {all_disabled_env_path}")
211
217
  await append_text_file_async(
212
- all_disabled_env_path,
213
- f'APP_ENABLE_{upper_snake_module_name}_MODULE=false'
218
+ all_disabled_env_path, f"APP_ENABLE_{upper_snake_module_name}_MODULE=false"
214
219
  )
215
220
 
216
221
 
@@ -220,20 +225,21 @@ async def create_app_config(
220
225
  project_dir: str,
221
226
  kebab_app_name: str,
222
227
  snake_module_name: str,
223
- upper_snake_module_name: str
228
+ upper_snake_module_name: str,
224
229
  ):
225
230
  config_file_path = os.path.join(
226
- project_dir, 'src', kebab_app_name, 'src', 'config.py'
231
+ project_dir, "src", kebab_app_name, "src", "config.py"
227
232
  )
228
- config_code = '\n'.join([
229
- f'app_enable_{snake_module_name}_module = str_to_boolean(os.environ.get(', # noqa
230
- f" 'APP_ENABLE_{upper_snake_module_name}_MODULE', 'true'"
231
- '))'
232
- ])
233
- task.print_out(f'Read config from: {config_file_path}')
233
+ config_code = "\n".join(
234
+ [
235
+ f"app_enable_{snake_module_name}_module = str_to_boolean(os.environ.get(", # noqa
236
+ f" 'APP_ENABLE_{upper_snake_module_name}_MODULE', 'true'" "))",
237
+ ]
238
+ )
239
+ task.print_out(f"Read config from: {config_file_path}")
234
240
  code = await read_text_file_async(config_file_path)
235
- code += '\n' + config_code
236
- task.print_out(f'Write config to: {config_file_path}')
241
+ code += "\n" + config_code
242
+ task.print_out(f"Write config to: {config_file_path}")
237
243
  await write_text_file_async(config_file_path, code)
238
244
 
239
245
 
@@ -245,82 +251,62 @@ async def _create_automation_json_config(
245
251
  snake_module_name: str,
246
252
  ):
247
253
  json_modules_file_path = os.path.join(
248
- project_dir, '_automate', snake_app_name, 'config', 'modules.json'
254
+ project_dir, "_automate", snake_app_name, "config", "modules.json"
249
255
  )
250
- task.print_out(f'Read json config from: {json_modules_file_path}')
256
+ task.print_out(f"Read json config from: {json_modules_file_path}")
251
257
  json_str = await read_text_file_async(json_modules_file_path)
252
258
  task.print_out(f'Add "{snake_module_name}" to json config')
253
259
  modules: List[str] = jsons.loads(json_str)
254
260
  modules.append(snake_module_name)
255
261
  json_str = jsons.dumps(modules)
256
- task.print_out(f'Write new json config to: {json_modules_file_path}')
262
+ task.print_out(f"Write new json config to: {json_modules_file_path}")
257
263
  await write_text_file_async(json_modules_file_path, json_str)
258
264
  return modules
259
265
 
260
266
 
261
267
  @typechecked
262
268
  async def register_migration(
263
- task: Task,
264
- project_dir: str,
265
- kebab_app_name: str,
266
- snake_module_name: str
269
+ task: Task, project_dir: str, kebab_app_name: str, snake_module_name: str
267
270
  ):
268
271
  app_migration_file_path = os.path.join(
269
- project_dir, 'src', kebab_app_name, 'src', 'migrate.py'
272
+ project_dir, "src", kebab_app_name, "src", "migrate.py"
270
273
  )
271
- import_module_path = '.'.join([
272
- 'module', snake_module_name, 'migrate'
273
- ])
274
- function_name = f'migrate_{snake_module_name}'
275
- task.print_out(f'Read code from: {app_migration_file_path}')
274
+ import_module_path = ".".join(["module", snake_module_name, "migrate"])
275
+ function_name = f"migrate_{snake_module_name}"
276
+ task.print_out(f"Read code from: {app_migration_file_path}")
276
277
  code = await read_text_file_async(app_migration_file_path)
277
278
  task.print_out(
278
279
  f'Add import "{function_name}" from "{import_module_path}" to the code'
279
280
  )
280
281
  code = add_import_module(
281
- code=code,
282
- module_path=import_module_path,
283
- resource=function_name
282
+ code=code, module_path=import_module_path, resource=function_name
284
283
  )
285
284
  task.print_out(f'Add "{function_name}" call to the code')
286
285
  code = append_code_to_function(
287
- code=code,
288
- function_name='migrate',
289
- new_code=f'await {function_name}()'
286
+ code=code, function_name="migrate", new_code=f"await {function_name}()"
290
287
  )
291
- task.print_out(f'Write modified code to: {app_migration_file_path}')
288
+ task.print_out(f"Write modified code to: {app_migration_file_path}")
292
289
  await write_text_file_async(app_migration_file_path, code)
293
290
 
294
291
 
295
292
  @typechecked
296
293
  async def register_module(
297
- task: Task,
298
- project_dir: str,
299
- kebab_app_name: str,
300
- snake_module_name: str
294
+ task: Task, project_dir: str, kebab_app_name: str, snake_module_name: str
301
295
  ):
302
296
  app_main_file_path = os.path.join(
303
- project_dir, 'src', kebab_app_name, 'src', 'main.py'
297
+ project_dir, "src", kebab_app_name, "src", "main.py"
304
298
  )
305
- import_module_path = '.'.join([
306
- 'module', snake_module_name, 'register_module'
307
- ])
308
- function_name = f'register_{snake_module_name}'
309
- task.print_out(f'Read code from: {app_main_file_path}')
299
+ import_module_path = ".".join(["module", snake_module_name, "register_module"])
300
+ function_name = f"register_{snake_module_name}"
301
+ task.print_out(f"Read code from: {app_main_file_path}")
310
302
  code = await read_text_file_async(app_main_file_path)
311
303
  task.print_out(
312
304
  f'Add import "{function_name}" from "{import_module_path}" to the code'
313
305
  )
314
306
  code = add_import_module(
315
- code=code,
316
- module_path=import_module_path,
317
- resource=function_name
307
+ code=code, module_path=import_module_path, resource=function_name
318
308
  )
319
309
  task.print_out(f'Add "{function_name}" call to the code')
320
- code = add_function_call(
321
- code=code,
322
- function_name=function_name,
323
- parameters=[]
324
- )
325
- task.print_out(f'Write modified code to: {app_main_file_path}')
310
+ code = add_function_call(code=code, function_name=function_name, parameters=[])
311
+ task.print_out(f"Write modified code to: {app_main_file_path}")
326
312
  await write_text_file_async(app_main_file_path, code)
@@ -1,7 +1,8 @@
1
- from fastapi import FastAPI
2
1
  from logging import Logger
2
+
3
3
  from core.messagebus import Publisher
4
4
  from core.rpc import Caller
5
+ from fastapi import FastAPI
5
6
  from module.auth.core import Authorizer
6
7
 
7
8
 
@@ -10,6 +11,6 @@ def register_api(
10
11
  app: FastAPI,
11
12
  authorizer: Authorizer,
12
13
  rpc_caller: Caller,
13
- publisher: Publisher
14
+ publisher: Publisher,
14
15
  ):
15
16
  logger.info('🥪 Register API for "snake_zrb_module_name"')
@@ -1,7 +1,7 @@
1
- from sqlalchemy import Column, Integer, Table, ForeignKey
2
1
  from module.snake_zrb_module_name.component.base import Base
2
+ from sqlalchemy import Column, ForeignKey, Integer, Table
3
3
 
4
- '''
4
+ """
5
5
  You should put any "many-to-many" table declarations in this file.
6
6
  For example:
7
7
  ```
@@ -15,7 +15,7 @@ user_permission = Table(
15
15
  ```
16
16
 
17
17
  Remove the following assertions:
18
- '''
18
+ """
19
19
  assert Column
20
20
  assert Integer
21
21
  assert Table
@@ -1,12 +1,10 @@
1
1
  from logging import Logger
2
- from core.messagebus import Publisher, Consumer
2
+
3
+ from core.messagebus import Consumer, Publisher
3
4
  from core.rpc import Caller
4
5
 
5
6
 
6
7
  def register_event(
7
- logger: Logger,
8
- consumer: Consumer,
9
- rpc_caller: Caller,
10
- publisher: Publisher
8
+ logger: Logger, consumer: Consumer, rpc_caller: Caller, publisher: Publisher
11
9
  ):
12
10
  logger.info('🥪 Register event handlers for "snake_zrb_module_name"')
@@ -1,8 +1,6 @@
1
- from config import (
2
- app_enable_snake_zrb_module_name_module
3
- )
4
- from component.log import logger
5
1
  from component.db_connection import engine
2
+ from component.log import logger
3
+ from config import app_enable_snake_zrb_module_name_module
6
4
  from helper.migration import migrate
7
5
  from module.snake_zrb_module_name.component import Base
8
6
 
@@ -1,11 +1,13 @@
1
- from config import (
2
- app_enable_rpc_server, app_enable_event_handler, app_enable_api,
3
- app_enable_snake_zrb_module_name_module
4
- )
5
- from component.log import logger
6
1
  from component.app import app
2
+ from component.log import logger
7
3
  from component.messagebus import consumer, publisher
8
4
  from component.rpc import rpc_caller, rpc_server
5
+ from config import (
6
+ app_enable_api,
7
+ app_enable_event_handler,
8
+ app_enable_rpc_server,
9
+ app_enable_snake_zrb_module_name_module,
10
+ )
9
11
  from module.auth.component import authorizer
10
12
  from module.snake_zrb_module_name.api import register_api
11
13
  from module.snake_zrb_module_name.event import register_event
@@ -22,19 +24,16 @@ def register_snake_zrb_module_name():
22
24
  app=app,
23
25
  authorizer=authorizer,
24
26
  rpc_caller=rpc_caller,
25
- publisher=publisher
27
+ publisher=publisher,
26
28
  )
27
29
  if app_enable_event_handler:
28
30
  register_event(
29
- logger=logger,
30
- consumer=consumer,
31
- rpc_caller=rpc_caller,
32
- publisher=publisher
31
+ logger=logger, consumer=consumer, rpc_caller=rpc_caller, publisher=publisher
33
32
  )
34
33
  if app_enable_rpc_server:
35
34
  register_rpc(
36
35
  logger=logger,
37
36
  rpc_server=rpc_server,
38
37
  rpc_caller=rpc_caller,
39
- publisher=publisher
38
+ publisher=publisher,
40
39
  )
@@ -1,13 +1,11 @@
1
- from typing import Any
2
1
  from logging import Logger
2
+ from typing import Any
3
+
3
4
  from core.messagebus import Publisher
4
5
  from core.rpc import Caller, Server
5
6
 
6
7
 
7
8
  def register_rpc(
8
- logger: Logger,
9
- rpc_server: Server,
10
- rpc_caller: Caller,
11
- publisher: Publisher
9
+ logger: Logger, rpc_server: Server, rpc_caller: Caller, publisher: Publisher
12
10
  ):
13
11
  logger.info('🥪 Register RPC handlers for "snake_zrb_module_name"')