capo-codedeploy 0.1.0__tar.gz → 0.2.0__tar.gz
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.
- {capo_codedeploy-0.1.0/src/capo_codedeploy.egg-info → capo_codedeploy-0.2.0}/PKG-INFO +3 -1
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/pyproject.toml +3 -1
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/__init__.py +1 -0
- capo_codedeploy-0.2.0/src/capo_codedeploy/_body.py +221 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_services/_pipeline.py +51 -2
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0/src/capo_codedeploy.egg-info}/PKG-INFO +3 -1
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy.egg-info/SOURCES.txt +2 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy.egg-info/requires.txt +3 -0
- capo_codedeploy-0.2.0/tests/test_body.py +225 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/LICENSE +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/README.md +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/setup.cfg +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_async.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_auth/_identity.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_auth/_providers.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_auth/_signers.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_auth/_sigv4.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_auth/_zapros_handler.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_iter.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/add_tags_to_on_premises_instances.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/batch_get_application_revisions.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/batch_get_applications.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/batch_get_deployment_groups.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/batch_get_deployment_instances.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/batch_get_deployment_targets.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/batch_get_deployments.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/batch_get_on_premises_instances.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/continue_deployment.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/create_application.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/create_deployment.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/create_deployment_config.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/create_deployment_group.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/delete_application.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/delete_deployment_config.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/delete_deployment_group.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/delete_git_hub_account_token.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/delete_resources_by_external_id.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/deregister_on_premises_instance.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/get_application.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/get_application_revision.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/get_deployment.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/get_deployment_config.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/get_deployment_group.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/get_deployment_instance.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/get_deployment_target.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/get_on_premises_instance.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/list_application_revisions.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/list_applications.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/list_deployment_configs.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/list_deployment_groups.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/list_deployment_instances.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/list_deployment_targets.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/list_deployments.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/list_git_hub_account_token_names.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/list_on_premises_instances.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/list_tags_for_resource.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/put_lifecycle_event_hook_execution_status.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/register_application_revision.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/register_on_premises_instance.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/remove_tags_from_on_premises_instances.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/skip_wait_time_for_instance_termination.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/stop_deployment.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/tag_resource.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/untag_resource.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/update_application.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_operations/code_deploy_20141006/update_deployment_group.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_pagination.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_protocol/__init__.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_protocol/errors.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_protocol/eventstream.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_protocol/serialize.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_protocol/xml.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_rule_engine/__init__.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_rule_engine/_aws_partition.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_rule_engine/_endpoint_rule_set.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_rule_engine/_endpoint_runtime.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_services/_aws_config.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_services/async_code_deploy.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_services/code_deploy.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/__init__.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/_base.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/alarms_limit_exceeded_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/application_already_exists_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/application_does_not_exist_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/application_limit_exceeded_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/application_name_required_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/arn_not_supported_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/batch_limit_exceeded_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/bucket_name_filter_required_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/deployment_already_completed_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/deployment_config_already_exists_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/deployment_config_does_not_exist_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/deployment_config_in_use_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/deployment_config_limit_exceeded_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/deployment_config_name_required_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/deployment_does_not_exist_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/deployment_group_already_exists_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/deployment_group_does_not_exist_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/deployment_group_limit_exceeded_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/deployment_group_name_required_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/deployment_id_required_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/deployment_is_not_in_ready_state_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/deployment_limit_exceeded_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/deployment_not_started_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/deployment_target_does_not_exist_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/deployment_target_id_required_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/deployment_target_list_size_exceeded_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/description_too_long_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/ecs_service_mapping_limit_exceeded_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/git_hub_account_token_does_not_exist_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/git_hub_account_token_name_required_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/iam_arn_required_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/iam_session_arn_already_registered_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/iam_user_arn_already_registered_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/iam_user_arn_required_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/instance_does_not_exist_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/instance_id_required_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/instance_limit_exceeded_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/instance_name_already_registered_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/instance_name_required_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/instance_not_registered_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_alarm_config_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_application_name_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_arn_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_auto_rollback_config_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_auto_scaling_group_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_blue_green_deployment_configuration_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_bucket_name_filter_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_compute_platform_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_deployed_state_filter_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_deployment_config_name_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_deployment_group_name_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_deployment_id_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_deployment_instance_type_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_deployment_status_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_deployment_style_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_deployment_target_id_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_deployment_wait_type_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_ec2_tag_combination_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_ec2_tag_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_ecs_service_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_external_id_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_file_exists_behavior_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_git_hub_account_token_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_git_hub_account_token_name_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_iam_session_arn_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_iam_user_arn_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_ignore_application_stop_failures_value_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_input_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_instance_name_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_instance_status_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_instance_type_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_key_prefix_filter_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_lifecycle_event_hook_execution_id_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_lifecycle_event_hook_execution_status_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_load_balancer_info_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_minimum_healthy_host_value_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_next_token_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_on_premises_tag_combination_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_operation_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_registration_status_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_revision_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_role_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_sort_by_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_sort_order_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_tag_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_tag_filter_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_tags_to_add_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_target_filter_name_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_target_group_pair_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_target_instances_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_time_range_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_traffic_routing_configuration_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_trigger_config_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_update_outdated_instances_only_value_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/invalid_zonal_deployment_configuration_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/lifecycle_event_already_completed_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/lifecycle_hook_limit_exceeded_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/multiple_iam_arns_provided_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/operation_not_supported_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/resource_arn_required_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/resource_validation_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/revision_does_not_exist_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/revision_required_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/role_required_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/tag_limit_exceeded_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/tag_required_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/tag_set_list_limit_exceeded_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/throttling_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/trigger_targets_limit_exceeded_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/errors/unsupported_action_for_deployment_type_exception.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/py.typed +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/_prelude/blob.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/_prelude/timestamp.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/add_tags_to_on_premises_instances_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/additional_deployment_status_info.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/alarm.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/alarm_configuration.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/alarm_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/alarm_name.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/app_spec_content.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/application_id.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/application_info.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/application_name.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/application_revision_sort_by.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/applications_info_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/applications_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/arn.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/auto_rollback_configuration.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/auto_rollback_event.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/auto_rollback_events_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/auto_scaling_group.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/auto_scaling_group_hook.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/auto_scaling_group_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/auto_scaling_group_name.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/auto_scaling_group_name_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/batch_get_application_revisions_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/batch_get_application_revisions_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/batch_get_applications_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/batch_get_applications_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/batch_get_deployment_groups_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/batch_get_deployment_groups_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/batch_get_deployment_instances_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/batch_get_deployment_instances_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/batch_get_deployment_targets_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/batch_get_deployment_targets_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/batch_get_deployments_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/batch_get_deployments_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/batch_get_on_premises_instances_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/batch_get_on_premises_instances_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/blue_green_deployment_configuration.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/blue_instance_termination_option.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/boolean.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/bundle_type.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/cloud_formation_resource_type.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/cloud_formation_target.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/commit_id.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/compute_platform.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/continue_deployment_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/create_application_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/create_application_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/create_deployment_config_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/create_deployment_config_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/create_deployment_group_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/create_deployment_group_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/create_deployment_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/create_deployment_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/delete_application_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/delete_deployment_config_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/delete_deployment_group_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/delete_deployment_group_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/delete_git_hub_account_token_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/delete_git_hub_account_token_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/delete_resources_by_external_id_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/delete_resources_by_external_id_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_config_id.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_config_info.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_config_name.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_configs_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_creator.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_group_id.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_group_info.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_group_info_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_group_name.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_groups_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_id.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_info.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_option.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_overview.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_ready_action.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_ready_option.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_status.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_status_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_status_message_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_style.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_target.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_target_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_target_type.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_type.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployment_wait_type.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployments_info_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deployments_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/deregister_on_premises_instance_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/description.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/diagnostics.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/duration.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/e_tag.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/ec2_tag_filter.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/ec2_tag_filter_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/ec2_tag_filter_type.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/ec2_tag_set.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/ec2_tag_set_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/ecs_cluster_name.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/ecs_service.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/ecs_service_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/ecs_service_name.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/ecs_target.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/ecs_task_set.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/ecs_task_set_count.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/ecs_task_set_identifier.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/ecs_task_set_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/ecs_task_set_status.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/elb_info.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/elb_info_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/elb_name.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/error_code.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/error_information.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/error_message.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/external_id.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/file_exists_behavior.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/filter_value.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/filter_value_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/generic_revision_info.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/get_application_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/get_application_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/get_application_revision_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/get_application_revision_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/get_deployment_config_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/get_deployment_config_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/get_deployment_group_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/get_deployment_group_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/get_deployment_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/get_deployment_instance_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/get_deployment_instance_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/get_deployment_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/get_deployment_target_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/get_deployment_target_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/get_on_premises_instance_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/get_on_premises_instance_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/git_hub_account_token_name.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/git_hub_account_token_name_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/git_hub_location.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/green_fleet_provisioning_action.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/green_fleet_provisioning_option.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/iam_session_arn.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/iam_user_arn.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/instance_action.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/instance_arn.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/instance_count.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/instance_id.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/instance_info.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/instance_info_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/instance_name.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/instance_name_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/instance_status.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/instance_status_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/instance_summary.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/instance_summary_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/instance_target.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/instance_type.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/instance_type_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/instances_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/key.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/lambda_function_alias.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/lambda_function_info.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/lambda_function_name.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/lambda_target.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/last_deployment_info.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/lifecycle_error_code.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/lifecycle_event.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/lifecycle_event_hook_execution_id.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/lifecycle_event_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/lifecycle_event_name.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/lifecycle_event_status.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/lifecycle_message.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/list_application_revisions_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/list_application_revisions_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/list_applications_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/list_applications_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/list_deployment_configs_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/list_deployment_configs_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/list_deployment_groups_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/list_deployment_groups_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/list_deployment_instances_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/list_deployment_instances_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/list_deployment_targets_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/list_deployment_targets_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/list_deployments_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/list_deployments_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/list_git_hub_account_token_names_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/list_git_hub_account_token_names_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/list_on_premises_instances_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/list_on_premises_instances_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/list_state_filter_action.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/list_tags_for_resource_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/list_tags_for_resource_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/listener_arn.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/listener_arn_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/load_balancer_info.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/log_tail.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/message.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/minimum_healthy_hosts.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/minimum_healthy_hosts_per_zone.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/minimum_healthy_hosts_per_zone_type.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/minimum_healthy_hosts_per_zone_value.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/minimum_healthy_hosts_type.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/minimum_healthy_hosts_value.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/next_token.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/nullable_boolean.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/on_premises_tag_set.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/on_premises_tag_set_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/outdated_instances_strategy.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/percentage.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/put_lifecycle_event_hook_execution_status_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/put_lifecycle_event_hook_execution_status_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/raw_string.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/raw_string_content.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/raw_string_sha256.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/register_application_revision_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/register_on_premises_instance_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/registration_status.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/related_deployments.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/remove_tags_from_on_premises_instances_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/repository.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/revision_info.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/revision_info_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/revision_location.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/revision_location_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/revision_location_type.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/role.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/rollback_info.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/s3_bucket.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/s3_key.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/s3_location.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/script_name.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/skip_wait_time_for_instance_termination_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/sort_order.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/stop_deployment_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/stop_deployment_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/stop_status.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/tag.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/tag_filter.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/tag_filter_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/tag_filter_type.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/tag_key_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/tag_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/tag_resource_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/tag_resource_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/target_arn.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/target_filter_name.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/target_filters.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/target_group_info.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/target_group_info_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/target_group_name.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/target_group_pair_info.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/target_group_pair_info_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/target_id.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/target_id_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/target_instances.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/target_label.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/target_status.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/time.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/time_based_canary.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/time_based_linear.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/time_range.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/timestamp.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/traffic_route.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/traffic_routing_config.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/traffic_routing_type.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/traffic_weight.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/trigger_config.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/trigger_config_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/trigger_event_type.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/trigger_event_type_list.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/trigger_name.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/trigger_target_arn.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/untag_resource_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/untag_resource_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/update_application_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/update_deployment_group_input.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/update_deployment_group_output.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/value.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/version.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/version_id.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/wait_time_in_mins.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/wait_time_in_seconds.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/types/zonal_config.py +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy.egg-info/dependency_links.txt +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy.egg-info/top_level.txt +0 -0
- {capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/tests/test_sigv4.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: capo-codedeploy
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Python SDK for Codedeploy.
|
|
5
5
|
Classifier: Development Status :: 4 - Beta
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -19,6 +19,8 @@ Description-Content-Type: text/markdown
|
|
|
19
19
|
License-File: LICENSE
|
|
20
20
|
Requires-Dist: jmespath>=1.0
|
|
21
21
|
Requires-Dist: zapros>=0.13.0
|
|
22
|
+
Provides-Extra: anyio
|
|
23
|
+
Requires-Dist: anyio>=3.0; extra == "anyio"
|
|
22
24
|
Provides-Extra: sso
|
|
23
25
|
Requires-Dist: capo-sso>=0.2.0; extra == "sso"
|
|
24
26
|
Requires-Dist: capo-sso-oidc>=0.2.0; extra == "sso"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "capo-codedeploy"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.2.0"
|
|
4
4
|
description = "Python SDK for Codedeploy."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -24,6 +24,8 @@ dependencies = [
|
|
|
24
24
|
]
|
|
25
25
|
|
|
26
26
|
[project.optional-dependencies]
|
|
27
|
+
# Async file request bodies via Body.async_from_path
|
|
28
|
+
anyio = ["anyio>=3.0"]
|
|
27
29
|
# IAM Identity Center (SSO), assume-role and web-identity credentials providers
|
|
28
30
|
sso = [
|
|
29
31
|
"capo-sso>=0.2.0",
|
|
@@ -48,6 +48,7 @@ from ._auth._providers import (
|
|
|
48
48
|
)
|
|
49
49
|
from ._auth._signers import Signer as Signer
|
|
50
50
|
from ._auth._signers import SigV4Signer as SigV4Signer
|
|
51
|
+
from ._body import Body as Body
|
|
51
52
|
from ._services._pipeline import (
|
|
52
53
|
AsyncOperationOptions as AsyncOperationOptions,
|
|
53
54
|
)
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
"""Request body abstraction for streaming operations.
|
|
2
|
+
|
|
3
|
+
Hand-written, not regenerated.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
import os
|
|
9
|
+
from collections.abc import AsyncIterator, Callable, Iterator
|
|
10
|
+
from contextlib import (
|
|
11
|
+
AbstractAsyncContextManager,
|
|
12
|
+
AbstractContextManager,
|
|
13
|
+
asynccontextmanager,
|
|
14
|
+
contextmanager,
|
|
15
|
+
)
|
|
16
|
+
from typing import TYPE_CHECKING, Generic, TypeVar, Union, cast
|
|
17
|
+
|
|
18
|
+
from ._iter import AnyIterator
|
|
19
|
+
|
|
20
|
+
if TYPE_CHECKING:
|
|
21
|
+
import anyio
|
|
22
|
+
else:
|
|
23
|
+
try:
|
|
24
|
+
import anyio
|
|
25
|
+
except ImportError:
|
|
26
|
+
anyio = None
|
|
27
|
+
|
|
28
|
+
_CHUNK_SIZE = 64 * 1024
|
|
29
|
+
|
|
30
|
+
TStream = TypeVar("TStream", Iterator[bytes], AsyncIterator[bytes])
|
|
31
|
+
|
|
32
|
+
# The opener yields the fresh stream together with its length, or ``None`` when
|
|
33
|
+
# no stream could be produced (an exhausted or non-rewindable source, or logic
|
|
34
|
+
# that decides dynamically it cannot reopen). Pairing the length with each open
|
|
35
|
+
# lets it change between rebuilds instead of being fixed for the whole body.
|
|
36
|
+
_ContextManager = Union[
|
|
37
|
+
AbstractContextManager[Union[tuple[TStream, int], None]],
|
|
38
|
+
AbstractAsyncContextManager[Union[tuple[TStream, int], None]],
|
|
39
|
+
]
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class Body(AnyIterator[bytes], Generic[TStream]):
|
|
43
|
+
"""A replayable request body whose length travels with each open.
|
|
44
|
+
|
|
45
|
+
A plain ``Iterator[bytes]`` can be sent only once, so a failed request
|
|
46
|
+
cannot be retried. A ``Body`` instead holds an *opener* — a context manager
|
|
47
|
+
that opens a fresh stream over the same source — and rebuilds the stream
|
|
48
|
+
before every attempt, closing whatever was left of the previous one.
|
|
49
|
+
|
|
50
|
+
``TStream`` is ``Iterator[bytes]`` for bodies built with :meth:`from_path`
|
|
51
|
+
and ``AsyncIterator[bytes]`` for :meth:`async_from_path`; the former use
|
|
52
|
+
``rebuild()``/``close()``, the latter ``arebuild()``/``aclose()``.
|
|
53
|
+
``build_request`` rebuilds before every attempt.
|
|
54
|
+
|
|
55
|
+
Each open produces ``(stream, length)`` together, so the length is not bound
|
|
56
|
+
to the whole body and may differ from one rebuild to the next. A rebuild is
|
|
57
|
+
also not guaranteed to succeed: the source may be exhausted or
|
|
58
|
+
non-rewindable, so the opener can yield ``None`` and :meth:`rebuild` then
|
|
59
|
+
returns ``None`` instead of a pair. Callers check the return value::
|
|
60
|
+
|
|
61
|
+
for attempt in range(max_attempts):
|
|
62
|
+
opened = body.rebuild()
|
|
63
|
+
if opened is None:
|
|
64
|
+
raise RuntimeError("body could not be rebuilt")
|
|
65
|
+
stream, length = opened
|
|
66
|
+
send(stream, length)
|
|
67
|
+
|
|
68
|
+
``length`` also holds the current stream's length as an attribute (``None``
|
|
69
|
+
before the first rebuild). Iterating a ``Body`` reads its current stream.
|
|
70
|
+
"""
|
|
71
|
+
|
|
72
|
+
def __init__(self, opener: Callable[[], _ContextManager[TStream]]) -> None:
|
|
73
|
+
self._opener = opener
|
|
74
|
+
self._cm: _ContextManager[TStream] | None = None
|
|
75
|
+
self._stream: TStream | None = None
|
|
76
|
+
self.length: int | None = None
|
|
77
|
+
|
|
78
|
+
@classmethod
|
|
79
|
+
def from_path(
|
|
80
|
+
cls, path: str | os.PathLike[str], chunk_size: int = _CHUNK_SIZE
|
|
81
|
+
) -> Body[Iterator[bytes]]:
|
|
82
|
+
"""A body that reads ``path`` in ``chunk_size`` chunks, reopening it (and re-measuring it) on every rebuild."""
|
|
83
|
+
|
|
84
|
+
@contextmanager
|
|
85
|
+
def open_() -> Iterator[tuple[Iterator[bytes], int]]:
|
|
86
|
+
with open(path, "rb") as file:
|
|
87
|
+
length = os.fstat(file.fileno()).st_size
|
|
88
|
+
yield iter(lambda: file.read(chunk_size), b""), length
|
|
89
|
+
|
|
90
|
+
return Body(open_)
|
|
91
|
+
|
|
92
|
+
@classmethod
|
|
93
|
+
def async_from_path(
|
|
94
|
+
cls, path: str | os.PathLike[str], chunk_size: int = _CHUNK_SIZE
|
|
95
|
+
) -> Body[AsyncIterator[bytes]]:
|
|
96
|
+
"""The async counterpart of :meth:`from_path`; needs ``anyio`` installed."""
|
|
97
|
+
if anyio is None:
|
|
98
|
+
dist = (__package__ or "capo").replace("_", "-")
|
|
99
|
+
raise RuntimeError(
|
|
100
|
+
"Body.async_from_path() requires the anyio package; "
|
|
101
|
+
f"reinstall with the anyio feature enabled: {dist}[anyio]"
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
@asynccontextmanager
|
|
105
|
+
async def open_() -> AsyncIterator[tuple[AsyncIterator[bytes], int]]:
|
|
106
|
+
async with await anyio.open_file(path, "rb") as file:
|
|
107
|
+
length = os.fstat(file.wrapped.fileno()).st_size
|
|
108
|
+
|
|
109
|
+
async def chunks() -> AsyncIterator[bytes]:
|
|
110
|
+
while chunk := await file.read(chunk_size):
|
|
111
|
+
yield chunk
|
|
112
|
+
|
|
113
|
+
yield chunks(), length
|
|
114
|
+
|
|
115
|
+
return Body(open_)
|
|
116
|
+
|
|
117
|
+
@property
|
|
118
|
+
def stream(self) -> TStream | None:
|
|
119
|
+
"""The current open stream, or ``None`` if none is open (before the first
|
|
120
|
+
rebuild, or after a close).
|
|
121
|
+
|
|
122
|
+
``build_request`` reuses a non-``None`` stream instead of rebuilding, so
|
|
123
|
+
the retry layer stays in control of when a fresh stream is created.
|
|
124
|
+
"""
|
|
125
|
+
return self._stream
|
|
126
|
+
|
|
127
|
+
def rebuild(self: Body[Iterator[bytes]]) -> tuple[Iterator[bytes], int] | None:
|
|
128
|
+
"""Reopen the stream, closing any previous one, and return ``(stream, length)``.
|
|
129
|
+
|
|
130
|
+
``None`` if the source could not be reopened.
|
|
131
|
+
"""
|
|
132
|
+
self.close()
|
|
133
|
+
cm = self._opener()
|
|
134
|
+
if not isinstance(cm, AbstractContextManager):
|
|
135
|
+
raise TypeError(
|
|
136
|
+
"this Body has an async opener; use it with the async client (arebuild/aclose)"
|
|
137
|
+
)
|
|
138
|
+
cm = cast(AbstractContextManager["tuple[Iterator[bytes], int] | None"], cm)
|
|
139
|
+
opened = cm.__enter__()
|
|
140
|
+
if opened is None:
|
|
141
|
+
cm.__exit__(None, None, None)
|
|
142
|
+
return None
|
|
143
|
+
stream, length = opened
|
|
144
|
+
self._stream, self.length, self._cm = stream, length, cm
|
|
145
|
+
return stream, length
|
|
146
|
+
|
|
147
|
+
async def arebuild(
|
|
148
|
+
self: Body[AsyncIterator[bytes]],
|
|
149
|
+
) -> tuple[AsyncIterator[bytes], int] | None:
|
|
150
|
+
"""Async :meth:`rebuild`, returning ``(stream, length)`` or ``None``."""
|
|
151
|
+
await self.aclose()
|
|
152
|
+
cm = self._opener()
|
|
153
|
+
if not isinstance(cm, AbstractAsyncContextManager):
|
|
154
|
+
raise TypeError(
|
|
155
|
+
"this Body has a sync opener; use it with the sync client (rebuild/close)"
|
|
156
|
+
)
|
|
157
|
+
cm = cast(
|
|
158
|
+
AbstractAsyncContextManager["tuple[AsyncIterator[bytes], int] | None"], cm
|
|
159
|
+
)
|
|
160
|
+
opened = await cm.__aenter__()
|
|
161
|
+
if opened is None:
|
|
162
|
+
await cm.__aexit__(None, None, None)
|
|
163
|
+
return None
|
|
164
|
+
stream, length = opened
|
|
165
|
+
self._stream, self.length, self._cm = stream, length, cm
|
|
166
|
+
return stream, length
|
|
167
|
+
|
|
168
|
+
def close(self: Body[Iterator[bytes]]) -> None:
|
|
169
|
+
cm, self._cm, self._stream, self.length = self._cm, None, None, None
|
|
170
|
+
if cm is not None:
|
|
171
|
+
cast(AbstractContextManager[object], cm).__exit__(None, None, None)
|
|
172
|
+
|
|
173
|
+
async def aclose(self: Body[AsyncIterator[bytes]]) -> None:
|
|
174
|
+
cm, self._cm, self._stream, self.length = self._cm, None, None, None
|
|
175
|
+
if cm is not None:
|
|
176
|
+
await cast(AbstractAsyncContextManager[object], cm).__aexit__(
|
|
177
|
+
None, None, None
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
def __next__(self) -> bytes:
|
|
181
|
+
if self._stream is None:
|
|
182
|
+
raise RuntimeError("body has no open stream; call rebuild() first")
|
|
183
|
+
return next(cast(Iterator[bytes], self._stream))
|
|
184
|
+
|
|
185
|
+
async def __anext__(self) -> bytes:
|
|
186
|
+
if self._stream is None:
|
|
187
|
+
raise RuntimeError("body has no open stream; call rebuild() first")
|
|
188
|
+
return await cast(AsyncIterator[bytes], self._stream).__anext__()
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
@contextmanager
|
|
192
|
+
def closing_bodies(inp: object) -> Iterator[None]:
|
|
193
|
+
"""Close every :class:`Body` in a request input when the operation finishes.
|
|
194
|
+
|
|
195
|
+
The operation method wraps its whole run (request build across retries, plus
|
|
196
|
+
response handling) in this, so a ``Body``'s stream is released once — and only
|
|
197
|
+
once — the operation is done. Non-``Body`` values (bytes, plain iterators,
|
|
198
|
+
``StaticAnyIterator``) are left untouched.
|
|
199
|
+
"""
|
|
200
|
+
try:
|
|
201
|
+
yield
|
|
202
|
+
finally:
|
|
203
|
+
if isinstance(inp, dict):
|
|
204
|
+
for value in inp.values():
|
|
205
|
+
if isinstance(value, Body):
|
|
206
|
+
cast("Body[Iterator[bytes]]", value).close()
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
@asynccontextmanager
|
|
210
|
+
async def aclosing_bodies(inp: object) -> AsyncIterator[None]:
|
|
211
|
+
"""Async :func:`closing_bodies`, awaiting :meth:`Body.aclose`."""
|
|
212
|
+
try:
|
|
213
|
+
yield
|
|
214
|
+
finally:
|
|
215
|
+
if isinstance(inp, dict):
|
|
216
|
+
for value in inp.values():
|
|
217
|
+
if isinstance(value, Body):
|
|
218
|
+
await cast("Body[AsyncIterator[bytes]]", value).aclose()
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
__all__ = ["Body", "aclosing_bodies", "closing_bodies"]
|
|
@@ -2,20 +2,24 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import random
|
|
4
4
|
import time
|
|
5
|
-
from collections.abc import Sequence
|
|
5
|
+
from collections.abc import AsyncIterator, Iterator, Sequence
|
|
6
6
|
from dataclasses import dataclass
|
|
7
|
-
from typing import TYPE_CHECKING, Awaitable, Callable, Generic, TypeVar
|
|
7
|
+
from typing import TYPE_CHECKING, Awaitable, Callable, Generic, TypeVar, cast
|
|
8
8
|
|
|
9
9
|
from zapros import (
|
|
10
10
|
AsyncClient,
|
|
11
11
|
Client,
|
|
12
12
|
ConnectionError,
|
|
13
|
+
ConnectTimeoutError,
|
|
14
|
+
PoolTimeoutError,
|
|
13
15
|
Response,
|
|
14
16
|
SSLError,
|
|
15
17
|
TimeoutError,
|
|
16
18
|
)
|
|
17
19
|
|
|
18
20
|
from capo_codedeploy._async import anysleep
|
|
21
|
+
from capo_codedeploy._body import Body
|
|
22
|
+
from capo_codedeploy._iter import StaticAnyIterator
|
|
19
23
|
from capo_codedeploy.errors import ServiceError
|
|
20
24
|
|
|
21
25
|
if TYPE_CHECKING:
|
|
@@ -141,6 +145,43 @@ def _is_retryable(exc: Exception) -> bool:
|
|
|
141
145
|
return False
|
|
142
146
|
|
|
143
147
|
|
|
148
|
+
def _is_pre_transmission(exc: Exception) -> bool:
|
|
149
|
+
# True when the request body was certainly not written before the error,
|
|
150
|
+
# so the same stream can be reused as-is. A bare ConnectionError is
|
|
151
|
+
# ambiguous ("cannot be established or is lost"), so it does not qualify.
|
|
152
|
+
return isinstance(exc, (ConnectTimeoutError, PoolTimeoutError))
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
def _prepare_retry(inp: object) -> bool:
|
|
156
|
+
if not isinstance(inp, dict):
|
|
157
|
+
return True
|
|
158
|
+
for value in inp.values():
|
|
159
|
+
if isinstance(value, Body):
|
|
160
|
+
value = cast(Body[Iterator[bytes]], value)
|
|
161
|
+
if value.rebuild() is None:
|
|
162
|
+
return False
|
|
163
|
+
elif isinstance(value, StaticAnyIterator):
|
|
164
|
+
continue
|
|
165
|
+
elif isinstance(value, (Iterator, AsyncIterator)):
|
|
166
|
+
return False
|
|
167
|
+
return True
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
async def _aprepare_retry(inp: object) -> bool:
|
|
171
|
+
if not isinstance(inp, dict):
|
|
172
|
+
return True
|
|
173
|
+
for value in inp.values():
|
|
174
|
+
if isinstance(value, Body):
|
|
175
|
+
value = cast(Body[AsyncIterator[bytes]], value)
|
|
176
|
+
if await value.arebuild() is None:
|
|
177
|
+
return False
|
|
178
|
+
elif isinstance(value, StaticAnyIterator):
|
|
179
|
+
continue
|
|
180
|
+
elif isinstance(value, (Iterator, AsyncIterator)):
|
|
181
|
+
return False
|
|
182
|
+
return True
|
|
183
|
+
|
|
184
|
+
|
|
144
185
|
def _retry_delay(attempt: int, is_throttling: bool) -> float:
|
|
145
186
|
base = 1.0 if is_throttling else 0.5
|
|
146
187
|
delay = base * (2.0 ** min(attempt - 1, 10))
|
|
@@ -162,6 +203,10 @@ def retry() -> Interceptor[TInput, TOutput]:
|
|
|
162
203
|
raise
|
|
163
204
|
last_exc = exc
|
|
164
205
|
if attempt < max_attempts:
|
|
206
|
+
if not _is_pre_transmission(exc) and not _prepare_retry(
|
|
207
|
+
request.input
|
|
208
|
+
):
|
|
209
|
+
raise
|
|
165
210
|
is_throttling = (
|
|
166
211
|
isinstance(exc, ServiceError) and exc.is_throttling_error
|
|
167
212
|
)
|
|
@@ -187,6 +232,10 @@ def aretry() -> AsyncInterceptor[TInput, TOutput]:
|
|
|
187
232
|
raise
|
|
188
233
|
last_exc = exc
|
|
189
234
|
if attempt < max_attempts:
|
|
235
|
+
if not _is_pre_transmission(exc) and not await _aprepare_retry(
|
|
236
|
+
request.input
|
|
237
|
+
):
|
|
238
|
+
raise
|
|
190
239
|
is_throttling = (
|
|
191
240
|
isinstance(exc, ServiceError) and exc.is_throttling_error
|
|
192
241
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: capo-codedeploy
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Python SDK for Codedeploy.
|
|
5
5
|
Classifier: Development Status :: 4 - Beta
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -19,6 +19,8 @@ Description-Content-Type: text/markdown
|
|
|
19
19
|
License-File: LICENSE
|
|
20
20
|
Requires-Dist: jmespath>=1.0
|
|
21
21
|
Requires-Dist: zapros>=0.13.0
|
|
22
|
+
Provides-Extra: anyio
|
|
23
|
+
Requires-Dist: anyio>=3.0; extra == "anyio"
|
|
22
24
|
Provides-Extra: sso
|
|
23
25
|
Requires-Dist: capo-sso>=0.2.0; extra == "sso"
|
|
24
26
|
Requires-Dist: capo-sso-oidc>=0.2.0; extra == "sso"
|
|
@@ -3,6 +3,7 @@ README.md
|
|
|
3
3
|
pyproject.toml
|
|
4
4
|
src/capo_codedeploy/__init__.py
|
|
5
5
|
src/capo_codedeploy/_async.py
|
|
6
|
+
src/capo_codedeploy/_body.py
|
|
6
7
|
src/capo_codedeploy/_iter.py
|
|
7
8
|
src/capo_codedeploy/_pagination.py
|
|
8
9
|
src/capo_codedeploy/py.typed
|
|
@@ -473,4 +474,5 @@ src/capo_codedeploy/types/wait_time_in_seconds.py
|
|
|
473
474
|
src/capo_codedeploy/types/zonal_config.py
|
|
474
475
|
src/capo_codedeploy/types/_prelude/blob.py
|
|
475
476
|
src/capo_codedeploy/types/_prelude/timestamp.py
|
|
477
|
+
tests/test_body.py
|
|
476
478
|
tests/test_sigv4.py
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
"""Body: replayable streaming request bodies."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from collections.abc import AsyncIterator, Iterator
|
|
6
|
+
from contextlib import asynccontextmanager, contextmanager
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
import pytest
|
|
10
|
+
|
|
11
|
+
from capo_codedeploy._body import Body
|
|
12
|
+
from capo_codedeploy._iter import AnyIterator, ensure_async_iterator, ensure_sync_iterator
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@pytest.fixture
|
|
16
|
+
def data_file(tmp_path: Path) -> Path:
|
|
17
|
+
path = tmp_path / "data.bin"
|
|
18
|
+
path.write_bytes(b"0123456789" * 3)
|
|
19
|
+
return path
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def test_from_path_reads_in_chunks(data_file: Path) -> None:
|
|
23
|
+
body = Body.from_path(data_file, chunk_size=10)
|
|
24
|
+
assert body.length is None # not known until the first open
|
|
25
|
+
opened = body.rebuild()
|
|
26
|
+
assert opened is not None
|
|
27
|
+
stream, length = opened
|
|
28
|
+
assert length == 30
|
|
29
|
+
assert body.length == 30
|
|
30
|
+
assert list(stream) == [b"0123456789"] * 3
|
|
31
|
+
body.close()
|
|
32
|
+
assert body.length is None # cleared on close
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def test_rebuild_returns_stream_and_length(data_file: Path) -> None:
|
|
36
|
+
body = Body.from_path(data_file, chunk_size=10)
|
|
37
|
+
opened = body.rebuild()
|
|
38
|
+
assert opened is not None
|
|
39
|
+
stream, length = opened
|
|
40
|
+
assert stream is body.stream
|
|
41
|
+
assert length == 30
|
|
42
|
+
body.close()
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def test_length_can_change_between_rebuilds(data_file: Path) -> None:
|
|
46
|
+
body = Body.from_path(data_file, chunk_size=10)
|
|
47
|
+
first = body.rebuild()
|
|
48
|
+
assert first is not None and first[1] == 30
|
|
49
|
+
data_file.write_bytes(b"shorter") # source shrinks between attempts
|
|
50
|
+
second = body.rebuild()
|
|
51
|
+
assert second is not None and second[1] == 7
|
|
52
|
+
assert body.length == 7
|
|
53
|
+
body.close()
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def test_rebuild_replays_a_consumed_stream(data_file: Path) -> None:
|
|
57
|
+
body = Body.from_path(data_file, chunk_size=10)
|
|
58
|
+
first = body.rebuild()
|
|
59
|
+
assert first is not None
|
|
60
|
+
assert next(first[0]) == b"0123456789"
|
|
61
|
+
second = body.rebuild()
|
|
62
|
+
assert second is not None
|
|
63
|
+
assert b"".join(second[0]) == data_file.read_bytes()
|
|
64
|
+
body.close()
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def test_rebuild_closes_the_previous_stream(data_file: Path) -> None:
|
|
68
|
+
body = Body.from_path(data_file)
|
|
69
|
+
opened = body.rebuild()
|
|
70
|
+
assert opened is not None
|
|
71
|
+
first = opened[0]
|
|
72
|
+
again = body.rebuild()
|
|
73
|
+
assert again is not None and first is not again[0]
|
|
74
|
+
with pytest.raises(ValueError): # the file behind the first stream is closed
|
|
75
|
+
next(first)
|
|
76
|
+
body.close()
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def test_stream_is_none_before_rebuild_and_after_close(data_file: Path) -> None:
|
|
80
|
+
body = Body.from_path(data_file)
|
|
81
|
+
assert body.stream is None
|
|
82
|
+
body.rebuild()
|
|
83
|
+
assert body.stream is not None
|
|
84
|
+
body.close()
|
|
85
|
+
assert body.stream is None
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def test_iterating_an_unopened_body_raises(data_file: Path) -> None:
|
|
89
|
+
with pytest.raises(RuntimeError):
|
|
90
|
+
next(Body.from_path(data_file))
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def test_close_without_stream_is_a_noop(data_file: Path) -> None:
|
|
94
|
+
Body.from_path(data_file).close()
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def test_body_is_an_any_iterator_over_its_stream(data_file: Path) -> None:
|
|
98
|
+
body = Body.from_path(data_file, chunk_size=10)
|
|
99
|
+
assert isinstance(body, AnyIterator)
|
|
100
|
+
assert ensure_sync_iterator(body) is body
|
|
101
|
+
body.rebuild()
|
|
102
|
+
assert list(body) == [b"0123456789"] * 3
|
|
103
|
+
body.close()
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def test_rebuild_returns_none_when_opener_yields_none() -> None:
|
|
107
|
+
@contextmanager
|
|
108
|
+
def opener() -> Iterator[tuple[Iterator[bytes], int] | None]:
|
|
109
|
+
yield None
|
|
110
|
+
|
|
111
|
+
body: Body[Iterator[bytes]] = Body(opener)
|
|
112
|
+
assert body.rebuild() is None
|
|
113
|
+
assert body.length is None
|
|
114
|
+
assert body.stream is None # nothing was opened
|
|
115
|
+
body.close()
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def test_async_from_path(data_file: Path) -> None:
|
|
119
|
+
anyio = pytest.importorskip("anyio")
|
|
120
|
+
|
|
121
|
+
async def main() -> None:
|
|
122
|
+
body = Body.async_from_path(data_file, chunk_size=10)
|
|
123
|
+
assert body.length is None
|
|
124
|
+
assert ensure_async_iterator(body) is body
|
|
125
|
+
opened = await body.arebuild()
|
|
126
|
+
assert opened is not None
|
|
127
|
+
stream, length = opened
|
|
128
|
+
assert length == 30
|
|
129
|
+
assert body.length == 30
|
|
130
|
+
assert [chunk async for chunk in stream] == [b"0123456789"] * 3
|
|
131
|
+
await body.arebuild()
|
|
132
|
+
assert [chunk async for chunk in body] == [b"0123456789"] * 3
|
|
133
|
+
await body.aclose()
|
|
134
|
+
assert body.stream is None
|
|
135
|
+
|
|
136
|
+
anyio.run(main)
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
def test_arebuild_returns_none_when_opener_yields_none() -> None:
|
|
140
|
+
anyio = pytest.importorskip("anyio")
|
|
141
|
+
|
|
142
|
+
@asynccontextmanager
|
|
143
|
+
async def opener() -> AsyncIterator[tuple[AsyncIterator[bytes], int] | None]:
|
|
144
|
+
yield None
|
|
145
|
+
|
|
146
|
+
async def main() -> None:
|
|
147
|
+
body: Body[AsyncIterator[bytes]] = Body(opener)
|
|
148
|
+
assert await body.arebuild() is None
|
|
149
|
+
assert body.length is None
|
|
150
|
+
assert body.stream is None
|
|
151
|
+
await body.aclose()
|
|
152
|
+
|
|
153
|
+
anyio.run(main)
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
def test_rebuild_on_an_async_opener_raises_a_clear_typeerror() -> None:
|
|
157
|
+
# The guard is for untyped callers who reach a sync Body method with an
|
|
158
|
+
# async opener; typed code cannot construct this pairing.
|
|
159
|
+
@asynccontextmanager
|
|
160
|
+
async def opener() -> AsyncIterator[tuple[AsyncIterator[bytes], int]]:
|
|
161
|
+
async def chunks() -> AsyncIterator[bytes]:
|
|
162
|
+
yield b"x"
|
|
163
|
+
|
|
164
|
+
yield chunks(), 1
|
|
165
|
+
|
|
166
|
+
body: Body[Iterator[bytes]] = Body(opener)
|
|
167
|
+
with pytest.raises(TypeError, match="async opener"):
|
|
168
|
+
body.rebuild()
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def test_arebuild_on_a_sync_opener_raises_a_clear_typeerror() -> None:
|
|
172
|
+
anyio = pytest.importorskip("anyio")
|
|
173
|
+
|
|
174
|
+
@contextmanager
|
|
175
|
+
def opener() -> Iterator[tuple[Iterator[bytes], int]]:
|
|
176
|
+
yield iter([b"x"]), 1
|
|
177
|
+
|
|
178
|
+
async def main() -> None:
|
|
179
|
+
body: Body[AsyncIterator[bytes]] = Body(opener)
|
|
180
|
+
with pytest.raises(TypeError, match="sync opener"):
|
|
181
|
+
await body.arebuild()
|
|
182
|
+
|
|
183
|
+
anyio.run(main)
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
def test_custom_opener() -> None:
|
|
187
|
+
opened = 0
|
|
188
|
+
|
|
189
|
+
@contextmanager
|
|
190
|
+
def opener() -> Iterator[tuple[Iterator[bytes], int]]:
|
|
191
|
+
nonlocal opened
|
|
192
|
+
opened += 1
|
|
193
|
+
yield iter([b"ab", b"cd"]), 4
|
|
194
|
+
|
|
195
|
+
body: Body[Iterator[bytes]] = Body(opener)
|
|
196
|
+
body.rebuild()
|
|
197
|
+
result = body.rebuild()
|
|
198
|
+
assert opened == 2
|
|
199
|
+
assert result is not None
|
|
200
|
+
stream, length = result
|
|
201
|
+
assert stream is body.stream and length == 4
|
|
202
|
+
assert b"".join(stream) == b"abcd"
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
def test_custom_async_opener() -> None:
|
|
206
|
+
anyio = pytest.importorskip("anyio")
|
|
207
|
+
|
|
208
|
+
@asynccontextmanager
|
|
209
|
+
async def opener() -> AsyncIterator[tuple[AsyncIterator[bytes], int]]:
|
|
210
|
+
async def chunks() -> AsyncIterator[bytes]:
|
|
211
|
+
yield b"ab"
|
|
212
|
+
yield b"cd"
|
|
213
|
+
|
|
214
|
+
yield chunks(), 4
|
|
215
|
+
|
|
216
|
+
async def main() -> None:
|
|
217
|
+
body: Body[AsyncIterator[bytes]] = Body(opener)
|
|
218
|
+
opened = await body.arebuild()
|
|
219
|
+
assert opened is not None
|
|
220
|
+
stream, length = opened
|
|
221
|
+
assert length == 4
|
|
222
|
+
assert b"".join([chunk async for chunk in stream]) == b"abcd"
|
|
223
|
+
await body.aclose()
|
|
224
|
+
|
|
225
|
+
anyio.run(main)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{capo_codedeploy-0.1.0 → capo_codedeploy-0.2.0}/src/capo_codedeploy/_auth/_zapros_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|