zrb 0.23.4__py3-none-any.whl → 0.24.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 +2 -0
- zrb/action/runner.py +6 -5
- zrb/advertisement.py +1 -2
- zrb/builtin/base64/decode.py +1 -1
- zrb/builtin/base64/encode.py +1 -1
- zrb/builtin/devtool/install/_helper.py +2 -1
- zrb/builtin/devtool/install/_input.py +2 -2
- zrb/builtin/env/get.py +3 -2
- zrb/builtin/eval.py +2 -1
- zrb/builtin/git/get_file_changes.py +2 -1
- zrb/builtin/md5/hash.py +1 -1
- zrb/builtin/md5/sum.py +1 -1
- zrb/builtin/project/_helper.py +3 -3
- zrb/builtin/project/add/app/generator/generator.py +1 -1
- zrb/builtin/project/add/app/generator/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/snake_zrb_generator_name/snake_zrb_generator_name.py +1 -1
- zrb/builtin/project/add/app/generator/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/snake_zrb_generator_name/template/_automate/snake_zrb_app_name/container/remove.py +1 -1
- zrb/builtin/project/add/app/generator/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/snake_zrb_generator_name/template/_automate/snake_zrb_app_name/container/start.py +6 -7
- zrb/builtin/project/add/app/generator/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/snake_zrb_generator_name/template/_automate/snake_zrb_app_name/container/stop.py +1 -1
- zrb/builtin/project/add/app/generator/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/snake_zrb_generator_name/template/src/kebab-zrb-app-name/docker-compose.yml +0 -2
- zrb/builtin/project/add/app/python/python.py +1 -1
- zrb/builtin/project/add/app/python/template/_automate/snake_zrb_app_name/container/remove.py +1 -1
- zrb/builtin/project/add/app/python/template/_automate/snake_zrb_app_name/container/start.py +6 -7
- zrb/builtin/project/add/app/python/template/_automate/snake_zrb_app_name/container/stop.py +1 -1
- zrb/builtin/project/add/app/python/template/src/kebab-zrb-app-name/docker-compose.yml +0 -2
- zrb/builtin/project/add/fastapp/app/app.py +3 -1
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/_helper.py +2 -53
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/_service_config.py +1 -1
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/microservices/_helper.py +2 -2
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/microservices/start.py +5 -6
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/monolith/_helper.py +2 -2
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/monolith/start.py +5 -6
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/support/_helper.py +5 -3
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/support/start.py +4 -6
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/frontend/build-once.sh +1 -1
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/frontend/build.sh +1 -1
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/microservices/_helper.py +3 -5
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/microservices/start.py +3 -3
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/microservices/{start_microservices.py → start_services.py} +2 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/.generator-version +1 -0
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/deployment/_common.py +5 -5
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/deployment/app_helper.py +5 -5
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/docker-compose.yml +2 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/loadtest/locustfile.py +1 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/loadtest/template.env +1 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/error.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/kafka/admin.py +4 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/kafka/consumer.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/messagebus.py +4 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/mock.py +4 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/rabbitmq/admin.py +4 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/rabbitmq/consumer.py +3 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/model/repo_model.py +3 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/repo/db_repo.py +7 -6
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/repo/repo.py +2 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/repo/search_filter.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/rpc/messagebus/caller.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/rpc/messagebus/server.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/rpc/rpc.py +3 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/serializer/serializer.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/config.py +59 -62
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/helper/async_task.py +1 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/app/app.py +28 -28
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/app/app_lifespan.py +15 -15
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/app/app_state.py +2 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/db_connection.py +14 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/frontend_index.py +2 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/log.py +6 -6
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/messagebus.py +33 -33
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/rpc.py +9 -9
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/component/access_token/scheme.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/component/access_token/util.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/group/repo.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/group/rpc.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/rpc.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/user/api.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/user/model.py +3 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/user/repo.py +3 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/user/rpc.py +3 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/access_token_scheme.py +2 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/access_token_util.py +7 -7
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/model/user_model.py +6 -6
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/refresh_token_util.py +7 -7
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/user.py +18 -18
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/migrate.py +2 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/register_module.py +8 -8
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/register_permission.py +2 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/schema/group.py +3 -5
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/schema/permission.py +1 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/schema/request.py +1 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/schema/user.py +5 -7
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/entity/activity/event.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/entity/activity/rpc.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/migrate.py +2 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/register_module.py +8 -8
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/schema/activity.py +1 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/template.env +5 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_group_crud.py +8 -8
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_permission_crud.py +8 -8
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_user_crud.py +8 -8
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_user_login.py +15 -15
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/test_liveness_and_readiness.py +4 -4
- zrb/builtin/project/add/fastapp/crud/_helper/__init__.py +7 -0
- zrb/builtin/project/add/fastapp/crud/_helper/_common.py +8 -0
- zrb/builtin/project/add/fastapp/crud/_helper/register_api.py +45 -0
- zrb/builtin/project/add/fastapp/crud/_helper/register_permission.py +40 -0
- zrb/builtin/project/add/fastapp/crud/_helper/register_rpc.py +45 -0
- zrb/builtin/project/add/fastapp/crud/_task_factory.py +1 -2
- zrb/builtin/project/add/fastapp/crud/crud.py +4 -25
- zrb/builtin/project/add/fastapp/crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/repo.py +12 -1
- zrb/builtin/project/add/fastapp/crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/rpc.py +2 -1
- zrb/builtin/project/add/fastapp/crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/schema/snake_zrb_entity_name.py +3 -2
- zrb/builtin/project/add/fastapp/crud/template/src/kebab-zrb-app-name/test/snake_zrb_module_name/test_snake_zrb_entity_name.py +9 -8
- zrb/builtin/project/add/fastapp/field/_helper/__init__.py +17 -0
- zrb/builtin/project/add/fastapp/field/_helper/_common.py +102 -0
- zrb/builtin/project/add/fastapp/field/_helper/inject_delete_page.py +49 -0
- zrb/builtin/project/add/fastapp/field/_helper/inject_detail_page.py +49 -0
- zrb/builtin/project/add/fastapp/field/_helper/inject_insert_page.py +62 -0
- zrb/builtin/project/add/fastapp/field/_helper/inject_list_page.py +47 -0
- zrb/builtin/project/add/fastapp/field/_helper/inject_repo.py +47 -0
- zrb/builtin/project/add/fastapp/field/_helper/inject_schema.py +45 -0
- zrb/builtin/project/add/fastapp/field/_helper/inject_test.py +49 -0
- zrb/builtin/project/add/fastapp/field/_helper/inject_update_page.py +50 -0
- zrb/builtin/project/add/fastapp/field/_input.py +14 -2
- zrb/builtin/project/add/fastapp/field/field.py +52 -70
- zrb/builtin/project/add/fastapp/module/_helper/__init__.py +17 -0
- zrb/builtin/project/add/fastapp/module/_helper/append_all_disabled_env.py +22 -0
- zrb/builtin/project/add/fastapp/module/_helper/append_all_enabled_env.py +22 -0
- zrb/builtin/project/add/fastapp/module/_helper/append_deployment_template_env.py +25 -0
- zrb/builtin/project/add/fastapp/module/_helper/append_src_template_env.py +25 -0
- zrb/builtin/project/add/fastapp/module/_helper/create_app_config.py +29 -0
- zrb/builtin/project/add/fastapp/module/_helper/create_microservice_config.py +157 -0
- zrb/builtin/project/add/fastapp/module/_helper/register_migration.py +35 -0
- zrb/builtin/project/add/fastapp/module/_helper/register_module.py +33 -0
- zrb/builtin/project/add/fastapp/module/module.py +9 -38
- zrb/builtin/project/add/fastapp/module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/migrate.py +2 -2
- zrb/builtin/project/add/fastapp/module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/register_module.py +8 -8
- zrb/builtin/project/add/plugin/plugin.py +3 -3
- zrb/builtin/project/add/project_task/add.py +1 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/build.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/container/remove.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/container/start.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/container/stop.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/deploy.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/destroy.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/get_env.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/image/build.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/image/push.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/publish.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/start.py +2 -1
- zrb/builtin/project/add/task/cmd/add.py +1 -1
- zrb/builtin/project/add/task/docker_compose/add.py +1 -1
- zrb/builtin/project/add/task/docker_compose/template/src/kebab-zrb-task-name/docker-compose.yml +0 -2
- zrb/builtin/project/add/task/python/add.py +1 -1
- zrb/builtin/project/add/task/python/template/_automate/snake_zrb_task_name.py +1 -1
- zrb/builtin/project/create/_helper.py +1 -1
- zrb/builtin/project/create/create.py +3 -3
- zrb/builtin/say.py +3 -3
- zrb/builtin/version.py +5 -4
- zrb/config/config.py +14 -14
- zrb/helper/accessories/color.py +2 -1
- zrb/helper/advertisement.py +2 -1
- zrb/helper/callable.py +4 -1
- zrb/helper/cli.py +4 -4
- zrb/helper/codemod/add_import_module.py +3 -2
- zrb/helper/codemod/add_property_to_class.py +2 -1
- zrb/helper/default_env.py +2 -1
- zrb/helper/docker_compose/fetch_external_env.py +4 -2
- zrb/helper/docker_compose/file.py +3 -1
- zrb/helper/env_map/fetch.py +3 -2
- zrb/helper/file/copy_tree.py +2 -1
- zrb/helper/file/match.py +2 -2
- zrb/helper/git/detect_changes.py +1 -1
- zrb/helper/log.py +3 -3
- zrb/helper/map/conversion.py +3 -1
- zrb/helper/string/jinja.py +2 -1
- zrb/helper/string/parse_replacement.py +1 -1
- zrb/helper/typecheck.py +2 -2
- zrb/helper/typing.py +5 -27
- zrb/helper/util.py +13 -1
- zrb/runner.py +2 -2
- zrb/task/any_task.py +9 -17
- zrb/task/any_task_event_handler.py +3 -1
- zrb/task/base_remote_cmd_task.py +3 -10
- zrb/task/base_task/base_task.py +12 -11
- zrb/task/base_task/component/base_task_model.py +15 -22
- zrb/task/base_task/component/common_task_model.py +15 -22
- zrb/task/base_task/component/renderer.py +3 -1
- zrb/task/base_task/component/trackers.py +1 -1
- zrb/task/checker.py +2 -1
- zrb/task/cmd_task.py +8 -15
- zrb/task/decorator.py +3 -1
- zrb/task/docker_compose_start_task.py +146 -0
- zrb/task/docker_compose_task.py +43 -34
- zrb/task/flow_task.py +19 -17
- zrb/task/http_checker.py +3 -9
- zrb/task/looper.py +4 -2
- zrb/task/notifier.py +3 -1
- zrb/task/parallel.py +4 -4
- zrb/task/path_checker.py +6 -12
- zrb/task/path_watcher.py +5 -13
- zrb/task/port_checker.py +3 -9
- zrb/task/recurring_task.py +5 -4
- zrb/task/remote_cmd_task.py +2 -1
- zrb/task/resource_maker.py +6 -13
- zrb/task/rsync_task.py +3 -1
- zrb/task/server.py +13 -12
- zrb/task/time_watcher.py +3 -10
- zrb/task/watcher.py +2 -1
- zrb/task/wiki_task.py +4 -3
- zrb/task_env/env.py +2 -1
- zrb/task_env/env_file.py +7 -6
- zrb/task_group/group.py +8 -7
- zrb/task_input/any_input.py +4 -3
- zrb/task_input/base_input.py +7 -5
- zrb/task_input/bool_input.py +2 -1
- zrb/task_input/choice_input.py +3 -1
- zrb/task_input/float_input.py +2 -1
- zrb/task_input/int_input.py +2 -1
- zrb/task_input/multiline_input.py +5 -3
- zrb/task_input/password_input.py +2 -1
- zrb/task_input/str_input.py +2 -1
- {zrb-0.23.4.dist-info → zrb-0.24.1.dist-info}/METADATA +2 -2
- {zrb-0.23.4.dist-info → zrb-0.24.1.dist-info}/RECORD +226 -208
- zrb/builtin/project/add/app/generator/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/snake_zrb_generator_name/template/_automate/snake_zrb_app_name/container/init.py +0 -34
- zrb/builtin/project/add/app/python/template/_automate/snake_zrb_app_name/container/init.py +0 -34
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/microservices/init.py +0 -36
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/monolith/init.py +0 -36
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/support/init.py +0 -26
- zrb/builtin/project/add/fastapp/crud/_helper.py +0 -118
- zrb/builtin/project/add/fastapp/field/_helper.py +0 -328
- zrb/builtin/project/add/fastapp/module/_helper.py +0 -313
- {zrb-0.23.4.dist-info → zrb-0.24.1.dist-info}/LICENSE +0 -0
- {zrb-0.23.4.dist-info → zrb-0.24.1.dist-info}/WHEEL +0 -0
- {zrb-0.23.4.dist-info → zrb-0.24.1.dist-info}/entry_points.txt +0 -0
@@ -1,19 +1,12 @@
|
|
1
1
|
import os
|
2
|
+
from collections.abc import Callable, Iterable, Mapping
|
3
|
+
from typing import Any, Optional, Union
|
2
4
|
|
3
5
|
from zrb.helper.accessories.color import get_random_color
|
4
6
|
from zrb.helper.accessories.icon import get_random_icon
|
5
7
|
from zrb.helper.string.conversion import to_cli_name
|
6
8
|
from zrb.helper.typecheck import typechecked
|
7
|
-
from zrb.helper.typing import
|
8
|
-
Any,
|
9
|
-
Callable,
|
10
|
-
Iterable,
|
11
|
-
JinjaTemplate,
|
12
|
-
List,
|
13
|
-
Mapping,
|
14
|
-
Optional,
|
15
|
-
Union,
|
16
|
-
)
|
9
|
+
from zrb.helper.typing import JinjaTemplate
|
17
10
|
from zrb.helper.util import coalesce_str
|
18
11
|
from zrb.task.any_task import AnyTask
|
19
12
|
from zrb.task.any_task_event_handler import (
|
@@ -39,7 +32,7 @@ class CommonTaskModel:
|
|
39
32
|
name: str,
|
40
33
|
group: Optional[Group] = None,
|
41
34
|
description: str = "",
|
42
|
-
inputs:
|
35
|
+
inputs: list[AnyInput] = [],
|
43
36
|
envs: Iterable[Env] = [],
|
44
37
|
env_files: Iterable[EnvFile] = [],
|
45
38
|
icon: Optional[str] = None,
|
@@ -65,7 +58,7 @@ class CommonTaskModel:
|
|
65
58
|
self._group = group
|
66
59
|
if group is not None:
|
67
60
|
group._add_task(self)
|
68
|
-
checkers_cp:
|
61
|
+
checkers_cp: list[AnyTask] = [checker.copy() for checker in checkers]
|
69
62
|
for checker in checkers_cp:
|
70
63
|
checker.add_env(*envs)
|
71
64
|
checker.add_env_file(*env_files)
|
@@ -104,7 +97,7 @@ class CommonTaskModel:
|
|
104
97
|
self.__has_already_inject_inputs: bool = False
|
105
98
|
self.__has_already_inject_upstreams: bool = False
|
106
99
|
self.__has_already_inject_fallbacks: bool = False
|
107
|
-
self.__all_inputs: Optional[
|
100
|
+
self.__all_inputs: Optional[list[AnyInput]] = None
|
108
101
|
|
109
102
|
def _lock_checkers(self):
|
110
103
|
self.__allow_add_checkers = False
|
@@ -185,7 +178,7 @@ class CommonTaskModel:
|
|
185
178
|
def inject_inputs(self):
|
186
179
|
pass
|
187
180
|
|
188
|
-
def _get_inputs(self) ->
|
181
|
+
def _get_inputs(self) -> list[AnyInput]:
|
189
182
|
if not self.__has_already_inject_inputs:
|
190
183
|
self.inject_inputs()
|
191
184
|
self.__has_already_inject_inputs = True
|
@@ -197,7 +190,7 @@ class CommonTaskModel:
|
|
197
190
|
"""
|
198
191
|
if self.__all_inputs is not None:
|
199
192
|
return self.__all_inputs
|
200
|
-
self.__all_inputs:
|
193
|
+
self.__all_inputs: list[AnyInput] = []
|
201
194
|
existing_input_names: Mapping[str, bool] = {}
|
202
195
|
# Add task inputs
|
203
196
|
inputs = self._get_inputs()
|
@@ -244,7 +237,7 @@ class CommonTaskModel:
|
|
244
237
|
def inject_envs(self):
|
245
238
|
pass
|
246
239
|
|
247
|
-
def _get_envs(self) ->
|
240
|
+
def _get_envs(self) -> list[Env]:
|
248
241
|
if not self.__has_already_inject_envs:
|
249
242
|
self.inject_envs()
|
250
243
|
self.__has_already_inject_envs = True
|
@@ -297,7 +290,7 @@ class CommonTaskModel:
|
|
297
290
|
def inject_upstreams(self):
|
298
291
|
pass
|
299
292
|
|
300
|
-
def _get_upstreams(self) ->
|
293
|
+
def _get_upstreams(self) -> list[AnyTask]:
|
301
294
|
if not self.__has_already_inject_upstreams:
|
302
295
|
self.inject_upstreams()
|
303
296
|
self.__has_already_inject_upstreams = True
|
@@ -316,7 +309,7 @@ class CommonTaskModel:
|
|
316
309
|
def inject_fallbacks(self):
|
317
310
|
pass
|
318
311
|
|
319
|
-
def _get_fallbacks(self) ->
|
312
|
+
def _get_fallbacks(self) -> list[AnyTask]:
|
320
313
|
if not self.__has_already_inject_fallbacks:
|
321
314
|
self.inject_fallbacks()
|
322
315
|
self.__has_already_inject_fallbacks = True
|
@@ -328,7 +321,7 @@ class CommonTaskModel:
|
|
328
321
|
def get_color(self) -> str:
|
329
322
|
return self._color
|
330
323
|
|
331
|
-
def _get_env_files(self) ->
|
324
|
+
def _get_env_files(self) -> list[EnvFile]:
|
332
325
|
if not self.__has_already_inject_env_files:
|
333
326
|
self.inject_env_files()
|
334
327
|
self.__has_already_inject_env_files = True
|
@@ -346,11 +339,11 @@ class CommonTaskModel:
|
|
346
339
|
additional_checkers = self.__complete_new_checkers(checkers)
|
347
340
|
self._checkers = self._checkers + additional_checkers
|
348
341
|
|
349
|
-
def __complete_new_checkers(self, new_checkers:
|
342
|
+
def __complete_new_checkers(self, new_checkers: Iterable[AnyTask]) -> list[AnyTask]:
|
350
343
|
"""
|
351
344
|
For internal use: copy and completing new checkers
|
352
345
|
"""
|
353
|
-
checkers:
|
346
|
+
checkers: list[AnyTask] = [checker.copy() for checker in new_checkers]
|
354
347
|
for checker in checkers:
|
355
348
|
checker.add_input(*self._get_inputs())
|
356
349
|
checker.add_env(*self._get_envs())
|
@@ -360,7 +353,7 @@ class CommonTaskModel:
|
|
360
353
|
def inject_checkers(self):
|
361
354
|
pass
|
362
355
|
|
363
|
-
def _get_checkers(self) ->
|
356
|
+
def _get_checkers(self) -> list[AnyTask]:
|
364
357
|
if not self.__allow_add_checkers:
|
365
358
|
self.inject_checkers()
|
366
359
|
self.__allow_add_checkers = True
|
@@ -1,4 +1,6 @@
|
|
1
1
|
import os
|
2
|
+
from collections.abc import Mapping
|
3
|
+
from typing import Any, Optional, Union
|
2
4
|
|
3
5
|
import jinja2
|
4
6
|
|
@@ -6,7 +8,7 @@ from zrb.helper.render_data import DEFAULT_RENDER_DATA
|
|
6
8
|
from zrb.helper.string.conversion import to_boolean
|
7
9
|
from zrb.helper.string.jinja import is_probably_jinja
|
8
10
|
from zrb.helper.typecheck import typechecked
|
9
|
-
from zrb.helper.typing import
|
11
|
+
from zrb.helper.typing import JinjaTemplate
|
10
12
|
from zrb.task.any_task import AnyTask
|
11
13
|
|
12
14
|
|
zrb/task/checker.py
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
import asyncio
|
2
|
+
from collections.abc import Callable, Iterable
|
3
|
+
from typing import Any, Optional, Union
|
2
4
|
|
3
5
|
from zrb.helper.accessories.color import colored
|
4
6
|
from zrb.helper.log import logger
|
5
7
|
from zrb.helper.typecheck import typechecked
|
6
|
-
from zrb.helper.typing import Any, Callable, Iterable, Optional, Union
|
7
8
|
from zrb.task.any_task import AnyTask
|
8
9
|
from zrb.task.any_task_event_handler import (
|
9
10
|
OnFailed,
|
zrb/task/cmd_task.py
CHANGED
@@ -7,21 +7,14 @@ import signal
|
|
7
7
|
import subprocess
|
8
8
|
import sys
|
9
9
|
import time
|
10
|
+
from collections.abc import Callable, Iterable
|
11
|
+
from typing import Any, Optional, TypeVar, Union
|
10
12
|
|
11
|
-
from zrb.config.config import
|
13
|
+
from zrb.config.config import DEFAULT_SHELL, LOGGING_LEVEL
|
12
14
|
from zrb.helper.accessories.color import colored
|
13
15
|
from zrb.helper.log import logger
|
14
16
|
from zrb.helper.typecheck import typechecked
|
15
|
-
from zrb.helper.typing import
|
16
|
-
Any,
|
17
|
-
Callable,
|
18
|
-
Iterable,
|
19
|
-
JinjaTemplate,
|
20
|
-
List,
|
21
|
-
Optional,
|
22
|
-
TypeVar,
|
23
|
-
Union,
|
24
|
-
)
|
17
|
+
from zrb.helper.typing import JinjaTemplate
|
25
18
|
from zrb.task.any_task import AnyTask
|
26
19
|
from zrb.task.any_task_event_handler import (
|
27
20
|
OnFailed,
|
@@ -57,7 +50,7 @@ def _reset_stty():
|
|
57
50
|
|
58
51
|
|
59
52
|
def _log_error(message: Any):
|
60
|
-
if
|
53
|
+
if LOGGING_LEVEL > logging.ERROR:
|
61
54
|
return
|
62
55
|
colored_message = colored(f"{message}", color="red", attrs=["bold"])
|
63
56
|
logger.error(colored_message, exc_info=True)
|
@@ -111,7 +104,7 @@ class CmdTask(BaseTask):
|
|
111
104
|
>>> runner.register(hello)
|
112
105
|
"""
|
113
106
|
|
114
|
-
_pids:
|
107
|
+
_pids: list[int] = []
|
115
108
|
_global_state = CmdGlobalState()
|
116
109
|
|
117
110
|
def __init__(
|
@@ -187,8 +180,8 @@ class CmdTask(BaseTask):
|
|
187
180
|
self._max_error_size = max_error_line
|
188
181
|
self._output_buffer: Iterable[str] = []
|
189
182
|
self._error_buffer: Iterable[str] = []
|
190
|
-
if executable is None and
|
191
|
-
executable =
|
183
|
+
if executable is None and DEFAULT_SHELL != "":
|
184
|
+
executable = DEFAULT_SHELL
|
192
185
|
self._executable = executable
|
193
186
|
self._process: Optional[asyncio.subprocess.Process]
|
194
187
|
self._preexec_fn = preexec_fn
|
zrb/task/decorator.py
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
from collections.abc import Callable, Iterable
|
2
|
+
from typing import Any, Optional, Union
|
3
|
+
|
1
4
|
from zrb.action.runner import Runner
|
2
5
|
from zrb.helper.accessories.color import colored
|
3
6
|
from zrb.helper.log import logger
|
4
7
|
from zrb.helper.typecheck import typechecked
|
5
|
-
from zrb.helper.typing import Any, Callable, Iterable, Optional, Union
|
6
8
|
from zrb.task.any_task import AnyTask
|
7
9
|
from zrb.task.any_task_event_handler import (
|
8
10
|
OnFailed,
|
@@ -0,0 +1,146 @@
|
|
1
|
+
import os
|
2
|
+
import pathlib
|
3
|
+
from collections.abc import Callable, Iterable, Mapping
|
4
|
+
from typing import Any, Optional, Union
|
5
|
+
|
6
|
+
from zrb.helper.accessories.color import colored
|
7
|
+
from zrb.helper.log import logger
|
8
|
+
from zrb.helper.typecheck import typechecked
|
9
|
+
from zrb.helper.typing import JinjaTemplate
|
10
|
+
from zrb.task.any_task import AnyTask
|
11
|
+
from zrb.task.any_task_event_handler import (
|
12
|
+
OnFailed,
|
13
|
+
OnReady,
|
14
|
+
OnRetry,
|
15
|
+
OnSkipped,
|
16
|
+
OnStarted,
|
17
|
+
OnTriggered,
|
18
|
+
OnWaiting,
|
19
|
+
)
|
20
|
+
from zrb.task.cmd_task import CmdVal
|
21
|
+
from zrb.task.docker_compose_task import DockerComposeTask, ServiceConfig
|
22
|
+
from zrb.task_env.env import Env
|
23
|
+
from zrb.task_env.env_file import EnvFile
|
24
|
+
from zrb.task_group.group import Group
|
25
|
+
from zrb.task_input.any_input import AnyInput
|
26
|
+
|
27
|
+
logger.debug(colored("Loading zrb.task.docker_compose_task", attrs=["dark"]))
|
28
|
+
|
29
|
+
|
30
|
+
@typechecked
|
31
|
+
class DockerComposeStartTask(DockerComposeTask):
|
32
|
+
def __init__(
|
33
|
+
self,
|
34
|
+
name: str,
|
35
|
+
group: Optional[Group] = None,
|
36
|
+
inputs: Iterable[AnyInput] = [],
|
37
|
+
envs: Iterable[Env] = [],
|
38
|
+
env_files: Iterable[EnvFile] = [],
|
39
|
+
icon: Optional[str] = None,
|
40
|
+
color: Optional[str] = None,
|
41
|
+
description: str = "",
|
42
|
+
executable: Optional[str] = None,
|
43
|
+
compose_service_configs: Mapping[str, ServiceConfig] = {},
|
44
|
+
compose_file: Optional[str] = None,
|
45
|
+
compose_options: Mapping[JinjaTemplate, JinjaTemplate] = {},
|
46
|
+
compose_flags: Iterable[JinjaTemplate] = [],
|
47
|
+
compose_args: Iterable[JinjaTemplate] = [],
|
48
|
+
compose_env_prefix: str = "",
|
49
|
+
setup_cmd: CmdVal = "",
|
50
|
+
setup_cmd_path: CmdVal = "",
|
51
|
+
cwd: Optional[Union[JinjaTemplate, pathlib.Path]] = None,
|
52
|
+
should_render_cwd: bool = True,
|
53
|
+
upstreams: Iterable[AnyTask] = [],
|
54
|
+
fallbacks: Iterable[AnyTask] = [],
|
55
|
+
on_triggered: Optional[OnTriggered] = None,
|
56
|
+
on_waiting: Optional[OnWaiting] = None,
|
57
|
+
on_skipped: Optional[OnSkipped] = None,
|
58
|
+
on_started: Optional[OnStarted] = None,
|
59
|
+
on_ready: Optional[OnReady] = None,
|
60
|
+
on_retry: Optional[OnRetry] = None,
|
61
|
+
on_failed: Optional[OnFailed] = None,
|
62
|
+
checkers: Iterable[AnyTask] = [],
|
63
|
+
checking_interval: Union[float, int] = 0.05,
|
64
|
+
retry: int = 2,
|
65
|
+
retry_interval: Union[float, int] = 1,
|
66
|
+
max_output_line: int = 1000,
|
67
|
+
max_error_line: int = 1000,
|
68
|
+
preexec_fn: Optional[Callable[[], Any]] = os.setsid,
|
69
|
+
should_execute: Union[bool, str, Callable[..., bool]] = True,
|
70
|
+
return_upstream_result: bool = False,
|
71
|
+
should_print_cmd_result: bool = True,
|
72
|
+
should_show_cmd: bool = True,
|
73
|
+
should_show_working_directory: bool = True,
|
74
|
+
):
|
75
|
+
DockerComposeTask.__init__(
|
76
|
+
self,
|
77
|
+
name=name,
|
78
|
+
group=group,
|
79
|
+
inputs=inputs,
|
80
|
+
envs=envs,
|
81
|
+
env_files=env_files,
|
82
|
+
icon=icon,
|
83
|
+
color=color,
|
84
|
+
description=description,
|
85
|
+
executable=executable,
|
86
|
+
compose_service_configs=compose_service_configs,
|
87
|
+
compose_file=compose_file,
|
88
|
+
compose_options=compose_options,
|
89
|
+
compose_flags=compose_flags,
|
90
|
+
compose_args=compose_args,
|
91
|
+
compose_env_prefix=compose_env_prefix,
|
92
|
+
setup_cmd=setup_cmd,
|
93
|
+
setup_cmd_path=setup_cmd_path,
|
94
|
+
cwd=cwd,
|
95
|
+
should_render_cwd=should_render_cwd,
|
96
|
+
upstreams=upstreams,
|
97
|
+
fallbacks=fallbacks,
|
98
|
+
on_triggered=on_triggered,
|
99
|
+
on_waiting=on_waiting,
|
100
|
+
on_skipped=on_skipped,
|
101
|
+
on_started=on_started,
|
102
|
+
on_ready=on_ready,
|
103
|
+
on_retry=on_retry,
|
104
|
+
on_failed=on_failed,
|
105
|
+
checkers=checkers,
|
106
|
+
checking_interval=checking_interval,
|
107
|
+
retry=retry,
|
108
|
+
retry_interval=retry_interval,
|
109
|
+
max_output_line=max_output_line,
|
110
|
+
max_error_line=max_error_line,
|
111
|
+
preexec_fn=preexec_fn,
|
112
|
+
should_execute=should_execute,
|
113
|
+
return_upstream_result=return_upstream_result,
|
114
|
+
should_print_cmd_result=should_print_cmd_result,
|
115
|
+
should_show_cmd=should_show_cmd,
|
116
|
+
should_show_working_directory=should_show_working_directory,
|
117
|
+
)
|
118
|
+
|
119
|
+
def get_cmd_script(self, *args: Any, **kwargs: Any) -> str:
|
120
|
+
# setup
|
121
|
+
setup_cmd = self._create_cmd_script(
|
122
|
+
self._setup_cmd_path, self._setup_cmd, *args, **kwargs
|
123
|
+
)
|
124
|
+
cmd_list = [setup_cmd] if setup_cmd.strip() != "" else []
|
125
|
+
# compose command
|
126
|
+
cmd_list = cmd_list + [
|
127
|
+
# compose start
|
128
|
+
self._get_docker_compose_cmd_script(
|
129
|
+
compose_cmd="up",
|
130
|
+
compose_options=self._compose_options,
|
131
|
+
compose_flags=list(self._compose_flags) + ["-d"],
|
132
|
+
compose_args=self._compose_args,
|
133
|
+
*args,
|
134
|
+
),
|
135
|
+
# compose log
|
136
|
+
self._get_docker_compose_cmd_script(
|
137
|
+
compose_cmd="logs",
|
138
|
+
compose_options={},
|
139
|
+
compose_flags=["-f"],
|
140
|
+
compose_args=[],
|
141
|
+
*args,
|
142
|
+
),
|
143
|
+
]
|
144
|
+
cmd_str = "\n".join(cmd_list)
|
145
|
+
self.log_info(f"Command: {cmd_str}")
|
146
|
+
return cmd_str
|
zrb/task/docker_compose_task.py
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
import os
|
2
2
|
import pathlib
|
3
|
+
from collections.abc import Callable, Iterable, Mapping
|
4
|
+
from typing import Any, Optional, TypeVar, Union
|
3
5
|
|
4
|
-
from zrb.config.config import
|
6
|
+
from zrb.config.config import CONTAINER_BACKEND
|
5
7
|
from zrb.helper.accessories.color import colored
|
6
8
|
from zrb.helper.accessories.name import get_random_name
|
7
9
|
from zrb.helper.docker_compose.fetch_external_env import fetch_compose_file_env_map
|
@@ -10,17 +12,7 @@ from zrb.helper.log import logger
|
|
10
12
|
from zrb.helper.string.conversion import to_cli_name
|
11
13
|
from zrb.helper.string.modification import double_quote
|
12
14
|
from zrb.helper.typecheck import typechecked
|
13
|
-
from zrb.helper.typing import
|
14
|
-
Any,
|
15
|
-
Callable,
|
16
|
-
Iterable,
|
17
|
-
JinjaTemplate,
|
18
|
-
List,
|
19
|
-
Mapping,
|
20
|
-
Optional,
|
21
|
-
TypeVar,
|
22
|
-
Union,
|
23
|
-
)
|
15
|
+
from zrb.helper.typing import JinjaTemplate
|
24
16
|
from zrb.helper.util import to_snake_case
|
25
17
|
from zrb.task.any_task import AnyTask
|
26
18
|
from zrb.task.any_task_event_handler import (
|
@@ -66,19 +58,19 @@ def _get_ensure_zrb_network_task(backend: str):
|
|
66
58
|
|
67
59
|
|
68
60
|
TDockerComposeTask = TypeVar("TDockerComposeTask", bound="DockerComposeTask")
|
69
|
-
ensure_zrb_network_task = _get_ensure_zrb_network_task(
|
61
|
+
ensure_zrb_network_task = _get_ensure_zrb_network_task(CONTAINER_BACKEND)
|
70
62
|
|
71
63
|
|
72
64
|
@typechecked
|
73
65
|
class ServiceConfig:
|
74
|
-
def __init__(self, envs:
|
66
|
+
def __init__(self, envs: list[Env] = [], env_files: list[EnvFile] = []):
|
75
67
|
self._envs = envs
|
76
68
|
self._env_files = env_files
|
77
69
|
|
78
|
-
def get_envs(self) ->
|
70
|
+
def get_envs(self) -> list[Env]:
|
79
71
|
return self._envs
|
80
72
|
|
81
|
-
def get_env_files(self) ->
|
73
|
+
def get_env_files(self) -> list[EnvFile]:
|
82
74
|
return self._env_files
|
83
75
|
|
84
76
|
|
@@ -224,7 +216,7 @@ class DockerComposeTask(CmdTask):
|
|
224
216
|
def __generate_compose_runtime_file(self):
|
225
217
|
compose_data = read_compose_file(self._compose_template_file)
|
226
218
|
for service, service_config in self._compose_service_configs.items():
|
227
|
-
envs:
|
219
|
+
envs: list[Env] = []
|
228
220
|
env_files = service_config.get_env_files()
|
229
221
|
for env_file in env_files:
|
230
222
|
envs += env_file.get_envs()
|
@@ -233,7 +225,7 @@ class DockerComposeTask(CmdTask):
|
|
233
225
|
write_compose_file(self._compose_runtime_file, compose_data)
|
234
226
|
|
235
227
|
def __apply_service_env(
|
236
|
-
self, compose_data: Any, service_name: str, envs:
|
228
|
+
self, compose_data: Any, service_name: str, envs: list[Env]
|
237
229
|
) -> Any:
|
238
230
|
# service not found
|
239
231
|
service_map = compose_data["services"]
|
@@ -269,7 +261,7 @@ class DockerComposeTask(CmdTask):
|
|
269
261
|
return compose_data
|
270
262
|
|
271
263
|
def __get_service_new_env_map(
|
272
|
-
self, service_name: str, service_env_map: Mapping[str, str], new_envs:
|
264
|
+
self, service_name: str, service_env_map: Mapping[str, str], new_envs: list[Env]
|
273
265
|
) -> Mapping[str, str]:
|
274
266
|
new_service_envs: Mapping[str, str] = {}
|
275
267
|
for env in new_envs:
|
@@ -280,9 +272,9 @@ class DockerComposeTask(CmdTask):
|
|
280
272
|
return new_service_envs
|
281
273
|
|
282
274
|
def __get_service_new_env_list(
|
283
|
-
self, service_name: str, service_env_list:
|
284
|
-
) ->
|
285
|
-
new_service_envs:
|
275
|
+
self, service_name: str, service_env_list: list[str], new_envs: list[Env]
|
276
|
+
) -> list[str]:
|
277
|
+
new_service_envs: list[str] = []
|
286
278
|
for env in new_envs:
|
287
279
|
should_be_added = 0 == len(
|
288
280
|
[
|
@@ -341,10 +333,34 @@ class DockerComposeTask(CmdTask):
|
|
341
333
|
raise Exception(f"Invalid compose file: {compose_file}")
|
342
334
|
|
343
335
|
def get_cmd_script(self, *args: Any, **kwargs: Any) -> str:
|
344
|
-
|
336
|
+
# setup
|
337
|
+
setup_cmd = self._create_cmd_script(
|
345
338
|
self._setup_cmd_path, self._setup_cmd, *args, **kwargs
|
346
339
|
)
|
347
|
-
|
340
|
+
cmd_list = [setup_cmd] if setup_cmd.strip() != "" else []
|
341
|
+
# compose command
|
342
|
+
cmd_list.append(
|
343
|
+
self._get_docker_compose_cmd_script(
|
344
|
+
compose_cmd=self._compose_cmd,
|
345
|
+
compose_options=self._compose_options,
|
346
|
+
compose_flags=self._compose_flags,
|
347
|
+
compose_args=self._compose_args,
|
348
|
+
*args,
|
349
|
+
)
|
350
|
+
)
|
351
|
+
cmd_str = "\n".join(cmd_list)
|
352
|
+
self.log_info(f"Command: {cmd_str}")
|
353
|
+
return cmd_str
|
354
|
+
|
355
|
+
def _get_docker_compose_cmd_script(
|
356
|
+
self,
|
357
|
+
compose_cmd: str,
|
358
|
+
compose_options: Mapping[JinjaTemplate, JinjaTemplate],
|
359
|
+
compose_flags: Iterable[JinjaTemplate],
|
360
|
+
compose_args: Iterable[JinjaTemplate],
|
361
|
+
*args: Any,
|
362
|
+
) -> str:
|
363
|
+
command_options = dict(compose_options)
|
348
364
|
command_options["--file"] = self._compose_runtime_file
|
349
365
|
options = " ".join(
|
350
366
|
[
|
@@ -356,22 +372,15 @@ class DockerComposeTask(CmdTask):
|
|
356
372
|
flags = " ".join(
|
357
373
|
[
|
358
374
|
self.render_str(flag)
|
359
|
-
for flag in
|
375
|
+
for flag in compose_flags
|
360
376
|
if self.render_str(flag) != ""
|
361
377
|
]
|
362
378
|
)
|
363
379
|
args = " ".join(
|
364
380
|
[
|
365
381
|
double_quote(self.render_str(arg))
|
366
|
-
for arg in
|
382
|
+
for arg in compose_args
|
367
383
|
if self.render_str(arg) != ""
|
368
384
|
]
|
369
385
|
)
|
370
|
-
|
371
|
-
[
|
372
|
-
setup_cmd_str,
|
373
|
-
f"{container_backend} compose {options} {self._compose_cmd} {flags} {args}", # noqa
|
374
|
-
]
|
375
|
-
)
|
376
|
-
self.log_info(f"Command: {cmd_str}")
|
377
|
-
return cmd_str
|
386
|
+
return f"{CONTAINER_BACKEND} compose {options} {compose_cmd} {flags} {args}"
|
zrb/task/flow_task.py
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
+
from collections.abc import Callable, Iterable
|
2
|
+
from typing import Optional, TypeVar, Union
|
3
|
+
|
1
4
|
from zrb.helper.accessories.color import colored
|
2
5
|
from zrb.helper.log import logger
|
3
6
|
from zrb.helper.typecheck import typechecked
|
4
|
-
from zrb.helper.typing import Callable, Iterable, List, Optional, TypeVar, Union
|
5
7
|
from zrb.task.any_task import AnyTask
|
6
8
|
from zrb.task.any_task_event_handler import (
|
7
9
|
OnFailed,
|
@@ -48,7 +50,7 @@ class FlowTask(BaseTask):
|
|
48
50
|
checking_interval: Union[float, int] = 0.05,
|
49
51
|
retry: int = 2,
|
50
52
|
retry_interval: Union[float, int] = 1,
|
51
|
-
steps:
|
53
|
+
steps: list[Union[AnyTask, list[AnyTask]]] = [],
|
52
54
|
should_execute: Union[bool, str, Callable[..., bool]] = True,
|
53
55
|
return_upstream_result: bool = False,
|
54
56
|
):
|
@@ -91,12 +93,12 @@ class FlowTask(BaseTask):
|
|
91
93
|
|
92
94
|
def _create_flow_upstreams(
|
93
95
|
self,
|
94
|
-
steps:
|
95
|
-
upstreams:
|
96
|
-
inputs:
|
97
|
-
envs:
|
98
|
-
env_files:
|
99
|
-
) ->
|
96
|
+
steps: list[Union[AnyTask, list[AnyTask]]],
|
97
|
+
upstreams: list[AnyTask],
|
98
|
+
inputs: list[AnyInput],
|
99
|
+
envs: list[Env],
|
100
|
+
env_files: list[EnvFile],
|
101
|
+
) -> list[AnyTask]:
|
100
102
|
flow_upstreams = upstreams
|
101
103
|
for step in steps:
|
102
104
|
tasks = [task.copy() for task in self._step_to_tasks(step)]
|
@@ -110,20 +112,20 @@ class FlowTask(BaseTask):
|
|
110
112
|
flow_upstreams = new_upstreams
|
111
113
|
return flow_upstreams
|
112
114
|
|
113
|
-
def _step_to_tasks(self, step: Union[AnyTask,
|
115
|
+
def _step_to_tasks(self, step: Union[AnyTask, list[AnyTask]]) -> list[AnyTask]:
|
114
116
|
if isinstance(step, AnyTask):
|
115
117
|
return [step]
|
116
118
|
return step
|
117
119
|
|
118
120
|
def _create_embeded_tasks(
|
119
121
|
self,
|
120
|
-
tasks:
|
121
|
-
upstreams:
|
122
|
-
inputs:
|
123
|
-
envs:
|
124
|
-
env_files:
|
125
|
-
) ->
|
126
|
-
embeded_tasks:
|
122
|
+
tasks: list[AnyTask],
|
123
|
+
upstreams: list[AnyTask],
|
124
|
+
inputs: list[AnyInput],
|
125
|
+
envs: list[Env],
|
126
|
+
env_files: list[EnvFile],
|
127
|
+
) -> list[AnyTask]:
|
128
|
+
embeded_tasks: list[AnyTask] = []
|
127
129
|
for embeded_task in tasks:
|
128
130
|
embeded_task_upstreams = self._get_all_upstreams(tasks=[embeded_task])
|
129
131
|
for embeded_task_upstream in embeded_task_upstreams:
|
@@ -134,7 +136,7 @@ class FlowTask(BaseTask):
|
|
134
136
|
embeded_tasks.append(embeded_task)
|
135
137
|
return embeded_tasks
|
136
138
|
|
137
|
-
def _get_all_upstreams(self, tasks:
|
139
|
+
def _get_all_upstreams(self, tasks: list[AnyTask]):
|
138
140
|
all_upstreams = []
|
139
141
|
for task in tasks:
|
140
142
|
upstreams = task._get_upstreams()
|
zrb/task/http_checker.py
CHANGED
@@ -1,17 +1,11 @@
|
|
1
|
+
from collections.abc import Callable, Iterable
|
1
2
|
from http.client import HTTPConnection, HTTPSConnection
|
3
|
+
from typing import Any, Optional, TypeVar, Union
|
2
4
|
|
3
5
|
from zrb.helper.accessories.color import colored
|
4
6
|
from zrb.helper.log import logger
|
5
7
|
from zrb.helper.typecheck import typechecked
|
6
|
-
from zrb.helper.typing import
|
7
|
-
Any,
|
8
|
-
Callable,
|
9
|
-
Iterable,
|
10
|
-
JinjaTemplate,
|
11
|
-
Optional,
|
12
|
-
TypeVar,
|
13
|
-
Union,
|
14
|
-
)
|
8
|
+
from zrb.helper.typing import JinjaTemplate
|
15
9
|
from zrb.task.any_task import AnyTask
|
16
10
|
from zrb.task.any_task_event_handler import (
|
17
11
|
OnFailed,
|
zrb/task/looper.py
CHANGED
@@ -1,14 +1,16 @@
|
|
1
|
+
from collections.abc import Callable
|
2
|
+
from typing import Optional
|
3
|
+
|
1
4
|
from zrb.helper.accessories.color import colored
|
2
5
|
from zrb.helper.callable import run_async
|
3
6
|
from zrb.helper.log import logger
|
4
|
-
from zrb.helper.typing import Callable, List, Mapping, Optional
|
5
7
|
|
6
8
|
logger.debug(colored("Loading zrb.task.looper", attrs=["dark"]))
|
7
9
|
|
8
10
|
|
9
11
|
class Looper:
|
10
12
|
def __init__(self):
|
11
|
-
self._queue: Mapping[str,
|
13
|
+
self._queue: Mapping[str, list[Optional[bool]]] = {}
|
12
14
|
self._should_stop = False
|
13
15
|
|
14
16
|
async def pop(self, identifier: str) -> Optional[bool]:
|
zrb/task/notifier.py
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
import os
|
2
2
|
import subprocess
|
3
|
+
from collections.abc import Callable, Iterable
|
4
|
+
from typing import Any, Optional, Union
|
3
5
|
|
4
6
|
from zrb.helper.accessories.color import colored
|
5
7
|
from zrb.helper.accessories.icon import get_random_icon
|
6
8
|
from zrb.helper.log import logger
|
7
9
|
from zrb.helper.string.modification import double_quote
|
8
10
|
from zrb.helper.typecheck import typechecked
|
9
|
-
from zrb.helper.typing import
|
11
|
+
from zrb.helper.typing import JinjaTemplate
|
10
12
|
from zrb.task.any_task import AnyTask
|
11
13
|
from zrb.task.any_task_event_handler import (
|
12
14
|
OnFailed,
|