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,28 +1,32 @@
1
- from zrb.helper.typing import Any
2
- from zrb.builtin.generator.fastapp_crud.task_factory import (
3
- create_add_navigation_task
1
+ import asyncio
2
+ import os
3
+
4
+ from zrb.builtin.generator.common.helper import validate_existing_project_dir
5
+ from zrb.builtin.generator.common.task_input import (
6
+ app_name_input,
7
+ entity_name_input,
8
+ main_column_name_input,
9
+ module_name_input,
10
+ plural_entity_name_input,
11
+ project_dir_input,
4
12
  )
5
13
  from zrb.builtin.generator.fastapp_crud.helper import (
6
- register_api, register_permission, register_rpc
7
- )
8
- from zrb.builtin.generator.common.task_input import (
9
- project_dir_input, app_name_input, module_name_input, entity_name_input,
10
- plural_entity_name_input, main_column_name_input
14
+ register_api,
15
+ register_permission,
16
+ register_rpc,
11
17
  )
12
- from zrb.builtin.generator.common.helper import validate_existing_project_dir
18
+ from zrb.builtin.generator.fastapp_crud.task_factory import create_add_navigation_task
13
19
  from zrb.builtin.group import project_add_group
14
- from zrb.task.task import Task
15
- from zrb.task.decorator import python_task
20
+ from zrb.helper import util
21
+ from zrb.helper.typing import Any
22
+ from zrb.runner import runner
16
23
  from zrb.task.cmd_task import CmdTask
24
+ from zrb.task.decorator import python_task
17
25
  from zrb.task.resource_maker import ResourceMaker
18
- from zrb.runner import runner
19
- from zrb.helper import util
20
-
21
- import asyncio
22
- import os
26
+ from zrb.task.task import Task
23
27
 
24
28
  CURRENT_DIR = os.path.dirname(__file__)
25
- CODEMOD_DIR = os.path.join(CURRENT_DIR, 'nodejs', 'codemod')
29
+ CODEMOD_DIR = os.path.join(CURRENT_DIR, "nodejs", "codemod")
26
30
 
27
31
  ###############################################################################
28
32
  # Task Definitions
@@ -30,41 +34,35 @@ CODEMOD_DIR = os.path.join(CURRENT_DIR, 'nodejs', 'codemod')
30
34
 
31
35
 
32
36
  @python_task(
33
- name='validate',
34
- inputs=[
35
- project_dir_input, app_name_input, module_name_input, entity_name_input
36
- ],
37
+ name="validate",
38
+ inputs=[project_dir_input, app_name_input, module_name_input, entity_name_input],
37
39
  )
38
40
  async def validate(*args: Any, **kwargs: Any):
39
- project_dir = kwargs.get('project_dir')
41
+ project_dir = kwargs.get("project_dir")
40
42
  validate_existing_project_dir(project_dir)
41
- app_name = kwargs.get('app_name')
42
- module_name = kwargs.get('module_name')
43
- entity_name = kwargs.get('entity_name')
43
+ app_name = kwargs.get("app_name")
44
+ module_name = kwargs.get("module_name")
45
+ entity_name = kwargs.get("entity_name")
44
46
  snake_module_name = util.to_snake_case(module_name)
45
47
  snake_entity_name = util.to_snake_case(entity_name)
46
48
  automation_dir = os.path.join(
47
- project_dir, '_automate', util.to_snake_case(app_name)
49
+ project_dir, "_automate", util.to_snake_case(app_name)
48
50
  )
49
51
  if not os.path.exists(automation_dir):
50
- raise Exception(
51
- f'Automation directory does not exist: {automation_dir}'
52
- )
53
- app_dir = os.path.join(
54
- project_dir, 'src', f'{util.to_kebab_case(app_name)}'
55
- )
52
+ raise Exception(f"Automation directory does not exist: {automation_dir}")
53
+ app_dir = os.path.join(project_dir, "src", f"{util.to_kebab_case(app_name)}")
56
54
  if not os.path.exists(app_dir):
57
- raise Exception(f'App directory does not exist: {app_dir}')
58
- module_path = os.path.join(app_dir, 'src', 'module', snake_module_name)
55
+ raise Exception(f"App directory does not exist: {app_dir}")
56
+ module_path = os.path.join(app_dir, "src", "module", snake_module_name)
59
57
  if not os.path.exists(module_path):
60
- raise Exception(f'Module directory does not exist: {module_path}')
61
- entity_path = os.path.join(module_path, 'entity', snake_entity_name)
58
+ raise Exception(f"Module directory does not exist: {module_path}")
59
+ entity_path = os.path.join(module_path, "entity", snake_entity_name)
62
60
  if os.path.exists(entity_path):
63
- raise Exception(f'Entity directory already exists: {entity_path}')
61
+ raise Exception(f"Entity directory already exists: {entity_path}")
64
62
 
65
63
 
66
64
  copy_resource = ResourceMaker(
67
- name='copy-resource',
65
+ name="copy-resource",
68
66
  inputs=[
69
67
  project_dir_input,
70
68
  app_name_input,
@@ -75,22 +73,22 @@ copy_resource = ResourceMaker(
75
73
  ],
76
74
  upstreams=[validate],
77
75
  replacements={
78
- 'zrbAppName': '{{input.app_name}}',
79
- 'zrbModuleName': '{{input.module_name}}',
80
- 'zrbEntityName': '{{input.entity_name}}',
81
- 'zrbPluralEntityName': '{{input.plural_entity_name}}',
82
- 'zrbColumnName': '{{input.column_name}}',
76
+ "zrbAppName": "{{input.app_name}}",
77
+ "zrbModuleName": "{{input.module_name}}",
78
+ "zrbEntityName": "{{input.entity_name}}",
79
+ "zrbPluralEntityName": "{{input.plural_entity_name}}",
80
+ "zrbColumnName": "{{input.column_name}}",
83
81
  },
84
- template_path=os.path.join(CURRENT_DIR, 'template'),
85
- destination_path='{{ input.project_dir }}',
82
+ template_path=os.path.join(CURRENT_DIR, "template"),
83
+ destination_path="{{ input.project_dir }}",
86
84
  excludes=[
87
- '*/__pycache__',
88
- ]
85
+ "*/__pycache__",
86
+ ],
89
87
  )
90
88
 
91
89
 
92
90
  @python_task(
93
- name='register-crud',
91
+ name="register-crud",
94
92
  inputs=[
95
93
  project_dir_input,
96
94
  app_name_input,
@@ -101,40 +99,40 @@ copy_resource = ResourceMaker(
101
99
  ],
102
100
  upstreams=[
103
101
  copy_resource,
104
- ]
102
+ ],
105
103
  )
106
104
  async def register_crud(*args: Any, **kwargs: Any):
107
- task: Task = kwargs.get('_task')
108
- project_dir = kwargs.get('project_dir', '.')
109
- app_name = kwargs.get('app_name')
110
- module_name = kwargs.get('module_name')
111
- entity_name = kwargs.get('entity_name')
105
+ task: Task = kwargs.get("_task")
106
+ project_dir = kwargs.get("project_dir", ".")
107
+ app_name = kwargs.get("app_name")
108
+ module_name = kwargs.get("module_name")
109
+ entity_name = kwargs.get("entity_name")
112
110
  kebab_app_name = util.to_kebab_case(app_name)
113
111
  snake_module_name = util.to_snake_case(module_name)
114
112
  snake_entity_name = util.to_snake_case(entity_name)
115
113
  await asyncio.gather(
116
- asyncio.create_task(register_api(
117
- task, project_dir, kebab_app_name, snake_module_name,
118
- snake_entity_name
119
- )),
120
- asyncio.create_task(register_rpc(
121
- task, project_dir, kebab_app_name, snake_module_name,
122
- snake_entity_name
123
- )),
124
- asyncio.create_task(register_permission(
125
- task, project_dir, kebab_app_name, snake_module_name,
126
- snake_entity_name
127
- )),
114
+ asyncio.create_task(
115
+ register_api(
116
+ task, project_dir, kebab_app_name, snake_module_name, snake_entity_name
117
+ )
118
+ ),
119
+ asyncio.create_task(
120
+ register_rpc(
121
+ task, project_dir, kebab_app_name, snake_module_name, snake_entity_name
122
+ )
123
+ ),
124
+ asyncio.create_task(
125
+ register_permission(
126
+ task, project_dir, kebab_app_name, snake_module_name, snake_entity_name
127
+ )
128
+ ),
128
129
  )
129
130
 
130
131
 
131
132
  prepare_codemod = CmdTask(
132
- name='prepare-codemod',
133
+ name="prepare-codemod",
133
134
  cwd=CODEMOD_DIR,
134
- cmd=[
135
- 'npm install --save-dev',
136
- 'node_modules/.bin/tsc'
137
- ]
135
+ cmd=["npm install --save-dev", "node_modules/.bin/tsc"],
138
136
  )
139
137
 
140
138
  add_navigation = create_add_navigation_task(
@@ -146,14 +144,11 @@ add_navigation = create_add_navigation_task(
146
144
 
147
145
 
148
146
  @python_task(
149
- name='fastapp-crud',
147
+ name="fastapp-crud",
150
148
  group=project_add_group,
151
- upstreams=[
152
- register_crud,
153
- add_navigation
154
- ],
155
- runner=runner
149
+ upstreams=[register_crud, add_navigation],
150
+ runner=runner,
156
151
  )
157
152
  async def add_fastapp_crud(*args: Any, **kwargs: Any):
158
- task: Task = kwargs.get('_task')
159
- task.print_out('Success')
153
+ task: Task = kwargs.get("_task")
154
+ task.print_out("Success")
@@ -1,9 +1,10 @@
1
- from zrb.helper.typecheck import typechecked
2
- from zrb.task.task import Task
1
+ import os
2
+
3
3
  from zrb.helper.codemod.add_import_module import add_import_module
4
4
  from zrb.helper.codemod.append_code_to_function import append_code_to_function
5
5
  from zrb.helper.file.text import read_text_file_async, write_text_file_async
6
- import os
6
+ from zrb.helper.typecheck import typechecked
7
+ from zrb.task.task import Task
7
8
 
8
9
 
9
10
  @typechecked
@@ -12,35 +13,34 @@ async def register_api(
12
13
  project_dir: str,
13
14
  kebab_app_name: str,
14
15
  snake_module_name: str,
15
- snake_entity_name: str
16
+ snake_entity_name: str,
16
17
  ):
17
18
  module_api_file_path = os.path.join(
18
- project_dir, 'src', kebab_app_name, 'src', 'module', snake_module_name,
19
- 'api.py'
19
+ project_dir, "src", kebab_app_name, "src", "module", snake_module_name, "api.py"
20
+ )
21
+ register_function_path = ".".join(
22
+ ["module", snake_module_name, "entity", snake_entity_name, "api"]
20
23
  )
21
- register_function_path = '.'.join([
22
- 'module', snake_module_name, 'entity', snake_entity_name, 'api'
23
- ])
24
- register_function = f'register_{snake_entity_name}_api'
25
- task.print_out(f'Read code from: {module_api_file_path}')
24
+ register_function = f"register_{snake_entity_name}_api"
25
+ task.print_out(f"Read code from: {module_api_file_path}")
26
26
  code = await read_text_file_async(module_api_file_path)
27
27
  task.print_out(
28
- f'Add import "register_api" as "{register_function}" ' +
29
- f'from "{register_function_path}" to the code'
28
+ f'Add import "register_api" as "{register_function}" '
29
+ + f'from "{register_function_path}" to the code'
30
30
  )
31
31
  code = add_import_module(
32
32
  code=code,
33
33
  module_path=register_function_path,
34
- resource='register_api',
35
- alias=register_function
34
+ resource="register_api",
35
+ alias=register_function,
36
36
  )
37
37
  task.print_out(f'Add "{register_function}" call to the code')
38
38
  code = append_code_to_function(
39
39
  code=code,
40
- function_name='register_api',
41
- new_code=f'{register_function}(logger, app, authorizer, rpc_caller, publisher)' # noqa
40
+ function_name="register_api",
41
+ new_code=f"{register_function}(logger, app, authorizer, rpc_caller, publisher)", # noqa
42
42
  )
43
- task.print_out(f'Write modified code to: {module_api_file_path}')
43
+ task.print_out(f"Write modified code to: {module_api_file_path}")
44
44
  await write_text_file_async(module_api_file_path, code)
45
45
 
46
46
 
@@ -50,35 +50,34 @@ async def register_rpc(
50
50
  project_dir: str,
51
51
  kebab_app_name: str,
52
52
  snake_module_name: str,
53
- snake_entity_name: str
53
+ snake_entity_name: str,
54
54
  ):
55
55
  module_rpc_file_path = os.path.join(
56
- project_dir, 'src', kebab_app_name, 'src', 'module', snake_module_name,
57
- 'rpc.py'
56
+ project_dir, "src", kebab_app_name, "src", "module", snake_module_name, "rpc.py"
57
+ )
58
+ register_function_path = ".".join(
59
+ ["module", snake_module_name, "entity", snake_entity_name, "rpc"]
58
60
  )
59
- register_function_path = '.'.join([
60
- 'module', snake_module_name, 'entity', snake_entity_name, 'rpc'
61
- ])
62
- register_function = f'register_{snake_entity_name}_rpc'
63
- task.print_out(f'Read code from: {module_rpc_file_path}')
61
+ register_function = f"register_{snake_entity_name}_rpc"
62
+ task.print_out(f"Read code from: {module_rpc_file_path}")
64
63
  code = await read_text_file_async(module_rpc_file_path)
65
64
  task.print_out(
66
- f'Add import "register_rpc" as "{register_function}" ' +
67
- f'from "{register_function_path}" to the code'
65
+ f'Add import "register_rpc" as "{register_function}" '
66
+ + f'from "{register_function_path}" to the code'
68
67
  )
69
68
  code = add_import_module(
70
69
  code=code,
71
70
  module_path=register_function_path,
72
- resource='register_rpc',
73
- alias=register_function
71
+ resource="register_rpc",
72
+ alias=register_function,
74
73
  )
75
74
  task.print_out(f'Add "{register_function}" call to the code')
76
75
  code = append_code_to_function(
77
76
  code=code,
78
- function_name='register_rpc',
79
- new_code=f'{register_function}(logger, rpc_server, rpc_caller, publisher)' # noqa
77
+ function_name="register_rpc",
78
+ new_code=f"{register_function}(logger, rpc_server, rpc_caller, publisher)", # noqa
80
79
  )
81
- task.print_out(f'Write modified code to: {module_rpc_file_path}')
80
+ task.print_out(f"Write modified code to: {module_rpc_file_path}")
82
81
  await write_text_file_async(module_rpc_file_path, code)
83
82
 
84
83
 
@@ -88,28 +87,32 @@ async def register_permission(
88
87
  project_dir: str,
89
88
  kebab_app_name: str,
90
89
  snake_module_name: str,
91
- snake_entity_name: str
90
+ snake_entity_name: str,
92
91
  ):
93
92
  module_register_permission_file_path = os.path.join(
94
- project_dir, 'src', kebab_app_name, 'src', 'module', 'auth',
95
- 'register_permission.py'
93
+ project_dir,
94
+ "src",
95
+ kebab_app_name,
96
+ "src",
97
+ "module",
98
+ "auth",
99
+ "register_permission.py",
96
100
  )
97
- task.print_out(f'Read code from: {module_register_permission_file_path}')
101
+ task.print_out(f"Read code from: {module_register_permission_file_path}")
98
102
  code = await read_text_file_async(module_register_permission_file_path)
99
103
  code = append_code_to_function(
100
104
  code=code,
101
- function_name='register_permission',
102
- new_code='\n'.join([
103
- 'await ensure_entity_permission(',
104
- f" module_name='{snake_module_name}', entity_name='{snake_entity_name}'", # noqa
105
- ')'
106
- ])
107
- )
108
- task.print_out(
109
- f'Add "ensure_entity_permission" call for {snake_entity_name} ' +
110
- 'to the code'
105
+ function_name="register_permission",
106
+ new_code="\n".join(
107
+ [
108
+ "await ensure_entity_permission(",
109
+ f" module_name='{snake_module_name}', entity_name='{snake_entity_name}'", # noqa
110
+ ")",
111
+ ]
112
+ ),
111
113
  )
112
114
  task.print_out(
113
- f'Write modified code to: {module_register_permission_file_path}'
115
+ f'Add "ensure_entity_permission" call for {snake_entity_name} ' + "to the code"
114
116
  )
117
+ task.print_out(f"Write modified code to: {module_register_permission_file_path}")
115
118
  await write_text_file_async(module_register_permission_file_path, code)
@@ -1,27 +1,30 @@
1
- from zrb.helper.typing import List
1
+ import os
2
+
3
+ from zrb.builtin.generator.common.task_input import (
4
+ app_name_input,
5
+ entity_name_input,
6
+ module_name_input,
7
+ project_dir_input,
8
+ )
2
9
  from zrb.helper.typecheck import typechecked
10
+ from zrb.helper.typing import List
3
11
  from zrb.task.any_task import AnyTask
4
12
  from zrb.task.cmd_task import CmdTask
5
- from zrb.builtin.generator.common.task_input import (
6
- project_dir_input, app_name_input, module_name_input, entity_name_input,
7
- )
8
-
9
- import os
10
13
 
11
14
  CURRENT_DIR = os.path.dirname(__file__)
12
- CODEMOD_DIR = os.path.join(CURRENT_DIR, 'nodejs', 'codemod')
15
+ CODEMOD_DIR = os.path.join(CURRENT_DIR, "nodejs", "codemod")
13
16
 
14
- NAV_CONFIG_FILE_PATH = '{{input.project_dir}}/src/{{util.to_kebab_case(input.app_name)}}/src/frontend/src/lib/config/navData.ts' # noqa
15
- ENV_VAR_NAME = 'navData'
16
- NAV_TITLE = '{{util.to_pascal_case(input.entity_name)}}'
17
- NAV_URL = '/{{util.to_kebab_case(input.module_name)}}/{{util.to_kebab_case(input.entity_name)}}' # noqa
18
- NAV_PERMISSION = '{{util.to_snake_case(input.module_name)}}:{{util.to_snake_case(input.entity_name)}}:get' # noqa
17
+ NAV_CONFIG_FILE_PATH = "{{input.project_dir}}/src/{{util.to_kebab_case(input.app_name)}}/src/frontend/src/lib/config/navData.ts" # noqa
18
+ ENV_VAR_NAME = "navData"
19
+ NAV_TITLE = "{{util.to_pascal_case(input.entity_name)}}"
20
+ NAV_URL = "/{{util.to_kebab_case(input.module_name)}}/{{util.to_kebab_case(input.entity_name)}}" # noqa
21
+ NAV_PERMISSION = "{{util.to_snake_case(input.module_name)}}:{{util.to_snake_case(input.entity_name)}}:get" # noqa
19
22
 
20
23
 
21
24
  @typechecked
22
25
  def create_add_navigation_task(upstreams: List[AnyTask]) -> AnyTask:
23
26
  return CmdTask(
24
- name='add-navigation',
27
+ name="add-navigation",
25
28
  inputs=[
26
29
  project_dir_input,
27
30
  app_name_input,
@@ -30,5 +33,5 @@ def create_add_navigation_task(upstreams: List[AnyTask]) -> AnyTask:
30
33
  ],
31
34
  upstreams=upstreams,
32
35
  retry=0,
33
- cmd=f'node {CODEMOD_DIR}/dist/addNav.js "{NAV_CONFIG_FILE_PATH}" "{ENV_VAR_NAME}" "{NAV_TITLE}" "{NAV_URL}" "{NAV_PERMISSION}"' # noqa
36
+ cmd=f'node {CODEMOD_DIR}/dist/addNav.js "{NAV_CONFIG_FILE_PATH}" "{ENV_VAR_NAME}" "{NAV_TITLE}" "{NAV_URL}" "{NAV_PERMISSION}"', # noqa
34
37
  )
@@ -1,9 +1,9 @@
1
1
  from component.messagebus import publisher
2
2
  from module.snake_zrb_module_name.component.repo.snake_zrb_entity_name_repo import (
3
- snake_zrb_entity_name_repo
3
+ snake_zrb_entity_name_repo,
4
4
  )
5
5
  from module.snake_zrb_module_name.entity.snake_zrb_entity_name.model import (
6
- PascalZrbEntityNameModel
6
+ PascalZrbEntityNameModel,
7
7
  )
8
8
 
9
9
  snake_zrb_entity_name_model: PascalZrbEntityNameModel = PascalZrbEntityNameModel(
@@ -1,7 +1,8 @@
1
- from component.log import logger
2
1
  from component.db_connection import engine
2
+ from component.log import logger
3
3
  from module.snake_zrb_module_name.entity.snake_zrb_entity_name.repo import (
4
- PascalZrbEntityNameRepo, PascalZrbEntityNameDBRepo
4
+ PascalZrbEntityNameDBRepo,
5
+ PascalZrbEntityNameRepo,
5
6
  )
6
7
 
7
8
  snake_zrb_entity_name_repo: PascalZrbEntityNameRepo = PascalZrbEntityNameDBRepo(
@@ -1,14 +1,17 @@
1
- from fastapi import FastAPI, Depends
2
1
  from logging import Logger
2
+
3
+ from core.error import HTTPAPIException
3
4
  from core.messagebus import Publisher
4
5
  from core.rpc import Caller
5
- from core.error import HTTPAPIException
6
+ from fastapi import Depends, FastAPI
7
+ from module.auth.component import access_token_scheme
6
8
  from module.auth.core import Authorizer
9
+ from module.auth.schema.token import AccessTokenData
7
10
  from module.snake_zrb_module_name.schema.snake_zrb_entity_name import (
8
- PascalZrbEntityName, PascalZrbEntityNameData, PascalZrbEntityNameResult
11
+ PascalZrbEntityName,
12
+ PascalZrbEntityNameData,
13
+ PascalZrbEntityNameResult,
9
14
  )
10
- from module.auth.schema.token import AccessTokenData
11
- from module.auth.component import access_token_scheme
12
15
 
13
16
 
14
17
  def register_api(
@@ -16,109 +19,124 @@ def register_api(
16
19
  app: FastAPI,
17
20
  authorizer: Authorizer,
18
21
  rpc_caller: Caller,
19
- publisher: Publisher
22
+ publisher: Publisher,
20
23
  ):
21
24
  logger.info('🥪 Register API for "snake_zrb_module_name.snake_zrb_entity_name"')
22
25
 
23
26
  @app.get(
24
- '/api/v1/kebab-zrb-module-name/kebab-zrb-plural-entity-name', response_model=PascalZrbEntityNameResult
27
+ "/api/v1/kebab-zrb-module-name/kebab-zrb-plural-entity-name",
28
+ response_model=PascalZrbEntityNameResult,
25
29
  )
26
30
  async def get_snake_zrb_entity_names(
27
- keyword: str = '', limit: int = 100, offset: int = 0,
28
- user_token_data: AccessTokenData = Depends(access_token_scheme)
31
+ keyword: str = "",
32
+ limit: int = 100,
33
+ offset: int = 0,
34
+ user_token_data: AccessTokenData = Depends(access_token_scheme),
29
35
  ):
30
36
  if not await authorizer.is_having_permission(
31
- user_token_data.user_id, 'snake_zrb_module_name:snake_zrb_entity_name:get'
37
+ user_token_data.user_id, "snake_zrb_module_name:snake_zrb_entity_name:get"
32
38
  ):
33
- raise HTTPAPIException(403, 'Unauthorized')
39
+ raise HTTPAPIException(403, "Unauthorized")
34
40
  try:
35
41
  result_dict = await rpc_caller.call(
36
- 'snake_zrb_module_name_get_snake_zrb_entity_name',
42
+ "snake_zrb_module_name_get_snake_zrb_entity_name",
37
43
  keyword=keyword,
38
44
  criterion={},
39
45
  limit=limit,
40
46
  offset=offset,
41
- user_token_data=user_token_data.dict()
47
+ user_token_data=user_token_data.model_dump(),
42
48
  )
43
49
  return PascalZrbEntityNameResult(**result_dict)
44
50
  except Exception as e:
45
51
  raise HTTPAPIException(error=e)
46
52
 
47
53
  @app.get(
48
- '/api/v1/kebab-zrb-module-name/kebab-zrb-plural-entity-name/{id}', response_model=PascalZrbEntityName
54
+ "/api/v1/kebab-zrb-module-name/kebab-zrb-plural-entity-name/{id}",
55
+ response_model=PascalZrbEntityName,
49
56
  )
50
57
  async def get_snake_zrb_entity_name_by_id(
51
- id: str,
52
- user_token_data: AccessTokenData = Depends(access_token_scheme)
58
+ id: str, user_token_data: AccessTokenData = Depends(access_token_scheme)
53
59
  ):
54
60
  if not await authorizer.is_having_permission(
55
- user_token_data.user_id, 'snake_zrb_module_name:snake_zrb_entity_name:get_by_id'
61
+ user_token_data.user_id,
62
+ "snake_zrb_module_name:snake_zrb_entity_name:get_by_id",
56
63
  ):
57
- raise HTTPAPIException(403, 'Unauthorized')
64
+ raise HTTPAPIException(403, "Unauthorized")
58
65
  try:
59
66
  result_dict = await rpc_caller.call(
60
- 'snake_zrb_module_name_get_snake_zrb_entity_name_by_id',
61
- id=id, user_token_data=user_token_data.dict()
67
+ "snake_zrb_module_name_get_snake_zrb_entity_name_by_id",
68
+ id=id,
69
+ user_token_data=user_token_data.model_dump(),
62
70
  )
63
71
  return PascalZrbEntityName(**result_dict)
64
72
  except Exception as e:
65
73
  raise HTTPAPIException(error=e)
66
74
 
67
75
  @app.post(
68
- '/api/v1/kebab-zrb-module-name/kebab-zrb-plural-entity-name', response_model=PascalZrbEntityName
76
+ "/api/v1/kebab-zrb-module-name/kebab-zrb-plural-entity-name",
77
+ response_model=PascalZrbEntityName,
69
78
  )
70
79
  async def insert_snake_zrb_entity_name(
71
80
  data: PascalZrbEntityNameData,
72
- user_token_data: AccessTokenData = Depends(access_token_scheme)
81
+ user_token_data: AccessTokenData = Depends(access_token_scheme),
73
82
  ):
74
83
  if not await authorizer.is_having_permission(
75
- user_token_data.user_id, 'snake_zrb_module_name:snake_zrb_entity_name:insert'
84
+ user_token_data.user_id,
85
+ "snake_zrb_module_name:snake_zrb_entity_name:insert",
76
86
  ):
77
- raise HTTPAPIException(403, 'Unauthorized')
87
+ raise HTTPAPIException(403, "Unauthorized")
78
88
  try:
79
89
  result_dict = await rpc_caller.call(
80
- 'snake_zrb_module_name_insert_snake_zrb_entity_name',
81
- data=data.dict(), user_token_data=user_token_data.dict()
90
+ "snake_zrb_module_name_insert_snake_zrb_entity_name",
91
+ data=data.model_dump(),
92
+ user_token_data=user_token_data.model_dump(),
82
93
  )
83
94
  return PascalZrbEntityName(**result_dict)
84
95
  except Exception as e:
85
96
  raise HTTPAPIException(error=e)
86
97
 
87
98
  @app.put(
88
- '/api/v1/kebab-zrb-module-name/kebab-zrb-plural-entity-name/{id}', response_model=PascalZrbEntityName
99
+ "/api/v1/kebab-zrb-module-name/kebab-zrb-plural-entity-name/{id}",
100
+ response_model=PascalZrbEntityName,
89
101
  )
90
102
  async def update_snake_zrb_entity_name(
91
- id: str, data: PascalZrbEntityNameData,
92
- user_token_data: AccessTokenData = Depends(access_token_scheme)
103
+ id: str,
104
+ data: PascalZrbEntityNameData,
105
+ user_token_data: AccessTokenData = Depends(access_token_scheme),
93
106
  ):
94
107
  if not await authorizer.is_having_permission(
95
- user_token_data.user_id, 'snake_zrb_module_name:snake_zrb_entity_name:update'
108
+ user_token_data.user_id,
109
+ "snake_zrb_module_name:snake_zrb_entity_name:update",
96
110
  ):
97
- raise HTTPAPIException(403, 'Unauthorized')
111
+ raise HTTPAPIException(403, "Unauthorized")
98
112
  try:
99
113
  result_dict = await rpc_caller.call(
100
- 'snake_zrb_module_name_update_snake_zrb_entity_name',
101
- id=id, data=data.dict(), user_token_data=user_token_data.dict()
114
+ "snake_zrb_module_name_update_snake_zrb_entity_name",
115
+ id=id,
116
+ data=data.model_dump(),
117
+ user_token_data=user_token_data.model_dump(),
102
118
  )
103
119
  return PascalZrbEntityName(**result_dict)
104
120
  except Exception as e:
105
121
  raise HTTPAPIException(error=e)
106
122
 
107
123
  @app.delete(
108
- '/api/v1/kebab-zrb-module-name/kebab-zrb-plural-entity-name/{id}', response_model=PascalZrbEntityName
124
+ "/api/v1/kebab-zrb-module-name/kebab-zrb-plural-entity-name/{id}",
125
+ response_model=PascalZrbEntityName,
109
126
  )
110
127
  async def delete_snake_zrb_entity_name(
111
- id: str,
112
- user_token_data: AccessTokenData = Depends(access_token_scheme)
128
+ id: str, user_token_data: AccessTokenData = Depends(access_token_scheme)
113
129
  ):
114
130
  if not await authorizer.is_having_permission(
115
- user_token_data.user_id, 'snake_zrb_module_name:snake_zrb_entity_name:delete'
131
+ user_token_data.user_id,
132
+ "snake_zrb_module_name:snake_zrb_entity_name:delete",
116
133
  ):
117
- raise HTTPAPIException(403, 'Unauthorized')
134
+ raise HTTPAPIException(403, "Unauthorized")
118
135
  try:
119
136
  result_dict = await rpc_caller.call(
120
- 'snake_zrb_module_name_delete_snake_zrb_entity_name',
121
- id=id, user_token_data=user_token_data.dict()
137
+ "snake_zrb_module_name_delete_snake_zrb_entity_name",
138
+ id=id,
139
+ user_token_data=user_token_data.model_dump(),
122
140
  )
123
141
  return PascalZrbEntityName(**result_dict)
124
142
  except Exception as e: