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
@@ -344,10 +344,11 @@ services:
344
344
  profiles:
345
345
  - monolith
346
346
  healthcheck:
347
- test: ["CMD-SHELL", "curl --fail http://localhost:${APP_PORT:-8080}/readiness || exit 1"]
348
- interval: 5s
347
+ test: curl --fail http://localhost:${APP_GATEWAY_PORT:-8080}/readiness || killall uvicorn
348
+ interval: 20s
349
349
  timeout: 3s
350
350
  retries: 10
351
+ start_period: 20s
351
352
  networks:
352
353
  - zrb
353
354
 
@@ -381,10 +382,11 @@ services:
381
382
  profiles:
382
383
  - microservices
383
384
  healthcheck:
384
- test: ["CMD-SHELL", "curl --fail http://localhost:${APP_GATEWAY_PORT:-8080}/readiness || exit 1"]
385
- interval: 5s
385
+ test: curl --fail http://localhost:${APP_GATEWAY_PORT:-8080}/readiness || killall uvicorn
386
+ interval: 20s
386
387
  timeout: 3s
387
388
  retries: 10
389
+ start_period: 20s
388
390
  networks:
389
391
  - zrb
390
392
 
@@ -414,12 +416,11 @@ services:
414
416
  profiles:
415
417
  - microservices
416
418
  healthcheck:
417
- test:
418
- - CMD-SHELL
419
- - curl --fail http://localhost:${APP_AUTH_MODULE_PORT:-8081}/readiness || exit 1
420
- interval: 5s
419
+ test: curl --fail http://localhost:${APP_AUTH_MODULE_PORT:-8081}/readiness || killall uvicorn
420
+ interval: 20s
421
421
  timeout: 3s
422
422
  retries: 10
423
+ start_period: 20s
423
424
  networks:
424
425
  - zrb
425
426
 
@@ -449,11 +450,10 @@ services:
449
450
  profiles:
450
451
  - microservices
451
452
  healthcheck:
452
- test:
453
- - CMD-SHELL
454
- - curl --fail http://localhost:${APP_LOG_MODULE_PORT:-8082}/readiness || exit 1
455
- interval: 5s
453
+ test: curl --fail http://localhost:${APP_LOG_MODULE_PORT:-8082}/readiness || killall uvicorn
454
+ interval: 20s
456
455
  timeout: 3s
457
456
  retries: 10
457
+ start_period: 20s
458
458
  networks:
459
459
  - zrb
@@ -1,11 +1,12 @@
1
- from locust import HttpUser, task, between
2
1
  import os
3
2
 
3
+ from locust import HttpUser, between, task
4
+
4
5
  access_token_cookie_key = os.getenv(
5
- 'PUBLIC_AUTH_ACCESS_TOKEN_COOKIE_KEY', 'access_token'
6
+ "PUBLIC_AUTH_ACCESS_TOKEN_COOKIE_KEY", "access_token"
6
7
  )
7
- admin_username = os.getenv('APP_AUTH_ADMIN_USERNAME', 'root')
8
- admin_password = os.getenv('APP_AUTH_ADMIN_PASSWORD', 'toor')
8
+ admin_username = os.getenv("APP_AUTH_ADMIN_USERNAME", "root")
9
+ admin_password = os.getenv("APP_AUTH_ADMIN_PASSWORD", "toor")
9
10
 
10
11
 
11
12
  class QuickstartUser(HttpUser):
@@ -13,20 +14,17 @@ class QuickstartUser(HttpUser):
13
14
 
14
15
  @task(2)
15
16
  def homepage(self):
16
- self.client.get('/')
17
+ self.client.get("/")
17
18
 
18
19
  @task
19
20
  def permissions(self):
20
- self.client.get('/api/v1/auth/permissions')
21
+ self.client.get("/api/v1/auth/permissions")
21
22
 
22
23
  def on_start(self):
23
24
  login_response = self.client.post(
24
- '/api/v1/auth/login',
25
- json={
26
- 'identity': admin_username,
27
- 'password': admin_password
28
- }
25
+ "/api/v1/auth/login",
26
+ json={"identity": admin_username, "password": admin_password},
29
27
  )
30
28
  login_response_json = login_response.json()
31
- access_token = login_response_json.get('access_token')
29
+ access_token = login_response_json.get("access_token")
32
30
  self.client.cookies.set(access_token_cookie_key, access_token)
@@ -10,6 +10,7 @@ ENV APP_HOST 0.0.0.0
10
10
  ENV APP_PORT 8080
11
11
  WORKDIR /home
12
12
  COPY requirements.txt .
13
+ RUN apt update && apt install curl psmisc -y
13
14
  RUN pip install -r requirements.txt
14
15
  COPY . .
15
16
  COPY --from=frontend-builder /frontend/build /home/frontend/build
@@ -1,28 +1,35 @@
1
+ from component.app_lifespan import app_lifespan, app_state
2
+ from component.frontend_index import frontend_index_response
3
+ from config import (
4
+ app_cors_allow_credentials,
5
+ app_cors_allow_headers,
6
+ app_cors_allow_methods,
7
+ app_cors_allow_origin_regex,
8
+ app_cors_allow_origins,
9
+ app_cors_expose_headers,
10
+ app_cors_max_age,
11
+ app_enable_frontend,
12
+ public_auth_access_token_cookie_key,
13
+ public_auth_refresh_token_cookie_key,
14
+ public_brand,
15
+ public_title,
16
+ zrb_app_name,
17
+ )
1
18
  from fastapi import FastAPI, status
2
19
  from fastapi.middleware.cors import CORSMiddleware
3
20
  from fastapi.responses import JSONResponse
4
- from config import (
5
- zrb_app_name, app_enable_frontend, app_cors_allow_credentials,
6
- app_cors_allow_headers, app_cors_allow_methods,
7
- app_cors_allow_origin_regex, app_cors_allow_origins,
8
- app_cors_expose_headers, app_cors_max_age, public_brand,
9
- public_title, public_auth_access_token_cookie_key,
10
- public_auth_refresh_token_cookie_key
11
- )
12
21
  from schema.frontend_config import FrontendConfig
13
- from component.app_lifespan import app_state
14
- from component.app_lifespan import app_lifespan
15
- from component.frontend_index import frontend_index_response
16
22
 
17
23
  app = FastAPI(title=zrb_app_name, lifespan=app_lifespan)
18
24
 
19
25
  if app_enable_frontend:
26
+
20
27
  @app.middleware("http")
21
28
  async def catch_all(request, call_next):
22
29
  response = await call_next(request)
23
30
  if response.status_code != 404:
24
31
  return response
25
- api_error = str(response.headers.get('api-error', '')).lower() == 'yes'
32
+ api_error = str(response.headers.get("api-error", "")).lower() == "yes"
26
33
  if api_error:
27
34
  return response
28
35
  return frontend_index_response
@@ -40,55 +47,53 @@ app.add_middleware(
40
47
  )
41
48
 
42
49
 
43
- @app.head('/liveness')
44
- @app.get('/liveness')
50
+ @app.head("/liveness")
51
+ @app.get("/liveness")
45
52
  def get_application_liveness_status():
46
- '''
53
+ """
47
54
  Get application liveness status.
48
55
  Will return HTTP response status 200 if application is alive,
49
56
  or return 503 otherwise.
50
57
  Orchestrator like Kubernetes will restart
51
58
  any application with non-healthy liveness status.
52
- '''
59
+ """
53
60
  if app_state.get_liveness():
54
61
  return JSONResponse(
55
- content={'app': zrb_app_name, 'alive': True},
56
- status_code=status.HTTP_200_OK
62
+ content={"app": zrb_app_name, "alive": True}, status_code=status.HTTP_200_OK
57
63
  )
58
64
  return JSONResponse(
59
- content={'message': 'Service is not alive'},
65
+ content={"message": "Service is not alive"},
60
66
  status_code=status.HTTP_503_SERVICE_UNAVAILABLE,
61
- headers={'api-error': 'yes'}
67
+ headers={"api-error": "yes"},
62
68
  )
63
69
 
64
70
 
65
- @app.head('/readiness')
66
- @app.get('/readiness')
71
+ @app.head("/readiness")
72
+ @app.get("/readiness")
67
73
  def get_application_readiness_status():
68
- '''
74
+ """
69
75
  Get application readiness status.
70
76
  Will return HTTP response status 200 if application is ready,
71
77
  or return 503 otherwise.
72
78
  Orchestrator like Kubernetes will only send user request
73
79
  to any application with healthy readiness status.
74
- '''
80
+ """
75
81
  if app_state.get_readiness():
76
82
  return JSONResponse(
77
- content={'app': zrb_app_name, 'ready': True},
78
- status_code=status.HTTP_200_OK
83
+ content={"app": zrb_app_name, "ready": True}, status_code=status.HTTP_200_OK
79
84
  )
80
85
  return JSONResponse(
81
- content={'message': 'Service is not ready'},
86
+ content={"message": "Service is not ready"},
82
87
  status_code=status.HTTP_503_SERVICE_UNAVAILABLE,
83
- headers={'api-error': 'yes'}
88
+ headers={"api-error": "yes"},
84
89
  )
85
90
 
86
91
 
87
- @app.get('/api/v1/frontend/configs', response_model=FrontendConfig)
92
+ @app.get("/api/v1/frontend/configs", response_model=FrontendConfig)
88
93
  def get_configs() -> FrontendConfig:
89
94
  return FrontendConfig(
90
95
  brand=public_brand,
91
96
  title=public_title,
92
97
  access_token_cookie_key=public_auth_access_token_cookie_key,
93
- refresh_token_cookie_key=public_auth_refresh_token_cookie_key
98
+ refresh_token_cookie_key=public_auth_refresh_token_cookie_key,
94
99
  )
@@ -1,23 +1,27 @@
1
- from fastapi import FastAPI
2
- from fastapi.staticfiles import StaticFiles
3
- from config import (
4
- zrb_app_name, app_enable_event_handler, app_enable_rpc_server,
5
- app_enable_frontend, app_db_auto_migrate
6
- )
7
- from config import app_src_dir
8
- from migrate import migrate
1
+ import os
2
+ from contextlib import asynccontextmanager
3
+
9
4
  from component.app_state import app_state, set_not_ready_on_error
5
+ from component.log import logger
10
6
  from component.messagebus import consumer
11
7
  from component.rpc import rpc_server
12
- from component.log import logger
8
+ from config import (
9
+ app_db_auto_migrate,
10
+ app_enable_event_handler,
11
+ app_enable_frontend,
12
+ app_enable_rpc_server,
13
+ app_src_dir,
14
+ zrb_app_name,
15
+ )
16
+ from fastapi import FastAPI
17
+ from fastapi.staticfiles import StaticFiles
13
18
  from helper.async_task import create_task
14
- from contextlib import asynccontextmanager
15
- import os
19
+ from migrate import migrate
16
20
 
17
21
 
18
22
  @asynccontextmanager
19
23
  async def app_lifespan(app: FastAPI):
20
- logger.info(f'{zrb_app_name} started')
24
+ logger.info(f"{zrb_app_name} started")
21
25
  if app_db_auto_migrate:
22
26
  await migrate()
23
27
  app_state.set_liveness(True)
@@ -26,15 +30,15 @@ async def app_lifespan(app: FastAPI):
26
30
  if app_enable_rpc_server:
27
31
  create_task(rpc_server.start(), on_error=set_not_ready_on_error)
28
32
  if app_enable_frontend:
29
- build_path = os.path.join(app_src_dir, 'frontend', 'build')
33
+ build_path = os.path.join(app_src_dir, "frontend", "build")
30
34
  app.mount(
31
- path='',
35
+ path="",
32
36
  app=StaticFiles(directory=build_path, html=True),
33
- name='frontend-static-resources'
37
+ name="frontend-static-resources",
34
38
  )
35
39
  app_state.set_readiness(True)
36
- logger.info(f'{zrb_app_name} started')
40
+ logger.info(f"{zrb_app_name} started")
37
41
  yield
38
42
  if app_enable_event_handler:
39
43
  await consumer.stop()
40
- logger.info(f'{zrb_app_name} closed')
44
+ logger.info(f"{zrb_app_name} closed")
@@ -1,9 +1,10 @@
1
+ import asyncio
2
+
1
3
  from component.log import logger
2
4
  from config import app_max_not_ready
3
- import asyncio
4
5
 
5
6
 
6
- class AppState():
7
+ class AppState:
7
8
  __instance = None
8
9
 
9
10
  def __new__(cls):
@@ -1,32 +1,30 @@
1
- from sqlalchemy import create_engine, Engine
2
- from sqlalchemy import event
3
- from config import app_db_connection, app_db_engine_show_log
4
- from component.log import logger
5
1
  import time
6
2
 
3
+ from component.log import logger
4
+ from config import app_db_connection, app_db_engine_show_log
5
+ from sqlalchemy import Engine, create_engine, event
6
+
7
7
 
8
8
  @event.listens_for(Engine, "before_cursor_execute")
9
- def before_cursor_execute(
10
- conn, cursor, statement, parameters, context, executemany
11
- ):
9
+ def before_cursor_execute(conn, cursor, statement, parameters, context, executemany):
12
10
  context._query_start_time = time.time()
13
- one_line_statement = ' '.join(statement.split('\n'))
14
- logger.info(
15
- f'💽 [start query] SQL:`{one_line_statement}`, parameters {parameters}'
16
- )
11
+ one_line_statement = " ".join(statement.split("\n"))
12
+ logger.info(f"💽 [start query] SQL:`{one_line_statement}`, parameters {parameters}")
17
13
 
18
14
 
19
15
  @event.listens_for(Engine, "after_cursor_execute")
20
- def after_cursor_execute(
21
- conn, cursor, statement, parameters, context, executemany
22
- ):
16
+ def after_cursor_execute(conn, cursor, statement, parameters, context, executemany):
23
17
  total = time.time() - context._query_start_time
24
- one_line_statement = ' '.join(statement.split('\n'))
25
- logger.info(' '.join([
26
- f'💽 [query completed] Elapsed time: {total} ms,',
27
- f'SQL: `{one_line_statement}`,',
28
- f'parameters {parameters}'
29
- ]))
18
+ one_line_statement = " ".join(statement.split("\n"))
19
+ logger.info(
20
+ " ".join(
21
+ [
22
+ f"💽 [query completed] Elapsed time: {total} ms,",
23
+ f"SQL: `{one_line_statement}`,",
24
+ f"parameters {parameters}",
25
+ ]
26
+ )
27
+ )
30
28
 
31
29
 
32
30
  engine: Engine = create_engine(app_db_connection, echo=app_db_engine_show_log)
@@ -1,11 +1,10 @@
1
- from fastapi.responses import HTMLResponse
2
- from config import app_src_dir
3
1
  import os
4
2
 
5
- index_html_path = os.path.join(app_src_dir, 'frontend', 'build', 'index.html')
3
+ from config import app_src_dir
4
+ from fastapi.responses import HTMLResponse
5
+
6
+ index_html_path = os.path.join(app_src_dir, "frontend", "build", "index.html")
6
7
  with open(index_html_path, "r") as f:
7
8
  index_html_content = f.read()
8
9
 
9
- frontend_index_response = HTMLResponse(
10
- content=index_html_content, status_code=200
11
- )
10
+ frontend_index_response = HTMLResponse(content=index_html_content, status_code=200)
@@ -1,19 +1,15 @@
1
- from config import (
2
- app_logging_level, app_enable_otel, app_otel_exporter_otlp_endpoint
3
- )
1
+ import logging
2
+
3
+ from config import app_enable_otel, app_logging_level, app_otel_exporter_otlp_endpoint
4
4
  from opentelemetry._logs import set_logger_provider
5
- from opentelemetry.exporter.otlp.proto.grpc._log_exporter import (
6
- OTLPLogExporter
7
- )
5
+ from opentelemetry.exporter.otlp.proto.grpc._log_exporter import OTLPLogExporter
8
6
  from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
9
7
  from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
10
8
 
11
- import logging
12
-
13
9
  ##############################################################################
14
10
  # Create logger
15
11
  ##############################################################################
16
- logger = logging.getLogger('src')
12
+ logger = logging.getLogger("src")
17
13
  logger.setLevel(app_logging_level)
18
14
 
19
15
  ##############################################################################
@@ -23,9 +19,7 @@ logger.setLevel(app_logging_level)
23
19
  stream_handler = logging.StreamHandler()
24
20
  stream_handler.setLevel(app_logging_level)
25
21
  # create formatter
26
- formatter = logging.Formatter(
27
- '%(levelname)s:\t%(message)s'
28
- )
22
+ formatter = logging.Formatter("%(levelname)s:\t%(message)s")
29
23
  # set stream handler's formatter
30
24
  stream_handler.setFormatter(formatter)
31
25
  # add ch to logger
@@ -40,9 +34,7 @@ if app_enable_otel:
40
34
  otlp_logger_provider = LoggerProvider()
41
35
  # set the providers
42
36
  set_logger_provider(otlp_logger_provider)
43
- otlp_log_exporter = OTLPLogExporter(
44
- endpoint=app_otel_exporter_otlp_endpoint
45
- )
37
+ otlp_log_exporter = OTLPLogExporter(endpoint=app_otel_exporter_otlp_endpoint)
46
38
  # add the batch processors to the trace provider
47
39
  otlp_logger_provider.add_log_record_processor(
48
40
  BatchLogRecordProcessor(otlp_log_exporter)
@@ -1,27 +1,37 @@
1
+ from component.log import logger
1
2
  from config import (
2
- zrb_app_name, app_broker_type, app_rmq_connection_string,
3
- app_kafka_bootstrap_servers, app_kafka_security_protocol,
4
- app_kafka_sasl_mechanism, app_kafka_sasl_user, app_kafka_sasl_pass
3
+ app_broker_type,
4
+ app_kafka_bootstrap_servers,
5
+ app_kafka_sasl_mechanism,
6
+ app_kafka_sasl_pass,
7
+ app_kafka_sasl_user,
8
+ app_kafka_security_protocol,
9
+ app_rmq_connection_string,
10
+ zrb_app_name,
5
11
  )
6
12
  from core.messagebus import (
7
- Admin, Consumer, MessageSerializer, Publisher,
8
- MockAdmin, MockConsumer, MockPublisher,
9
- KafkaAdmin, KafkaConsumer, KafkaPublisher,
10
- RMQAdmin, RMQConsumer, RMQPublisher
13
+ Admin,
14
+ Consumer,
15
+ KafkaAdmin,
16
+ KafkaConsumer,
17
+ KafkaPublisher,
18
+ MessageSerializer,
19
+ MockAdmin,
20
+ MockConsumer,
21
+ MockPublisher,
22
+ Publisher,
23
+ RMQAdmin,
24
+ RMQConsumer,
25
+ RMQPublisher,
11
26
  )
12
- from component.log import logger
13
27
 
14
28
 
15
- def init_admin(
16
- default_admin: Admin
17
- ) -> Admin:
18
- if app_broker_type == 'rabbitmq':
29
+ def init_admin(default_admin: Admin) -> Admin:
30
+ if app_broker_type == "rabbitmq":
19
31
  return RMQAdmin(
20
- logger=logger,
21
- connection_string=app_rmq_connection_string,
22
- configs={}
32
+ logger=logger, connection_string=app_rmq_connection_string, configs={}
23
33
  )
24
- if app_broker_type == 'kafka':
34
+ if app_broker_type == "kafka":
25
35
  return KafkaAdmin(
26
36
  logger=logger,
27
37
  bootstrap_servers=app_kafka_bootstrap_servers,
@@ -29,24 +39,22 @@ def init_admin(
29
39
  sasl_mechanism=app_kafka_sasl_mechanism,
30
40
  sasl_plain_username=app_kafka_sasl_user,
31
41
  sasl_plain_password=app_kafka_sasl_pass,
32
- configs={}
42
+ configs={},
33
43
  )
34
44
  return default_admin
35
45
 
36
46
 
37
47
  def init_publisher(
38
- serializer: MessageSerializer,
39
- admin: Admin,
40
- default_publisher: Publisher
48
+ serializer: MessageSerializer, admin: Admin, default_publisher: Publisher
41
49
  ) -> Publisher:
42
- if app_broker_type == 'rabbitmq':
50
+ if app_broker_type == "rabbitmq":
43
51
  return RMQPublisher(
44
52
  logger=logger,
45
53
  connection_string=app_rmq_connection_string,
46
54
  serializer=serializer,
47
- rmq_admin=admin
55
+ rmq_admin=admin,
48
56
  )
49
- if app_broker_type == 'kafka':
57
+ if app_broker_type == "kafka":
50
58
  return KafkaPublisher(
51
59
  logger=logger,
52
60
  bootstrap_servers=app_kafka_bootstrap_servers,
@@ -55,24 +63,22 @@ def init_publisher(
55
63
  sasl_plain_username=app_kafka_sasl_user,
56
64
  sasl_plain_password=app_kafka_sasl_pass,
57
65
  serializer=serializer,
58
- kafka_admin=admin
66
+ kafka_admin=admin,
59
67
  )
60
68
  return default_publisher
61
69
 
62
70
 
63
71
  def init_consumer(
64
- serializer: MessageSerializer,
65
- admin: Admin,
66
- default_consumer: Consumer
72
+ serializer: MessageSerializer, admin: Admin, default_consumer: Consumer
67
73
  ) -> Consumer:
68
- if app_broker_type == 'rabbitmq':
74
+ if app_broker_type == "rabbitmq":
69
75
  return RMQConsumer(
70
76
  logger=logger,
71
77
  connection_string=app_rmq_connection_string,
72
78
  serializer=serializer,
73
- rmq_admin=admin
79
+ rmq_admin=admin,
74
80
  )
75
- if app_broker_type == 'kafka':
81
+ if app_broker_type == "kafka":
76
82
  return KafkaConsumer(
77
83
  logger=logger,
78
84
  bootstrap_servers=app_kafka_bootstrap_servers,
@@ -82,7 +88,7 @@ def init_consumer(
82
88
  sasl_plain_password=app_kafka_sasl_pass,
83
89
  group_id=zrb_app_name,
84
90
  serializer=serializer,
85
- kafka_admin=admin
91
+ kafka_admin=admin,
86
92
  )
87
93
  return default_consumer
88
94
 
@@ -103,7 +109,5 @@ consumer = init_consumer(
103
109
  serializer=message_serializer, admin=admin, default_consumer=mock_consumer
104
110
  )
105
111
  publisher = init_publisher(
106
- serializer=message_serializer,
107
- admin=admin,
108
- default_publisher=mock_publisher
112
+ serializer=message_serializer, admin=admin, default_publisher=mock_publisher
109
113
  )
@@ -1,48 +1,49 @@
1
- from core.rpc import Caller, Server, MessagebusCaller, MessagebusServer
2
- from core.messagebus import RMQConsumer, KafkaConsumer
1
+ from component.log import logger
3
2
  from component.messagebus import (
4
- admin, consumer, publisher, message_serializer, mock_consumer
3
+ admin,
4
+ consumer,
5
+ message_serializer,
6
+ mock_consumer,
7
+ publisher,
5
8
  )
6
- from component.log import logger
7
9
  from config import (
8
- zrb_app_name, app_broker_type, app_rmq_connection_string,
9
- app_kafka_bootstrap_servers
10
+ app_broker_type,
11
+ app_kafka_bootstrap_servers,
12
+ app_rmq_connection_string,
13
+ zrb_app_name,
10
14
  )
15
+ from core.messagebus import KafkaConsumer, RMQConsumer
16
+ from core.rpc import Caller, MessagebusCaller, MessagebusServer, Server
11
17
  from ulid import ULID
12
18
 
13
19
 
14
20
  def create_consumer():
15
- if app_broker_type == 'rabbitmq':
21
+ if app_broker_type == "rabbitmq":
16
22
  return RMQConsumer(
17
23
  logger=logger,
18
24
  connection_string=app_rmq_connection_string,
19
25
  serializer=message_serializer,
20
26
  rmq_admin=admin,
21
- identifier='rmq-rpc-reply-consumer'
27
+ identifier="rmq-rpc-reply-consumer",
22
28
  )
23
- if app_broker_type == 'kafka':
29
+ if app_broker_type == "kafka":
24
30
  random_uuid = str(ULID())
25
- group_id = f'{zrb_app_name}-reply-{random_uuid}'
31
+ group_id = f"{zrb_app_name}-reply-{random_uuid}"
26
32
  return KafkaConsumer(
27
33
  logger=logger,
28
34
  bootstrap_servers=app_kafka_bootstrap_servers,
29
35
  group_id=group_id,
30
36
  serializer=message_serializer,
31
37
  kafka_admin=admin,
32
- identifier='kafka-rpc-reply-consumer'
38
+ identifier="kafka-rpc-reply-consumer",
33
39
  )
34
40
  return mock_consumer
35
41
 
36
42
 
37
43
  rpc_caller: Caller = MessagebusCaller(
38
- logger=logger,
39
- admin=admin,
40
- publisher=publisher,
41
- consumer_factory=create_consumer
44
+ logger=logger, admin=admin, publisher=publisher, consumer_factory=create_consumer
42
45
  )
43
46
 
44
47
  rpc_server: Server = MessagebusServer(
45
- logger=logger,
46
- consumer=consumer,
47
- publisher=publisher
48
+ logger=logger, consumer=consumer, publisher=publisher
48
49
  )