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,13 +1,13 @@
1
+ import asyncio
2
+ import logging
1
3
  from typing import Any, Callable
4
+
2
5
  from core.messagebus.messagebus import Admin, Consumer, Publisher
3
6
  from core.rpc.rpc import Caller, Message, Result
4
- import logging
5
7
  from ulid import ULID
6
- import asyncio
7
8
 
8
9
 
9
10
  class MessagebusCaller(Caller):
10
-
11
11
  def __init__(
12
12
  self,
13
13
  logger: logging.Logger,
@@ -15,7 +15,7 @@ class MessagebusCaller(Caller):
15
15
  publisher: Publisher,
16
16
  consumer_factory: Callable[[], Consumer],
17
17
  timeout: float = 30,
18
- check_reply_interval: float = 0.1
18
+ check_reply_interval: float = 0.1,
19
19
  ):
20
20
  self.logger = logger
21
21
  self.admin = admin
@@ -26,7 +26,7 @@ class MessagebusCaller(Caller):
26
26
 
27
27
  async def call(self, rpc_name: str, *args: Any, **kwargs: Any):
28
28
  random_uuid = str(ULID())
29
- reply_event_name = f'reply_{rpc_name}_{random_uuid}'
29
+ reply_event_name = f"reply_{rpc_name}_{random_uuid}"
30
30
  await self.admin.create_events([reply_event_name])
31
31
  reply_consumer = self.consumer_factory()
32
32
  reply_received_event = asyncio.Event()
@@ -46,32 +46,30 @@ class MessagebusCaller(Caller):
46
46
  rpc_name,
47
47
  Message(
48
48
  reply_event=reply_event_name, args=args, kwargs=kwargs
49
- ).to_dict()
49
+ ).to_dict(),
50
50
  )
51
51
  await asyncio.gather(task)
52
- await asyncio.wait_for(
53
- reply_received_event.wait(), timeout=self.timeout
54
- )
52
+ await asyncio.wait_for(reply_received_event.wait(), timeout=self.timeout)
55
53
  except asyncio.TimeoutError:
56
54
  self.logger.error(
57
- '🤙 [messagebus-rpc-caller] ' +
58
- f'Timeout while waiting for reply event {reply_event_name}'
55
+ "🤙 [messagebus-rpc-caller] "
56
+ + f"Timeout while waiting for reply event {reply_event_name}"
59
57
  )
60
58
  raise Exception(
61
- f'Timeout while waiting for reply event: {reply_event_name}'
59
+ f"Timeout while waiting for reply event: {reply_event_name}"
62
60
  )
63
61
  finally:
64
62
  await self._clean_up(reply_consumer, reply_event_name)
65
63
  # raise call_error or return call_result
66
- if call_error != '':
64
+ if call_error != "":
67
65
  self.logger.error(
68
- '🤙 [messagebus-rpc-caller] RPC ' +
69
- f'"{rpc_name}" returning error: {call_error}'
66
+ "🤙 [messagebus-rpc-caller] RPC "
67
+ + f'"{rpc_name}" returning error: {call_error}'
70
68
  )
71
69
  raise Exception(call_error)
72
70
  self.logger.info(
73
- '🤙 [messagebus-rpc-caller] RPC ' +
74
- f'"{rpc_name}" returning result: {call_result}'
71
+ "🤙 [messagebus-rpc-caller] RPC "
72
+ + f'"{rpc_name}" returning result: {call_result}'
75
73
  )
76
74
  return call_result
77
75
 
@@ -79,8 +77,8 @@ class MessagebusCaller(Caller):
79
77
  try:
80
78
  await reply_consumer.stop()
81
79
  except (asyncio.CancelledError, GeneratorExit, Exception):
82
- self.logger.error('🤙 [messagebus-rpc-caller]', exc_info=True)
80
+ self.logger.error("🤙 [messagebus-rpc-caller]", exc_info=True)
83
81
  try:
84
82
  await self.admin.delete_events([reply_event_name])
85
83
  except (asyncio.CancelledError, GeneratorExit, Exception):
86
- self.logger.error('🤙 [messagebus-rpc-caller]', exc_info=True)
84
+ self.logger.error("🤙 [messagebus-rpc-caller]", exc_info=True)
@@ -1,18 +1,15 @@
1
+ import inspect
2
+ import logging
1
3
  from typing import Any, Mapping
4
+
2
5
  from core.messagebus.messagebus import Consumer, Publisher
3
- from core.rpc.rpc import Server, TRPCHandler, Message, Result
4
- import logging
5
- import inspect
6
+ from core.rpc.rpc import Message, Result, Server, TRPCHandler
6
7
  from pydantic import BaseModel
7
8
 
8
9
 
9
10
  class MessagebusServer(Server):
10
-
11
11
  def __init__(
12
- self,
13
- logger: logging.Logger,
14
- consumer: Consumer,
15
- publisher: Publisher
12
+ self, logger: logging.Logger, consumer: Consumer, publisher: Publisher
16
13
  ):
17
14
  self.logger = logger
18
15
  self.consumer = consumer
@@ -34,16 +31,16 @@ class MessagebusServer(Server):
34
31
  reply_event = message.reply_event
35
32
  # get reply
36
33
  self.logger.info(
37
- '🤙 [messagebus-rpc-server] ' +
38
- f'Invoke RPC: {rpc_name} ' +
39
- f', args: {args} ' +
40
- f', kwargs: {kwargs} ' +
41
- f', reply_event: {reply_event}'
34
+ "🤙 [messagebus-rpc-server] "
35
+ + f"Invoke RPC: {rpc_name} "
36
+ + f", args: {args} "
37
+ + f", kwargs: {kwargs} "
38
+ + f", reply_event: {reply_event}"
42
39
  )
43
40
  try:
44
41
  result = await self._run_handler(handler, *args, **kwargs)
45
42
  if isinstance(result, BaseModel):
46
- result = result.dict()
43
+ result = result.model_dump()
47
44
  # publish result
48
45
  await self.publisher.publish(
49
46
  reply_event, Result(result=result).to_dict()
@@ -52,13 +49,12 @@ class MessagebusServer(Server):
52
49
  self.logger.error(e, exc_info=True)
53
50
  # publish error
54
51
  await self.publisher.publish(
55
- reply_event, Result(error=f'{e}').to_dict()
52
+ reply_event, Result(error=f"{e}").to_dict()
56
53
  )
54
+
57
55
  return wrapper
58
56
 
59
- async def _run_handler(
60
- self, handler: TRPCHandler, *args: Any, **kwargs: Any
61
- ):
57
+ async def _run_handler(self, handler: TRPCHandler, *args: Any, **kwargs: Any):
62
58
  if inspect.iscoroutinefunction(handler):
63
59
  return await handler(*args, **kwargs)
64
60
  return handler(*args, **kwargs)
@@ -1,9 +1,9 @@
1
- from typing import Any, Callable, List, Mapping, TypeVar
2
1
  from abc import ABC, abstractmethod
2
+ from typing import Any, Callable, List, Mapping, TypeVar
3
3
 
4
4
  TRPCHandler = Callable[..., Any]
5
- TMessage = TypeVar('TMessage', bound='Message')
6
- TResult = TypeVar('TResult', bound='Result')
5
+ TMessage = TypeVar("TMessage", bound="Message")
6
+ TResult = TypeVar("TResult", bound="Result")
7
7
 
8
8
 
9
9
  class Caller(ABC):
@@ -26,51 +26,38 @@ class Server(ABC):
26
26
  pass
27
27
 
28
28
 
29
- class Message():
30
- def __init__(
31
- self,
32
- reply_event: str,
33
- args: List[Any],
34
- kwargs: Mapping[str, Any]
35
- ):
29
+ class Message:
30
+ def __init__(self, reply_event: str, args: List[Any], kwargs: Mapping[str, Any]):
36
31
  self.reply_event = reply_event
37
32
  self.args = args
38
33
  self.kwargs = kwargs
39
34
 
40
35
  def to_dict(self):
41
36
  return {
42
- 'args': self.args,
43
- 'kwargs': self.kwargs,
44
- 'reply_event': self.reply_event
37
+ "args": self.args,
38
+ "kwargs": self.kwargs,
39
+ "reply_event": self.reply_event,
45
40
  }
46
41
 
47
42
  @classmethod
48
43
  def from_dict(cls, dictionary: Mapping[str, Any]) -> TMessage:
49
44
  return cls(
50
- reply_event=dictionary.get('reply_event', ''),
51
- args=dictionary.get('args', []),
52
- kwargs=dictionary.get('kwargs', {})
45
+ reply_event=dictionary.get("reply_event", ""),
46
+ args=dictionary.get("args", []),
47
+ kwargs=dictionary.get("kwargs", {}),
53
48
  )
54
49
 
55
50
 
56
- class Result():
57
- def __init__(
58
- self,
59
- result: Any = None,
60
- error: str = ''
61
- ):
51
+ class Result:
52
+ def __init__(self, result: Any = None, error: str = ""):
62
53
  self.result = result
63
54
  self.error = error
64
55
 
65
56
  def to_dict(self):
66
- return {
67
- 'result': self.result,
68
- 'error': self.error
69
- }
57
+ return {"result": self.result, "error": self.error}
70
58
 
71
59
  @classmethod
72
60
  def from_dict(cls, dictionary: Mapping[str, Any]) -> TResult:
73
61
  return cls(
74
- result=dictionary.get('result', None),
75
- error=dictionary.get('error', '')
62
+ result=dictionary.get("result", None), error=dictionary.get("error", "")
76
63
  )
@@ -1,4 +1,4 @@
1
- from core.schema.base_schema import BaseDateTimeSchema, BaseCountSchema
1
+ from core.schema.base_schema import BaseCountSchema, BaseDateTimeSchema
2
2
 
3
3
  assert BaseDateTimeSchema
4
4
  assert BaseCountSchema
@@ -1,13 +1,14 @@
1
+ import datetime
1
2
  from typing import Optional
3
+
2
4
  from pydantic import BaseModel
3
- import datetime
4
5
 
5
6
 
6
7
  class BaseDateTimeSchema(BaseModel):
7
- created_at: Optional[datetime.datetime]
8
- created_by: Optional[str]
9
- updated_at: Optional[datetime.datetime]
10
- updated_by: Optional[str]
8
+ created_at: Optional[datetime.datetime] = None
9
+ created_by: Optional[str] = None
10
+ updated_at: Optional[datetime.datetime] = None
11
+ updated_by: Optional[str] = None
11
12
 
12
13
 
13
14
  class BaseCountSchema(BaseModel):
@@ -1,6 +1,4 @@
1
- from core.serializer.serializer import (
2
- Serializer, CustomSerializer, JsonSerializer
3
- )
1
+ from core.serializer.serializer import CustomSerializer, JsonSerializer, Serializer
4
2
 
5
3
  assert Serializer
6
4
  assert CustomSerializer
@@ -1,5 +1,6 @@
1
- from typing import Any, Callable
2
1
  from abc import ABC, abstractmethod
2
+ from typing import Any, Callable
3
+
3
4
  import jsons
4
5
 
5
6
 
@@ -14,9 +15,7 @@ class Serializer(ABC):
14
15
 
15
16
 
16
17
  class CustomSerializer(Serializer):
17
- def __init__(
18
- self, encoder: Callable[[Any], Any], decoder: Callable[[Any], Any]
19
- ):
18
+ def __init__(self, encoder: Callable[[Any], Any], decoder: Callable[[Any], Any]):
20
19
  self.encoder = encoder
21
20
  self.decoder = decoder
22
21
 
@@ -1,12 +1,9 @@
1
- from typing import Awaitable, Callable
2
1
  import asyncio
3
2
  import inspect
3
+ from typing import Awaitable, Callable
4
4
 
5
5
 
6
- def create_task(
7
- awaitable: Awaitable,
8
- on_error: Callable
9
- ) -> asyncio.Task:
6
+ def create_task(awaitable: Awaitable, on_error: Callable) -> asyncio.Task:
10
7
  async def critical_task(awaitable):
11
8
  try:
12
9
  return await awaitable
@@ -14,4 +11,5 @@ def create_task(
14
11
  if inspect.iscoroutinefunction(on_error):
15
12
  return await on_error(e)
16
13
  return on_error(e)
14
+
17
15
  return asyncio.create_task(critical_task(awaitable))
@@ -1,21 +1,21 @@
1
1
  import logging
2
2
 
3
3
  LOGGING_LEVEL_MAP = {
4
- 'critical': logging.CRITICAL,
5
- 'fatal': logging.FATAL,
6
- 'error': logging.ERROR,
7
- 'warning': logging.WARNING,
8
- 'warn': logging.WARN,
9
- 'info': logging.INFO,
10
- 'debug': logging.DEBUG,
11
- 'notset': logging.NOTSET,
4
+ "critical": logging.CRITICAL,
5
+ "fatal": logging.FATAL,
6
+ "error": logging.ERROR,
7
+ "warning": logging.WARNING,
8
+ "warn": logging.WARN,
9
+ "info": logging.INFO,
10
+ "debug": logging.DEBUG,
11
+ "notset": logging.NOTSET,
12
12
  }
13
13
 
14
14
 
15
15
  def str_to_boolean(value: str):
16
- if value.lower() in ('0', 'false', 'no', 'n'):
16
+ if value.lower() in ("0", "false", "no", "n"):
17
17
  return False
18
- if value.lower() in ('1', 'true', 'yes', 'y'):
18
+ if value.lower() in ("1", "true", "yes", "y"):
19
19
  return True
20
20
  raise Exception(f'Cannot convert to boolean: "{value}"')
21
21
 
@@ -1,21 +1,20 @@
1
- from alembic.migration import MigrationContext
2
1
  from alembic.autogenerate import produce_migrations
3
- from alembic.operations.ops import ModifyTableOps
2
+ from alembic.migration import MigrationContext
4
3
  from alembic.operations import Operations
4
+ from alembic.operations.ops import ModifyTableOps
5
5
  from sqlalchemy import Engine
6
6
  from sqlalchemy.orm import DeclarativeBase
7
7
 
8
8
 
9
9
  async def migrate(engine: Engine, Base: DeclarativeBase):
10
- '''
10
+ """
11
11
  Generate migration and run it
12
12
  See: https://alembic.sqlalchemy.org/en/latest/cookbook.html#run-alembic-operation-objects-directly-as-in-from-autogenerate # noqa
13
- '''
13
+ """
14
14
  connection = engine.connect()
15
15
  migration_context = MigrationContext.configure(connection)
16
16
  migration_script = produce_migrations(
17
- context=migration_context,
18
- metadata=Base.metadata
17
+ context=migration_context, metadata=Base.metadata
19
18
  )
20
19
  operations = Operations(migration_context)
21
20
  use_batch = engine.name == "sqlite"
@@ -23,10 +22,7 @@ async def migrate(engine: Engine, Base: DeclarativeBase):
23
22
  stack = [migration_script.upgrade_ops]
24
23
  while stack:
25
24
  elem = stack.pop(0)
26
- if (
27
- hasattr(elem, 'table_name') and
28
- elem.table_name not in Base.metadata.tables
29
- ):
25
+ if hasattr(elem, "table_name") and elem.table_name not in Base.metadata.tables:
30
26
  # We want the migration leave all unrelated tables as is
31
27
  continue
32
28
 
@@ -1,6 +1,7 @@
1
+ import asyncio
2
+
1
3
  from module.auth.migrate import migrate_auth
2
4
  from module.log.migrate import migrate_log
3
- import asyncio
4
5
 
5
6
 
6
7
  async def migrate():
@@ -8,5 +9,5 @@ async def migrate():
8
9
  await migrate_log()
9
10
 
10
11
 
11
- if __name__ == '__main__':
12
+ if __name__ == "__main__":
12
13
  asyncio.run(migrate())
@@ -1,18 +1,13 @@
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
- from module.auth.entity.permission.api import (
7
- register_api as register_permission_api
8
- )
9
- from module.auth.entity.group.api import (
10
- register_api as register_group_api
11
- )
12
- from module.auth.entity.user.api import (
13
- register_api as register_user_api,
14
- register_auth_api as register_user_login_api
15
- )
7
+ from module.auth.entity.group.api import register_api as register_group_api
8
+ from module.auth.entity.permission.api import register_api as register_permission_api
9
+ from module.auth.entity.user.api import register_api as register_user_api
10
+ from module.auth.entity.user.api import register_auth_api as register_user_login_api
16
11
 
17
12
 
18
13
  def register_api(
@@ -20,7 +15,7 @@ def register_api(
20
15
  app: FastAPI,
21
16
  authorizer: Authorizer,
22
17
  rpc_caller: Caller,
23
- publisher: Publisher
18
+ publisher: Publisher,
24
19
  ):
25
20
  logger.info('🥪 Register API for "auth"')
26
21
  register_user_login_api(logger, app, authorizer, rpc_caller, publisher)
@@ -1,13 +1,11 @@
1
- from module.auth.component.authorizer import authorizer
2
- from module.auth.component.base import Base
3
- from module.auth.component.password_hasher import password_hasher
4
1
  from module.auth.component.access_token_scheme import access_token_scheme
5
2
  from module.auth.component.access_token_util import access_token_util
3
+ from module.auth.component.authorizer import authorizer
4
+ from module.auth.component.base import Base
6
5
  from module.auth.component.bearer_token_scheme import bearer_token_scheme
6
+ from module.auth.component.password_hasher import password_hasher
7
7
  from module.auth.component.refresh_token_util import refresh_token_util
8
- from module.auth.component.user import (
9
- admin_user, admin_user_password, guest_user
10
- )
8
+ from module.auth.component.user import admin_user, admin_user_password, guest_user
11
9
 
12
10
  assert authorizer
13
11
  assert Base
@@ -1,14 +1,13 @@
1
- from module.auth.core import (
2
- AccessTokenScheme, create_oauth2_bearer_access_token_scheme
3
- )
1
+ from config import app_auth_access_token_cookie_key
4
2
  from module.auth.component.access_token_util import access_token_util
5
3
  from module.auth.component.user import guest_user
6
- from config import app_auth_access_token_cookie_key
7
-
4
+ from module.auth.core import AccessTokenScheme, create_oauth2_bearer_access_token_scheme
8
5
 
9
- access_token_scheme: AccessTokenScheme = create_oauth2_bearer_access_token_scheme( # noqa
10
- guest_user=guest_user,
11
- access_token_util=access_token_util,
12
- token_url='/api/v1/auth/login-oauth',
13
- token_cookie_key=app_auth_access_token_cookie_key
6
+ access_token_scheme: AccessTokenScheme = (
7
+ create_oauth2_bearer_access_token_scheme( # noqa
8
+ guest_user=guest_user,
9
+ access_token_util=access_token_util,
10
+ token_url="/api/v1/auth/login-oauth",
11
+ token_cookie_key=app_auth_access_token_cookie_key,
12
+ )
14
13
  )
@@ -1,17 +1,18 @@
1
1
  from config import (
2
- app_auth_access_token_type, app_auth_jwt_token_algorithm,
3
- app_auth_jwt_token_secret_key
2
+ app_auth_access_token_type,
3
+ app_auth_jwt_token_algorithm,
4
+ app_auth_jwt_token_secret_key,
4
5
  )
5
6
  from module.auth.core import AccessTokenUtil, JWTAccessTokenUtil
6
7
 
7
8
 
8
9
  def init_token_util() -> AccessTokenUtil:
9
- if app_auth_access_token_type.lower() == 'jwt':
10
+ if app_auth_access_token_type.lower() == "jwt":
10
11
  return JWTAccessTokenUtil(
11
12
  secret_key=app_auth_jwt_token_secret_key,
12
- algorithm=app_auth_jwt_token_algorithm
13
+ algorithm=app_auth_jwt_token_algorithm,
13
14
  )
14
- raise ValueError(f'Invalid auth token type: {app_auth_access_token_type}')
15
+ raise ValueError(f"Invalid auth token type: {app_auth_access_token_type}")
15
16
 
16
17
 
17
18
  access_token_util = init_token_util()
@@ -1,9 +1,9 @@
1
- from module.auth.core import Authorizer, RPCAuthorizer
2
1
  from component.rpc import rpc_caller
2
+ from module.auth.core import Authorizer, RPCAuthorizer
3
3
 
4
4
  authorizer: Authorizer = RPCAuthorizer(
5
5
  rpc_caller=rpc_caller,
6
- is_admin_rpc_name='auth_user_is_admin',
7
- is_guest_rpc_name='auth_user_is_guest',
8
- is_user_authorized_rpc_name='auth_is_user_authorized'
6
+ is_admin_rpc_name="auth_user_is_admin",
7
+ is_guest_rpc_name="auth_user_is_guest",
8
+ is_user_authorized_rpc_name="auth_is_user_authorized",
9
9
  )
@@ -1,5 +1,5 @@
1
1
  from fastapi.security import OAuth2PasswordBearer
2
2
 
3
3
  bearer_token_scheme = OAuth2PasswordBearer(
4
- tokenUrl='/api/v1/auth/login-oauth', auto_error=False
4
+ tokenUrl="/api/v1/auth/login-oauth", auto_error=False
5
5
  )
@@ -1,16 +1,14 @@
1
+ from component.messagebus import publisher
1
2
  from config import (
2
- app_auth_admin_active, app_auth_access_token_expire_seconds,
3
- app_auth_refresh_token_expire_seconds
3
+ app_auth_access_token_expire_seconds,
4
+ app_auth_admin_active,
5
+ app_auth_refresh_token_expire_seconds,
4
6
  )
5
- from component.messagebus import publisher
6
- from module.auth.component.repo.user_repo import user_repo
7
- from module.auth.entity.user.model import UserModel
8
7
  from module.auth.component import access_token_util, refresh_token_util
9
- from module.auth.component.user import (
10
- admin_user, admin_user_password, guest_user
11
- )
12
8
  from module.auth.component.model.permission_model import permission_model
13
-
9
+ from module.auth.component.repo.user_repo import user_repo
10
+ from module.auth.component.user import admin_user, admin_user_password, guest_user
11
+ from module.auth.entity.user.model import UserModel
14
12
 
15
13
  user_model: UserModel = UserModel(
16
14
  repo=user_repo,
@@ -22,5 +20,5 @@ user_model: UserModel = UserModel(
22
20
  refresh_token_expire_seconds=app_auth_refresh_token_expire_seconds,
23
21
  guest_user=guest_user,
24
22
  admin_user=admin_user if app_auth_admin_active else None,
25
- admin_user_password=admin_user_password
23
+ admin_user_password=admin_user_password,
26
24
  )
@@ -1,3 +1,3 @@
1
- from module.auth.core import PasswordHasher, BcryptPasswordHasher
1
+ from module.auth.core import BcryptPasswordHasher, PasswordHasher
2
2
 
3
3
  password_hasher: PasswordHasher = BcryptPasswordHasher()
@@ -1,17 +1,18 @@
1
1
  from config import (
2
- app_auth_refresh_token_type, app_auth_jwt_token_algorithm,
3
- app_auth_jwt_token_secret_key
2
+ app_auth_jwt_token_algorithm,
3
+ app_auth_jwt_token_secret_key,
4
+ app_auth_refresh_token_type,
4
5
  )
5
- from module.auth.core import RefreshTokenUtil, JWTRefreshTokenUtil
6
+ from module.auth.core import JWTRefreshTokenUtil, RefreshTokenUtil
6
7
 
7
8
 
8
9
  def init_token_util() -> RefreshTokenUtil:
9
- if app_auth_refresh_token_type.lower() == 'jwt':
10
+ if app_auth_refresh_token_type.lower() == "jwt":
10
11
  return JWTRefreshTokenUtil(
11
12
  secret_key=app_auth_jwt_token_secret_key,
12
- algorithm=app_auth_jwt_token_algorithm
13
+ algorithm=app_auth_jwt_token_algorithm,
13
14
  )
14
- raise ValueError(f'Invalid auth token type: {app_auth_refresh_token_type}')
15
+ raise ValueError(f"Invalid auth token type: {app_auth_refresh_token_type}")
15
16
 
16
17
 
17
18
  refresh_token_util = init_token_util()
@@ -1,10 +1,5 @@
1
- from component.log import logger
2
1
  from component.db_connection import engine
2
+ from component.log import logger
3
+ from module.auth.entity.group.repo import GroupDBRepo, GroupRepo
3
4
 
4
- from module.auth.entity.group.repo import (
5
- GroupRepo, GroupDBRepo
6
- )
7
-
8
- group_repo: GroupRepo = GroupDBRepo(
9
- logger=logger, engine=engine
10
- )
5
+ group_repo: GroupRepo = GroupDBRepo(logger=logger, engine=engine)
@@ -1,9 +1,5 @@
1
- from component.log import logger
2
1
  from component.db_connection import engine
3
- from module.auth.entity.permission.repo import (
4
- PermissionRepo, PermissionDBRepo
5
- )
2
+ from component.log import logger
3
+ from module.auth.entity.permission.repo import PermissionDBRepo, PermissionRepo
6
4
 
7
- permission_repo: PermissionRepo = PermissionDBRepo(
8
- logger=logger, engine=engine
9
- )
5
+ permission_repo: PermissionRepo = PermissionDBRepo(logger=logger, engine=engine)
@@ -1,9 +1,7 @@
1
- from module.auth.component.password_hasher import password_hasher
2
- from component.log import logger
3
1
  from component.db_connection import engine
4
- from module.auth.entity.user.repo import (
5
- UserRepo, UserDBRepo
6
- )
2
+ from component.log import logger
3
+ from module.auth.component.password_hasher import password_hasher
4
+ from module.auth.entity.user.repo import UserDBRepo, UserRepo
7
5
 
8
6
  user_repo: UserRepo = UserDBRepo(
9
7
  logger=logger, engine=engine, password_hasher=password_hasher