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/task/base_task/base_task.py
CHANGED
@@ -1,49 +1,50 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
import asyncio
|
2
|
+
import copy
|
3
|
+
|
4
|
+
from zrb.advertisement import advertisements
|
5
|
+
from zrb.config.config import show_advertisement
|
6
|
+
from zrb.helper.accessories.name import get_random_name
|
7
|
+
from zrb.helper.advertisement import get_advertisement
|
4
8
|
from zrb.helper.callable import run_async
|
9
|
+
from zrb.helper.map.conversion import to_str as map_to_str
|
10
|
+
from zrb.helper.string.conversion import to_variable_name
|
11
|
+
from zrb.helper.string.modification import double_quote
|
5
12
|
from zrb.helper.typecheck import typechecked
|
13
|
+
from zrb.helper.typing import Any, Callable, Iterable, List, Mapping, Optional, Union
|
6
14
|
from zrb.task.any_task import AnyTask
|
7
15
|
from zrb.task.any_task_event_handler import (
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
16
|
+
OnFailed,
|
17
|
+
OnReady,
|
18
|
+
OnRetry,
|
19
|
+
OnSkipped,
|
20
|
+
OnStarted,
|
21
|
+
OnTriggered,
|
22
|
+
OnWaiting,
|
12
23
|
)
|
13
|
-
from zrb.task.base_task.component.renderer import Renderer
|
14
24
|
from zrb.task.base_task.component.base_task_model import BaseTaskModel
|
25
|
+
from zrb.task.base_task.component.renderer import Renderer
|
26
|
+
from zrb.task.base_task.component.trackers import AttemptTracker, FinishTracker
|
15
27
|
from zrb.task.parallel import AnyParallel
|
16
|
-
from zrb.advertisement import advertisements
|
17
|
-
from zrb.task_group.group import Group
|
18
28
|
from zrb.task_env.env import Env
|
19
29
|
from zrb.task_env.env_file import EnvFile
|
30
|
+
from zrb.task_group.group import Group
|
20
31
|
from zrb.task_input.any_input import AnyInput
|
21
|
-
from zrb.helper.accessories.name import get_random_name
|
22
|
-
from zrb.helper.advertisement import get_advertisement
|
23
|
-
from zrb.helper.string.conversion import to_variable_name
|
24
|
-
from zrb.helper.string.modification import double_quote
|
25
|
-
from zrb.helper.map.conversion import to_str as map_to_str
|
26
|
-
from zrb.config.config import show_advertisement
|
27
|
-
|
28
|
-
import asyncio
|
29
|
-
import copy
|
30
32
|
|
31
33
|
|
32
34
|
@typechecked
|
33
|
-
class BaseTask(
|
34
|
-
|
35
|
-
):
|
36
|
-
'''
|
35
|
+
class BaseTask(FinishTracker, AttemptTracker, Renderer, BaseTaskModel, AnyTask):
|
36
|
+
"""
|
37
37
|
Base class for all tasks.
|
38
38
|
Every task definition should be extended from this class.
|
39
|
-
|
39
|
+
"""
|
40
|
+
|
40
41
|
__xcom: Mapping[str, Mapping[str, str]] = {}
|
41
42
|
|
42
43
|
def __init__(
|
43
44
|
self,
|
44
45
|
name: str,
|
45
46
|
group: Optional[Group] = None,
|
46
|
-
description: str =
|
47
|
+
description: str = "",
|
47
48
|
inputs: List[AnyInput] = [],
|
48
49
|
envs: Iterable[Env] = [],
|
49
50
|
env_files: Iterable[EnvFile] = [],
|
@@ -63,7 +64,7 @@ class BaseTask(
|
|
63
64
|
on_retry: Optional[OnRetry] = None,
|
64
65
|
on_failed: Optional[OnFailed] = None,
|
65
66
|
should_execute: Union[bool, str, Callable[..., bool]] = True,
|
66
|
-
return_upstream_result: bool = False
|
67
|
+
return_upstream_result: bool = False,
|
67
68
|
):
|
68
69
|
# init properties
|
69
70
|
retry_interval = retry_interval if retry_interval >= 0 else 0
|
@@ -97,7 +98,7 @@ class BaseTask(
|
|
97
98
|
on_retry=on_retry,
|
98
99
|
on_failed=on_failed,
|
99
100
|
should_execute=should_execute,
|
100
|
-
return_upstream_result=return_upstream_result
|
101
|
+
return_upstream_result=return_upstream_result,
|
101
102
|
)
|
102
103
|
# init private flags
|
103
104
|
self.__is_keyval_set = False
|
@@ -119,52 +120,50 @@ class BaseTask(
|
|
119
120
|
return operand
|
120
121
|
|
121
122
|
def set_task_xcom(self, key: str, value: Any) -> str:
|
122
|
-
return self.set_xcom(
|
123
|
-
key='.'.join([self.get_name(), key]),
|
124
|
-
value=value
|
125
|
-
)
|
123
|
+
return self.set_xcom(key=".".join([self.get_name(), key]), value=value)
|
126
124
|
|
127
125
|
def set_xcom(self, key: str, value: Any) -> str:
|
128
126
|
execution_id = self.get_execution_id()
|
129
127
|
if execution_id not in self.__xcom:
|
130
128
|
self.__xcom[execution_id] = {}
|
131
129
|
execution_id = self.get_execution_id()
|
132
|
-
self.__xcom[execution_id][key] = f
|
133
|
-
return
|
130
|
+
self.__xcom[execution_id][key] = f"{value}"
|
131
|
+
return ""
|
134
132
|
|
135
133
|
def get_xcom(self, key: str) -> str:
|
136
134
|
execution_id = self.get_execution_id()
|
137
135
|
if execution_id not in self.__xcom:
|
138
|
-
return
|
139
|
-
return self.__xcom[execution_id].get(key,
|
136
|
+
return ""
|
137
|
+
return self.__xcom[execution_id].get(key, "")
|
140
138
|
|
141
|
-
def clear_xcom(self, execution_id: str =
|
142
|
-
if execution_id ==
|
139
|
+
def clear_xcom(self, execution_id: str = "") -> str:
|
140
|
+
if execution_id == "":
|
143
141
|
execution_id = self.get_execution_id()
|
144
142
|
if execution_id in self.__xcom:
|
145
143
|
del self.__xcom[execution_id]
|
146
|
-
return
|
144
|
+
return ""
|
147
145
|
|
148
146
|
def copy(self) -> AnyTask:
|
149
147
|
return copy.deepcopy(self)
|
150
148
|
|
151
149
|
def to_function(
|
152
150
|
self,
|
153
|
-
env_prefix: str =
|
151
|
+
env_prefix: str = "",
|
154
152
|
raise_error: bool = True,
|
155
153
|
is_async: bool = False,
|
156
|
-
show_done_info: bool = True
|
154
|
+
show_done_info: bool = True,
|
157
155
|
) -> Callable[..., Any]:
|
158
156
|
async def function(*args: Any, **kwargs: Any) -> Any:
|
159
|
-
self.log_info(
|
157
|
+
self.log_info("Copy task")
|
160
158
|
self_cp = self.copy()
|
161
159
|
return await self_cp._run_and_check_all(
|
162
160
|
env_prefix=env_prefix,
|
163
161
|
raise_error=raise_error,
|
164
162
|
args=args,
|
165
163
|
kwargs=kwargs,
|
166
|
-
show_done_info=show_done_info
|
164
|
+
show_done_info=show_done_info,
|
167
165
|
)
|
166
|
+
|
168
167
|
if is_async:
|
169
168
|
return function
|
170
169
|
return lambda *args, **kwargs: asyncio.run(function(*args, **kwargs))
|
@@ -175,42 +174,42 @@ class BaseTask(
|
|
175
174
|
return None
|
176
175
|
|
177
176
|
async def on_triggered(self):
|
178
|
-
self.log_info(
|
177
|
+
self.log_info("State: triggered")
|
179
178
|
execution_id = self.get_execution_id()
|
180
|
-
self.log_info(f
|
179
|
+
self.log_info(f"Execution id: {execution_id}")
|
181
180
|
if self._on_triggered is not None:
|
182
181
|
await run_async(self._on_triggered, self)
|
183
182
|
|
184
183
|
async def on_waiting(self):
|
185
|
-
self.log_info(
|
184
|
+
self.log_info("State: waiting")
|
186
185
|
if self._on_waiting is not None:
|
187
186
|
await run_async(self._on_waiting, self)
|
188
187
|
|
189
188
|
async def on_skipped(self):
|
190
|
-
self.log_info(
|
189
|
+
self.log_info("State: skipped")
|
191
190
|
if self._on_skipped is not None:
|
192
191
|
await run_async(self._on_skipped, self)
|
193
192
|
|
194
193
|
async def on_started(self):
|
195
|
-
self.log_info(
|
194
|
+
self.log_info("State: started")
|
196
195
|
if self._on_started is not None:
|
197
196
|
await run_async(self._on_started, self)
|
198
197
|
|
199
198
|
async def on_ready(self):
|
200
|
-
self.log_info(
|
199
|
+
self.log_info("State: ready")
|
201
200
|
if self._on_ready is not None:
|
202
201
|
await run_async(self._on_ready, self)
|
203
202
|
|
204
203
|
async def on_failed(self, is_last_attempt: bool, exception: Exception):
|
205
|
-
failed_state_message =
|
204
|
+
failed_state_message = "State failed"
|
206
205
|
if is_last_attempt:
|
207
|
-
failed_state_message =
|
206
|
+
failed_state_message = "State failed (last attempt)"
|
208
207
|
self.log_info(failed_state_message)
|
209
208
|
if self._on_failed is not None:
|
210
209
|
await run_async(self._on_failed, self, is_last_attempt, exception)
|
211
210
|
|
212
211
|
async def on_retry(self):
|
213
|
-
self.log_info(
|
212
|
+
self.log_info("State: retry")
|
214
213
|
if self._on_retry is not None:
|
215
214
|
await run_async(self._on_retry, self)
|
216
215
|
|
@@ -223,42 +222,40 @@ class BaseTask(
|
|
223
222
|
raise_error: bool,
|
224
223
|
args: Iterable[Any],
|
225
224
|
kwargs: Mapping[str, Any],
|
226
|
-
show_done_info: bool = True
|
225
|
+
show_done_info: bool = True,
|
227
226
|
):
|
228
227
|
try:
|
229
228
|
self._start_timer()
|
230
|
-
if self.get_execution_id() ==
|
229
|
+
if self.get_execution_id() == "":
|
231
230
|
self._set_execution_id(
|
232
231
|
get_random_name(add_random_digit=True, digit_count=5)
|
233
232
|
)
|
234
233
|
self._propagate_execution_id()
|
235
|
-
self.log_info(
|
234
|
+
self.log_info("Set input and env map")
|
236
235
|
await self._set_keyval(kwargs=kwargs, env_prefix=env_prefix)
|
237
|
-
self.log_info(
|
236
|
+
self.log_info("Set run kwargs")
|
238
237
|
new_kwargs = self.get_input_map()
|
239
238
|
# make sure args and kwargs['_args'] are the same
|
240
|
-
self.log_info(
|
239
|
+
self.log_info("Set run args")
|
241
240
|
new_args = copy.deepcopy(args)
|
242
|
-
if len(args) == 0 and
|
243
|
-
new_args = kwargs[
|
244
|
-
new_kwargs[
|
241
|
+
if len(args) == 0 and "_args" in kwargs:
|
242
|
+
new_args = kwargs["_args"]
|
243
|
+
new_kwargs["_args"] = new_args
|
245
244
|
# inject self as input_map['_task']
|
246
|
-
new_kwargs[
|
245
|
+
new_kwargs["_task"] = self
|
247
246
|
self._set_args(new_args)
|
248
247
|
self._set_kwargs(new_kwargs)
|
249
248
|
# run the task
|
250
249
|
coroutines = [
|
251
|
-
asyncio.create_task(
|
252
|
-
|
253
|
-
),
|
254
|
-
asyncio.create_task(self._run_all(*new_args, **new_kwargs))
|
250
|
+
asyncio.create_task(self._loop_check(show_done_info=show_done_info)),
|
251
|
+
asyncio.create_task(self._run_all(*new_args, **new_kwargs)),
|
255
252
|
]
|
256
253
|
results = await asyncio.gather(*coroutines)
|
257
254
|
result = results[-1]
|
258
255
|
self._print_result(result)
|
259
256
|
return result
|
260
257
|
except Exception as e:
|
261
|
-
self.log_error(f
|
258
|
+
self.log_error(f"{e}")
|
262
259
|
if raise_error:
|
263
260
|
raise
|
264
261
|
finally:
|
@@ -268,9 +265,9 @@ class BaseTask(
|
|
268
265
|
self._play_bell()
|
269
266
|
|
270
267
|
async def _loop_check(self, show_done_info: bool = False) -> bool:
|
271
|
-
self.log_info(
|
268
|
+
self.log_info("Start readiness checking")
|
272
269
|
while not await self._cached_check():
|
273
|
-
self.log_debug(
|
270
|
+
self.log_debug("Task is not ready")
|
274
271
|
await asyncio.sleep(self._checking_interval)
|
275
272
|
self._end_timer()
|
276
273
|
if show_done_info:
|
@@ -283,7 +280,7 @@ class BaseTask(
|
|
283
280
|
|
284
281
|
async def _cached_check(self) -> bool:
|
285
282
|
if self.__is_check_triggered:
|
286
|
-
self.log_debug(
|
283
|
+
self.log_debug("Waiting readiness flag to be set")
|
287
284
|
while not self.__is_ready:
|
288
285
|
await asyncio.sleep(0.1)
|
289
286
|
return True
|
@@ -291,28 +288,26 @@ class BaseTask(
|
|
291
288
|
check_result = await self._check()
|
292
289
|
if check_result:
|
293
290
|
self.__is_ready = True
|
294
|
-
self.log_debug(
|
291
|
+
self.log_debug("Set readiness flag to True")
|
295
292
|
return check_result
|
296
293
|
|
297
294
|
async def _check(self) -> bool:
|
298
|
-
|
295
|
+
"""
|
299
296
|
Check current task readiness.
|
300
297
|
- If self.checkers is defined,
|
301
298
|
this will return True once every self.checkers is completed
|
302
299
|
- Otherwise, this will return check method's return value.
|
303
|
-
|
300
|
+
"""
|
304
301
|
if len(self._get_checkers()) == 0:
|
305
302
|
return await run_async(self.check)
|
306
|
-
self.log_debug(
|
303
|
+
self.log_debug("Waiting execution to be started")
|
307
304
|
while not self.__is_execution_started:
|
308
305
|
# Don't start checking before the execution itself has been started
|
309
306
|
await asyncio.sleep(0.1)
|
310
307
|
check_coroutines: Iterable[asyncio.Task] = []
|
311
308
|
for checker_task in self._get_checkers():
|
312
309
|
checker_task._set_execution_id(self.get_execution_id())
|
313
|
-
check_coroutines.append(
|
314
|
-
asyncio.create_task(checker_task._run_all())
|
315
|
-
)
|
310
|
+
check_coroutines.append(asyncio.create_task(checker_task._run_all()))
|
316
311
|
await asyncio.gather(*check_coroutines)
|
317
312
|
return True
|
318
313
|
|
@@ -323,9 +318,7 @@ class BaseTask(
|
|
323
318
|
self._lock_upstreams()
|
324
319
|
for upstream_task in self._get_upstreams():
|
325
320
|
upstream_task._set_execution_id(self.get_execution_id())
|
326
|
-
coroutines.append(asyncio.create_task(
|
327
|
-
upstream_task._run_all(**kwargs)
|
328
|
-
))
|
321
|
+
coroutines.append(asyncio.create_task(upstream_task._run_all(**kwargs)))
|
329
322
|
# Add current task to processes
|
330
323
|
coroutines.append(self._cached_run(*args, **kwargs))
|
331
324
|
# Wait everything to complete
|
@@ -336,7 +329,7 @@ class BaseTask(
|
|
336
329
|
|
337
330
|
async def _cached_run(self, *args: Any, **kwargs: Any) -> Any:
|
338
331
|
if self.__is_execution_triggered:
|
339
|
-
self.log_debug(
|
332
|
+
self.log_debug("Task has been triggered")
|
340
333
|
return
|
341
334
|
await self.on_triggered()
|
342
335
|
self.__is_execution_triggered = True
|
@@ -345,15 +338,15 @@ class BaseTask(
|
|
345
338
|
upstream_check_processes: Iterable[asyncio.Task] = []
|
346
339
|
self._lock_upstreams()
|
347
340
|
for upstream_task in self._get_upstreams():
|
348
|
-
upstream_check_processes.append(
|
349
|
-
upstream_task._loop_check()
|
350
|
-
)
|
341
|
+
upstream_check_processes.append(
|
342
|
+
asyncio.create_task(upstream_task._loop_check())
|
343
|
+
)
|
351
344
|
# wait all upstream checkers to complete
|
352
345
|
await asyncio.gather(*upstream_check_processes)
|
353
346
|
# mark execution as started, so that checkers can start checking
|
354
347
|
self.__is_execution_started = True
|
355
348
|
local_kwargs = dict(kwargs)
|
356
|
-
local_kwargs[
|
349
|
+
local_kwargs["_task"] = self
|
357
350
|
if not await self._check_should_execute(*args, **local_kwargs):
|
358
351
|
await self.on_skipped()
|
359
352
|
await self._mark_done()
|
@@ -362,9 +355,7 @@ class BaseTask(
|
|
362
355
|
result: Any = None
|
363
356
|
while self._should_attempt():
|
364
357
|
try:
|
365
|
-
self.log_debug(
|
366
|
-
f'Started with args: {args} and kwargs: {local_kwargs}'
|
367
|
-
)
|
358
|
+
self.log_debug(f"Started with args: {args} and kwargs: {local_kwargs}")
|
368
359
|
await self.on_started()
|
369
360
|
result = await run_async(self.run, *args, **local_kwargs)
|
370
361
|
break
|
@@ -374,12 +365,12 @@ class BaseTask(
|
|
374
365
|
if is_last_attempt:
|
375
366
|
raise e
|
376
367
|
attempt = self._get_attempt()
|
377
|
-
self.log_error(f
|
368
|
+
self.log_error(f"Encounter error on attempt {attempt}")
|
378
369
|
self._increase_attempt()
|
379
370
|
await asyncio.sleep(self._retry_interval)
|
380
371
|
await self.on_retry()
|
381
|
-
self.set_xcom(self.get_name(), f
|
382
|
-
self.log_debug(f
|
372
|
+
self.set_xcom(self.get_name(), f"{result}")
|
373
|
+
self.log_debug(f"XCom: {self.__xcom}")
|
383
374
|
await self._mark_done()
|
384
375
|
return result
|
385
376
|
|
@@ -404,35 +395,33 @@ class BaseTask(
|
|
404
395
|
# set upstreams keyval
|
405
396
|
self._lock_upstreams()
|
406
397
|
for upstream_task in self._get_upstreams():
|
407
|
-
upstream_coroutines.append(
|
408
|
-
|
409
|
-
kwargs=new_kwargs, env_prefix=env_prefix
|
398
|
+
upstream_coroutines.append(
|
399
|
+
asyncio.create_task(
|
400
|
+
upstream_task._set_keyval(kwargs=new_kwargs, env_prefix=env_prefix)
|
410
401
|
)
|
411
|
-
)
|
402
|
+
)
|
412
403
|
# set checker keyval
|
413
404
|
checker_coroutines = []
|
414
405
|
for checker_task in self._get_checkers():
|
415
406
|
checker_task.add_input(*self._get_inputs())
|
416
407
|
checker_task.add_env(*self._get_envs())
|
417
|
-
checker_coroutines.append(
|
418
|
-
|
419
|
-
kwargs=new_kwargs, env_prefix=env_prefix
|
408
|
+
checker_coroutines.append(
|
409
|
+
asyncio.create_task(
|
410
|
+
checker_task._set_keyval(kwargs=new_kwargs, env_prefix=env_prefix)
|
420
411
|
)
|
421
|
-
)
|
412
|
+
)
|
422
413
|
# wait for checker and upstreams
|
423
414
|
coroutines = checker_coroutines + upstream_coroutines
|
424
415
|
await asyncio.gather(*coroutines)
|
425
416
|
|
426
|
-
async def _set_local_keyval(
|
427
|
-
self, kwargs: Mapping[str, Any], env_prefix: str = ''
|
428
|
-
):
|
417
|
+
async def _set_local_keyval(self, kwargs: Mapping[str, Any], env_prefix: str = ""):
|
429
418
|
if self.__is_keyval_set:
|
430
419
|
return True
|
431
420
|
self.__is_keyval_set = True
|
432
421
|
# set task for rendering
|
433
422
|
self._set_task(self)
|
434
423
|
# Set input_map for rendering
|
435
|
-
self.log_info(
|
424
|
+
self.log_info("Set input map")
|
436
425
|
for task_input in self._get_combined_inputs():
|
437
426
|
input_name = to_variable_name(task_input.get_name())
|
438
427
|
input_value = kwargs.get(input_name, task_input.get_default())
|
@@ -440,21 +429,19 @@ class BaseTask(
|
|
440
429
|
input_value = self.render_any(input_value)
|
441
430
|
self._set_input_map(input_name, input_value)
|
442
431
|
self.log_debug(
|
443
|
-
|
432
|
+
"Input map:\n" + map_to_str(self.get_input_map(), item_prefix=" ")
|
444
433
|
)
|
445
|
-
self.log_info(
|
434
|
+
self.log_info("Merging task envs, task env files, and native envs")
|
446
435
|
# Set env_map for rendering
|
447
436
|
for env_name, env in self._get_combined_env().items():
|
448
437
|
env_value = env.get(env_prefix)
|
449
438
|
if env.should_render():
|
450
439
|
env_value = self.render_any(env_value)
|
451
440
|
self._set_env_map(env_name, env_value)
|
452
|
-
self._set_env_map(
|
453
|
-
self.log_debug(
|
454
|
-
'Env map:\n' + map_to_str(self.get_env_map(), item_prefix=' ')
|
455
|
-
)
|
441
|
+
self._set_env_map("_ZRB_EXECUTION_ID", self.get_execution_id())
|
442
|
+
self.log_debug("Env map:\n" + map_to_str(self.get_env_map(), item_prefix=" "))
|
456
443
|
|
457
444
|
def __repr__(self) -> str:
|
458
445
|
cls_name = self.__class__.__name__
|
459
446
|
full_cli_name = double_quote(self._get_full_cli_name())
|
460
|
-
return f
|
447
|
+
return f"<{cls_name} {full_cli_name}>"
|