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.
- zrb/__init__.py +24 -20
- zrb/__main__.py +5 -5
- zrb/action/runner.py +22 -30
- zrb/advertisement.py +10 -9
- zrb/builtin/__init__.py +18 -16
- zrb/builtin/base64.py +13 -18
- zrb/builtin/devtool/__init__.py +14 -3
- zrb/builtin/devtool/devtool_install.py +207 -221
- zrb/builtin/env.py +9 -12
- zrb/builtin/eval.py +9 -9
- zrb/builtin/explain.py +73 -74
- zrb/builtin/generator/__init__.py +7 -11
- zrb/builtin/generator/app_generator/add.py +86 -87
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/add.py +78 -77
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_checker.py +6 -6
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_common.py +14 -15
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/container.py +32 -32
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/deployment.py +29 -30
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/image.py +1 -3
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/local.py +5 -4
- 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
- zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/add.py +89 -87
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- zrb/builtin/generator/cmd_task/add.py +23 -25
- zrb/builtin/generator/cmd_task/template/_automate/snake_zrb_task_name.py +3 -5
- zrb/builtin/generator/common/helper.py +15 -20
- zrb/builtin/generator/common/task_factory.py +29 -26
- zrb/builtin/generator/common/task_input.py +97 -91
- zrb/builtin/generator/docker_compose_task/add.py +38 -39
- zrb/builtin/generator/docker_compose_task/template/_automate/snake_zrb_task_name.py +13 -19
- zrb/builtin/generator/docker_compose_task/template/src/kebab-zrb-task-name/image/main.py +18 -14
- zrb/builtin/generator/fastapp/add.py +94 -90
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_checker.py +28 -27
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_config.py +68 -39
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_env.py +24 -22
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_env_file.py +12 -12
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_get_start_microservices.py +43 -41
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_helper.py +23 -24
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_input.py +21 -20
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-load-test.sh +1 -1
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-start.sh +1 -1
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-test.sh +2 -2
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/container.py +46 -39
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/deployment.py +28 -20
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/frontend.py +21 -27
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/image.py +23 -18
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/load_test.py +35 -36
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/local.py +68 -58
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/test.py +24 -38
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/__main__.py +23 -21
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/_common.py +72 -75
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/app_helper.py +70 -75
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_postgresql_helper.py +18 -21
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_rabbitmq_helper.py +11 -19
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_redpanda_helper.py +18 -15
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_signoz_helper.py +17 -21
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/docker-compose.yml +12 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/loadtest/locustfile.py +10 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/Dockerfile +1 -0
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/app.py +35 -30
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/app_lifespan.py +21 -17
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/app_state.py +3 -2
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/db_connection.py +18 -20
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/frontend_index.py +5 -6
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/log.py +7 -15
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/messagebus.py +38 -34
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/rpc.py +19 -18
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/config.py +68 -103
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/error.py +11 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/__init__.py +2 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/kafka/admin.py +38 -35
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/kafka/consumer.py +38 -45
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/kafka/publisher.py +26 -29
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/messagebus.py +8 -14
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/mock.py +12 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/rabbitmq/admin.py +37 -44
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/rabbitmq/consumer.py +42 -67
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/rabbitmq/publisher.py +32 -55
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/model/repo_model.py +11 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/__init__.py +2 -2
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/db_entity_mixin.py +3 -6
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/db_repo.py +76 -83
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/repo.py +5 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/search_filter.py +1 -0
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/__init__.py +1 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/messagebus/caller.py +17 -19
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/messagebus/server.py +14 -18
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/rpc.py +15 -28
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/schema/__init__.py +1 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/schema/base_schema.py +6 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/serializer/__init__.py +1 -3
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/serializer/serializer.py +3 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/helper/async_task.py +3 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/helper/conversion.py +10 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/helper/migration.py +6 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/migrate.py +3 -2
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/api.py +7 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/__init__.py +4 -6
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/access_token_scheme.py +9 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/access_token_util.py +6 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/authorizer.py +4 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/bearer_token_scheme.py +1 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/model/user_model.py +8 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/password_hasher.py +1 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/refresh_token_util.py +7 -6
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/repo/group_repo.py +3 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/repo/permission_repo.py +3 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/repo/user_repo.py +3 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/user.py +12 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/__init__.py +7 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/access_token/scheme.py +7 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/access_token/util.py +20 -30
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/authorizer/authorizer.py +1 -3
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/authorizer/rpc_authorizer.py +5 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/password_hasher/bcrypt_password_hasher.py +3 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/password_hasher/password_hasher.py +0 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/refresh_token/util.py +15 -21
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/api.py +42 -49
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/model.py +3 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/repo.py +18 -16
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/rpc.py +26 -41
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/api.py +46 -51
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/model.py +5 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/repo.py +11 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/rpc.py +28 -45
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/table.py +10 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/api.py +60 -72
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/model.py +32 -61
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/repo.py +33 -36
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/rpc.py +42 -61
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/event.py +2 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/migrate.py +3 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/register_module.py +11 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/register_permission.py +19 -26
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/rpc.py +5 -13
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/group.py +6 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/permission.py +3 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/request.py +1 -0
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/token.py +2 -2
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/user.py +4 -3
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/api.py +4 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/component/model/activity_model.py +3 -9
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/component/repo/activity_repo.py +3 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/core/historical_repo_model.py +13 -13
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/api.py +22 -23
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/event.py +5 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/model.py +2 -6
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/repo.py +8 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/rpc.py +28 -45
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/table.py +3 -3
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/event.py +4 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/migrate.py +2 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/register_module.py +10 -11
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/rpc.py +3 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/schema/activity.py +3 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/requirements.txt +12 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_group_crud.py +76 -106
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_permission_crud.py +73 -103
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_user_crud.py +92 -122
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_user_login.py +107 -134
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/conftest.py +2 -2
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/test_liveness_and_readiness.py +8 -15
- zrb/builtin/generator/fastapp_crud/add.py +74 -79
- zrb/builtin/generator/fastapp_crud/helper.py +51 -48
- zrb/builtin/generator/fastapp_crud/task_factory.py +17 -14
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/test/snake_zrb_module_name/test_snake_zrb_entity_name.py +68 -98
- zrb/builtin/generator/fastapp_field/add.py +143 -85
- zrb/builtin/generator/fastapp_field/helper.py +184 -125
- zrb/builtin/generator/fastapp_module/add.py +90 -67
- zrb/builtin/generator/fastapp_module/helper.py +141 -155
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/api.py +3 -2
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/table.py +3 -3
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/event.py +3 -5
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/migrate.py +2 -4
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/register_module.py +10 -11
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/rpc.py +3 -5
- zrb/builtin/generator/pip_package/add.py +39 -40
- zrb/builtin/generator/pip_package/template/_automate/snake_zrb_package_name/local.py +30 -30
- zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/__init__.py +1 -0
- zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/__main__.py +1 -0
- zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/util.py +2 -2
- zrb/builtin/generator/plugin/create.py +39 -36
- zrb/builtin/generator/plugin/template/src/snake_zrb_package_name/__init__.py +1 -1
- zrb/builtin/generator/plugin/template/src/snake_zrb_package_name/__main__.py +1 -0
- zrb/builtin/generator/plugin/template/src/snake_zrb_package_name/task/example_task.py +6 -4
- zrb/builtin/generator/plugin/template/zrb_init.py +27 -27
- zrb/builtin/generator/project/create.py +38 -46
- zrb/builtin/generator/project/template/.flake8 +3 -0
- zrb/builtin/generator/project/template/project.sh +19 -10
- zrb/builtin/generator/project_task/task_factory.py +60 -61
- zrb/builtin/generator/project_task/template/_automate/_project/__init__.py +2 -2
- zrb/builtin/generator/project_task/template/_automate/_project/build_project_images.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/deploy_project.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/destroy_project.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/push_project_images.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/remove_project_containers.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/start_project.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/start_project_containers.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/stop_project_containers.py +4 -4
- zrb/builtin/generator/python_task/add.py +25 -33
- zrb/builtin/generator/python_task/template/_automate/snake_zrb_task_name.py +8 -7
- zrb/builtin/generator/simple_python_app/add.py +81 -75
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/_common.py +14 -15
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/container.py +46 -61
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/deployment.py +34 -32
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/image.py +19 -22
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/local.py +23 -25
- zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/deployment/__main__.py +24 -32
- zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/src/main.py +18 -14
- zrb/builtin/git.py +46 -46
- zrb/builtin/group.py +13 -34
- zrb/builtin/helper/reccuring_action.py +26 -29
- zrb/builtin/md5.py +17 -30
- zrb/builtin/process.py +19 -19
- zrb/builtin/project.py +13 -15
- zrb/builtin/say.py +69 -88
- zrb/builtin/schedule.py +15 -19
- zrb/builtin/ubuntu.py +44 -35
- zrb/builtin/update.py +5 -5
- zrb/builtin/version.py +3 -7
- zrb/builtin/watch_changes.py +24 -25
- zrb/config/config.py +19 -18
- zrb/helper/accessories/color.py +18 -6
- zrb/helper/accessories/icon.py +24 -3
- zrb/helper/accessories/name.py +120 -28
- zrb/helper/advertisement.py +9 -13
- zrb/helper/callable.py +2 -4
- zrb/helper/cli.py +27 -31
- zrb/helper/codemod/add_argument_to_function.py +3 -4
- zrb/helper/codemod/add_argument_to_function_call.py +4 -7
- zrb/helper/codemod/add_assert_resource.py +7 -7
- zrb/helper/codemod/add_function_call.py +3 -5
- zrb/helper/codemod/add_import_module.py +15 -26
- zrb/helper/codemod/add_key_value_to_dict.py +7 -10
- zrb/helper/codemod/add_property_to_class.py +10 -8
- zrb/helper/codemod/add_upstream_to_task.py +21 -33
- zrb/helper/codemod/append_code_to_function.py +6 -13
- zrb/helper/codemod/format_code.py +2 -1
- zrb/helper/default_env.py +25 -25
- zrb/helper/docker_compose/fetch_external_env.py +18 -18
- zrb/helper/docker_compose/file.py +5 -4
- zrb/helper/docstring.py +44 -47
- zrb/helper/env_map/fetch.py +7 -12
- zrb/helper/file/copy_tree.py +12 -17
- zrb/helper/file/match.py +6 -7
- zrb/helper/file/text.py +8 -6
- zrb/helper/git/detect_changes.py +9 -8
- zrb/helper/loader/load_module.py +14 -13
- zrb/helper/log.py +4 -3
- zrb/helper/map/conversion.py +4 -5
- zrb/helper/python_task.py +2 -4
- zrb/helper/render_data.py +25 -18
- zrb/helper/string/constant.py +2 -2
- zrb/helper/string/conversion.py +17 -16
- zrb/helper/string/jinja.py +2 -2
- zrb/helper/typecheck.py +6 -4
- zrb/helper/typing.py +10 -2
- zrb/helper/util.py +44 -40
- zrb/task/any_task.py +251 -251
- zrb/task/base_remote_cmd_task.py +76 -59
- zrb/task/base_task/base_task.py +95 -108
- zrb/task/base_task/component/base_task_model.py +73 -71
- zrb/task/base_task/component/common_task_model.py +42 -29
- zrb/task/base_task/component/pid_model.py +3 -5
- zrb/task/base_task/component/renderer.py +26 -36
- zrb/task/base_task/component/trackers.py +6 -9
- zrb/task/checker.py +14 -9
- zrb/task/cmd_task.py +102 -100
- zrb/task/decorator.py +19 -13
- zrb/task/docker_compose_task.py +127 -98
- zrb/task/flow_task.py +16 -19
- zrb/task/http_checker.py +40 -36
- zrb/task/notifier.py +50 -38
- zrb/task/parallel.py +3 -3
- zrb/task/path_checker.py +34 -27
- zrb/task/path_watcher.py +49 -40
- zrb/task/port_checker.py +33 -26
- zrb/task/recurring_task.py +36 -42
- zrb/task/remote_cmd_task.py +31 -28
- zrb/task/resource_maker.py +66 -52
- zrb/task/rsync_task.py +24 -21
- zrb/task/task.py +4 -3
- zrb/task/time_watcher.py +36 -31
- zrb/task_env/constant.py +1 -1
- zrb/task_env/env.py +33 -31
- zrb/task_env/env_file.py +24 -23
- zrb/task_group/group.py +27 -30
- zrb/task_input/any_input.py +18 -16
- zrb/task_input/base_input.py +26 -26
- zrb/task_input/bool_input.py +6 -6
- zrb/task_input/choice_input.py +11 -9
- zrb/task_input/constant.py +1 -1
- zrb/task_input/float_input.py +6 -5
- zrb/task_input/int_input.py +8 -8
- zrb/task_input/password_input.py +9 -9
- zrb/task_input/str_input.py +8 -8
- zrb/task_input/task_input.py +4 -2
- {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/METADATA +3 -1
- {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/RECORD +316 -315
- {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/LICENSE +0 -0
- {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/WHEEL +0 -0
- {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/entry_points.txt +0 -0
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/messagebus/caller.py
CHANGED
@@ -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
|
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
|
-
|
58
|
-
f
|
55
|
+
"🤙 [messagebus-rpc-caller] "
|
56
|
+
+ f"Timeout while waiting for reply event {reply_event_name}"
|
59
57
|
)
|
60
58
|
raise Exception(
|
61
|
-
f
|
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
|
-
|
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
|
-
|
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(
|
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(
|
84
|
+
self.logger.error("🤙 [messagebus-rpc-caller]", exc_info=True)
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/messagebus/server.py
CHANGED
@@ -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
|
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
|
-
|
38
|
-
f
|
39
|
-
f
|
40
|
-
f
|
41
|
-
f
|
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.
|
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
|
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(
|
6
|
-
TResult = TypeVar(
|
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
|
-
|
43
|
-
|
44
|
-
|
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(
|
51
|
-
args=dictionary.get(
|
52
|
-
kwargs=dictionary.get(
|
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(
|
75
|
-
error=dictionary.get('error', '')
|
62
|
+
result=dictionary.get("result", None), error=dictionary.get("error", "")
|
76
63
|
)
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/schema/base_schema.py
CHANGED
@@ -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):
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/serializer/serializer.py
CHANGED
@@ -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
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
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 (
|
16
|
+
if value.lower() in ("0", "false", "no", "n"):
|
17
17
|
return False
|
18
|
-
if value.lower() in (
|
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.
|
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__ ==
|
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.
|
7
|
-
|
8
|
-
|
9
|
-
from module.auth.entity.
|
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)
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/__init__.py
CHANGED
@@ -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
|
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
|
7
|
-
|
4
|
+
from module.auth.core import AccessTokenScheme, create_oauth2_bearer_access_token_scheme
|
8
5
|
|
9
|
-
access_token_scheme: AccessTokenScheme =
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
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,
|
3
|
-
|
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() ==
|
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
|
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=
|
7
|
-
is_guest_rpc_name=
|
8
|
-
is_user_authorized_rpc_name=
|
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,16 +1,14 @@
|
|
1
|
+
from component.messagebus import publisher
|
1
2
|
from config import (
|
2
|
-
|
3
|
-
|
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,17 +1,18 @@
|
|
1
1
|
from config import (
|
2
|
-
|
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
|
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() ==
|
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
|
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
|
-
|
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
|
4
|
-
|
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
|
5
|
-
|
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
|