From 5d2439c362a83098cbfeb558c165e60a15fbd3b2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 14 Dec 2023 10:47:43 -0800 Subject: [PATCH 001/100] chore(deps): bump github/codeql-action from 2 to 3 (#6451) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2 to 3. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/v2...v3) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 2f3b24755ed..8e0507afc63 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -46,7 +46,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -60,7 +60,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v2 + uses: github/codeql-action/autobuild@v3 # ℹī¸ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -73,6 +73,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 with: category: "/language:${{matrix.language}}" From c45ba1591ea0d98e9ced60f0aecc4320cf297d01 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 14 Dec 2023 19:26:58 +0000 Subject: [PATCH 002/100] chore(deps-dev): bump black from 23.11.0 to 23.12.0 in /requirements (#6439) Bumps [black](https://github.com/psf/black) from 23.11.0 to 23.12.0. - [Release notes](https://github.com/psf/black/releases) - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md) - [Commits](https://github.com/psf/black/compare/23.11.0...23.12.0) --- updated-dependencies: - dependency-name: black dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> --- requirements/dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index 87c0c956c20..8fede48f1ae 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -36,5 +36,5 @@ pytest-json-report==1.5.0 filelock==3.13.1 # formatter -black==23.11.0 +black==23.12.0 psutil==5.9.6 From 6fd7c4b3df863066f97235eace03e7a34420079f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 14 Dec 2023 19:28:57 +0000 Subject: [PATCH 003/100] chore(deps): bump pyinstaller from 6.2.0 to 6.3.0 in /requirements (#6430) Bumps [pyinstaller](https://github.com/pyinstaller/pyinstaller) from 6.2.0 to 6.3.0. - [Release notes](https://github.com/pyinstaller/pyinstaller/releases) - [Changelog](https://github.com/pyinstaller/pyinstaller/blob/develop/doc/CHANGES.rst) - [Commits](https://github.com/pyinstaller/pyinstaller/compare/v6.2.0...v6.3.0) --- updated-dependencies: - dependency-name: pyinstaller dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> --- requirements/pyinstaller-build.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/pyinstaller-build.txt b/requirements/pyinstaller-build.txt index bcb0e32bb64..a698aab2c81 100644 --- a/requirements/pyinstaller-build.txt +++ b/requirements/pyinstaller-build.txt @@ -1,3 +1,3 @@ # Executable binary builder requirements setuptools==69.0.2 -pyinstaller==6.2.0 +pyinstaller==6.3.0 From 49e4d70eaa34113f1eaf3f24671eaba3c80eb35d Mon Sep 17 00:00:00 2001 From: "Michael B. Klein" Date: Thu, 14 Dec 2023 14:25:05 -0600 Subject: [PATCH 004/100] Add SSL support to local start-api and start-lambda (#5902) * Add SSL support to local start-api and start-lambda * Validate SSL options earlier; simplify SSLError handler * Use click.Path(exists=True) for SSL file validation * update tests & formatting * Remove SSL options from start-lambda --------- Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com> Co-authored-by: Lucas <12496191+lucashuy@users.noreply.github.com> --- .../commands/local/lib/local_api_service.py | 17 ++++++++--- .../local/lib/local_lambda_service.py | 11 +++++-- samcli/commands/local/start_api/cli.py | 29 ++++++++++++++++++- .../commands/local/start_api/core/options.py | 2 ++ samcli/local/apigw/local_apigw_service.py | 8 +++-- .../local_lambda_invoke_service.py | 7 +++-- samcli/local/services/base_local_service.py | 7 +++-- schema/samcli.json | 12 +++++++- .../local/lib/test_local_api_service.py | 18 ++++++++++-- .../local/lib/test_local_lambda_service.py | 10 +++++-- .../unit/commands/local/start_api/test_cli.py | 5 ++++ .../unit/commands/samconfig/test_samconfig.py | 10 +++++-- .../local/services/test_base_local_service.py | 12 ++++---- 13 files changed, 120 insertions(+), 28 deletions(-) diff --git a/samcli/commands/local/lib/local_api_service.py b/samcli/commands/local/lib/local_api_service.py index 9b5b90108ca..a40c5539604 100644 --- a/samcli/commands/local/lib/local_api_service.py +++ b/samcli/commands/local/lib/local_api_service.py @@ -18,7 +18,7 @@ class LocalApiService: Lambda function. """ - def __init__(self, lambda_invoke_context, port, host, static_dir, disable_authorizer): + def __init__(self, lambda_invoke_context, port, host, static_dir, disable_authorizer, ssl_context): """ Initialize the local API service. @@ -28,11 +28,14 @@ def __init__(self, lambda_invoke_context, port, host, static_dir, disable_author :param string host: Local hostname or IP address to bind to :param string static_dir: Optional, directory from which static files will be mounted :param bool disable_authorizer: Optional, flag for disabling the parsing of lambda authorizers + :param tuple(string, string) ssl_context: Optional, path to ssl certificate and key files to start service + in https """ self.port = port self.host = host self.static_dir = static_dir + self.ssl_context = ssl_context self.cwd = lambda_invoke_context.get_cwd() self.disable_authorizer = disable_authorizer @@ -66,13 +69,14 @@ def start(self): static_dir=static_dir_path, port=self.port, host=self.host, + ssl_context=self.ssl_context, stderr=self.stderr_stream, ) service.create() # Print out the list of routes that will be mounted - self._print_routes(self.api_provider.api.routes, self.host, self.port) + self._print_routes(self.api_provider.api.routes, self.host, self.port, bool(self.ssl_context)) LOG.info( "You can now browse to the above endpoints to invoke your functions. " "You do not need to restart/reload SAM CLI while working on your functions, " @@ -84,7 +88,7 @@ def start(self): service.run() @staticmethod - def _print_routes(routes, host, port): + def _print_routes(routes, host, port, ssl_enabled=False): """ Helper method to print the APIs that will be mounted. This method is purely for printing purposes. This method takes in a list of Route Configurations and prints out the Routes grouped by path. @@ -100,14 +104,19 @@ def _print_routes(routes, host, port): Host name where the service is running :param int port: Port number where the service is running + :param bool ssl_enabled: + Boolean parameter to set whether SSL configuration is enabled :returns list(string): List of lines that were printed to the console. Helps with testing """ print_lines = [] + protocol = "https" if ssl_enabled else "http" for route in routes: methods_str = "[{}]".format(", ".join(route.methods)) - output = "Mounting {} at http://{}:{}{} {}".format(route.function_name, host, port, route.path, methods_str) + output = "Mounting {} at {}://{}:{}{} {}".format( + route.function_name, protocol, host, port, route.path, methods_str + ) print_lines.append(output) LOG.info(output) diff --git a/samcli/commands/local/lib/local_lambda_service.py b/samcli/commands/local/lib/local_lambda_service.py index 07d11f78f05..1c709793ddf 100644 --- a/samcli/commands/local/lib/local_lambda_service.py +++ b/samcli/commands/local/lib/local_lambda_service.py @@ -14,7 +14,7 @@ class LocalLambdaService: that are defined in a SAM file. """ - def __init__(self, lambda_invoke_context, port, host): + def __init__(self, lambda_invoke_context, port, host, ssl_context): """ Initialize the Local Lambda Invoke service. @@ -22,10 +22,13 @@ def __init__(self, lambda_invoke_context, port, host): that can help with Lambda invocation :param int port: Port to listen on :param string host: Local hostname or IP address to bind to + :param tuple(string, string) ssl_context: Optional, path to ssl certificate and key files to start service + in https """ self.port = port self.host = host + self.ssl_context = ssl_context self.lambda_runner = lambda_invoke_context.local_lambda_runner self.stderr_stream = lambda_invoke_context.stderr @@ -43,7 +46,11 @@ def start(self): # to the console or a log file. stderr from Docker container contains runtime logs and output of print # statements from the Lambda function service = LocalLambdaInvokeService( - lambda_runner=self.lambda_runner, port=self.port, host=self.host, stderr=self.stderr_stream + lambda_runner=self.lambda_runner, + port=self.port, + host=self.host, + ssl_context=self.ssl_context, + stderr=self.stderr_stream, ) service.create() diff --git a/samcli/commands/local/start_api/cli.py b/samcli/commands/local/start_api/cli.py index ead889c3440..d8b94fe48e9 100644 --- a/samcli/commands/local/start_api/cli.py +++ b/samcli/commands/local/start_api/cli.py @@ -3,12 +3,14 @@ """ import logging +from ssl import SSLError import click from samcli.cli.cli_config_file import ConfigProvider, configuration_option, save_params_option from samcli.cli.main import aws_creds_options, pass_context, print_cmdline_args from samcli.cli.main import common_options as cli_framework_options +from samcli.commands._utils.click_mutex import ClickMutex from samcli.commands._utils.option_value_processor import process_image_options from samcli.commands._utils.options import ( generate_next_command_recommendation, @@ -77,6 +79,22 @@ default=False, help="Disable custom Lambda Authorizers from being parsed and invoked.", ) +@click.option( + "--ssl-cert-file", + default=None, + type=click.Path(exists=True), + cls=ClickMutex, + required_param_lists=[["ssl_key_file"]], + help="Path to SSL certificate file (default: None)", +) +@click.option( + "--ssl-key-file", + default=None, + type=click.Path(exists=True), + cls=ClickMutex, + required_param_lists=[["ssl_cert_file"]], + help="Path to SSL key file (default: None)", +) @invoke_common_options @warm_containers_common_options @local_common_options @@ -120,6 +138,8 @@ def cli( hook_name, skip_prepare_infra, terraform_plan_file, + ssl_cert_file, + ssl_key_file, ): """ `sam local start-api` command entry point @@ -152,6 +172,8 @@ def cli( container_host_interface, invoke_image, hook_name, + ssl_cert_file, + ssl_key_file, ) # pragma: no cover @@ -181,6 +203,8 @@ def do_cli( # pylint: disable=R0914 container_host_interface, invoke_image, hook_name, + ssl_cert_file, + ssl_key_file, ): """ Implementation of the ``cli`` method, just separated out for unit testing purposes @@ -226,12 +250,14 @@ def do_cli( # pylint: disable=R0914 container_host_interface=container_host_interface, invoke_images=processed_invoke_images, ) as invoke_context: + ssl_context = (ssl_cert_file, ssl_key_file) if ssl_cert_file else None service = LocalApiService( lambda_invoke_context=invoke_context, port=port, host=host, static_dir=static_dir, disable_authorizer=disable_authorizer, + ssl_context=ssl_context, ) service.start() if not hook_name: @@ -243,7 +269,8 @@ def do_cli( # pylint: disable=R0914 ] ) click.secho(command_suggestions, fg="yellow") - + except SSLError as ex: + raise UserException(f"SSL Error: {ex.strerror}", wrapped_from=ex.__class__.__name__) from ex except NoApisDefined as ex: raise UserException( "Template does not have any APIs connected to Lambda functions", wrapped_from=ex.__class__.__name__ diff --git a/samcli/commands/local/start_api/core/options.py b/samcli/commands/local/start_api/core/options.py index be20cbe825a..49712814506 100644 --- a/samcli/commands/local/start_api/core/options.py +++ b/samcli/commands/local/start_api/core/options.py @@ -22,6 +22,8 @@ CONTAINER_OPTION_NAMES: List[str] = [ "host", "port", + "ssl_cert_file", + "ssl_key_file", "env_vars", "container_env_vars", "debug_port", diff --git a/samcli/local/apigw/local_apigw_service.py b/samcli/local/apigw/local_apigw_service.py index 3a3c834ec0c..80da1f4480f 100644 --- a/samcli/local/apigw/local_apigw_service.py +++ b/samcli/local/apigw/local_apigw_service.py @@ -6,7 +6,7 @@ from datetime import datetime from io import StringIO from time import time -from typing import Any, Dict, List, Optional +from typing import Any, Dict, List, Optional, Tuple from flask import Flask, Request, request from werkzeug.datastructures import Headers @@ -66,6 +66,7 @@ def __init__( port: Optional[int] = None, host: Optional[str] = None, stderr: Optional[StreamWriter] = None, + ssl_context: Optional[Tuple[str, str]] = None, ): """ Creates an ApiGatewayService @@ -84,10 +85,13 @@ def __init__( host : str Optional. host to start the service on Defaults to '127.0.0.1 + ssl_context : (str, str) + Optional. tuple(str, str) indicating the cert and key files to use to start in https mode + Defaults to None stderr : samcli.lib.utils.stream_writer.StreamWriter Optional stream writer where the stderr from Docker container should be written to """ - super().__init__(lambda_runner.is_debugging(), port=port, host=host) + super().__init__(lambda_runner.is_debugging(), port=port, host=host, ssl_context=ssl_context) self.api = api self.lambda_runner = lambda_runner self.static_dir = static_dir diff --git a/samcli/local/lambda_service/local_lambda_invoke_service.py b/samcli/local/lambda_service/local_lambda_invoke_service.py index 546066449cb..1e46a105076 100644 --- a/samcli/local/lambda_service/local_lambda_invoke_service.py +++ b/samcli/local/lambda_service/local_lambda_invoke_service.py @@ -30,7 +30,7 @@ def to_url(self, value): class LocalLambdaInvokeService(BaseLocalService): - def __init__(self, lambda_runner, port, host, stderr=None): + def __init__(self, lambda_runner, port, host, stderr=None, ssl_context=None): """ Creates a Local Lambda Service that will only response to invoking a function @@ -42,10 +42,13 @@ def __init__(self, lambda_runner, port, host, stderr=None): Optional. port for the service to start listening on host str Optional. host to start the service on + ssl_context : (str, str) + Optional. tuple(str, str) indicating the cert and key files to use to start in https mode + Defaults to None stderr io.BaseIO Optional stream where the stderr from Docker container should be written to """ - super().__init__(lambda_runner.is_debugging(), port=port, host=host) + super().__init__(lambda_runner.is_debugging(), port=port, host=host, ssl_context=ssl_context) self.lambda_runner = lambda_runner self.stderr = stderr diff --git a/samcli/local/services/base_local_service.py b/samcli/local/services/base_local_service.py index 671d48888c8..5de5beb7dd5 100644 --- a/samcli/local/services/base_local_service.py +++ b/samcli/local/services/base_local_service.py @@ -10,7 +10,7 @@ class BaseLocalService: - def __init__(self, is_debugging, port, host): + def __init__(self, is_debugging, port, host, ssl_context): """ Creates a BaseLocalService class @@ -22,10 +22,13 @@ def __init__(self, is_debugging, port, host): Optional. port for the service to start listening on Defaults to 3000 host str Optional. host to start the service on Defaults to '127.0.0.1 + ssl_context tuple(str, str) + Optional. path to ssl certificate and key files to start service in https """ self.is_debugging = is_debugging self.port = port self.host = host + self.ssl_context = ssl_context self._app = None def create(self): @@ -62,7 +65,7 @@ def run(self): flask.cli.show_server_banner = lambda *args: None - self._app.run(threaded=multi_threaded, host=self.host, port=self.port) + self._app.run(threaded=multi_threaded, host=self.host, port=self.port, ssl_context=self.ssl_context) @staticmethod def service_response(body, headers, status_code): diff --git a/schema/samcli.json b/schema/samcli.json index c057f3368ac..c620315e8cb 100644 --- a/schema/samcli.json +++ b/schema/samcli.json @@ -564,7 +564,7 @@ "properties": { "parameters": { "title": "Parameters for the local start api command", - "description": "Available parameters for the local start api command:\n* terraform_plan_file:\nUsed for passing a custom plan file when executing the Terraform hook.\n* hook_name:\nHook package id to extend AWS SAM CLI commands functionality. \n\nExample: `terraform` to extend AWS SAM CLI commands functionality to support terraform applications. \n\nAvailable Hook Names: ['terraform']\n* skip_prepare_infra:\nSkip preparation stage when there are no infrastructure changes. Only used in conjunction with --hook-name.\n* host:\nLocal hostname or IP address to bind to (default: '127.0.0.1')\n* port:\nLocal port number to listen on (default: '3000')\n* static_dir:\nAny static assets (e.g. CSS/Javascript/HTML) files located in this directory will be presented at /\n* disable_authorizer:\nDisable custom Lambda Authorizers from being parsed and invoked.\n* template_file:\nAWS SAM template which references built artifacts for resources in the template. (if applicable)\n* env_vars:\nJSON file containing values for Lambda function's environment variables.\n* parameter_overrides:\nString that contains AWS CloudFormation parameter overrides encoded as key=value pairs.\n* debug_port:\nWhen specified, Lambda function container will start in debug mode and will expose this port on localhost.\n* debugger_path:\nHost path to a debugger that will be mounted into the Lambda container.\n* debug_args:\nAdditional arguments to be passed to the debugger.\n* container_env_vars:\nJSON file containing additional environment variables to be set within the container when used in a debugging session locally.\n* docker_volume_basedir:\nSpecify the location basedir where the SAM template exists. If Docker is running on a remote machine, Path of the SAM template must be mounted on the Docker machine and modified to match the remote machine.\n* log_file:\nFile to capture output logs.\n* layer_cache_basedir:\nSpecify the location basedir where the lambda layers used by the template will be downloaded to.\n* skip_pull_image:\nSkip pulling down the latest Docker image for Lambda runtime.\n* docker_network:\nName or ID of an existing docker network for AWS Lambda docker containers to connect to, along with the default bridge network. If not specified, the Lambda containers will only connect to the default bridge docker network.\n* force_image_build:\nForce rebuilding the image used for invoking functions with layers.\n* warm_containers:\nOptional. Specifies how AWS SAM CLI manages \ncontainers for each function.\nTwo modes are available:\nEAGER: Containers for all functions are \nloaded at startup and persist between \ninvocations.\nLAZY: Containers are only loaded when each \nfunction is first invoked. Those containers \npersist for additional invocations.\n* debug_function:\nOptional. Specifies the Lambda Function logicalId to apply debug options to when --warm-containers is specified. This parameter applies to --debug-port, --debugger-path, and --debug-args.\n* shutdown:\nEmulate a shutdown event after invoke completes, to test extension handling of shutdown behavior.\n* container_host:\nHost of locally emulated Lambda container. This option is useful when the container runs on a different host than AWS SAM CLI. For example, if one wants to run AWS SAM CLI in a Docker container on macOS, this option could specify `host.docker.internal`\n* container_host_interface:\nIP address of the host network interface that container ports should bind to. Use 0.0.0.0 to bind to all interfaces.\n* invoke_image:\nContainer image URIs for invoking functions or starting api and function. One can specify the image URI used for the local function invocation (--invoke-image public.ecr.aws/sam/build-nodejs14.x:latest). One can also specify for each individual function with (--invoke-image Function1=public.ecr.aws/sam/build-nodejs14.x:latest). If a function does not have invoke image specified, the default AWS SAM CLI emulation image will be used.\n* beta_features:\nEnable/Disable beta features.\n* debug:\nTurn on debug logging to print debug message generated by AWS SAM CLI and display timestamps.\n* profile:\nSelect a specific profile from your credential file to get AWS credentials.\n* region:\nSet the AWS Region of the service. (e.g. us-east-1)\n* save_params:\nSave the parameters provided via the command line to the configuration file.", + "description": "Available parameters for the local start api command:\n* terraform_plan_file:\nUsed for passing a custom plan file when executing the Terraform hook.\n* hook_name:\nHook package id to extend AWS SAM CLI commands functionality. \n\nExample: `terraform` to extend AWS SAM CLI commands functionality to support terraform applications. \n\nAvailable Hook Names: ['terraform']\n* skip_prepare_infra:\nSkip preparation stage when there are no infrastructure changes. Only used in conjunction with --hook-name.\n* host:\nLocal hostname or IP address to bind to (default: '127.0.0.1')\n* port:\nLocal port number to listen on (default: '3000')\n* static_dir:\nAny static assets (e.g. CSS/Javascript/HTML) files located in this directory will be presented at /\n* disable_authorizer:\nDisable custom Lambda Authorizers from being parsed and invoked.\n* ssl_cert_file:\nPath to SSL certificate file (default: None)\n* ssl_key_file:\nPath to SSL key file (default: None)\n* template_file:\nAWS SAM template which references built artifacts for resources in the template. (if applicable)\n* env_vars:\nJSON file containing values for Lambda function's environment variables.\n* parameter_overrides:\nString that contains AWS CloudFormation parameter overrides encoded as key=value pairs.\n* debug_port:\nWhen specified, Lambda function container will start in debug mode and will expose this port on localhost.\n* debugger_path:\nHost path to a debugger that will be mounted into the Lambda container.\n* debug_args:\nAdditional arguments to be passed to the debugger.\n* container_env_vars:\nJSON file containing additional environment variables to be set within the container when used in a debugging session locally.\n* docker_volume_basedir:\nSpecify the location basedir where the SAM template exists. If Docker is running on a remote machine, Path of the SAM template must be mounted on the Docker machine and modified to match the remote machine.\n* log_file:\nFile to capture output logs.\n* layer_cache_basedir:\nSpecify the location basedir where the lambda layers used by the template will be downloaded to.\n* skip_pull_image:\nSkip pulling down the latest Docker image for Lambda runtime.\n* docker_network:\nName or ID of an existing docker network for AWS Lambda docker containers to connect to, along with the default bridge network. If not specified, the Lambda containers will only connect to the default bridge docker network.\n* force_image_build:\nForce rebuilding the image used for invoking functions with layers.\n* warm_containers:\nOptional. Specifies how AWS SAM CLI manages \ncontainers for each function.\nTwo modes are available:\nEAGER: Containers for all functions are \nloaded at startup and persist between \ninvocations.\nLAZY: Containers are only loaded when each \nfunction is first invoked. Those containers \npersist for additional invocations.\n* debug_function:\nOptional. Specifies the Lambda Function logicalId to apply debug options to when --warm-containers is specified. This parameter applies to --debug-port, --debugger-path, and --debug-args.\n* shutdown:\nEmulate a shutdown event after invoke completes, to test extension handling of shutdown behavior.\n* container_host:\nHost of locally emulated Lambda container. This option is useful when the container runs on a different host than AWS SAM CLI. For example, if one wants to run AWS SAM CLI in a Docker container on macOS, this option could specify `host.docker.internal`\n* container_host_interface:\nIP address of the host network interface that container ports should bind to. Use 0.0.0.0 to bind to all interfaces.\n* invoke_image:\nContainer image URIs for invoking functions or starting api and function. One can specify the image URI used for the local function invocation (--invoke-image public.ecr.aws/sam/build-nodejs14.x:latest). One can also specify for each individual function with (--invoke-image Function1=public.ecr.aws/sam/build-nodejs14.x:latest). If a function does not have invoke image specified, the default AWS SAM CLI emulation image will be used.\n* beta_features:\nEnable/Disable beta features.\n* debug:\nTurn on debug logging to print debug message generated by AWS SAM CLI and display timestamps.\n* profile:\nSelect a specific profile from your credential file to get AWS credentials.\n* region:\nSet the AWS Region of the service. (e.g. us-east-1)\n* save_params:\nSave the parameters provided via the command line to the configuration file.", "type": "object", "properties": { "terraform_plan_file": { @@ -605,6 +605,16 @@ "type": "boolean", "description": "Disable custom Lambda Authorizers from being parsed and invoked." }, + "ssl_cert_file": { + "title": "ssl_cert_file", + "type": "string", + "description": "Path to SSL certificate file (default: None)" + }, + "ssl_key_file": { + "title": "ssl_key_file", + "type": "string", + "description": "Path to SSL key file (default: None)" + }, "template_file": { "title": "template_file", "type": "string", diff --git a/tests/unit/commands/local/lib/test_local_api_service.py b/tests/unit/commands/local/lib/test_local_api_service.py index 4d2b10740b5..d054fa1c1ca 100644 --- a/tests/unit/commands/local/lib/test_local_api_service.py +++ b/tests/unit/commands/local/lib/test_local_api_service.py @@ -18,6 +18,7 @@ class TestLocalApiService_start(TestCase): def setUp(self): self.port = 123 self.host = "abc" + self.ssl_context = None self.static_dir = "static" self.cwd = "cwd" self.template = {"hello": "world"} @@ -50,7 +51,12 @@ def test_must_start_service(self, log_routes_mock, make_static_dir_mock, SamApiP # Now start the service local_service = LocalApiService( - self.lambda_invoke_context_mock, self.port, self.host, self.static_dir, self.disable_authorizer + self.lambda_invoke_context_mock, + self.port, + self.host, + self.static_dir, + self.disable_authorizer, + self.ssl_context, ) local_service.api_provider.api.routes = routing_list local_service.start() @@ -60,7 +66,7 @@ def test_must_start_service(self, log_routes_mock, make_static_dir_mock, SamApiP self.lambda_invoke_context_mock.stacks, cwd=self.cwd, disable_authorizer=self.disable_authorizer ) - log_routes_mock.assert_called_with(routing_list, self.host, self.port) + log_routes_mock.assert_called_with(routing_list, self.host, self.port, bool(self.ssl_context)) make_static_dir_mock.assert_called_with(self.cwd, self.static_dir) ApiGwServiceMock.assert_called_with( api=self.api_provider_mock.api, @@ -68,6 +74,7 @@ def test_must_start_service(self, log_routes_mock, make_static_dir_mock, SamApiP static_dir=static_dir_path, port=self.port, host=self.host, + ssl_context=self.ssl_context, stderr=self.stderr_mock, ) @@ -91,7 +98,12 @@ def test_must_raise_if_route_not_available( # Now start the service local_service = LocalApiService( - self.lambda_invoke_context_mock, self.port, self.host, self.static_dir, self.disable_authorizer + self.lambda_invoke_context_mock, + self.port, + self.host, + self.static_dir, + self.disable_authorizer, + self.ssl_context, ) local_service.api_provider.api.routes = routing_list with self.assertRaises(NoApisDefined): diff --git a/tests/unit/commands/local/lib/test_local_lambda_service.py b/tests/unit/commands/local/lib/test_local_lambda_service.py index da28d4711ff..2c8a180f835 100644 --- a/tests/unit/commands/local/lib/test_local_lambda_service.py +++ b/tests/unit/commands/local/lib/test_local_lambda_service.py @@ -13,7 +13,9 @@ def test_initialization(self): lambda_invoke_context_mock.local_lambda_runner = lambda_runner_mock lambda_invoke_context_mock.stderr = stderr_mock - service = LocalLambdaService(lambda_invoke_context=lambda_invoke_context_mock, port=3000, host="localhost") + service = LocalLambdaService( + lambda_invoke_context=lambda_invoke_context_mock, port=3000, host="localhost", ssl_context=None + ) self.assertEqual(service.port, 3000) self.assertEqual(service.host, "localhost") @@ -32,12 +34,14 @@ def test_start(self, local_lambda_invoke_service_mock): lambda_invoke_context_mock.local_lambda_runner = lambda_runner_mock lambda_invoke_context_mock.stderr = stderr_mock - service = LocalLambdaService(lambda_invoke_context=lambda_invoke_context_mock, port=3000, host="localhost") + service = LocalLambdaService( + lambda_invoke_context=lambda_invoke_context_mock, port=3000, host="localhost", ssl_context=None + ) service.start() local_lambda_invoke_service_mock.assert_called_once_with( - lambda_runner=lambda_runner_mock, port=3000, host="localhost", stderr=stderr_mock + lambda_runner=lambda_runner_mock, port=3000, host="localhost", stderr=stderr_mock, ssl_context=None ) lambda_context_mock.create.assert_called_once() lambda_context_mock.run.assert_called_once() diff --git a/tests/unit/commands/local/start_api/test_cli.py b/tests/unit/commands/local/start_api/test_cli.py index 57ae7641338..f19dbeff767 100644 --- a/tests/unit/commands/local/start_api/test_cli.py +++ b/tests/unit/commands/local/start_api/test_cli.py @@ -48,6 +48,8 @@ def setUp(self): self.host = "host" self.port = 123 + self.ssl_cert_file = None + self.ssl_key_file = None self.static_dir = "staticdir" self.container_host = "localhost" @@ -99,6 +101,7 @@ def test_cli_must_setup_context_and_start_service(self, local_api_service_mock, lambda_invoke_context=context_mock, port=self.port, host=self.host, + ssl_context=None, static_dir=self.static_dir, disable_authorizer=self.disable_authorizer, ) @@ -219,5 +222,7 @@ def call_cli(self): container_host_interface=self.container_host_interface, invoke_image=self.invoke_image, hook_name=self.hook_name, + ssl_cert_file=self.ssl_cert_file, + ssl_key_file=self.ssl_key_file, disable_authorizer=self.disable_authorizer, ) diff --git a/tests/unit/commands/samconfig/test_samconfig.py b/tests/unit/commands/samconfig/test_samconfig.py index eaeaa54b8a7..f1860559e92 100644 --- a/tests/unit/commands/samconfig/test_samconfig.py +++ b/tests/unit/commands/samconfig/test_samconfig.py @@ -461,6 +461,8 @@ def test_local_start_api(self, do_cli_mock): "127.0.0.1", ("image",), None, + None, + None, ) @patch("samcli.commands.local.start_lambda.cli.do_cli") @@ -1057,7 +1059,9 @@ def test_override_with_cli_params(self, do_cli_mock): } # NOTE: Because we don't load the full Click BaseCommand here, this is mounted as top-level command - with samconfig_parameters(["start-lambda"], self.scratch_dir, **config_values) as config_path: + with samconfig_parameters( + ["start-lambda"], self.scratch_dir, **config_values + ) as config_path, tempfile.NamedTemporaryFile() as key_file, tempfile.NamedTemporaryFile() as cert_file: from samcli.commands.local.start_lambda.cli import cli LOG.debug(Path(config_path).read_text()) @@ -1159,7 +1163,9 @@ def test_override_with_cli_params_and_envvars(self, do_cli_mock): } # NOTE: Because we don't load the full Click BaseCommand here, this is mounted as top-level command - with samconfig_parameters(["start-lambda"], self.scratch_dir, **config_values) as config_path: + with samconfig_parameters( + ["start-lambda"], self.scratch_dir, **config_values + ) as config_path, tempfile.NamedTemporaryFile() as key_file, tempfile.NamedTemporaryFile() as cert_file: from samcli.commands.local.start_lambda.cli import cli LOG.debug(Path(config_path).read_text()) diff --git a/tests/unit/local/services/test_base_local_service.py b/tests/unit/local/services/test_base_local_service.py index 34bc44c193e..0469b592e4c 100644 --- a/tests/unit/local/services/test_base_local_service.py +++ b/tests/unit/local/services/test_base_local_service.py @@ -9,14 +9,14 @@ class TestLocalHostRunner(TestCase): def test_runtime_error_raised_when_app_not_created(self): is_debugging = False - service = BaseLocalService(is_debugging=is_debugging, port=3000, host="127.0.0.1") + service = BaseLocalService(is_debugging=is_debugging, port=3000, host="127.0.0.1", ssl_context=None) with self.assertRaises(RuntimeError): service.run() def test_run_starts_service_multithreaded(self): is_debugging = False # multithreaded - service = BaseLocalService(is_debugging=is_debugging, port=3000, host="127.0.0.1") + service = BaseLocalService(is_debugging=is_debugging, port=3000, host="127.0.0.1", ssl_context=None) service._app = Mock() app_run_mock = Mock() @@ -24,11 +24,11 @@ def test_run_starts_service_multithreaded(self): service.run() - app_run_mock.assert_called_once_with(threaded=True, host="127.0.0.1", port=3000) + app_run_mock.assert_called_once_with(threaded=True, host="127.0.0.1", port=3000, ssl_context=None) def test_run_starts_service_singlethreaded(self): is_debugging = True # singlethreaded - service = BaseLocalService(is_debugging=is_debugging, port=3000, host="127.0.0.1") + service = BaseLocalService(is_debugging=is_debugging, port=3000, host="127.0.0.1", ssl_context=None) service._app = Mock() app_run_mock = Mock() @@ -36,7 +36,7 @@ def test_run_starts_service_singlethreaded(self): service.run() - app_run_mock.assert_called_once_with(threaded=False, host="127.0.0.1", port=3000) + app_run_mock.assert_called_once_with(threaded=False, host="127.0.0.1", port=3000, ssl_context=None) @patch("samcli.local.services.base_local_service.Response") def test_service_response(self, flask_response_patch): @@ -57,7 +57,7 @@ def test_service_response(self, flask_response_patch): def test_create_returns_not_implemented(self): is_debugging = False - service = BaseLocalService(is_debugging=is_debugging, port=3000, host="127.0.0.1") + service = BaseLocalService(is_debugging=is_debugging, port=3000, host="127.0.0.1", ssl_context=None) with self.assertRaises(NotImplementedError): service.create() From 821fcb64185f365c469eba9aeaf377541ffb367f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 14 Dec 2023 22:13:03 +0000 Subject: [PATCH 005/100] chore(deps): bump the types group in /requirements with 4 updates (#6453) Bumps the types group in /requirements with 4 updates: [types-awscrt](https://github.com/youtype/types-awscrt), [types-s3transfer](https://github.com/youtype/types-s3transfer), [types-pywin32](https://github.com/python/typeshed) and [types-setuptools](https://github.com/python/typeshed). Updates `types-awscrt` from 0.19.17 to 0.19.19 - [Release notes](https://github.com/youtype/types-awscrt/releases) - [Commits](https://github.com/youtype/types-awscrt/commits) Updates `types-s3transfer` from 0.7.0 to 0.9.0 - [Release notes](https://github.com/youtype/types-s3transfer/releases) - [Commits](https://github.com/youtype/types-s3transfer/commits) Updates `types-pywin32` from 306.0.0.6 to 306.0.0.7 - [Commits](https://github.com/python/typeshed/commits) Updates `types-setuptools` from 68.2.0.2 to 69.0.0.0 - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-awscrt dependency-type: direct:production update-type: version-update:semver-patch dependency-group: types - dependency-name: types-s3transfer dependency-type: direct:production update-type: version-update:semver-minor dependency-group: types - dependency-name: types-pywin32 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: types - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-major dependency-group: types ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> --- requirements/dev.txt | 4 ++-- requirements/reproducible-linux.txt | 12 ++++++------ requirements/reproducible-mac.txt | 12 ++++++------ requirements/reproducible-win.txt | 12 ++++++------ 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index 8fede48f1ae..6a681308ded 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -8,11 +8,11 @@ pytest-cov==4.1.0 # mypy adds new rules in new minor versions, which could cause our PR check to fail # here we fix its version and upgrade it manually in the future mypy==1.7.1 -types-pywin32==306.0.0.6 +types-pywin32==306.0.0.7 types-PyYAML==6.0.12.12 types-chevron==0.14.2.5 types-psutil==5.9.5.17 -types-setuptools==68.2.0.2 +types-setuptools==69.0.0.0 types-Pygments==2.17.0.0 types-colorama==0.4.15.12 types-dateparser==1.1.4.10 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 23ee4974c23..8a1367ded98 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -938,17 +938,17 @@ tomlkit==0.12.3 \ --hash=sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4 \ --hash=sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba # via aws-sam-cli (setup.py) -types-awscrt==0.19.17 \ - --hash=sha256:047e30ac6156b6c25e0937ab2d45c9d6ace854021604da35d45fa832115adf82 \ - --hash=sha256:e677de979521f39b59a10e4f4464d395b970cb6812913efaee6eec689f454a81 +types-awscrt==0.19.19 \ + --hash=sha256:850d5ad95d8f337b15fb154790f39af077faf5c08d43758fd750f379a87d5f73 \ + --hash=sha256:a577c4d60a7fb7e21b436a73207a66f6ba50329d578b347934c5d99d4d612901 # via botocore-stubs types-python-dateutil==2.8.19.14 \ --hash=sha256:1f4f10ac98bb8b16ade9dbee3518d9ace017821d94b057a425b069f834737f4b \ --hash=sha256:f977b8de27787639986b4e28963263fd0e5158942b3ecef91b9335c130cb1ce9 # via arrow -types-s3transfer==0.7.0 \ - --hash=sha256:aca0f2486d0a3a5037cd5b8f3e20a4522a29579a8dd183281ff0aa1c4e2c8aa7 \ - --hash=sha256:ae9ed9273465d9f43da8b96307383da410c6b59c3b2464c88d20b578768e97c6 +types-s3transfer==0.9.0 \ + --hash=sha256:0f78c95c2ee390faad71735df35b6b81fca5bce4b864ac6a7707da2a845a5e86 \ + --hash=sha256:241e8b7b209c4064a451897bace1525ba64098a3ae955bdd0fb4b970cc69db73 # via boto3-stubs typing-extensions==4.9.0 \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 3082a8cc29a..a4b3e41a644 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -970,17 +970,17 @@ tomlkit==0.12.3 \ --hash=sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4 \ --hash=sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba # via aws-sam-cli (setup.py) -types-awscrt==0.19.17 \ - --hash=sha256:047e30ac6156b6c25e0937ab2d45c9d6ace854021604da35d45fa832115adf82 \ - --hash=sha256:e677de979521f39b59a10e4f4464d395b970cb6812913efaee6eec689f454a81 +types-awscrt==0.19.19 \ + --hash=sha256:850d5ad95d8f337b15fb154790f39af077faf5c08d43758fd750f379a87d5f73 \ + --hash=sha256:a577c4d60a7fb7e21b436a73207a66f6ba50329d578b347934c5d99d4d612901 # via botocore-stubs types-python-dateutil==2.8.19.14 \ --hash=sha256:1f4f10ac98bb8b16ade9dbee3518d9ace017821d94b057a425b069f834737f4b \ --hash=sha256:f977b8de27787639986b4e28963263fd0e5158942b3ecef91b9335c130cb1ce9 # via arrow -types-s3transfer==0.7.0 \ - --hash=sha256:aca0f2486d0a3a5037cd5b8f3e20a4522a29579a8dd183281ff0aa1c4e2c8aa7 \ - --hash=sha256:ae9ed9273465d9f43da8b96307383da410c6b59c3b2464c88d20b578768e97c6 +types-s3transfer==0.9.0 \ + --hash=sha256:0f78c95c2ee390faad71735df35b6b81fca5bce4b864ac6a7707da2a845a5e86 \ + --hash=sha256:241e8b7b209c4064a451897bace1525ba64098a3ae955bdd0fb4b970cc69db73 # via boto3-stubs typing-extensions==4.9.0 \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 64ae94737a9..a77e0587ca7 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -958,17 +958,17 @@ tomlkit==0.12.3 \ --hash=sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4 \ --hash=sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba # via aws-sam-cli (setup.py) -types-awscrt==0.19.17 \ - --hash=sha256:047e30ac6156b6c25e0937ab2d45c9d6ace854021604da35d45fa832115adf82 \ - --hash=sha256:e677de979521f39b59a10e4f4464d395b970cb6812913efaee6eec689f454a81 +types-awscrt==0.19.19 \ + --hash=sha256:850d5ad95d8f337b15fb154790f39af077faf5c08d43758fd750f379a87d5f73 \ + --hash=sha256:a577c4d60a7fb7e21b436a73207a66f6ba50329d578b347934c5d99d4d612901 # via botocore-stubs types-python-dateutil==2.8.19.14 \ --hash=sha256:1f4f10ac98bb8b16ade9dbee3518d9ace017821d94b057a425b069f834737f4b \ --hash=sha256:f977b8de27787639986b4e28963263fd0e5158942b3ecef91b9335c130cb1ce9 # via arrow -types-s3transfer==0.7.0 \ - --hash=sha256:aca0f2486d0a3a5037cd5b8f3e20a4522a29579a8dd183281ff0aa1c4e2c8aa7 \ - --hash=sha256:ae9ed9273465d9f43da8b96307383da410c6b59c3b2464c88d20b578768e97c6 +types-s3transfer==0.9.0 \ + --hash=sha256:0f78c95c2ee390faad71735df35b6b81fca5bce4b864ac6a7707da2a845a5e86 \ + --hash=sha256:241e8b7b209c4064a451897bace1525ba64098a3ae955bdd0fb4b970cc69db73 # via boto3-stubs typing-extensions==4.9.0 \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ From e6aaa16f86005cd5db39d954c25548741480c846 Mon Sep 17 00:00:00 2001 From: Lucas <12496191+lucashuy@users.noreply.github.com> Date: Thu, 14 Dec 2023 15:16:35 -0800 Subject: [PATCH 006/100] fix: Run schema generation script as module instead (#6441) * Run generation script as module instead * Fail command if the Python command fails --- .github/workflows/build.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1e341643b58..8fb2f413b8b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -82,7 +82,9 @@ jobs: python-version: 3.11 - run: make init - run: | - diff <( cat schema/samcli.json ) <( python schema/make_schema.py; cat schema/samcli.json ) && exit 0 # exit if schema is unchanged + diff <( cat schema/samcli.json ) <( python -m schema.make_schema && cat schema/samcli.json ) && \ + echo "No changes found." && \ + exit 0 # exit if schema is unchanged echo "The generated schema differs from that in the PR. Please run 'make schema'." exit 1 name: Generate and compare the schema From 099c4d8745cb7bd819e0df1d810b6b227955e44e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 15 Dec 2023 13:32:45 -0800 Subject: [PATCH 007/100] chore(deps-dev): bump coverage from 7.3.2 to 7.3.3 in /requirements (#6456) Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.3.2 to 7.3.3. - [Release notes](https://github.com/nedbat/coveragepy/releases) - [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst) - [Commits](https://github.com/nedbat/coveragepy/compare/7.3.2...7.3.3) --- updated-dependencies: - dependency-name: coverage dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index 6a681308ded..6c3648b9eb3 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,6 +1,6 @@ -r pre-dev.txt -coverage==7.3.2 +coverage==7.3.3 pytest-cov==4.1.0 From 4890f4f56fb70ec4e2e66fcc8e1f3fb5154a8ec7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 15 Dec 2023 22:26:07 +0000 Subject: [PATCH 008/100] chore: update aws_lambda_builders to 1.44.0 (#6459) * chore: update aws_lambda_builders to 1.44.0 * Update reproducibles: update-reproducible-linux-reqs * Update reproducibles: update-reproducible-mac-reqs * Update reproducibles: update-reproducible-win-reqs --------- Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 4df06a73493..9fd7152b852 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -11,7 +11,7 @@ aws-sam-translator==1.82.0 docker~=6.1.0 dateparser~=1.2 requests~=2.31.0 -aws_lambda_builders==1.43.0 +aws_lambda_builders==1.44.0 tomlkit==0.12.3 watchdog==3.0.0 rich~=13.7.0 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 8a1367ded98..ccb9ae4fba9 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -20,9 +20,9 @@ attrs==23.1.0 \ # jsonschema # referencing # sarif-om -aws-lambda-builders==1.43.0 \ - --hash=sha256:15c4b497824a296690e9497dba93186544fbe8cf6af9afb1da2d3834ab84ab20 \ - --hash=sha256:9a2bc476f6fd86fe32584f083436e862b124fd71ae307a8a1a85fae458589d09 +aws-lambda-builders==1.44.0 \ + --hash=sha256:2bb2dfec6f7be83592bb504a0ac10b444a39f544a04fc1ba076ee914ededc8fc \ + --hash=sha256:677a853541cde425001fea43afd82cf7d252296e2be42d65cc584c25ce2dc4e3 # via aws-sam-cli (setup.py) aws-sam-translator==1.82.0 \ --hash=sha256:29ba61f2a70b2b1cf0c76b92b78a23c7cdd19ea1b0a5992753180b56d040d20b \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index a4b3e41a644..e4fcadd4f7f 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -20,9 +20,9 @@ attrs==23.1.0 \ # jsonschema # referencing # sarif-om -aws-lambda-builders==1.43.0 \ - --hash=sha256:15c4b497824a296690e9497dba93186544fbe8cf6af9afb1da2d3834ab84ab20 \ - --hash=sha256:9a2bc476f6fd86fe32584f083436e862b124fd71ae307a8a1a85fae458589d09 +aws-lambda-builders==1.44.0 \ + --hash=sha256:2bb2dfec6f7be83592bb504a0ac10b444a39f544a04fc1ba076ee914ededc8fc \ + --hash=sha256:677a853541cde425001fea43afd82cf7d252296e2be42d65cc584c25ce2dc4e3 # via aws-sam-cli (setup.py) aws-sam-translator==1.82.0 \ --hash=sha256:29ba61f2a70b2b1cf0c76b92b78a23c7cdd19ea1b0a5992753180b56d040d20b \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index a77e0587ca7..5a87d0af1c6 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -20,9 +20,9 @@ attrs==23.1.0 \ # jsonschema # referencing # sarif-om -aws-lambda-builders==1.43.0 \ - --hash=sha256:15c4b497824a296690e9497dba93186544fbe8cf6af9afb1da2d3834ab84ab20 \ - --hash=sha256:9a2bc476f6fd86fe32584f083436e862b124fd71ae307a8a1a85fae458589d09 +aws-lambda-builders==1.44.0 \ + --hash=sha256:2bb2dfec6f7be83592bb504a0ac10b444a39f544a04fc1ba076ee914ededc8fc \ + --hash=sha256:677a853541cde425001fea43afd82cf7d252296e2be42d65cc584c25ce2dc4e3 # via aws-sam-cli (setup.py) aws-sam-translator==1.82.0 \ --hash=sha256:29ba61f2a70b2b1cf0c76b92b78a23c7cdd19ea1b0a5992753180b56d040d20b \ From 9236233b8e7fe693873de6bf0358be4e2603ae47 Mon Sep 17 00:00:00 2001 From: Lucas <12496191+lucashuy@users.noreply.github.com> Date: Mon, 18 Dec 2023 16:07:03 -0800 Subject: [PATCH 009/100] Mark ssl_context as optional in the service constructor (#6469) --- samcli/commands/local/lib/local_lambda_service.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samcli/commands/local/lib/local_lambda_service.py b/samcli/commands/local/lib/local_lambda_service.py index 1c709793ddf..0d493c2ff88 100644 --- a/samcli/commands/local/lib/local_lambda_service.py +++ b/samcli/commands/local/lib/local_lambda_service.py @@ -14,7 +14,7 @@ class LocalLambdaService: that are defined in a SAM file. """ - def __init__(self, lambda_invoke_context, port, host, ssl_context): + def __init__(self, lambda_invoke_context, port, host, ssl_context=None): """ Initialize the Local Lambda Invoke service. From ea334712d33a560abcfdceff10afb46b3bb66812 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Dec 2023 12:14:02 -0800 Subject: [PATCH 010/100] chore(deps): bump the boto group in /requirements with 4 updates (#6474) Bumps the boto group in /requirements with 4 updates: [boto3](https://github.com/boto/boto3), [boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]](https://github.com/youtype/mypy_boto3_builder), [botocore](https://github.com/boto/botocore) and [botocore-stubs](https://github.com/youtype/botocore-stubs). Updates `boto3` from 1.34.0 to 1.34.4 - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.34.0...1.34.4) Updates `boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]` from 1.34.0 to 1.34.4 - [Release notes](https://github.com/youtype/mypy_boto3_builder/releases) - [Commits](https://github.com/youtype/mypy_boto3_builder/commits) Updates `botocore` from 1.34.0 to 1.34.4 - [Changelog](https://github.com/boto/botocore/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/botocore/compare/1.34.0...1.34.4) Updates `botocore-stubs` from 1.34.0 to 1.34.3 - [Release notes](https://github.com/youtype/botocore-stubs/releases) - [Commits](https://github.com/youtype/botocore-stubs/commits) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray] dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: botocore dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: botocore-stubs dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/base.txt | 2 +- requirements/reproducible-linux.txt | 24 ++++++++++++------------ requirements/reproducible-mac.txt | 24 ++++++++++++------------ requirements/reproducible-win.txt | 24 ++++++++++++------------ 4 files changed, 37 insertions(+), 37 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 9fd7152b852..b6d662863da 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -31,4 +31,4 @@ tzlocal==5.2 cfn-lint~=0.83.5 # Type checking boto3 objects -boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.0 +boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.4 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index ccb9ae4fba9..10622e933c4 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -38,27 +38,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.0 \ - --hash=sha256:8b3c4d4e720c0ad706590c284b8f30c76de3472c1ce1bac610425f99bf6ab53b \ - --hash=sha256:c9b400529932ed4652304756528ab235c6730aa5d00cb4d9e4848ce460c82c16 +boto3==1.34.4 \ + --hash=sha256:1e836fe33da2684db29317911d9958389094ca5098cc253dbaed8e4aa146b153 \ + --hash=sha256:a866277fc38b121ac5dab0eec38b6ae6e3a59bbf6f67ed9a9822332d9e5e785f # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.0 \ - --hash=sha256:39ad9a9ab399c012713a719d90feb1dee819d310f136a0c7d7fddc477d7f251e \ - --hash=sha256:477b7da7432ab26123324249411111f2350e0b5ef0418e7bc1124600c810ac41 +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.4 \ + --hash=sha256:0ef231923edfe40a3f0d07897a329d5d6a7c4f8edea2ce18c82319bdfeede18a \ + --hash=sha256:70b3440feccc83995fd5132c0dcf1bc1bc40b3c49ccd5dc25ea2b05aba4f142f # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.0 \ - --hash=sha256:6ec19f6c9f61c3df22fb3e083940ac7946a3d96128db1f370f10aea702bb157f \ - --hash=sha256:711b406de910585395466ca649bceeea87a04300ddf74d9a2e20727c7f27f2f1 +botocore==1.34.4 \ + --hash=sha256:2026d89a46dfcb96d439db17a277de11b808428cba881deb50a5960b134e3a84 \ + --hash=sha256:5dcd63329cb3e65c533a72a68c99b7d07c99a29936ea07d0998120172c10b4f5 # via # boto3 # s3transfer -botocore-stubs==1.34.0 \ - --hash=sha256:13698a763521622f89808ac618eafdb79df49614b4a80bb5ecf894adfb45ac37 \ - --hash=sha256:5e3a4e2d0bc65657e4205745478847df78b4d485f5c5c5af9764f01685cf0536 +botocore-stubs==1.34.3 \ + --hash=sha256:712390e49b0472e2124dfb358bbfa3585721e58bedd7351f09876c28b41faa54 \ + --hash=sha256:e14e1cb318b15d063b2dc509720b097be07882c853d2a1e1bddab1f4165f6e3a # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index e4fcadd4f7f..fb5bbe8ca5d 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -56,27 +56,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.0 \ - --hash=sha256:8b3c4d4e720c0ad706590c284b8f30c76de3472c1ce1bac610425f99bf6ab53b \ - --hash=sha256:c9b400529932ed4652304756528ab235c6730aa5d00cb4d9e4848ce460c82c16 +boto3==1.34.4 \ + --hash=sha256:1e836fe33da2684db29317911d9958389094ca5098cc253dbaed8e4aa146b153 \ + --hash=sha256:a866277fc38b121ac5dab0eec38b6ae6e3a59bbf6f67ed9a9822332d9e5e785f # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.0 \ - --hash=sha256:39ad9a9ab399c012713a719d90feb1dee819d310f136a0c7d7fddc477d7f251e \ - --hash=sha256:477b7da7432ab26123324249411111f2350e0b5ef0418e7bc1124600c810ac41 +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.4 \ + --hash=sha256:0ef231923edfe40a3f0d07897a329d5d6a7c4f8edea2ce18c82319bdfeede18a \ + --hash=sha256:70b3440feccc83995fd5132c0dcf1bc1bc40b3c49ccd5dc25ea2b05aba4f142f # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.0 \ - --hash=sha256:6ec19f6c9f61c3df22fb3e083940ac7946a3d96128db1f370f10aea702bb157f \ - --hash=sha256:711b406de910585395466ca649bceeea87a04300ddf74d9a2e20727c7f27f2f1 +botocore==1.34.4 \ + --hash=sha256:2026d89a46dfcb96d439db17a277de11b808428cba881deb50a5960b134e3a84 \ + --hash=sha256:5dcd63329cb3e65c533a72a68c99b7d07c99a29936ea07d0998120172c10b4f5 # via # boto3 # s3transfer -botocore-stubs==1.34.0 \ - --hash=sha256:13698a763521622f89808ac618eafdb79df49614b4a80bb5ecf894adfb45ac37 \ - --hash=sha256:5e3a4e2d0bc65657e4205745478847df78b4d485f5c5c5af9764f01685cf0536 +botocore-stubs==1.34.3 \ + --hash=sha256:712390e49b0472e2124dfb358bbfa3585721e58bedd7351f09876c28b41faa54 \ + --hash=sha256:e14e1cb318b15d063b2dc509720b097be07882c853d2a1e1bddab1f4165f6e3a # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 5a87d0af1c6..233f5aae42c 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -38,27 +38,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.0 \ - --hash=sha256:8b3c4d4e720c0ad706590c284b8f30c76de3472c1ce1bac610425f99bf6ab53b \ - --hash=sha256:c9b400529932ed4652304756528ab235c6730aa5d00cb4d9e4848ce460c82c16 +boto3==1.34.4 \ + --hash=sha256:1e836fe33da2684db29317911d9958389094ca5098cc253dbaed8e4aa146b153 \ + --hash=sha256:a866277fc38b121ac5dab0eec38b6ae6e3a59bbf6f67ed9a9822332d9e5e785f # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.0 \ - --hash=sha256:39ad9a9ab399c012713a719d90feb1dee819d310f136a0c7d7fddc477d7f251e \ - --hash=sha256:477b7da7432ab26123324249411111f2350e0b5ef0418e7bc1124600c810ac41 +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.4 \ + --hash=sha256:0ef231923edfe40a3f0d07897a329d5d6a7c4f8edea2ce18c82319bdfeede18a \ + --hash=sha256:70b3440feccc83995fd5132c0dcf1bc1bc40b3c49ccd5dc25ea2b05aba4f142f # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.0 \ - --hash=sha256:6ec19f6c9f61c3df22fb3e083940ac7946a3d96128db1f370f10aea702bb157f \ - --hash=sha256:711b406de910585395466ca649bceeea87a04300ddf74d9a2e20727c7f27f2f1 +botocore==1.34.4 \ + --hash=sha256:2026d89a46dfcb96d439db17a277de11b808428cba881deb50a5960b134e3a84 \ + --hash=sha256:5dcd63329cb3e65c533a72a68c99b7d07c99a29936ea07d0998120172c10b4f5 # via # boto3 # s3transfer -botocore-stubs==1.34.0 \ - --hash=sha256:13698a763521622f89808ac618eafdb79df49614b4a80bb5ecf894adfb45ac37 \ - --hash=sha256:5e3a4e2d0bc65657e4205745478847df78b4d485f5c5c5af9764f01685cf0536 +botocore-stubs==1.34.3 \ + --hash=sha256:712390e49b0472e2124dfb358bbfa3585721e58bedd7351f09876c28b41faa54 \ + --hash=sha256:e14e1cb318b15d063b2dc509720b097be07882c853d2a1e1bddab1f4165f6e3a # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ From 32993a6a2779d3406f12435cd004c07e67842838 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Dec 2023 12:14:26 -0800 Subject: [PATCH 011/100] chore(deps): bump the types group in /requirements with 2 updates (#6472) Bumps the types group in /requirements with 2 updates: [types-pywin32](https://github.com/python/typeshed) and [types-awscrt](https://github.com/youtype/types-awscrt). Updates `types-pywin32` from 306.0.0.7 to 306.0.0.8 - [Commits](https://github.com/python/typeshed/commits) Updates `types-awscrt` from 0.19.19 to 0.20.0 - [Release notes](https://github.com/youtype/types-awscrt/releases) - [Commits](https://github.com/youtype/types-awscrt/commits) --- updated-dependencies: - dependency-name: types-pywin32 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: types - dependency-name: types-awscrt dependency-type: direct:production update-type: version-update:semver-minor dependency-group: types ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/dev.txt | 2 +- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index 6c3648b9eb3..6a7bbffb051 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -8,7 +8,7 @@ pytest-cov==4.1.0 # mypy adds new rules in new minor versions, which could cause our PR check to fail # here we fix its version and upgrade it manually in the future mypy==1.7.1 -types-pywin32==306.0.0.7 +types-pywin32==306.0.0.8 types-PyYAML==6.0.12.12 types-chevron==0.14.2.5 types-psutil==5.9.5.17 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 10622e933c4..4afdb354b6d 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -938,9 +938,9 @@ tomlkit==0.12.3 \ --hash=sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4 \ --hash=sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba # via aws-sam-cli (setup.py) -types-awscrt==0.19.19 \ - --hash=sha256:850d5ad95d8f337b15fb154790f39af077faf5c08d43758fd750f379a87d5f73 \ - --hash=sha256:a577c4d60a7fb7e21b436a73207a66f6ba50329d578b347934c5d99d4d612901 +types-awscrt==0.20.0 \ + --hash=sha256:99778c952e1eae10cc7a53468413001177026c9434345bf00120bb2ea5b79109 \ + --hash=sha256:e872b65d041687ec7fb49fb4dcb871ff10ade5efeca02722e037a03bff81db7e # via botocore-stubs types-python-dateutil==2.8.19.14 \ --hash=sha256:1f4f10ac98bb8b16ade9dbee3518d9ace017821d94b057a425b069f834737f4b \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index fb5bbe8ca5d..afd7551230c 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -970,9 +970,9 @@ tomlkit==0.12.3 \ --hash=sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4 \ --hash=sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba # via aws-sam-cli (setup.py) -types-awscrt==0.19.19 \ - --hash=sha256:850d5ad95d8f337b15fb154790f39af077faf5c08d43758fd750f379a87d5f73 \ - --hash=sha256:a577c4d60a7fb7e21b436a73207a66f6ba50329d578b347934c5d99d4d612901 +types-awscrt==0.20.0 \ + --hash=sha256:99778c952e1eae10cc7a53468413001177026c9434345bf00120bb2ea5b79109 \ + --hash=sha256:e872b65d041687ec7fb49fb4dcb871ff10ade5efeca02722e037a03bff81db7e # via botocore-stubs types-python-dateutil==2.8.19.14 \ --hash=sha256:1f4f10ac98bb8b16ade9dbee3518d9ace017821d94b057a425b069f834737f4b \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 233f5aae42c..7a73b7a866e 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -958,9 +958,9 @@ tomlkit==0.12.3 \ --hash=sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4 \ --hash=sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba # via aws-sam-cli (setup.py) -types-awscrt==0.19.19 \ - --hash=sha256:850d5ad95d8f337b15fb154790f39af077faf5c08d43758fd750f379a87d5f73 \ - --hash=sha256:a577c4d60a7fb7e21b436a73207a66f6ba50329d578b347934c5d99d4d612901 +types-awscrt==0.20.0 \ + --hash=sha256:99778c952e1eae10cc7a53468413001177026c9434345bf00120bb2ea5b79109 \ + --hash=sha256:e872b65d041687ec7fb49fb4dcb871ff10ade5efeca02722e037a03bff81db7e # via botocore-stubs types-python-dateutil==2.8.19.14 \ --hash=sha256:1f4f10ac98bb8b16ade9dbee3518d9ace017821d94b057a425b069f834737f4b \ From 034e027b4010a709d101a035fa41813c63bc790e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Dec 2023 20:46:59 +0000 Subject: [PATCH 012/100] chore(deps-dev): bump psutil from 5.9.6 to 5.9.7 in /requirements (#6463) Bumps [psutil](https://github.com/giampaolo/psutil) from 5.9.6 to 5.9.7. - [Changelog](https://github.com/giampaolo/psutil/blob/master/HISTORY.rst) - [Commits](https://github.com/giampaolo/psutil/compare/release-5.9.6...release-5.9.7) --- updated-dependencies: - dependency-name: psutil dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com> --- requirements/dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index 6a7bbffb051..a8509c9db2b 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -37,4 +37,4 @@ filelock==3.13.1 # formatter black==23.12.0 -psutil==5.9.6 +psutil==5.9.7 From e5ae26b7fe35467b59dff6e7fd3bfa5ad120582a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jan 2024 08:04:47 -0800 Subject: [PATCH 013/100] chore(deps-dev): bump coverage from 7.3.3 to 7.4.0 in /requirements (#6495) Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.3.3 to 7.4.0. - [Release notes](https://github.com/nedbat/coveragepy/releases) - [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst) - [Commits](https://github.com/nedbat/coveragepy/compare/7.3.3...7.4.0) --- updated-dependencies: - dependency-name: coverage dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index a8509c9db2b..40a53b25dc9 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,6 +1,6 @@ -r pre-dev.txt -coverage==7.3.3 +coverage==7.4.0 pytest-cov==4.1.0 From 6fc13112f21a59c936ccda99e43e705b9e374266 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jan 2024 16:06:21 +0000 Subject: [PATCH 014/100] chore(deps): bump the boto group in /requirements with 6 updates (#6496) * chore(deps): bump the boto group in /requirements with 6 updates Bumps the boto group in /requirements with 6 updates: | Package | From | To | | --- | --- | --- | | [boto3](https://github.com/boto/boto3) | `1.34.4` | `1.34.9` | | [boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]](https://github.com/youtype/mypy_boto3_builder) | `1.34.4` | `1.34.9` | | [botocore](https://github.com/boto/botocore) | `1.34.4` | `1.34.9` | | [botocore-stubs](https://github.com/youtype/botocore-stubs) | `1.34.3` | `1.34.9` | | [mypy-boto3-iam](https://github.com/youtype/mypy_boto3_builder) | `1.34.0` | `1.34.8` | | [mypy-boto3-secretsmanager](https://github.com/youtype/mypy_boto3_builder) | `1.34.0` | `1.34.7` | Updates `boto3` from 1.34.4 to 1.34.9 - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.34.4...1.34.9) Updates `boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]` from 1.34.4 to 1.34.9 - [Release notes](https://github.com/youtype/mypy_boto3_builder/releases) - [Commits](https://github.com/youtype/mypy_boto3_builder/commits) Updates `botocore` from 1.34.4 to 1.34.9 - [Changelog](https://github.com/boto/botocore/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/botocore/compare/1.34.4...1.34.9) Updates `botocore-stubs` from 1.34.3 to 1.34.9 - [Release notes](https://github.com/youtype/botocore-stubs/releases) - [Commits](https://github.com/youtype/botocore-stubs/commits) Updates `mypy-boto3-iam` from 1.34.0 to 1.34.8 - [Release notes](https://github.com/youtype/mypy_boto3_builder/releases) - [Commits](https://github.com/youtype/mypy_boto3_builder/commits) Updates `mypy-boto3-secretsmanager` from 1.34.0 to 1.34.7 - [Release notes](https://github.com/youtype/mypy_boto3_builder/releases) - [Commits](https://github.com/youtype/mypy_boto3_builder/commits) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray] dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: botocore dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: botocore-stubs dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: mypy-boto3-iam dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: mypy-boto3-secretsmanager dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto ... Signed-off-by: dependabot[bot] * Update reproducibles: update-reproducible-linux-reqs * Update reproducibles: update-reproducible-mac-reqs * Update reproducibles: update-reproducible-win-reqs --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- requirements/reproducible-linux.txt | 42 ++++++++++++++--------------- requirements/reproducible-mac.txt | 42 ++++++++++++++--------------- requirements/reproducible-win.txt | 42 ++++++++++++++--------------- 4 files changed, 64 insertions(+), 64 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index b6d662863da..72d746c2c9c 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -31,4 +31,4 @@ tzlocal==5.2 cfn-lint~=0.83.5 # Type checking boto3 objects -boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.4 +boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.9 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 4afdb354b6d..3c7488b9a98 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -38,27 +38,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.4 \ - --hash=sha256:1e836fe33da2684db29317911d9958389094ca5098cc253dbaed8e4aa146b153 \ - --hash=sha256:a866277fc38b121ac5dab0eec38b6ae6e3a59bbf6f67ed9a9822332d9e5e785f +boto3==1.34.9 \ + --hash=sha256:18c386a55e461749e6c9c8a10627a230db18a20dd72f2950ce19546974f15cd5 \ + --hash=sha256:8e48343d52389041af053992decf651bc4fc7b2d65eca12acdcff62d446ecdf4 # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.4 \ - --hash=sha256:0ef231923edfe40a3f0d07897a329d5d6a7c4f8edea2ce18c82319bdfeede18a \ - --hash=sha256:70b3440feccc83995fd5132c0dcf1bc1bc40b3c49ccd5dc25ea2b05aba4f142f +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.9 \ + --hash=sha256:41220432e898a7a3fa60bb52ef2d49c864f5b38e2baa6a6235f57387325a242e \ + --hash=sha256:d75fa019e181fd87a23b7684684da47e3fba9c501bc4bd1d70ccef21c1b9bf8b # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.4 \ - --hash=sha256:2026d89a46dfcb96d439db17a277de11b808428cba881deb50a5960b134e3a84 \ - --hash=sha256:5dcd63329cb3e65c533a72a68c99b7d07c99a29936ea07d0998120172c10b4f5 +botocore==1.34.9 \ + --hash=sha256:2cf43fa5b5438a95fc466c700f3098228b45df38e311103488554b2334b42ee3 \ + --hash=sha256:b40f027f371a1bd211ef67a3727c74bc3713af5fc5d830d4587abda296ebb19e # via # boto3 # s3transfer -botocore-stubs==1.34.3 \ - --hash=sha256:712390e49b0472e2124dfb358bbfa3585721e58bedd7351f09876c28b41faa54 \ - --hash=sha256:e14e1cb318b15d063b2dc509720b097be07882c853d2a1e1bddab1f4165f6e3a +botocore-stubs==1.34.9 \ + --hash=sha256:20a3c2ffc19dfa1ded192cafefca855f569f9e80b077ddc6390114432d7560c6 \ + --hash=sha256:55aed8679dce47b2ee1e35028826037b643b8897419ec4b7c493289ef0fd1bbf # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ @@ -400,9 +400,9 @@ mypy-boto3-ecr==1.34.0 \ --hash=sha256:3346c02c22b16068c9acc67d990e32060bf7cdaea5f3d43c50e44308fbbc3439 \ --hash=sha256:b83fb0311e968a42d4ca821b006c18d4a3e3e364b8cebee758ea4fa97c5ac345 # via boto3-stubs -mypy-boto3-iam==1.34.0 \ - --hash=sha256:2485e753cfe138ece94bab1c4983d0db4dc76e25314d3ffdb9bde5c72ad1a92c \ - --hash=sha256:7edeac8ad54fc5f669d7d4b30fd9c744ed58c3ed36a55ad44179cf450d48e605 +mypy-boto3-iam==1.34.8 \ + --hash=sha256:0d13057a2141c5633b78ed0b1aed8f2f8a11a9c58a8a17a25622d966428a41b0 \ + --hash=sha256:6faf68cf800182924687b6711b3f9afa8d940ad993f259a3b91e55e82892d641 # via boto3-stubs mypy-boto3-kinesis==1.34.0 \ --hash=sha256:1add81c53f6e36599e0c22e142024867759aaf2f4954bcb2baa21c284c852377 \ @@ -420,9 +420,9 @@ mypy-boto3-schemas==1.34.0 \ --hash=sha256:28c016609dcffc606bd8425ee92894c46e943ab77033e1ae46481f00c39b7f75 \ --hash=sha256:3b25a71944192b0980c3bb5132deb7c06ee9b88580ed63f257fad97cf3bf2927 # via boto3-stubs -mypy-boto3-secretsmanager==1.34.0 \ - --hash=sha256:d3b0c26f4264775a2505cbd4a73a4efd5c4a151d8fcdcf938683afb1bf717a32 \ - --hash=sha256:f7c1a99a28e650ac91834db69a8dabe6734f9ace92f1d7a2d366160a11401133 +mypy-boto3-secretsmanager==1.34.7 \ + --hash=sha256:06a3e34d1d3aea4944688bdf677dfe928c9831165989c192b8d9498d9ceb8781 \ + --hash=sha256:0dcd72d7e6d2657838819b078447adc13199e35d8dee960e7fbe6c0e5d383b6b # via boto3-stubs mypy-boto3-signer==1.34.0 \ --hash=sha256:c11ed943ccd38ee54fc0ca90ed347ef770d695df49535eab96dd97fb3dbdc592 \ @@ -912,9 +912,9 @@ ruamel-yaml-clib==0.2.8 \ --hash=sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875 \ --hash=sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412 # via ruamel-yaml -s3transfer==0.9.0 \ - --hash=sha256:01d4d2c35a016db8cb14f9a4d5e84c1f8c96e7ffc211422555eed45c11fa7eb1 \ - --hash=sha256:9e1b186ec8bb5907a1e82b51237091889a9973a2bb799a924bcd9f301ff79d3d +s3transfer==0.10.0 \ + --hash=sha256:3cdb40f5cfa6966e812209d0994f2a4709b561c88e90cf00c2696d2df4e56b2e \ + --hash=sha256:d0c8bbf672d5eebbe4e57945e23b972d963f07d82f661cabf678a5c88831595b # via boto3 sarif-om==1.0.4 \ --hash=sha256:539ef47a662329b1c8502388ad92457425e95dc0aaaf995fe46f4984c4771911 \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index afd7551230c..faff1053d63 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -56,27 +56,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.4 \ - --hash=sha256:1e836fe33da2684db29317911d9958389094ca5098cc253dbaed8e4aa146b153 \ - --hash=sha256:a866277fc38b121ac5dab0eec38b6ae6e3a59bbf6f67ed9a9822332d9e5e785f +boto3==1.34.9 \ + --hash=sha256:18c386a55e461749e6c9c8a10627a230db18a20dd72f2950ce19546974f15cd5 \ + --hash=sha256:8e48343d52389041af053992decf651bc4fc7b2d65eca12acdcff62d446ecdf4 # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.4 \ - --hash=sha256:0ef231923edfe40a3f0d07897a329d5d6a7c4f8edea2ce18c82319bdfeede18a \ - --hash=sha256:70b3440feccc83995fd5132c0dcf1bc1bc40b3c49ccd5dc25ea2b05aba4f142f +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.9 \ + --hash=sha256:41220432e898a7a3fa60bb52ef2d49c864f5b38e2baa6a6235f57387325a242e \ + --hash=sha256:d75fa019e181fd87a23b7684684da47e3fba9c501bc4bd1d70ccef21c1b9bf8b # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.4 \ - --hash=sha256:2026d89a46dfcb96d439db17a277de11b808428cba881deb50a5960b134e3a84 \ - --hash=sha256:5dcd63329cb3e65c533a72a68c99b7d07c99a29936ea07d0998120172c10b4f5 +botocore==1.34.9 \ + --hash=sha256:2cf43fa5b5438a95fc466c700f3098228b45df38e311103488554b2334b42ee3 \ + --hash=sha256:b40f027f371a1bd211ef67a3727c74bc3713af5fc5d830d4587abda296ebb19e # via # boto3 # s3transfer -botocore-stubs==1.34.3 \ - --hash=sha256:712390e49b0472e2124dfb358bbfa3585721e58bedd7351f09876c28b41faa54 \ - --hash=sha256:e14e1cb318b15d063b2dc509720b097be07882c853d2a1e1bddab1f4165f6e3a +botocore-stubs==1.34.9 \ + --hash=sha256:20a3c2ffc19dfa1ded192cafefca855f569f9e80b077ddc6390114432d7560c6 \ + --hash=sha256:55aed8679dce47b2ee1e35028826037b643b8897419ec4b7c493289ef0fd1bbf # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ @@ -428,9 +428,9 @@ mypy-boto3-ecr==1.34.0 \ --hash=sha256:3346c02c22b16068c9acc67d990e32060bf7cdaea5f3d43c50e44308fbbc3439 \ --hash=sha256:b83fb0311e968a42d4ca821b006c18d4a3e3e364b8cebee758ea4fa97c5ac345 # via boto3-stubs -mypy-boto3-iam==1.34.0 \ - --hash=sha256:2485e753cfe138ece94bab1c4983d0db4dc76e25314d3ffdb9bde5c72ad1a92c \ - --hash=sha256:7edeac8ad54fc5f669d7d4b30fd9c744ed58c3ed36a55ad44179cf450d48e605 +mypy-boto3-iam==1.34.8 \ + --hash=sha256:0d13057a2141c5633b78ed0b1aed8f2f8a11a9c58a8a17a25622d966428a41b0 \ + --hash=sha256:6faf68cf800182924687b6711b3f9afa8d940ad993f259a3b91e55e82892d641 # via boto3-stubs mypy-boto3-kinesis==1.34.0 \ --hash=sha256:1add81c53f6e36599e0c22e142024867759aaf2f4954bcb2baa21c284c852377 \ @@ -448,9 +448,9 @@ mypy-boto3-schemas==1.34.0 \ --hash=sha256:28c016609dcffc606bd8425ee92894c46e943ab77033e1ae46481f00c39b7f75 \ --hash=sha256:3b25a71944192b0980c3bb5132deb7c06ee9b88580ed63f257fad97cf3bf2927 # via boto3-stubs -mypy-boto3-secretsmanager==1.34.0 \ - --hash=sha256:d3b0c26f4264775a2505cbd4a73a4efd5c4a151d8fcdcf938683afb1bf717a32 \ - --hash=sha256:f7c1a99a28e650ac91834db69a8dabe6734f9ace92f1d7a2d366160a11401133 +mypy-boto3-secretsmanager==1.34.7 \ + --hash=sha256:06a3e34d1d3aea4944688bdf677dfe928c9831165989c192b8d9498d9ceb8781 \ + --hash=sha256:0dcd72d7e6d2657838819b078447adc13199e35d8dee960e7fbe6c0e5d383b6b # via boto3-stubs mypy-boto3-signer==1.34.0 \ --hash=sha256:c11ed943ccd38ee54fc0ca90ed347ef770d695df49535eab96dd97fb3dbdc592 \ @@ -944,9 +944,9 @@ ruamel-yaml-clib==0.2.8 \ --hash=sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875 \ --hash=sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412 # via ruamel-yaml -s3transfer==0.9.0 \ - --hash=sha256:01d4d2c35a016db8cb14f9a4d5e84c1f8c96e7ffc211422555eed45c11fa7eb1 \ - --hash=sha256:9e1b186ec8bb5907a1e82b51237091889a9973a2bb799a924bcd9f301ff79d3d +s3transfer==0.10.0 \ + --hash=sha256:3cdb40f5cfa6966e812209d0994f2a4709b561c88e90cf00c2696d2df4e56b2e \ + --hash=sha256:d0c8bbf672d5eebbe4e57945e23b972d963f07d82f661cabf678a5c88831595b # via boto3 sarif-om==1.0.4 \ --hash=sha256:539ef47a662329b1c8502388ad92457425e95dc0aaaf995fe46f4984c4771911 \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 7a73b7a866e..2d46e7d9e1e 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -38,27 +38,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.4 \ - --hash=sha256:1e836fe33da2684db29317911d9958389094ca5098cc253dbaed8e4aa146b153 \ - --hash=sha256:a866277fc38b121ac5dab0eec38b6ae6e3a59bbf6f67ed9a9822332d9e5e785f +boto3==1.34.9 \ + --hash=sha256:18c386a55e461749e6c9c8a10627a230db18a20dd72f2950ce19546974f15cd5 \ + --hash=sha256:8e48343d52389041af053992decf651bc4fc7b2d65eca12acdcff62d446ecdf4 # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.4 \ - --hash=sha256:0ef231923edfe40a3f0d07897a329d5d6a7c4f8edea2ce18c82319bdfeede18a \ - --hash=sha256:70b3440feccc83995fd5132c0dcf1bc1bc40b3c49ccd5dc25ea2b05aba4f142f +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.9 \ + --hash=sha256:41220432e898a7a3fa60bb52ef2d49c864f5b38e2baa6a6235f57387325a242e \ + --hash=sha256:d75fa019e181fd87a23b7684684da47e3fba9c501bc4bd1d70ccef21c1b9bf8b # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.4 \ - --hash=sha256:2026d89a46dfcb96d439db17a277de11b808428cba881deb50a5960b134e3a84 \ - --hash=sha256:5dcd63329cb3e65c533a72a68c99b7d07c99a29936ea07d0998120172c10b4f5 +botocore==1.34.9 \ + --hash=sha256:2cf43fa5b5438a95fc466c700f3098228b45df38e311103488554b2334b42ee3 \ + --hash=sha256:b40f027f371a1bd211ef67a3727c74bc3713af5fc5d830d4587abda296ebb19e # via # boto3 # s3transfer -botocore-stubs==1.34.3 \ - --hash=sha256:712390e49b0472e2124dfb358bbfa3585721e58bedd7351f09876c28b41faa54 \ - --hash=sha256:e14e1cb318b15d063b2dc509720b097be07882c853d2a1e1bddab1f4165f6e3a +botocore-stubs==1.34.9 \ + --hash=sha256:20a3c2ffc19dfa1ded192cafefca855f569f9e80b077ddc6390114432d7560c6 \ + --hash=sha256:55aed8679dce47b2ee1e35028826037b643b8897419ec4b7c493289ef0fd1bbf # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ @@ -404,9 +404,9 @@ mypy-boto3-ecr==1.34.0 \ --hash=sha256:3346c02c22b16068c9acc67d990e32060bf7cdaea5f3d43c50e44308fbbc3439 \ --hash=sha256:b83fb0311e968a42d4ca821b006c18d4a3e3e364b8cebee758ea4fa97c5ac345 # via boto3-stubs -mypy-boto3-iam==1.34.0 \ - --hash=sha256:2485e753cfe138ece94bab1c4983d0db4dc76e25314d3ffdb9bde5c72ad1a92c \ - --hash=sha256:7edeac8ad54fc5f669d7d4b30fd9c744ed58c3ed36a55ad44179cf450d48e605 +mypy-boto3-iam==1.34.8 \ + --hash=sha256:0d13057a2141c5633b78ed0b1aed8f2f8a11a9c58a8a17a25622d966428a41b0 \ + --hash=sha256:6faf68cf800182924687b6711b3f9afa8d940ad993f259a3b91e55e82892d641 # via boto3-stubs mypy-boto3-kinesis==1.34.0 \ --hash=sha256:1add81c53f6e36599e0c22e142024867759aaf2f4954bcb2baa21c284c852377 \ @@ -424,9 +424,9 @@ mypy-boto3-schemas==1.34.0 \ --hash=sha256:28c016609dcffc606bd8425ee92894c46e943ab77033e1ae46481f00c39b7f75 \ --hash=sha256:3b25a71944192b0980c3bb5132deb7c06ee9b88580ed63f257fad97cf3bf2927 # via boto3-stubs -mypy-boto3-secretsmanager==1.34.0 \ - --hash=sha256:d3b0c26f4264775a2505cbd4a73a4efd5c4a151d8fcdcf938683afb1bf717a32 \ - --hash=sha256:f7c1a99a28e650ac91834db69a8dabe6734f9ace92f1d7a2d366160a11401133 +mypy-boto3-secretsmanager==1.34.7 \ + --hash=sha256:06a3e34d1d3aea4944688bdf677dfe928c9831165989c192b8d9498d9ceb8781 \ + --hash=sha256:0dcd72d7e6d2657838819b078447adc13199e35d8dee960e7fbe6c0e5d383b6b # via boto3-stubs mypy-boto3-signer==1.34.0 \ --hash=sha256:c11ed943ccd38ee54fc0ca90ed347ef770d695df49535eab96dd97fb3dbdc592 \ @@ -932,9 +932,9 @@ ruamel-yaml-clib==0.2.8 \ --hash=sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875 \ --hash=sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412 # via ruamel-yaml -s3transfer==0.9.0 \ - --hash=sha256:01d4d2c35a016db8cb14f9a4d5e84c1f8c96e7ffc211422555eed45c11fa7eb1 \ - --hash=sha256:9e1b186ec8bb5907a1e82b51237091889a9973a2bb799a924bcd9f301ff79d3d +s3transfer==0.10.0 \ + --hash=sha256:3cdb40f5cfa6966e812209d0994f2a4709b561c88e90cf00c2696d2df4e56b2e \ + --hash=sha256:d0c8bbf672d5eebbe4e57945e23b972d963f07d82f661cabf678a5c88831595b # via boto3 sarif-om==1.0.4 \ --hash=sha256:539ef47a662329b1c8502388ad92457425e95dc0aaaf995fe46f4984c4771911 \ From 2c3655b9e22e65e1ee4834f215296eea6df69349 Mon Sep 17 00:00:00 2001 From: Wing Fung Lau <4760060+hawflau@users.noreply.github.com> Date: Tue, 2 Jan 2024 09:09:35 -0800 Subject: [PATCH 015/100] chore: install dotnet8 in CI (appveyor) (#6461) Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com> --- appveyor-linux-binary.yml | 4 ++++ appveyor-ubuntu.yml | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/appveyor-linux-binary.yml b/appveyor-linux-binary.yml index 6dc5dde8d78..b4a77fb9f0b 100644 --- a/appveyor-linux-binary.yml +++ b/appveyor-linux-binary.yml @@ -67,6 +67,10 @@ install: - sh: "PATH=/opt/gradle/gradle-8.4/bin:$PATH" - sh: "gradle --version" + # Install dotnet8 SDK + - sh: "sudo apt-get update" + - sh: "sudo apt-get install -y dotnet-sdk-8.0" + # Install AWS CLI - sh: "virtualenv aws_cli" - sh: "./aws_cli/bin/python -m pip install awscli" diff --git a/appveyor-ubuntu.yml b/appveyor-ubuntu.yml index a5966267217..9a16892b339 100644 --- a/appveyor-ubuntu.yml +++ b/appveyor-ubuntu.yml @@ -68,6 +68,10 @@ install: - sh: "PATH=/opt/gradle/gradle-8.4/bin:$PATH" - sh: "gradle --version" + # Install dotnet8 SDK + - sh: "sudo apt-get update" + - sh: "sudo apt-get install -y dotnet-sdk-8.0" + # Install AWS CLI - sh: "virtualenv aws_cli" - sh: "./aws_cli/bin/python -m pip install awscli" From e3a39722d01bb77dac0ae9d9de435ee65c787028 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jan 2024 18:58:12 +0000 Subject: [PATCH 016/100] chore(deps): bump rpds-py from 0.13.2 to 0.15.2 in /requirements (#6464) Bumps [rpds-py](https://github.com/crate-py/rpds) from 0.13.2 to 0.15.2. - [Release notes](https://github.com/crate-py/rpds/releases) - [Commits](https://github.com/crate-py/rpds/compare/v0.13.2...v0.15.2) --- updated-dependencies: - dependency-name: rpds-py dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com> --- requirements/reproducible-linux.txt | 200 ++++++++++++++-------------- requirements/reproducible-mac.txt | 200 ++++++++++++++-------------- requirements/reproducible-win.txt | 200 ++++++++++++++-------------- 3 files changed, 300 insertions(+), 300 deletions(-) diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 3c7488b9a98..8e1529c8be7 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -753,106 +753,106 @@ rich==13.7.0 \ # via # aws-sam-cli (setup.py) # cookiecutter -rpds-py==0.13.2 \ - --hash=sha256:06d218e4464d31301e943b65b2c6919318ea6f69703a351961e1baaf60347276 \ - --hash=sha256:12ecf89bd54734c3c2c79898ae2021dca42750c7bcfb67f8fb3315453738ac8f \ - --hash=sha256:15253fff410873ebf3cfba1cc686a37711efcd9b8cb30ea21bb14a973e393f60 \ - --hash=sha256:188435794405c7f0573311747c85a96b63c954a5f2111b1df8018979eca0f2f0 \ - --hash=sha256:1ceebd0ae4f3e9b2b6b553b51971921853ae4eebf3f54086be0565d59291e53d \ - --hash=sha256:244e173bb6d8f3b2f0c4d7370a1aa341f35da3e57ffd1798e5b2917b91731fd3 \ - --hash=sha256:25b28b3d33ec0a78e944aaaed7e5e2a94ac811bcd68b557ca48a0c30f87497d2 \ - --hash=sha256:25ea41635d22b2eb6326f58e608550e55d01df51b8a580ea7e75396bafbb28e9 \ - --hash=sha256:29d311e44dd16d2434d5506d57ef4d7036544fc3c25c14b6992ef41f541b10fb \ - --hash=sha256:2a1472956c5bcc49fb0252b965239bffe801acc9394f8b7c1014ae9258e4572b \ - --hash=sha256:2a7bef6977043673750a88da064fd513f89505111014b4e00fbdd13329cd4e9a \ - --hash=sha256:2ac26f50736324beb0282c819668328d53fc38543fa61eeea2c32ea8ea6eab8d \ - --hash=sha256:2e72f750048b32d39e87fc85c225c50b2a6715034848dbb196bf3348aa761fa1 \ - --hash=sha256:31e220a040b89a01505128c2f8a59ee74732f666439a03e65ccbf3824cdddae7 \ - --hash=sha256:35f53c76a712e323c779ca39b9a81b13f219a8e3bc15f106ed1e1462d56fcfe9 \ - --hash=sha256:38d4f822ee2f338febcc85aaa2547eb5ba31ba6ff68d10b8ec988929d23bb6b4 \ - --hash=sha256:38f9bf2ad754b4a45b8210a6c732fe876b8a14e14d5992a8c4b7c1ef78740f53 \ - --hash=sha256:3a44c8440183b43167fd1a0819e8356692bf5db1ad14ce140dbd40a1485f2dea \ - --hash=sha256:3ab96754d23372009638a402a1ed12a27711598dd49d8316a22597141962fe66 \ - --hash=sha256:3c55d7f2d817183d43220738270efd3ce4e7a7b7cbdaefa6d551ed3d6ed89190 \ - --hash=sha256:46e1ed994a0920f350a4547a38471217eb86f57377e9314fbaaa329b71b7dfe3 \ - --hash=sha256:4a5375c5fff13f209527cd886dc75394f040c7d1ecad0a2cb0627f13ebe78a12 \ - --hash=sha256:4c2d26aa03d877c9730bf005621c92da263523a1e99247590abbbe252ccb7824 \ - --hash=sha256:4c4e314d36d4f31236a545696a480aa04ea170a0b021e9a59ab1ed94d4c3ef27 \ - --hash=sha256:4d0c10d803549427f427085ed7aebc39832f6e818a011dcd8785e9c6a1ba9b3e \ - --hash=sha256:4dcc5ee1d0275cb78d443fdebd0241e58772a354a6d518b1d7af1580bbd2c4e8 \ - --hash=sha256:51967a67ea0d7b9b5cd86036878e2d82c0b6183616961c26d825b8c994d4f2c8 \ - --hash=sha256:530190eb0cd778363bbb7596612ded0bb9fef662daa98e9d92a0419ab27ae914 \ - --hash=sha256:5379e49d7e80dca9811b36894493d1c1ecb4c57de05c36f5d0dd09982af20211 \ - --hash=sha256:5493569f861fb7b05af6d048d00d773c6162415ae521b7010197c98810a14cab \ - --hash=sha256:5a4c1058cdae6237d97af272b326e5f78ee7ee3bbffa6b24b09db4d828810468 \ - --hash=sha256:5d75d6d220d55cdced2f32cc22f599475dbe881229aeddba6c79c2e9df35a2b3 \ - --hash=sha256:5d97e9ae94fb96df1ee3cb09ca376c34e8a122f36927230f4c8a97f469994bff \ - --hash=sha256:5feae2f9aa7270e2c071f488fab256d768e88e01b958f123a690f1cc3061a09c \ - --hash=sha256:603d5868f7419081d616dab7ac3cfa285296735e7350f7b1e4f548f6f953ee7d \ - --hash=sha256:61d42d2b08430854485135504f672c14d4fc644dd243a9c17e7c4e0faf5ed07e \ - --hash=sha256:61dbc1e01dc0c5875da2f7ae36d6e918dc1b8d2ce04e871793976594aad8a57a \ - --hash=sha256:65cfed9c807c27dee76407e8bb29e6f4e391e436774bcc769a037ff25ad8646e \ - --hash=sha256:67a429520e97621a763cf9b3ba27574779c4e96e49a27ff8a1aa99ee70beb28a \ - --hash=sha256:6aadae3042f8e6db3376d9e91f194c606c9a45273c170621d46128f35aef7cd0 \ - --hash=sha256:6ba8858933f0c1a979781272a5f65646fca8c18c93c99c6ddb5513ad96fa54b1 \ - --hash=sha256:6bc568b05e02cd612be53900c88aaa55012e744930ba2eeb56279db4c6676eb3 \ - --hash=sha256:729408136ef8d45a28ee9a7411917c9e3459cf266c7e23c2f7d4bb8ef9e0da42 \ - --hash=sha256:751758d9dd04d548ec679224cc00e3591f5ebf1ff159ed0d4aba6a0746352452 \ - --hash=sha256:76d59d4d451ba77f08cb4cd9268dec07be5bc65f73666302dbb5061989b17198 \ - --hash=sha256:79bf58c08f0756adba691d480b5a20e4ad23f33e1ae121584cf3a21717c36dfa \ - --hash=sha256:7de12b69d95072394998c622cfd7e8cea8f560db5fca6a62a148f902a1029f8b \ - --hash=sha256:7f55cd9cf1564b7b03f238e4c017ca4794c05b01a783e9291065cb2858d86ce4 \ - --hash=sha256:80e5acb81cb49fd9f2d5c08f8b74ffff14ee73b10ca88297ab4619e946bcb1e1 \ - --hash=sha256:87a90f5545fd61f6964e65eebde4dc3fa8660bb7d87adb01d4cf17e0a2b484ad \ - --hash=sha256:881df98f0a8404d32b6de0fd33e91c1b90ed1516a80d4d6dc69d414b8850474c \ - --hash=sha256:8a776a29b77fe0cc28fedfd87277b0d0f7aa930174b7e504d764e0b43a05f381 \ - --hash=sha256:8c2a61c0e4811012b0ba9f6cdcb4437865df5d29eab5d6018ba13cee1c3064a0 \ - --hash=sha256:8fa6bd071ec6d90f6e7baa66ae25820d57a8ab1b0a3c6d3edf1834d4b26fafa2 \ - --hash=sha256:96f2975fb14f39c5fe75203f33dd3010fe37d1c4e33177feef1107b5ced750e3 \ - --hash=sha256:96fb0899bb2ab353f42e5374c8f0789f54e0a94ef2f02b9ac7149c56622eaf31 \ - --hash=sha256:97163a1ab265a1073a6372eca9f4eeb9f8c6327457a0b22ddfc4a17dcd613e74 \ - --hash=sha256:9c95a1a290f9acf7a8f2ebbdd183e99215d491beea52d61aa2a7a7d2c618ddc6 \ - --hash=sha256:9d94d78418203904730585efa71002286ac4c8ac0689d0eb61e3c465f9e608ff \ - --hash=sha256:a6ba2cb7d676e9415b9e9ac7e2aae401dc1b1e666943d1f7bc66223d3d73467b \ - --hash=sha256:aa0379c1935c44053c98826bc99ac95f3a5355675a297ac9ce0dfad0ce2d50ca \ - --hash=sha256:ac96d67b37f28e4b6ecf507c3405f52a40658c0a806dffde624a8fcb0314d5fd \ - --hash=sha256:ade2ccb937060c299ab0dfb2dea3d2ddf7e098ed63ee3d651ebfc2c8d1e8632a \ - --hash=sha256:aefbdc934115d2f9278f153952003ac52cd2650e7313750390b334518c589568 \ - --hash=sha256:b07501b720cf060c5856f7b5626e75b8e353b5f98b9b354a21eb4bfa47e421b1 \ - --hash=sha256:b5267feb19070bef34b8dea27e2b504ebd9d31748e3ecacb3a4101da6fcb255c \ - --hash=sha256:b5f6328e8e2ae8238fc767703ab7b95785521c42bb2b8790984e3477d7fa71ad \ - --hash=sha256:b8996ffb60c69f677245f5abdbcc623e9442bcc91ed81b6cd6187129ad1fa3e7 \ - --hash=sha256:b981a370f8f41c4024c170b42fbe9e691ae2dbc19d1d99151a69e2c84a0d194d \ - --hash=sha256:b9d121be0217787a7d59a5c6195b0842d3f701007333426e5154bf72346aa658 \ - --hash=sha256:bcef4f2d3dc603150421de85c916da19471f24d838c3c62a4f04c1eb511642c1 \ - --hash=sha256:bed0252c85e21cf73d2d033643c945b460d6a02fc4a7d644e3b2d6f5f2956c64 \ - --hash=sha256:bfdfbe6a36bc3059fff845d64c42f2644cf875c65f5005db54f90cdfdf1df815 \ - --hash=sha256:c0095b8aa3e432e32d372e9a7737e65b58d5ed23b9620fea7cb81f17672f1fa1 \ - --hash=sha256:c1f41d32a2ddc5a94df4b829b395916a4b7f103350fa76ba6de625fcb9e773ac \ - --hash=sha256:c45008ca79bad237cbc03c72bc5205e8c6f66403773929b1b50f7d84ef9e4d07 \ - --hash=sha256:c82bbf7e03748417c3a88c1b0b291288ce3e4887a795a3addaa7a1cfd9e7153e \ - --hash=sha256:c918621ee0a3d1fe61c313f2489464f2ae3d13633e60f520a8002a5e910982ee \ - --hash=sha256:d204957169f0b3511fb95395a9da7d4490fb361763a9f8b32b345a7fe119cb45 \ - --hash=sha256:d329896c40d9e1e5c7715c98529e4a188a1f2df51212fd65102b32465612b5dc \ - --hash=sha256:d3a61e928feddc458a55110f42f626a2a20bea942ccedb6fb4cee70b4830ed41 \ - --hash=sha256:d48db29bd47814671afdd76c7652aefacc25cf96aad6daefa82d738ee87461e2 \ - --hash=sha256:d5593855b5b2b73dd8413c3fdfa5d95b99d657658f947ba2c4318591e745d083 \ - --hash=sha256:d79c159adea0f1f4617f54aa156568ac69968f9ef4d1e5fefffc0a180830308e \ - --hash=sha256:db09b98c7540df69d4b47218da3fbd7cb466db0fb932e971c321f1c76f155266 \ - --hash=sha256:ddf23960cb42b69bce13045d5bc66f18c7d53774c66c13f24cf1b9c144ba3141 \ - --hash=sha256:e06cfea0ece444571d24c18ed465bc93afb8c8d8d74422eb7026662f3d3f779b \ - --hash=sha256:e7c564c58cf8f248fe859a4f0fe501b050663f3d7fbc342172f259124fb59933 \ - --hash=sha256:e86593bf8637659e6a6ed58854b6c87ec4e9e45ee8a4adfd936831cef55c2d21 \ - --hash=sha256:eaffbd8814bb1b5dc3ea156a4c5928081ba50419f9175f4fc95269e040eff8f0 \ - --hash=sha256:ee353bb51f648924926ed05e0122b6a0b1ae709396a80eb583449d5d477fcdf7 \ - --hash=sha256:ee6faebb265e28920a6f23a7d4c362414b3f4bb30607141d718b991669e49ddc \ - --hash=sha256:efe093acc43e869348f6f2224df7f452eab63a2c60a6c6cd6b50fd35c4e075ba \ - --hash=sha256:f03a1b3a4c03e3e0161642ac5367f08479ab29972ea0ffcd4fa18f729cd2be0a \ - --hash=sha256:f0d320e70b6b2300ff6029e234e79fe44e9dbbfc7b98597ba28e054bd6606a57 \ - --hash=sha256:f252dfb4852a527987a9156cbcae3022a30f86c9d26f4f17b8c967d7580d65d2 \ - --hash=sha256:f5f4424cb87a20b016bfdc157ff48757b89d2cc426256961643d443c6c277007 \ - --hash=sha256:f8eae66a1304de7368932b42d801c67969fd090ddb1a7a24f27b435ed4bed68f \ - --hash=sha256:fdb82eb60d31b0c033a8e8ee9f3fc7dfbaa042211131c29da29aea8531b4f18f +rpds-py==0.15.2 \ + --hash=sha256:02744236ac1895d7be837878e707a5c35fb8edc5137602f253b63623d7ad5c8c \ + --hash=sha256:03f9c5875515820633bd7709a25c3e60c1ea9ad1c5d4030ce8a8c203309c36fd \ + --hash=sha256:044f6f46d62444800402851afa3c3ae50141f12013060c1a3a0677e013310d6d \ + --hash=sha256:07a2e1d78d382f7181789713cdf0c16edbad4fe14fe1d115526cb6f0eef0daa3 \ + --hash=sha256:082e0e55d73690ffb4da4352d1b5bbe1b5c6034eb9dc8c91aa2a3ee15f70d3e2 \ + --hash=sha256:13152dfe7d7c27c40df8b99ac6aab12b978b546716e99f67e8a67a1d441acbc3 \ + --hash=sha256:13716e53627ad97babf72ac9e01cf9a7d4af2f75dd5ed7b323a7a9520e948282 \ + --hash=sha256:13ff62d3561a23c17341b4afc78e8fcfd799ab67c0b1ca32091d71383a98ba4b \ + --hash=sha256:1607cda6129f815493a3c184492acb5ae4aa6ed61d3a1b3663aa9824ed26f7ac \ + --hash=sha256:164fcee32f15d04d61568c9cb0d919e37ff3195919cd604039ff3053ada0461b \ + --hash=sha256:1c24e30d720c0009b6fb2e1905b025da56103c70a8b31b99138e4ed1c2a6c5b0 \ + --hash=sha256:1e6fcd0a0f62f2997107f758bb372397b8d5fd5f39cc6dcb86f7cb98a2172d6c \ + --hash=sha256:1fd0f0b1ccd7d537b858a56355a250108df692102e08aa2036e1a094fd78b2dc \ + --hash=sha256:2181e86d4e1cdf49a7320cb72a36c45efcb7670d0a88f09fd2d3a7967c0540fd \ + --hash=sha256:2974e6dff38afafd5ccf8f41cb8fc94600b3f4fd9b0a98f6ece6e2219e3158d5 \ + --hash=sha256:2dccc623725d0b298f557d869a68496a2fd2a9e9c41107f234fa5f7a37d278ac \ + --hash=sha256:2df3d07a16a3bef0917b28cd564778fbb31f3ffa5b5e33584470e2d1b0f248f0 \ + --hash=sha256:2e7e5633577b3bd56bf3af2ef6ae3778bbafb83743989d57f0e7edbf6c0980e4 \ + --hash=sha256:2ee066a64f0d2ba45391cac15b3a70dcb549e968a117bd0500634754cfe0e5fc \ + --hash=sha256:2f1f295a5c28cfa74a7d48c95acc1c8a7acd49d7d9072040d4b694fe11cd7166 \ + --hash=sha256:2faa97212b0dc465afeedf49045cdd077f97be1188285e646a9f689cb5dfff9e \ + --hash=sha256:30479a9f1fce47df56b07460b520f49fa2115ec2926d3b1303c85c81f8401ed1 \ + --hash=sha256:337a8653fb11d2fbe7157c961cc78cb3c161d98cf44410ace9a3dc2db4fad882 \ + --hash=sha256:3423007fc0661827e06f8a185a3792c73dda41f30f3421562f210cf0c9e49569 \ + --hash=sha256:373b76eeb79e8c14f6d82cb1d4d5293f9e4059baec6c1b16dca7ad13b6131b39 \ + --hash=sha256:3b79c63d29101cbaa53a517683557bb550462394fb91044cc5998dd2acff7340 \ + --hash=sha256:3bbc89ce2a219662ea142f0abcf8d43f04a41d5b1880be17a794c39f0d609cb0 \ + --hash=sha256:3c11bc5814554b018f6c5d6ae0969e43766f81e995000b53a5d8c8057055e886 \ + --hash=sha256:3cd61e759c4075510052d1eca5cddbd297fe1164efec14ef1fce3f09b974dfe4 \ + --hash=sha256:3d40fb3ca22e3d40f494d577441b263026a3bd8c97ae6ce89b2d3c4b39ac9581 \ + --hash=sha256:3db0c998c92b909d7c90b66c965590d4f3cd86157176a6cf14aa1f867b77b889 \ + --hash=sha256:422b0901878a31ef167435c5ad46560362891816a76cc0d150683f3868a6f0d1 \ + --hash=sha256:46b4f3d47d1033db569173be62365fbf7808c2bd3fb742314d251f130d90d44c \ + --hash=sha256:485fbdd23becb822804ed05622907ee5c8e8a5f43f6f43894a45f463b2217045 \ + --hash=sha256:53304cc14b1d94487d70086e1cb0cb4c29ec6da994d58ae84a4d7e78c6a6d04d \ + --hash=sha256:5595c80dd03d7e6c6afb73f3594bf3379a7d79fa57164b591d012d4b71d6ac4c \ + --hash=sha256:56b51ba29a18e5f5810224bcf00747ad931c0716e3c09a76b4a1edd3d4aba71f \ + --hash=sha256:580182fa5b269c2981e9ce9764367cb4edc81982ce289208d4607c203f44ffde \ + --hash=sha256:5e99d6510c8557510c220b865d966b105464740dcbebf9b79ecd4fbab30a13d9 \ + --hash=sha256:5eb05b654a41e0f81ab27a7c3e88b6590425eb3e934e1d533ecec5dc88a6ffff \ + --hash=sha256:62b292fff4739c6be89e6a0240c02bda5a9066a339d90ab191cf66e9fdbdc193 \ + --hash=sha256:6a5122b17a4faf5d7a6d91fa67b479736c0cacc7afe791ddebb7163a8550b799 \ + --hash=sha256:6a8ff8e809da81363bffca2b965cb6e4bf6056b495fc3f078467d1f8266fe27f \ + --hash=sha256:6c43e1b89099279cc03eb1c725c5de12af6edcd2f78e2f8a022569efa639ada3 \ + --hash=sha256:709dc11af2f74ba89c68b1592368c6edcbccdb0a06ba77eb28c8fe08bb6997da \ + --hash=sha256:7e072f5da38d6428ba1fc1115d3cc0dae895df671cb04c70c019985e8c7606be \ + --hash=sha256:813a65f95bfcb7c8f2a70dd6add9b51e9accc3bdb3e03d0ff7a9e6a2d3e174bf \ + --hash=sha256:86c01299942b0f4b5b5f28c8701689181ad2eab852e65417172dbdd6c5b3ccc8 \ + --hash=sha256:893e38d0f4319dfa70c0f36381a37cc418985c87b11d9784365b1fff4fa6973b \ + --hash=sha256:8a5f574b92b3ee7d254e56d56e37ec0e1416acb1ae357c4956d76a1788dc58fb \ + --hash=sha256:8b9650f92251fdef843e74fc252cdfd6e3c700157ad686eeb0c6d7fdb2d11652 \ + --hash=sha256:8ec464f20fe803ae00419bd1610934e3bda963aeba1e6181dfc9033dc7e8940c \ + --hash=sha256:8f333bfe782a2d05a67cfaa0cc9cd68b36b39ee6acfe099f980541ed973a7093 \ + --hash=sha256:8ffdeb7dbd0160d4e391e1f857477e4762d00aa2199c294eb95dfb9451aa1d9f \ + --hash=sha256:911e600e798374c0d86235e7ef19109cf865d1336942d398ff313375a25a93ba \ + --hash=sha256:9235be95662559141934fced8197de6fee8c58870f36756b0584424b6d708393 \ + --hash=sha256:938518a11780b39998179d07f31a4a468888123f9b00463842cd40f98191f4d3 \ + --hash=sha256:93c18a1696a8e0388ed84b024fe1a188a26ba999b61d1d9a371318cb89885a8c \ + --hash=sha256:97532802f14d383f37d603a56e226909f825a83ff298dc1b6697de00d2243999 \ + --hash=sha256:98ee201a52a7f65608e5494518932e1473fd43535f12cade0a1b4ab32737fe28 \ + --hash=sha256:9d2ae79f31da5143e020a8d4fc74e1f0cbcb8011bdf97453c140aa616db51406 \ + --hash=sha256:9d38494a8d21c246c535b41ecdb2d562c4b933cf3d68de03e8bc43a0d41be652 \ + --hash=sha256:9d41ebb471a6f064c0d1c873c4f7dded733d16ca5db7d551fb04ff3805d87802 \ + --hash=sha256:9e09d017e3f4d9bd7d17a30d3f59e4d6d9ba2d2ced280eec2425e84112cf623f \ + --hash=sha256:a6945c2d61c42bb7e818677f43638675b8c1c43e858b67a96df3eb2426a86c9d \ + --hash=sha256:a72e00826a2b032dda3eb25aa3e3579c6d6773d22d8446089a57a123481cc46c \ + --hash=sha256:aa1e626c524d2c7972c0f3a8a575d654a3a9c008370dc2a97e46abd0eaa749b9 \ + --hash=sha256:ab095edf1d840a6a6a4307e1a5b907a299a94e7b90e75436ee770b8c35d22a25 \ + --hash=sha256:ac2ac84a4950d627d84b61f082eba61314373cfab4b3c264b62efab02ababe83 \ + --hash=sha256:ac7187bee72384b9cfedf09a29a3b2b6e8815cc64c095cdc8b5e6aec81e9fd5f \ + --hash=sha256:ae9d83a81b09ce3a817e2cbb23aabc07f86a3abc664c613cd283ce7a03541e95 \ + --hash=sha256:afeabb382c1256a7477b739820bce7fe782bb807d82927102cee73e79b41b38b \ + --hash=sha256:b2a4cd924d0e2f4b1a68034abe4cadc73d69ad5f4cf02db6481c0d4d749f548f \ + --hash=sha256:b414ef79f1f06fb90b5165db8aef77512c1a5e3ed1b4807da8476b7e2c853283 \ + --hash=sha256:b4ecbba7efd82bd2a4bb88aab7f984eb5470991c1347bdd1f35fb34ea28dba6e \ + --hash=sha256:b61d5096e75fd71018b25da50b82dd70ec39b5e15bb2134daf7eb7bbbc103644 \ + --hash=sha256:b629db53fe17e6ce478a969d30bd1d0e8b53238c46e3a9c9db39e8b65a9ef973 \ + --hash=sha256:b70b45a40ad0798b69748b34d508259ef2bdc84fb2aad4048bc7c9cafb68ddb3 \ + --hash=sha256:b88c3ab98556bc351b36d6208a6089de8c8db14a7f6e1f57f82a334bd2c18f0b \ + --hash=sha256:baf744e5f9d5ee6531deea443be78b36ed1cd36c65a0b95ea4e8d69fa0102268 \ + --hash=sha256:bbc7421cbd28b4316d1d017db338039a7943f945c6f2bb15e1439b14b5682d28 \ + --hash=sha256:c31272c674f725dfe0f343d73b0abe8c878c646967ec1c6106122faae1efc15b \ + --hash=sha256:c51a899792ee2c696072791e56b2020caff58b275abecbc9ae0cb71af0645c95 \ + --hash=sha256:c61e42b4ceb9759727045765e87d51c1bb9f89987aca1fcc8a040232138cad1c \ + --hash=sha256:c7cd0841a586b7105513a7c8c3d5c276f3adc762a072d81ef7fae80632afad1e \ + --hash=sha256:c827a931c6b57f50f1bb5de400dcfb00bad8117e3753e80b96adb72d9d811514 \ + --hash=sha256:d2aa3ca9552f83b0b4fa6ca8c6ce08da6580f37e3e0ab7afac73a1cfdc230c0e \ + --hash=sha256:d46ee458452727a147d7897bb33886981ae1235775e05decae5d5d07f537695a \ + --hash=sha256:d64a657de7aae8db2da60dc0c9e4638a0c3893b4d60101fd564a3362b2bfeb34 \ + --hash=sha256:d800a8e2ac62db1b9ea5d6d1724f1a93c53907ca061de4d05ed94e8dfa79050c \ + --hash=sha256:d9d7ebcd11ea76ba0feaae98485cd8e31467c3d7985210fab46983278214736b \ + --hash=sha256:dd7d3608589072f63078b4063a6c536af832e76b0b3885f1bfe9e892abe6c207 \ + --hash=sha256:ec19e823b4ccd87bd69e990879acbce9e961fc7aebe150156b8f4418d4b27b7f \ + --hash=sha256:ee40206d1d6e95eaa2b7b919195e3689a5cf6ded730632de7f187f35a1b6052c \ + --hash=sha256:f138f550b83554f5b344d6be35d3ed59348510edc3cb96f75309db6e9bfe8210 \ + --hash=sha256:f3e6e2e502c4043c52a99316d89dc49f416acda5b0c6886e0dd8ea7bb35859e8 \ + --hash=sha256:fb10bb720348fe1647a94eb605accb9ef6a9b1875d8845f9e763d9d71a706387 \ + --hash=sha256:fc066395e6332da1e7525d605b4c96055669f8336600bef8ac569d5226a7c76f \ + --hash=sha256:fc33267d58dfbb2361baed52668c5d8c15d24bc0372cecbb79fed77339b55e0d # via # jsonschema # referencing diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index faff1053d63..9313588935b 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -785,106 +785,106 @@ rich==13.7.0 \ # via # aws-sam-cli (setup.py) # cookiecutter -rpds-py==0.13.2 \ - --hash=sha256:06d218e4464d31301e943b65b2c6919318ea6f69703a351961e1baaf60347276 \ - --hash=sha256:12ecf89bd54734c3c2c79898ae2021dca42750c7bcfb67f8fb3315453738ac8f \ - --hash=sha256:15253fff410873ebf3cfba1cc686a37711efcd9b8cb30ea21bb14a973e393f60 \ - --hash=sha256:188435794405c7f0573311747c85a96b63c954a5f2111b1df8018979eca0f2f0 \ - --hash=sha256:1ceebd0ae4f3e9b2b6b553b51971921853ae4eebf3f54086be0565d59291e53d \ - --hash=sha256:244e173bb6d8f3b2f0c4d7370a1aa341f35da3e57ffd1798e5b2917b91731fd3 \ - --hash=sha256:25b28b3d33ec0a78e944aaaed7e5e2a94ac811bcd68b557ca48a0c30f87497d2 \ - --hash=sha256:25ea41635d22b2eb6326f58e608550e55d01df51b8a580ea7e75396bafbb28e9 \ - --hash=sha256:29d311e44dd16d2434d5506d57ef4d7036544fc3c25c14b6992ef41f541b10fb \ - --hash=sha256:2a1472956c5bcc49fb0252b965239bffe801acc9394f8b7c1014ae9258e4572b \ - --hash=sha256:2a7bef6977043673750a88da064fd513f89505111014b4e00fbdd13329cd4e9a \ - --hash=sha256:2ac26f50736324beb0282c819668328d53fc38543fa61eeea2c32ea8ea6eab8d \ - --hash=sha256:2e72f750048b32d39e87fc85c225c50b2a6715034848dbb196bf3348aa761fa1 \ - --hash=sha256:31e220a040b89a01505128c2f8a59ee74732f666439a03e65ccbf3824cdddae7 \ - --hash=sha256:35f53c76a712e323c779ca39b9a81b13f219a8e3bc15f106ed1e1462d56fcfe9 \ - --hash=sha256:38d4f822ee2f338febcc85aaa2547eb5ba31ba6ff68d10b8ec988929d23bb6b4 \ - --hash=sha256:38f9bf2ad754b4a45b8210a6c732fe876b8a14e14d5992a8c4b7c1ef78740f53 \ - --hash=sha256:3a44c8440183b43167fd1a0819e8356692bf5db1ad14ce140dbd40a1485f2dea \ - --hash=sha256:3ab96754d23372009638a402a1ed12a27711598dd49d8316a22597141962fe66 \ - --hash=sha256:3c55d7f2d817183d43220738270efd3ce4e7a7b7cbdaefa6d551ed3d6ed89190 \ - --hash=sha256:46e1ed994a0920f350a4547a38471217eb86f57377e9314fbaaa329b71b7dfe3 \ - --hash=sha256:4a5375c5fff13f209527cd886dc75394f040c7d1ecad0a2cb0627f13ebe78a12 \ - --hash=sha256:4c2d26aa03d877c9730bf005621c92da263523a1e99247590abbbe252ccb7824 \ - --hash=sha256:4c4e314d36d4f31236a545696a480aa04ea170a0b021e9a59ab1ed94d4c3ef27 \ - --hash=sha256:4d0c10d803549427f427085ed7aebc39832f6e818a011dcd8785e9c6a1ba9b3e \ - --hash=sha256:4dcc5ee1d0275cb78d443fdebd0241e58772a354a6d518b1d7af1580bbd2c4e8 \ - --hash=sha256:51967a67ea0d7b9b5cd86036878e2d82c0b6183616961c26d825b8c994d4f2c8 \ - --hash=sha256:530190eb0cd778363bbb7596612ded0bb9fef662daa98e9d92a0419ab27ae914 \ - --hash=sha256:5379e49d7e80dca9811b36894493d1c1ecb4c57de05c36f5d0dd09982af20211 \ - --hash=sha256:5493569f861fb7b05af6d048d00d773c6162415ae521b7010197c98810a14cab \ - --hash=sha256:5a4c1058cdae6237d97af272b326e5f78ee7ee3bbffa6b24b09db4d828810468 \ - --hash=sha256:5d75d6d220d55cdced2f32cc22f599475dbe881229aeddba6c79c2e9df35a2b3 \ - --hash=sha256:5d97e9ae94fb96df1ee3cb09ca376c34e8a122f36927230f4c8a97f469994bff \ - --hash=sha256:5feae2f9aa7270e2c071f488fab256d768e88e01b958f123a690f1cc3061a09c \ - --hash=sha256:603d5868f7419081d616dab7ac3cfa285296735e7350f7b1e4f548f6f953ee7d \ - --hash=sha256:61d42d2b08430854485135504f672c14d4fc644dd243a9c17e7c4e0faf5ed07e \ - --hash=sha256:61dbc1e01dc0c5875da2f7ae36d6e918dc1b8d2ce04e871793976594aad8a57a \ - --hash=sha256:65cfed9c807c27dee76407e8bb29e6f4e391e436774bcc769a037ff25ad8646e \ - --hash=sha256:67a429520e97621a763cf9b3ba27574779c4e96e49a27ff8a1aa99ee70beb28a \ - --hash=sha256:6aadae3042f8e6db3376d9e91f194c606c9a45273c170621d46128f35aef7cd0 \ - --hash=sha256:6ba8858933f0c1a979781272a5f65646fca8c18c93c99c6ddb5513ad96fa54b1 \ - --hash=sha256:6bc568b05e02cd612be53900c88aaa55012e744930ba2eeb56279db4c6676eb3 \ - --hash=sha256:729408136ef8d45a28ee9a7411917c9e3459cf266c7e23c2f7d4bb8ef9e0da42 \ - --hash=sha256:751758d9dd04d548ec679224cc00e3591f5ebf1ff159ed0d4aba6a0746352452 \ - --hash=sha256:76d59d4d451ba77f08cb4cd9268dec07be5bc65f73666302dbb5061989b17198 \ - --hash=sha256:79bf58c08f0756adba691d480b5a20e4ad23f33e1ae121584cf3a21717c36dfa \ - --hash=sha256:7de12b69d95072394998c622cfd7e8cea8f560db5fca6a62a148f902a1029f8b \ - --hash=sha256:7f55cd9cf1564b7b03f238e4c017ca4794c05b01a783e9291065cb2858d86ce4 \ - --hash=sha256:80e5acb81cb49fd9f2d5c08f8b74ffff14ee73b10ca88297ab4619e946bcb1e1 \ - --hash=sha256:87a90f5545fd61f6964e65eebde4dc3fa8660bb7d87adb01d4cf17e0a2b484ad \ - --hash=sha256:881df98f0a8404d32b6de0fd33e91c1b90ed1516a80d4d6dc69d414b8850474c \ - --hash=sha256:8a776a29b77fe0cc28fedfd87277b0d0f7aa930174b7e504d764e0b43a05f381 \ - --hash=sha256:8c2a61c0e4811012b0ba9f6cdcb4437865df5d29eab5d6018ba13cee1c3064a0 \ - --hash=sha256:8fa6bd071ec6d90f6e7baa66ae25820d57a8ab1b0a3c6d3edf1834d4b26fafa2 \ - --hash=sha256:96f2975fb14f39c5fe75203f33dd3010fe37d1c4e33177feef1107b5ced750e3 \ - --hash=sha256:96fb0899bb2ab353f42e5374c8f0789f54e0a94ef2f02b9ac7149c56622eaf31 \ - --hash=sha256:97163a1ab265a1073a6372eca9f4eeb9f8c6327457a0b22ddfc4a17dcd613e74 \ - --hash=sha256:9c95a1a290f9acf7a8f2ebbdd183e99215d491beea52d61aa2a7a7d2c618ddc6 \ - --hash=sha256:9d94d78418203904730585efa71002286ac4c8ac0689d0eb61e3c465f9e608ff \ - --hash=sha256:a6ba2cb7d676e9415b9e9ac7e2aae401dc1b1e666943d1f7bc66223d3d73467b \ - --hash=sha256:aa0379c1935c44053c98826bc99ac95f3a5355675a297ac9ce0dfad0ce2d50ca \ - --hash=sha256:ac96d67b37f28e4b6ecf507c3405f52a40658c0a806dffde624a8fcb0314d5fd \ - --hash=sha256:ade2ccb937060c299ab0dfb2dea3d2ddf7e098ed63ee3d651ebfc2c8d1e8632a \ - --hash=sha256:aefbdc934115d2f9278f153952003ac52cd2650e7313750390b334518c589568 \ - --hash=sha256:b07501b720cf060c5856f7b5626e75b8e353b5f98b9b354a21eb4bfa47e421b1 \ - --hash=sha256:b5267feb19070bef34b8dea27e2b504ebd9d31748e3ecacb3a4101da6fcb255c \ - --hash=sha256:b5f6328e8e2ae8238fc767703ab7b95785521c42bb2b8790984e3477d7fa71ad \ - --hash=sha256:b8996ffb60c69f677245f5abdbcc623e9442bcc91ed81b6cd6187129ad1fa3e7 \ - --hash=sha256:b981a370f8f41c4024c170b42fbe9e691ae2dbc19d1d99151a69e2c84a0d194d \ - --hash=sha256:b9d121be0217787a7d59a5c6195b0842d3f701007333426e5154bf72346aa658 \ - --hash=sha256:bcef4f2d3dc603150421de85c916da19471f24d838c3c62a4f04c1eb511642c1 \ - --hash=sha256:bed0252c85e21cf73d2d033643c945b460d6a02fc4a7d644e3b2d6f5f2956c64 \ - --hash=sha256:bfdfbe6a36bc3059fff845d64c42f2644cf875c65f5005db54f90cdfdf1df815 \ - --hash=sha256:c0095b8aa3e432e32d372e9a7737e65b58d5ed23b9620fea7cb81f17672f1fa1 \ - --hash=sha256:c1f41d32a2ddc5a94df4b829b395916a4b7f103350fa76ba6de625fcb9e773ac \ - --hash=sha256:c45008ca79bad237cbc03c72bc5205e8c6f66403773929b1b50f7d84ef9e4d07 \ - --hash=sha256:c82bbf7e03748417c3a88c1b0b291288ce3e4887a795a3addaa7a1cfd9e7153e \ - --hash=sha256:c918621ee0a3d1fe61c313f2489464f2ae3d13633e60f520a8002a5e910982ee \ - --hash=sha256:d204957169f0b3511fb95395a9da7d4490fb361763a9f8b32b345a7fe119cb45 \ - --hash=sha256:d329896c40d9e1e5c7715c98529e4a188a1f2df51212fd65102b32465612b5dc \ - --hash=sha256:d3a61e928feddc458a55110f42f626a2a20bea942ccedb6fb4cee70b4830ed41 \ - --hash=sha256:d48db29bd47814671afdd76c7652aefacc25cf96aad6daefa82d738ee87461e2 \ - --hash=sha256:d5593855b5b2b73dd8413c3fdfa5d95b99d657658f947ba2c4318591e745d083 \ - --hash=sha256:d79c159adea0f1f4617f54aa156568ac69968f9ef4d1e5fefffc0a180830308e \ - --hash=sha256:db09b98c7540df69d4b47218da3fbd7cb466db0fb932e971c321f1c76f155266 \ - --hash=sha256:ddf23960cb42b69bce13045d5bc66f18c7d53774c66c13f24cf1b9c144ba3141 \ - --hash=sha256:e06cfea0ece444571d24c18ed465bc93afb8c8d8d74422eb7026662f3d3f779b \ - --hash=sha256:e7c564c58cf8f248fe859a4f0fe501b050663f3d7fbc342172f259124fb59933 \ - --hash=sha256:e86593bf8637659e6a6ed58854b6c87ec4e9e45ee8a4adfd936831cef55c2d21 \ - --hash=sha256:eaffbd8814bb1b5dc3ea156a4c5928081ba50419f9175f4fc95269e040eff8f0 \ - --hash=sha256:ee353bb51f648924926ed05e0122b6a0b1ae709396a80eb583449d5d477fcdf7 \ - --hash=sha256:ee6faebb265e28920a6f23a7d4c362414b3f4bb30607141d718b991669e49ddc \ - --hash=sha256:efe093acc43e869348f6f2224df7f452eab63a2c60a6c6cd6b50fd35c4e075ba \ - --hash=sha256:f03a1b3a4c03e3e0161642ac5367f08479ab29972ea0ffcd4fa18f729cd2be0a \ - --hash=sha256:f0d320e70b6b2300ff6029e234e79fe44e9dbbfc7b98597ba28e054bd6606a57 \ - --hash=sha256:f252dfb4852a527987a9156cbcae3022a30f86c9d26f4f17b8c967d7580d65d2 \ - --hash=sha256:f5f4424cb87a20b016bfdc157ff48757b89d2cc426256961643d443c6c277007 \ - --hash=sha256:f8eae66a1304de7368932b42d801c67969fd090ddb1a7a24f27b435ed4bed68f \ - --hash=sha256:fdb82eb60d31b0c033a8e8ee9f3fc7dfbaa042211131c29da29aea8531b4f18f +rpds-py==0.15.2 \ + --hash=sha256:02744236ac1895d7be837878e707a5c35fb8edc5137602f253b63623d7ad5c8c \ + --hash=sha256:03f9c5875515820633bd7709a25c3e60c1ea9ad1c5d4030ce8a8c203309c36fd \ + --hash=sha256:044f6f46d62444800402851afa3c3ae50141f12013060c1a3a0677e013310d6d \ + --hash=sha256:07a2e1d78d382f7181789713cdf0c16edbad4fe14fe1d115526cb6f0eef0daa3 \ + --hash=sha256:082e0e55d73690ffb4da4352d1b5bbe1b5c6034eb9dc8c91aa2a3ee15f70d3e2 \ + --hash=sha256:13152dfe7d7c27c40df8b99ac6aab12b978b546716e99f67e8a67a1d441acbc3 \ + --hash=sha256:13716e53627ad97babf72ac9e01cf9a7d4af2f75dd5ed7b323a7a9520e948282 \ + --hash=sha256:13ff62d3561a23c17341b4afc78e8fcfd799ab67c0b1ca32091d71383a98ba4b \ + --hash=sha256:1607cda6129f815493a3c184492acb5ae4aa6ed61d3a1b3663aa9824ed26f7ac \ + --hash=sha256:164fcee32f15d04d61568c9cb0d919e37ff3195919cd604039ff3053ada0461b \ + --hash=sha256:1c24e30d720c0009b6fb2e1905b025da56103c70a8b31b99138e4ed1c2a6c5b0 \ + --hash=sha256:1e6fcd0a0f62f2997107f758bb372397b8d5fd5f39cc6dcb86f7cb98a2172d6c \ + --hash=sha256:1fd0f0b1ccd7d537b858a56355a250108df692102e08aa2036e1a094fd78b2dc \ + --hash=sha256:2181e86d4e1cdf49a7320cb72a36c45efcb7670d0a88f09fd2d3a7967c0540fd \ + --hash=sha256:2974e6dff38afafd5ccf8f41cb8fc94600b3f4fd9b0a98f6ece6e2219e3158d5 \ + --hash=sha256:2dccc623725d0b298f557d869a68496a2fd2a9e9c41107f234fa5f7a37d278ac \ + --hash=sha256:2df3d07a16a3bef0917b28cd564778fbb31f3ffa5b5e33584470e2d1b0f248f0 \ + --hash=sha256:2e7e5633577b3bd56bf3af2ef6ae3778bbafb83743989d57f0e7edbf6c0980e4 \ + --hash=sha256:2ee066a64f0d2ba45391cac15b3a70dcb549e968a117bd0500634754cfe0e5fc \ + --hash=sha256:2f1f295a5c28cfa74a7d48c95acc1c8a7acd49d7d9072040d4b694fe11cd7166 \ + --hash=sha256:2faa97212b0dc465afeedf49045cdd077f97be1188285e646a9f689cb5dfff9e \ + --hash=sha256:30479a9f1fce47df56b07460b520f49fa2115ec2926d3b1303c85c81f8401ed1 \ + --hash=sha256:337a8653fb11d2fbe7157c961cc78cb3c161d98cf44410ace9a3dc2db4fad882 \ + --hash=sha256:3423007fc0661827e06f8a185a3792c73dda41f30f3421562f210cf0c9e49569 \ + --hash=sha256:373b76eeb79e8c14f6d82cb1d4d5293f9e4059baec6c1b16dca7ad13b6131b39 \ + --hash=sha256:3b79c63d29101cbaa53a517683557bb550462394fb91044cc5998dd2acff7340 \ + --hash=sha256:3bbc89ce2a219662ea142f0abcf8d43f04a41d5b1880be17a794c39f0d609cb0 \ + --hash=sha256:3c11bc5814554b018f6c5d6ae0969e43766f81e995000b53a5d8c8057055e886 \ + --hash=sha256:3cd61e759c4075510052d1eca5cddbd297fe1164efec14ef1fce3f09b974dfe4 \ + --hash=sha256:3d40fb3ca22e3d40f494d577441b263026a3bd8c97ae6ce89b2d3c4b39ac9581 \ + --hash=sha256:3db0c998c92b909d7c90b66c965590d4f3cd86157176a6cf14aa1f867b77b889 \ + --hash=sha256:422b0901878a31ef167435c5ad46560362891816a76cc0d150683f3868a6f0d1 \ + --hash=sha256:46b4f3d47d1033db569173be62365fbf7808c2bd3fb742314d251f130d90d44c \ + --hash=sha256:485fbdd23becb822804ed05622907ee5c8e8a5f43f6f43894a45f463b2217045 \ + --hash=sha256:53304cc14b1d94487d70086e1cb0cb4c29ec6da994d58ae84a4d7e78c6a6d04d \ + --hash=sha256:5595c80dd03d7e6c6afb73f3594bf3379a7d79fa57164b591d012d4b71d6ac4c \ + --hash=sha256:56b51ba29a18e5f5810224bcf00747ad931c0716e3c09a76b4a1edd3d4aba71f \ + --hash=sha256:580182fa5b269c2981e9ce9764367cb4edc81982ce289208d4607c203f44ffde \ + --hash=sha256:5e99d6510c8557510c220b865d966b105464740dcbebf9b79ecd4fbab30a13d9 \ + --hash=sha256:5eb05b654a41e0f81ab27a7c3e88b6590425eb3e934e1d533ecec5dc88a6ffff \ + --hash=sha256:62b292fff4739c6be89e6a0240c02bda5a9066a339d90ab191cf66e9fdbdc193 \ + --hash=sha256:6a5122b17a4faf5d7a6d91fa67b479736c0cacc7afe791ddebb7163a8550b799 \ + --hash=sha256:6a8ff8e809da81363bffca2b965cb6e4bf6056b495fc3f078467d1f8266fe27f \ + --hash=sha256:6c43e1b89099279cc03eb1c725c5de12af6edcd2f78e2f8a022569efa639ada3 \ + --hash=sha256:709dc11af2f74ba89c68b1592368c6edcbccdb0a06ba77eb28c8fe08bb6997da \ + --hash=sha256:7e072f5da38d6428ba1fc1115d3cc0dae895df671cb04c70c019985e8c7606be \ + --hash=sha256:813a65f95bfcb7c8f2a70dd6add9b51e9accc3bdb3e03d0ff7a9e6a2d3e174bf \ + --hash=sha256:86c01299942b0f4b5b5f28c8701689181ad2eab852e65417172dbdd6c5b3ccc8 \ + --hash=sha256:893e38d0f4319dfa70c0f36381a37cc418985c87b11d9784365b1fff4fa6973b \ + --hash=sha256:8a5f574b92b3ee7d254e56d56e37ec0e1416acb1ae357c4956d76a1788dc58fb \ + --hash=sha256:8b9650f92251fdef843e74fc252cdfd6e3c700157ad686eeb0c6d7fdb2d11652 \ + --hash=sha256:8ec464f20fe803ae00419bd1610934e3bda963aeba1e6181dfc9033dc7e8940c \ + --hash=sha256:8f333bfe782a2d05a67cfaa0cc9cd68b36b39ee6acfe099f980541ed973a7093 \ + --hash=sha256:8ffdeb7dbd0160d4e391e1f857477e4762d00aa2199c294eb95dfb9451aa1d9f \ + --hash=sha256:911e600e798374c0d86235e7ef19109cf865d1336942d398ff313375a25a93ba \ + --hash=sha256:9235be95662559141934fced8197de6fee8c58870f36756b0584424b6d708393 \ + --hash=sha256:938518a11780b39998179d07f31a4a468888123f9b00463842cd40f98191f4d3 \ + --hash=sha256:93c18a1696a8e0388ed84b024fe1a188a26ba999b61d1d9a371318cb89885a8c \ + --hash=sha256:97532802f14d383f37d603a56e226909f825a83ff298dc1b6697de00d2243999 \ + --hash=sha256:98ee201a52a7f65608e5494518932e1473fd43535f12cade0a1b4ab32737fe28 \ + --hash=sha256:9d2ae79f31da5143e020a8d4fc74e1f0cbcb8011bdf97453c140aa616db51406 \ + --hash=sha256:9d38494a8d21c246c535b41ecdb2d562c4b933cf3d68de03e8bc43a0d41be652 \ + --hash=sha256:9d41ebb471a6f064c0d1c873c4f7dded733d16ca5db7d551fb04ff3805d87802 \ + --hash=sha256:9e09d017e3f4d9bd7d17a30d3f59e4d6d9ba2d2ced280eec2425e84112cf623f \ + --hash=sha256:a6945c2d61c42bb7e818677f43638675b8c1c43e858b67a96df3eb2426a86c9d \ + --hash=sha256:a72e00826a2b032dda3eb25aa3e3579c6d6773d22d8446089a57a123481cc46c \ + --hash=sha256:aa1e626c524d2c7972c0f3a8a575d654a3a9c008370dc2a97e46abd0eaa749b9 \ + --hash=sha256:ab095edf1d840a6a6a4307e1a5b907a299a94e7b90e75436ee770b8c35d22a25 \ + --hash=sha256:ac2ac84a4950d627d84b61f082eba61314373cfab4b3c264b62efab02ababe83 \ + --hash=sha256:ac7187bee72384b9cfedf09a29a3b2b6e8815cc64c095cdc8b5e6aec81e9fd5f \ + --hash=sha256:ae9d83a81b09ce3a817e2cbb23aabc07f86a3abc664c613cd283ce7a03541e95 \ + --hash=sha256:afeabb382c1256a7477b739820bce7fe782bb807d82927102cee73e79b41b38b \ + --hash=sha256:b2a4cd924d0e2f4b1a68034abe4cadc73d69ad5f4cf02db6481c0d4d749f548f \ + --hash=sha256:b414ef79f1f06fb90b5165db8aef77512c1a5e3ed1b4807da8476b7e2c853283 \ + --hash=sha256:b4ecbba7efd82bd2a4bb88aab7f984eb5470991c1347bdd1f35fb34ea28dba6e \ + --hash=sha256:b61d5096e75fd71018b25da50b82dd70ec39b5e15bb2134daf7eb7bbbc103644 \ + --hash=sha256:b629db53fe17e6ce478a969d30bd1d0e8b53238c46e3a9c9db39e8b65a9ef973 \ + --hash=sha256:b70b45a40ad0798b69748b34d508259ef2bdc84fb2aad4048bc7c9cafb68ddb3 \ + --hash=sha256:b88c3ab98556bc351b36d6208a6089de8c8db14a7f6e1f57f82a334bd2c18f0b \ + --hash=sha256:baf744e5f9d5ee6531deea443be78b36ed1cd36c65a0b95ea4e8d69fa0102268 \ + --hash=sha256:bbc7421cbd28b4316d1d017db338039a7943f945c6f2bb15e1439b14b5682d28 \ + --hash=sha256:c31272c674f725dfe0f343d73b0abe8c878c646967ec1c6106122faae1efc15b \ + --hash=sha256:c51a899792ee2c696072791e56b2020caff58b275abecbc9ae0cb71af0645c95 \ + --hash=sha256:c61e42b4ceb9759727045765e87d51c1bb9f89987aca1fcc8a040232138cad1c \ + --hash=sha256:c7cd0841a586b7105513a7c8c3d5c276f3adc762a072d81ef7fae80632afad1e \ + --hash=sha256:c827a931c6b57f50f1bb5de400dcfb00bad8117e3753e80b96adb72d9d811514 \ + --hash=sha256:d2aa3ca9552f83b0b4fa6ca8c6ce08da6580f37e3e0ab7afac73a1cfdc230c0e \ + --hash=sha256:d46ee458452727a147d7897bb33886981ae1235775e05decae5d5d07f537695a \ + --hash=sha256:d64a657de7aae8db2da60dc0c9e4638a0c3893b4d60101fd564a3362b2bfeb34 \ + --hash=sha256:d800a8e2ac62db1b9ea5d6d1724f1a93c53907ca061de4d05ed94e8dfa79050c \ + --hash=sha256:d9d7ebcd11ea76ba0feaae98485cd8e31467c3d7985210fab46983278214736b \ + --hash=sha256:dd7d3608589072f63078b4063a6c536af832e76b0b3885f1bfe9e892abe6c207 \ + --hash=sha256:ec19e823b4ccd87bd69e990879acbce9e961fc7aebe150156b8f4418d4b27b7f \ + --hash=sha256:ee40206d1d6e95eaa2b7b919195e3689a5cf6ded730632de7f187f35a1b6052c \ + --hash=sha256:f138f550b83554f5b344d6be35d3ed59348510edc3cb96f75309db6e9bfe8210 \ + --hash=sha256:f3e6e2e502c4043c52a99316d89dc49f416acda5b0c6886e0dd8ea7bb35859e8 \ + --hash=sha256:fb10bb720348fe1647a94eb605accb9ef6a9b1875d8845f9e763d9d71a706387 \ + --hash=sha256:fc066395e6332da1e7525d605b4c96055669f8336600bef8ac569d5226a7c76f \ + --hash=sha256:fc33267d58dfbb2361baed52668c5d8c15d24bc0372cecbb79fed77339b55e0d # via # jsonschema # referencing diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 2d46e7d9e1e..17206261223 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -773,106 +773,106 @@ rich==13.7.0 \ # via # aws-sam-cli (setup.py) # cookiecutter -rpds-py==0.13.2 \ - --hash=sha256:06d218e4464d31301e943b65b2c6919318ea6f69703a351961e1baaf60347276 \ - --hash=sha256:12ecf89bd54734c3c2c79898ae2021dca42750c7bcfb67f8fb3315453738ac8f \ - --hash=sha256:15253fff410873ebf3cfba1cc686a37711efcd9b8cb30ea21bb14a973e393f60 \ - --hash=sha256:188435794405c7f0573311747c85a96b63c954a5f2111b1df8018979eca0f2f0 \ - --hash=sha256:1ceebd0ae4f3e9b2b6b553b51971921853ae4eebf3f54086be0565d59291e53d \ - --hash=sha256:244e173bb6d8f3b2f0c4d7370a1aa341f35da3e57ffd1798e5b2917b91731fd3 \ - --hash=sha256:25b28b3d33ec0a78e944aaaed7e5e2a94ac811bcd68b557ca48a0c30f87497d2 \ - --hash=sha256:25ea41635d22b2eb6326f58e608550e55d01df51b8a580ea7e75396bafbb28e9 \ - --hash=sha256:29d311e44dd16d2434d5506d57ef4d7036544fc3c25c14b6992ef41f541b10fb \ - --hash=sha256:2a1472956c5bcc49fb0252b965239bffe801acc9394f8b7c1014ae9258e4572b \ - --hash=sha256:2a7bef6977043673750a88da064fd513f89505111014b4e00fbdd13329cd4e9a \ - --hash=sha256:2ac26f50736324beb0282c819668328d53fc38543fa61eeea2c32ea8ea6eab8d \ - --hash=sha256:2e72f750048b32d39e87fc85c225c50b2a6715034848dbb196bf3348aa761fa1 \ - --hash=sha256:31e220a040b89a01505128c2f8a59ee74732f666439a03e65ccbf3824cdddae7 \ - --hash=sha256:35f53c76a712e323c779ca39b9a81b13f219a8e3bc15f106ed1e1462d56fcfe9 \ - --hash=sha256:38d4f822ee2f338febcc85aaa2547eb5ba31ba6ff68d10b8ec988929d23bb6b4 \ - --hash=sha256:38f9bf2ad754b4a45b8210a6c732fe876b8a14e14d5992a8c4b7c1ef78740f53 \ - --hash=sha256:3a44c8440183b43167fd1a0819e8356692bf5db1ad14ce140dbd40a1485f2dea \ - --hash=sha256:3ab96754d23372009638a402a1ed12a27711598dd49d8316a22597141962fe66 \ - --hash=sha256:3c55d7f2d817183d43220738270efd3ce4e7a7b7cbdaefa6d551ed3d6ed89190 \ - --hash=sha256:46e1ed994a0920f350a4547a38471217eb86f57377e9314fbaaa329b71b7dfe3 \ - --hash=sha256:4a5375c5fff13f209527cd886dc75394f040c7d1ecad0a2cb0627f13ebe78a12 \ - --hash=sha256:4c2d26aa03d877c9730bf005621c92da263523a1e99247590abbbe252ccb7824 \ - --hash=sha256:4c4e314d36d4f31236a545696a480aa04ea170a0b021e9a59ab1ed94d4c3ef27 \ - --hash=sha256:4d0c10d803549427f427085ed7aebc39832f6e818a011dcd8785e9c6a1ba9b3e \ - --hash=sha256:4dcc5ee1d0275cb78d443fdebd0241e58772a354a6d518b1d7af1580bbd2c4e8 \ - --hash=sha256:51967a67ea0d7b9b5cd86036878e2d82c0b6183616961c26d825b8c994d4f2c8 \ - --hash=sha256:530190eb0cd778363bbb7596612ded0bb9fef662daa98e9d92a0419ab27ae914 \ - --hash=sha256:5379e49d7e80dca9811b36894493d1c1ecb4c57de05c36f5d0dd09982af20211 \ - --hash=sha256:5493569f861fb7b05af6d048d00d773c6162415ae521b7010197c98810a14cab \ - --hash=sha256:5a4c1058cdae6237d97af272b326e5f78ee7ee3bbffa6b24b09db4d828810468 \ - --hash=sha256:5d75d6d220d55cdced2f32cc22f599475dbe881229aeddba6c79c2e9df35a2b3 \ - --hash=sha256:5d97e9ae94fb96df1ee3cb09ca376c34e8a122f36927230f4c8a97f469994bff \ - --hash=sha256:5feae2f9aa7270e2c071f488fab256d768e88e01b958f123a690f1cc3061a09c \ - --hash=sha256:603d5868f7419081d616dab7ac3cfa285296735e7350f7b1e4f548f6f953ee7d \ - --hash=sha256:61d42d2b08430854485135504f672c14d4fc644dd243a9c17e7c4e0faf5ed07e \ - --hash=sha256:61dbc1e01dc0c5875da2f7ae36d6e918dc1b8d2ce04e871793976594aad8a57a \ - --hash=sha256:65cfed9c807c27dee76407e8bb29e6f4e391e436774bcc769a037ff25ad8646e \ - --hash=sha256:67a429520e97621a763cf9b3ba27574779c4e96e49a27ff8a1aa99ee70beb28a \ - --hash=sha256:6aadae3042f8e6db3376d9e91f194c606c9a45273c170621d46128f35aef7cd0 \ - --hash=sha256:6ba8858933f0c1a979781272a5f65646fca8c18c93c99c6ddb5513ad96fa54b1 \ - --hash=sha256:6bc568b05e02cd612be53900c88aaa55012e744930ba2eeb56279db4c6676eb3 \ - --hash=sha256:729408136ef8d45a28ee9a7411917c9e3459cf266c7e23c2f7d4bb8ef9e0da42 \ - --hash=sha256:751758d9dd04d548ec679224cc00e3591f5ebf1ff159ed0d4aba6a0746352452 \ - --hash=sha256:76d59d4d451ba77f08cb4cd9268dec07be5bc65f73666302dbb5061989b17198 \ - --hash=sha256:79bf58c08f0756adba691d480b5a20e4ad23f33e1ae121584cf3a21717c36dfa \ - --hash=sha256:7de12b69d95072394998c622cfd7e8cea8f560db5fca6a62a148f902a1029f8b \ - --hash=sha256:7f55cd9cf1564b7b03f238e4c017ca4794c05b01a783e9291065cb2858d86ce4 \ - --hash=sha256:80e5acb81cb49fd9f2d5c08f8b74ffff14ee73b10ca88297ab4619e946bcb1e1 \ - --hash=sha256:87a90f5545fd61f6964e65eebde4dc3fa8660bb7d87adb01d4cf17e0a2b484ad \ - --hash=sha256:881df98f0a8404d32b6de0fd33e91c1b90ed1516a80d4d6dc69d414b8850474c \ - --hash=sha256:8a776a29b77fe0cc28fedfd87277b0d0f7aa930174b7e504d764e0b43a05f381 \ - --hash=sha256:8c2a61c0e4811012b0ba9f6cdcb4437865df5d29eab5d6018ba13cee1c3064a0 \ - --hash=sha256:8fa6bd071ec6d90f6e7baa66ae25820d57a8ab1b0a3c6d3edf1834d4b26fafa2 \ - --hash=sha256:96f2975fb14f39c5fe75203f33dd3010fe37d1c4e33177feef1107b5ced750e3 \ - --hash=sha256:96fb0899bb2ab353f42e5374c8f0789f54e0a94ef2f02b9ac7149c56622eaf31 \ - --hash=sha256:97163a1ab265a1073a6372eca9f4eeb9f8c6327457a0b22ddfc4a17dcd613e74 \ - --hash=sha256:9c95a1a290f9acf7a8f2ebbdd183e99215d491beea52d61aa2a7a7d2c618ddc6 \ - --hash=sha256:9d94d78418203904730585efa71002286ac4c8ac0689d0eb61e3c465f9e608ff \ - --hash=sha256:a6ba2cb7d676e9415b9e9ac7e2aae401dc1b1e666943d1f7bc66223d3d73467b \ - --hash=sha256:aa0379c1935c44053c98826bc99ac95f3a5355675a297ac9ce0dfad0ce2d50ca \ - --hash=sha256:ac96d67b37f28e4b6ecf507c3405f52a40658c0a806dffde624a8fcb0314d5fd \ - --hash=sha256:ade2ccb937060c299ab0dfb2dea3d2ddf7e098ed63ee3d651ebfc2c8d1e8632a \ - --hash=sha256:aefbdc934115d2f9278f153952003ac52cd2650e7313750390b334518c589568 \ - --hash=sha256:b07501b720cf060c5856f7b5626e75b8e353b5f98b9b354a21eb4bfa47e421b1 \ - --hash=sha256:b5267feb19070bef34b8dea27e2b504ebd9d31748e3ecacb3a4101da6fcb255c \ - --hash=sha256:b5f6328e8e2ae8238fc767703ab7b95785521c42bb2b8790984e3477d7fa71ad \ - --hash=sha256:b8996ffb60c69f677245f5abdbcc623e9442bcc91ed81b6cd6187129ad1fa3e7 \ - --hash=sha256:b981a370f8f41c4024c170b42fbe9e691ae2dbc19d1d99151a69e2c84a0d194d \ - --hash=sha256:b9d121be0217787a7d59a5c6195b0842d3f701007333426e5154bf72346aa658 \ - --hash=sha256:bcef4f2d3dc603150421de85c916da19471f24d838c3c62a4f04c1eb511642c1 \ - --hash=sha256:bed0252c85e21cf73d2d033643c945b460d6a02fc4a7d644e3b2d6f5f2956c64 \ - --hash=sha256:bfdfbe6a36bc3059fff845d64c42f2644cf875c65f5005db54f90cdfdf1df815 \ - --hash=sha256:c0095b8aa3e432e32d372e9a7737e65b58d5ed23b9620fea7cb81f17672f1fa1 \ - --hash=sha256:c1f41d32a2ddc5a94df4b829b395916a4b7f103350fa76ba6de625fcb9e773ac \ - --hash=sha256:c45008ca79bad237cbc03c72bc5205e8c6f66403773929b1b50f7d84ef9e4d07 \ - --hash=sha256:c82bbf7e03748417c3a88c1b0b291288ce3e4887a795a3addaa7a1cfd9e7153e \ - --hash=sha256:c918621ee0a3d1fe61c313f2489464f2ae3d13633e60f520a8002a5e910982ee \ - --hash=sha256:d204957169f0b3511fb95395a9da7d4490fb361763a9f8b32b345a7fe119cb45 \ - --hash=sha256:d329896c40d9e1e5c7715c98529e4a188a1f2df51212fd65102b32465612b5dc \ - --hash=sha256:d3a61e928feddc458a55110f42f626a2a20bea942ccedb6fb4cee70b4830ed41 \ - --hash=sha256:d48db29bd47814671afdd76c7652aefacc25cf96aad6daefa82d738ee87461e2 \ - --hash=sha256:d5593855b5b2b73dd8413c3fdfa5d95b99d657658f947ba2c4318591e745d083 \ - --hash=sha256:d79c159adea0f1f4617f54aa156568ac69968f9ef4d1e5fefffc0a180830308e \ - --hash=sha256:db09b98c7540df69d4b47218da3fbd7cb466db0fb932e971c321f1c76f155266 \ - --hash=sha256:ddf23960cb42b69bce13045d5bc66f18c7d53774c66c13f24cf1b9c144ba3141 \ - --hash=sha256:e06cfea0ece444571d24c18ed465bc93afb8c8d8d74422eb7026662f3d3f779b \ - --hash=sha256:e7c564c58cf8f248fe859a4f0fe501b050663f3d7fbc342172f259124fb59933 \ - --hash=sha256:e86593bf8637659e6a6ed58854b6c87ec4e9e45ee8a4adfd936831cef55c2d21 \ - --hash=sha256:eaffbd8814bb1b5dc3ea156a4c5928081ba50419f9175f4fc95269e040eff8f0 \ - --hash=sha256:ee353bb51f648924926ed05e0122b6a0b1ae709396a80eb583449d5d477fcdf7 \ - --hash=sha256:ee6faebb265e28920a6f23a7d4c362414b3f4bb30607141d718b991669e49ddc \ - --hash=sha256:efe093acc43e869348f6f2224df7f452eab63a2c60a6c6cd6b50fd35c4e075ba \ - --hash=sha256:f03a1b3a4c03e3e0161642ac5367f08479ab29972ea0ffcd4fa18f729cd2be0a \ - --hash=sha256:f0d320e70b6b2300ff6029e234e79fe44e9dbbfc7b98597ba28e054bd6606a57 \ - --hash=sha256:f252dfb4852a527987a9156cbcae3022a30f86c9d26f4f17b8c967d7580d65d2 \ - --hash=sha256:f5f4424cb87a20b016bfdc157ff48757b89d2cc426256961643d443c6c277007 \ - --hash=sha256:f8eae66a1304de7368932b42d801c67969fd090ddb1a7a24f27b435ed4bed68f \ - --hash=sha256:fdb82eb60d31b0c033a8e8ee9f3fc7dfbaa042211131c29da29aea8531b4f18f +rpds-py==0.15.2 \ + --hash=sha256:02744236ac1895d7be837878e707a5c35fb8edc5137602f253b63623d7ad5c8c \ + --hash=sha256:03f9c5875515820633bd7709a25c3e60c1ea9ad1c5d4030ce8a8c203309c36fd \ + --hash=sha256:044f6f46d62444800402851afa3c3ae50141f12013060c1a3a0677e013310d6d \ + --hash=sha256:07a2e1d78d382f7181789713cdf0c16edbad4fe14fe1d115526cb6f0eef0daa3 \ + --hash=sha256:082e0e55d73690ffb4da4352d1b5bbe1b5c6034eb9dc8c91aa2a3ee15f70d3e2 \ + --hash=sha256:13152dfe7d7c27c40df8b99ac6aab12b978b546716e99f67e8a67a1d441acbc3 \ + --hash=sha256:13716e53627ad97babf72ac9e01cf9a7d4af2f75dd5ed7b323a7a9520e948282 \ + --hash=sha256:13ff62d3561a23c17341b4afc78e8fcfd799ab67c0b1ca32091d71383a98ba4b \ + --hash=sha256:1607cda6129f815493a3c184492acb5ae4aa6ed61d3a1b3663aa9824ed26f7ac \ + --hash=sha256:164fcee32f15d04d61568c9cb0d919e37ff3195919cd604039ff3053ada0461b \ + --hash=sha256:1c24e30d720c0009b6fb2e1905b025da56103c70a8b31b99138e4ed1c2a6c5b0 \ + --hash=sha256:1e6fcd0a0f62f2997107f758bb372397b8d5fd5f39cc6dcb86f7cb98a2172d6c \ + --hash=sha256:1fd0f0b1ccd7d537b858a56355a250108df692102e08aa2036e1a094fd78b2dc \ + --hash=sha256:2181e86d4e1cdf49a7320cb72a36c45efcb7670d0a88f09fd2d3a7967c0540fd \ + --hash=sha256:2974e6dff38afafd5ccf8f41cb8fc94600b3f4fd9b0a98f6ece6e2219e3158d5 \ + --hash=sha256:2dccc623725d0b298f557d869a68496a2fd2a9e9c41107f234fa5f7a37d278ac \ + --hash=sha256:2df3d07a16a3bef0917b28cd564778fbb31f3ffa5b5e33584470e2d1b0f248f0 \ + --hash=sha256:2e7e5633577b3bd56bf3af2ef6ae3778bbafb83743989d57f0e7edbf6c0980e4 \ + --hash=sha256:2ee066a64f0d2ba45391cac15b3a70dcb549e968a117bd0500634754cfe0e5fc \ + --hash=sha256:2f1f295a5c28cfa74a7d48c95acc1c8a7acd49d7d9072040d4b694fe11cd7166 \ + --hash=sha256:2faa97212b0dc465afeedf49045cdd077f97be1188285e646a9f689cb5dfff9e \ + --hash=sha256:30479a9f1fce47df56b07460b520f49fa2115ec2926d3b1303c85c81f8401ed1 \ + --hash=sha256:337a8653fb11d2fbe7157c961cc78cb3c161d98cf44410ace9a3dc2db4fad882 \ + --hash=sha256:3423007fc0661827e06f8a185a3792c73dda41f30f3421562f210cf0c9e49569 \ + --hash=sha256:373b76eeb79e8c14f6d82cb1d4d5293f9e4059baec6c1b16dca7ad13b6131b39 \ + --hash=sha256:3b79c63d29101cbaa53a517683557bb550462394fb91044cc5998dd2acff7340 \ + --hash=sha256:3bbc89ce2a219662ea142f0abcf8d43f04a41d5b1880be17a794c39f0d609cb0 \ + --hash=sha256:3c11bc5814554b018f6c5d6ae0969e43766f81e995000b53a5d8c8057055e886 \ + --hash=sha256:3cd61e759c4075510052d1eca5cddbd297fe1164efec14ef1fce3f09b974dfe4 \ + --hash=sha256:3d40fb3ca22e3d40f494d577441b263026a3bd8c97ae6ce89b2d3c4b39ac9581 \ + --hash=sha256:3db0c998c92b909d7c90b66c965590d4f3cd86157176a6cf14aa1f867b77b889 \ + --hash=sha256:422b0901878a31ef167435c5ad46560362891816a76cc0d150683f3868a6f0d1 \ + --hash=sha256:46b4f3d47d1033db569173be62365fbf7808c2bd3fb742314d251f130d90d44c \ + --hash=sha256:485fbdd23becb822804ed05622907ee5c8e8a5f43f6f43894a45f463b2217045 \ + --hash=sha256:53304cc14b1d94487d70086e1cb0cb4c29ec6da994d58ae84a4d7e78c6a6d04d \ + --hash=sha256:5595c80dd03d7e6c6afb73f3594bf3379a7d79fa57164b591d012d4b71d6ac4c \ + --hash=sha256:56b51ba29a18e5f5810224bcf00747ad931c0716e3c09a76b4a1edd3d4aba71f \ + --hash=sha256:580182fa5b269c2981e9ce9764367cb4edc81982ce289208d4607c203f44ffde \ + --hash=sha256:5e99d6510c8557510c220b865d966b105464740dcbebf9b79ecd4fbab30a13d9 \ + --hash=sha256:5eb05b654a41e0f81ab27a7c3e88b6590425eb3e934e1d533ecec5dc88a6ffff \ + --hash=sha256:62b292fff4739c6be89e6a0240c02bda5a9066a339d90ab191cf66e9fdbdc193 \ + --hash=sha256:6a5122b17a4faf5d7a6d91fa67b479736c0cacc7afe791ddebb7163a8550b799 \ + --hash=sha256:6a8ff8e809da81363bffca2b965cb6e4bf6056b495fc3f078467d1f8266fe27f \ + --hash=sha256:6c43e1b89099279cc03eb1c725c5de12af6edcd2f78e2f8a022569efa639ada3 \ + --hash=sha256:709dc11af2f74ba89c68b1592368c6edcbccdb0a06ba77eb28c8fe08bb6997da \ + --hash=sha256:7e072f5da38d6428ba1fc1115d3cc0dae895df671cb04c70c019985e8c7606be \ + --hash=sha256:813a65f95bfcb7c8f2a70dd6add9b51e9accc3bdb3e03d0ff7a9e6a2d3e174bf \ + --hash=sha256:86c01299942b0f4b5b5f28c8701689181ad2eab852e65417172dbdd6c5b3ccc8 \ + --hash=sha256:893e38d0f4319dfa70c0f36381a37cc418985c87b11d9784365b1fff4fa6973b \ + --hash=sha256:8a5f574b92b3ee7d254e56d56e37ec0e1416acb1ae357c4956d76a1788dc58fb \ + --hash=sha256:8b9650f92251fdef843e74fc252cdfd6e3c700157ad686eeb0c6d7fdb2d11652 \ + --hash=sha256:8ec464f20fe803ae00419bd1610934e3bda963aeba1e6181dfc9033dc7e8940c \ + --hash=sha256:8f333bfe782a2d05a67cfaa0cc9cd68b36b39ee6acfe099f980541ed973a7093 \ + --hash=sha256:8ffdeb7dbd0160d4e391e1f857477e4762d00aa2199c294eb95dfb9451aa1d9f \ + --hash=sha256:911e600e798374c0d86235e7ef19109cf865d1336942d398ff313375a25a93ba \ + --hash=sha256:9235be95662559141934fced8197de6fee8c58870f36756b0584424b6d708393 \ + --hash=sha256:938518a11780b39998179d07f31a4a468888123f9b00463842cd40f98191f4d3 \ + --hash=sha256:93c18a1696a8e0388ed84b024fe1a188a26ba999b61d1d9a371318cb89885a8c \ + --hash=sha256:97532802f14d383f37d603a56e226909f825a83ff298dc1b6697de00d2243999 \ + --hash=sha256:98ee201a52a7f65608e5494518932e1473fd43535f12cade0a1b4ab32737fe28 \ + --hash=sha256:9d2ae79f31da5143e020a8d4fc74e1f0cbcb8011bdf97453c140aa616db51406 \ + --hash=sha256:9d38494a8d21c246c535b41ecdb2d562c4b933cf3d68de03e8bc43a0d41be652 \ + --hash=sha256:9d41ebb471a6f064c0d1c873c4f7dded733d16ca5db7d551fb04ff3805d87802 \ + --hash=sha256:9e09d017e3f4d9bd7d17a30d3f59e4d6d9ba2d2ced280eec2425e84112cf623f \ + --hash=sha256:a6945c2d61c42bb7e818677f43638675b8c1c43e858b67a96df3eb2426a86c9d \ + --hash=sha256:a72e00826a2b032dda3eb25aa3e3579c6d6773d22d8446089a57a123481cc46c \ + --hash=sha256:aa1e626c524d2c7972c0f3a8a575d654a3a9c008370dc2a97e46abd0eaa749b9 \ + --hash=sha256:ab095edf1d840a6a6a4307e1a5b907a299a94e7b90e75436ee770b8c35d22a25 \ + --hash=sha256:ac2ac84a4950d627d84b61f082eba61314373cfab4b3c264b62efab02ababe83 \ + --hash=sha256:ac7187bee72384b9cfedf09a29a3b2b6e8815cc64c095cdc8b5e6aec81e9fd5f \ + --hash=sha256:ae9d83a81b09ce3a817e2cbb23aabc07f86a3abc664c613cd283ce7a03541e95 \ + --hash=sha256:afeabb382c1256a7477b739820bce7fe782bb807d82927102cee73e79b41b38b \ + --hash=sha256:b2a4cd924d0e2f4b1a68034abe4cadc73d69ad5f4cf02db6481c0d4d749f548f \ + --hash=sha256:b414ef79f1f06fb90b5165db8aef77512c1a5e3ed1b4807da8476b7e2c853283 \ + --hash=sha256:b4ecbba7efd82bd2a4bb88aab7f984eb5470991c1347bdd1f35fb34ea28dba6e \ + --hash=sha256:b61d5096e75fd71018b25da50b82dd70ec39b5e15bb2134daf7eb7bbbc103644 \ + --hash=sha256:b629db53fe17e6ce478a969d30bd1d0e8b53238c46e3a9c9db39e8b65a9ef973 \ + --hash=sha256:b70b45a40ad0798b69748b34d508259ef2bdc84fb2aad4048bc7c9cafb68ddb3 \ + --hash=sha256:b88c3ab98556bc351b36d6208a6089de8c8db14a7f6e1f57f82a334bd2c18f0b \ + --hash=sha256:baf744e5f9d5ee6531deea443be78b36ed1cd36c65a0b95ea4e8d69fa0102268 \ + --hash=sha256:bbc7421cbd28b4316d1d017db338039a7943f945c6f2bb15e1439b14b5682d28 \ + --hash=sha256:c31272c674f725dfe0f343d73b0abe8c878c646967ec1c6106122faae1efc15b \ + --hash=sha256:c51a899792ee2c696072791e56b2020caff58b275abecbc9ae0cb71af0645c95 \ + --hash=sha256:c61e42b4ceb9759727045765e87d51c1bb9f89987aca1fcc8a040232138cad1c \ + --hash=sha256:c7cd0841a586b7105513a7c8c3d5c276f3adc762a072d81ef7fae80632afad1e \ + --hash=sha256:c827a931c6b57f50f1bb5de400dcfb00bad8117e3753e80b96adb72d9d811514 \ + --hash=sha256:d2aa3ca9552f83b0b4fa6ca8c6ce08da6580f37e3e0ab7afac73a1cfdc230c0e \ + --hash=sha256:d46ee458452727a147d7897bb33886981ae1235775e05decae5d5d07f537695a \ + --hash=sha256:d64a657de7aae8db2da60dc0c9e4638a0c3893b4d60101fd564a3362b2bfeb34 \ + --hash=sha256:d800a8e2ac62db1b9ea5d6d1724f1a93c53907ca061de4d05ed94e8dfa79050c \ + --hash=sha256:d9d7ebcd11ea76ba0feaae98485cd8e31467c3d7985210fab46983278214736b \ + --hash=sha256:dd7d3608589072f63078b4063a6c536af832e76b0b3885f1bfe9e892abe6c207 \ + --hash=sha256:ec19e823b4ccd87bd69e990879acbce9e961fc7aebe150156b8f4418d4b27b7f \ + --hash=sha256:ee40206d1d6e95eaa2b7b919195e3689a5cf6ded730632de7f187f35a1b6052c \ + --hash=sha256:f138f550b83554f5b344d6be35d3ed59348510edc3cb96f75309db6e9bfe8210 \ + --hash=sha256:f3e6e2e502c4043c52a99316d89dc49f416acda5b0c6886e0dd8ea7bb35859e8 \ + --hash=sha256:fb10bb720348fe1647a94eb605accb9ef6a9b1875d8845f9e763d9d71a706387 \ + --hash=sha256:fc066395e6332da1e7525d605b4c96055669f8336600bef8ac569d5226a7c76f \ + --hash=sha256:fc33267d58dfbb2361baed52668c5d8c15d24bc0372cecbb79fed77339b55e0d # via # jsonschema # referencing From 39fe8cda5b41846cbdcbc4fa57155377e4adbc0c Mon Sep 17 00:00:00 2001 From: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com> Date: Tue, 2 Jan 2024 13:41:31 -0800 Subject: [PATCH 017/100] fix: getting logging information from lambda (#6477) * fix: getting logging information from lambda * update formatting * add unit tests * add integration tests * bump python versions that is used in the test templates --- requirements/base.txt | 2 +- .../cw_logs/cw_log_group_provider.py | 4 +++- tests/integration/logs/test_logs_command.py | 1 + .../function-with-custom-logging/app.py | 5 +++++ .../function-with-custom-logging/app.py | 5 +++++ .../child-stack/grand-child-stack/template.yaml | 15 +++++++++++++-- .../child-stack/template.yaml | 15 +++++++++++++-- .../function-with-custom-logging/app.py | 5 +++++ .../logs/nested-python-apigw-sfn/template.yaml | 15 +++++++++++++-- .../function-with-custom-logging/app.py | 5 +++++ .../testdata/logs/python-apigw-sfn/template.yaml | 15 +++++++++++++-- .../cw_logs/test_cw_log_group_provider.py | 5 ++++- 12 files changed, 81 insertions(+), 11 deletions(-) create mode 100644 tests/integration/testdata/logs/nested-python-apigw-sfn/child-stack/function-with-custom-logging/app.py create mode 100644 tests/integration/testdata/logs/nested-python-apigw-sfn/child-stack/grand-child-stack/function-with-custom-logging/app.py create mode 100644 tests/integration/testdata/logs/nested-python-apigw-sfn/function-with-custom-logging/app.py create mode 100644 tests/integration/testdata/logs/python-apigw-sfn/function-with-custom-logging/app.py diff --git a/requirements/base.txt b/requirements/base.txt index 72d746c2c9c..f91f8d83ebd 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,7 +1,7 @@ chevron~=0.12 click~=8.1 Flask<3.1 -boto3>=1.26.109,<2 +boto3>=1.29.2,<2 jmespath~=1.0.1 ruamel_yaml~=0.18.5 PyYAML~=6.0,>=6.0.1 diff --git a/samcli/lib/observability/cw_logs/cw_log_group_provider.py b/samcli/lib/observability/cw_logs/cw_log_group_provider.py index 0ff83925e5c..e920ee41a7d 100644 --- a/samcli/lib/observability/cw_logs/cw_log_group_provider.py +++ b/samcli/lib/observability/cw_logs/cw_log_group_provider.py @@ -53,7 +53,9 @@ def for_lambda_function(boto_client_provider: BotoProviderType, function_name: s """ log_group_name = "" try: - function_configuration = boto_client_provider("lambda").get_function_configuration(function_name) + function_configuration = boto_client_provider("lambda").get_function_configuration( + FunctionName=function_name + ) logging_config = function_configuration.get("LoggingConfig") if logging_config: log_group_name = logging_config.get("LogGroup") diff --git a/tests/integration/logs/test_logs_command.py b/tests/integration/logs/test_logs_command.py index 22a15b8c725..f1edd48a237 100644 --- a/tests/integration/logs/test_logs_command.py +++ b/tests/integration/logs/test_logs_command.py @@ -230,6 +230,7 @@ def _check_logs(self, cmd_list: List, log_strings: List[str], output: str = "tex REGULAR_STACK_FUNCTION_LIST = [ "ApiGwFunction", "SfnFunction", + "FunctionWithCustomLoggingConfig", ] REGULAR_STACK_APIGW_LIST = [ "HelloWorldServerlessApi", diff --git a/tests/integration/testdata/logs/nested-python-apigw-sfn/child-stack/function-with-custom-logging/app.py b/tests/integration/testdata/logs/nested-python-apigw-sfn/child-stack/function-with-custom-logging/app.py new file mode 100644 index 00000000000..989804c8015 --- /dev/null +++ b/tests/integration/testdata/logs/nested-python-apigw-sfn/child-stack/function-with-custom-logging/app.py @@ -0,0 +1,5 @@ + +def handler(event, context): + print("Hello world from ChildStack/FunctionWithCustomLoggingConfig function") + print("this should be filtered ChildStackFunctionWithCustomLoggingConfig") + return {} \ No newline at end of file diff --git a/tests/integration/testdata/logs/nested-python-apigw-sfn/child-stack/grand-child-stack/function-with-custom-logging/app.py b/tests/integration/testdata/logs/nested-python-apigw-sfn/child-stack/grand-child-stack/function-with-custom-logging/app.py new file mode 100644 index 00000000000..7cd5b2269fc --- /dev/null +++ b/tests/integration/testdata/logs/nested-python-apigw-sfn/child-stack/grand-child-stack/function-with-custom-logging/app.py @@ -0,0 +1,5 @@ + +def handler(event, context): + print("Hello world from ChildStack/GrandChildStack/FunctionWithCustomLoggingConfig function") + print("this should be filtered ChildStackGrandChildStackFunctionWithCustomLoggingConfig") + return {} diff --git a/tests/integration/testdata/logs/nested-python-apigw-sfn/child-stack/grand-child-stack/template.yaml b/tests/integration/testdata/logs/nested-python-apigw-sfn/child-stack/grand-child-stack/template.yaml index b7a4dc30f0a..6c95dbce729 100644 --- a/tests/integration/testdata/logs/nested-python-apigw-sfn/child-stack/grand-child-stack/template.yaml +++ b/tests/integration/testdata/logs/nested-python-apigw-sfn/child-stack/grand-child-stack/template.yaml @@ -66,7 +66,7 @@ Resources: Properties: CodeUri: apigw-function/ Handler: app.handler - Runtime: python3.9 + Runtime: python3.12 Tracing: Active Events: HelloWorld: @@ -81,7 +81,7 @@ Resources: Properties: CodeUri: sfn-function/ Handler: app.handler - Runtime: python3.9 + Runtime: python3.12 Tracing: Active HelloWorldServerlessApi: @@ -113,6 +113,17 @@ Resources: ManagedPolicyArns: - !Sub "arn:${AWS::Partition}:iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs" + FunctionWithCustomLoggingConfig: + Type: AWS::Serverless::Function + Properties: + CodeUri: function-with-custom-logging/ + Handler: app.handler + Runtime: python3.12 + Tracing: Active + LoggingConfig: + LogFormat: JSON + LogGroup: !Sub /aws/lambda/${AWS::StackName} + Outputs: HelloWorldServerlessApi: Description: "API Gateway endpoint URL for Prod stage for Hello World function" diff --git a/tests/integration/testdata/logs/nested-python-apigw-sfn/child-stack/template.yaml b/tests/integration/testdata/logs/nested-python-apigw-sfn/child-stack/template.yaml index c6f1aef18f3..83ed191545b 100644 --- a/tests/integration/testdata/logs/nested-python-apigw-sfn/child-stack/template.yaml +++ b/tests/integration/testdata/logs/nested-python-apigw-sfn/child-stack/template.yaml @@ -66,7 +66,7 @@ Resources: Properties: CodeUri: apigw-function/ Handler: app.handler - Runtime: python3.9 + Runtime: python3.12 Tracing: Active Events: HelloWorld: @@ -81,7 +81,7 @@ Resources: Properties: CodeUri: sfn-function/ Handler: app.handler - Runtime: python3.9 + Runtime: python3.12 Tracing: Active HelloWorldServerlessApi: @@ -113,6 +113,17 @@ Resources: ManagedPolicyArns: - !Sub "arn:${AWS::Partition}:iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs" + FunctionWithCustomLoggingConfig: + Type: AWS::Serverless::Function + Properties: + CodeUri: function-with-custom-logging/ + Handler: app.handler + Runtime: python3.12 + Tracing: Active + LoggingConfig: + LogFormat: JSON + LogGroup: !Sub /aws/lambda/${AWS::StackName} + GrandChildStack: Type: AWS::Serverless::Application Properties: diff --git a/tests/integration/testdata/logs/nested-python-apigw-sfn/function-with-custom-logging/app.py b/tests/integration/testdata/logs/nested-python-apigw-sfn/function-with-custom-logging/app.py new file mode 100644 index 00000000000..e980e304ade --- /dev/null +++ b/tests/integration/testdata/logs/nested-python-apigw-sfn/function-with-custom-logging/app.py @@ -0,0 +1,5 @@ + +def handler(event, context): + print("Hello world from FunctionWithCustomLoggingConfig function") + print("this should be filtered FunctionWithCustomLoggingConfig") + return {} diff --git a/tests/integration/testdata/logs/nested-python-apigw-sfn/template.yaml b/tests/integration/testdata/logs/nested-python-apigw-sfn/template.yaml index 5506f108f36..02fb86362cb 100644 --- a/tests/integration/testdata/logs/nested-python-apigw-sfn/template.yaml +++ b/tests/integration/testdata/logs/nested-python-apigw-sfn/template.yaml @@ -66,7 +66,7 @@ Resources: Properties: CodeUri: apigw-function/ Handler: app.handler - Runtime: python3.9 + Runtime: python3.12 Tracing: Active Events: HelloWorld: @@ -81,7 +81,7 @@ Resources: Properties: CodeUri: sfn-function/ Handler: app.handler - Runtime: python3.9 + Runtime: python3.12 Tracing: Active HelloWorldServerlessApi: @@ -113,6 +113,17 @@ Resources: ManagedPolicyArns: - !Sub "arn:${AWS::Partition}:iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs" + FunctionWithCustomLoggingConfig: + Type: AWS::Serverless::Function + Properties: + CodeUri: function-with-custom-logging/ + Handler: app.handler + Runtime: python3.12 + Tracing: Active + LoggingConfig: + LogFormat: JSON + LogGroup: !Sub /aws/lambda/${AWS::StackName} + ChildStack: Type: AWS::Serverless::Application Properties: diff --git a/tests/integration/testdata/logs/python-apigw-sfn/function-with-custom-logging/app.py b/tests/integration/testdata/logs/python-apigw-sfn/function-with-custom-logging/app.py new file mode 100644 index 00000000000..e980e304ade --- /dev/null +++ b/tests/integration/testdata/logs/python-apigw-sfn/function-with-custom-logging/app.py @@ -0,0 +1,5 @@ + +def handler(event, context): + print("Hello world from FunctionWithCustomLoggingConfig function") + print("this should be filtered FunctionWithCustomLoggingConfig") + return {} diff --git a/tests/integration/testdata/logs/python-apigw-sfn/template.yaml b/tests/integration/testdata/logs/python-apigw-sfn/template.yaml index b7a4dc30f0a..6c95dbce729 100644 --- a/tests/integration/testdata/logs/python-apigw-sfn/template.yaml +++ b/tests/integration/testdata/logs/python-apigw-sfn/template.yaml @@ -66,7 +66,7 @@ Resources: Properties: CodeUri: apigw-function/ Handler: app.handler - Runtime: python3.9 + Runtime: python3.12 Tracing: Active Events: HelloWorld: @@ -81,7 +81,7 @@ Resources: Properties: CodeUri: sfn-function/ Handler: app.handler - Runtime: python3.9 + Runtime: python3.12 Tracing: Active HelloWorldServerlessApi: @@ -113,6 +113,17 @@ Resources: ManagedPolicyArns: - !Sub "arn:${AWS::Partition}:iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs" + FunctionWithCustomLoggingConfig: + Type: AWS::Serverless::Function + Properties: + CodeUri: function-with-custom-logging/ + Handler: app.handler + Runtime: python3.12 + Tracing: Active + LoggingConfig: + LogFormat: JSON + LogGroup: !Sub /aws/lambda/${AWS::StackName} + Outputs: HelloWorldServerlessApi: Description: "API Gateway endpoint URL for Prod stage for Hello World function" diff --git a/tests/unit/lib/observability/cw_logs/test_cw_log_group_provider.py b/tests/unit/lib/observability/cw_logs/test_cw_log_group_provider.py index ac7cd0843cf..23a753ed193 100644 --- a/tests/unit/lib/observability/cw_logs/test_cw_log_group_provider.py +++ b/tests/unit/lib/observability/cw_logs/test_cw_log_group_provider.py @@ -1,5 +1,5 @@ from unittest import TestCase -from unittest.mock import Mock, ANY +from unittest.mock import Mock, ANY, call from parameterized import parameterized @@ -26,6 +26,9 @@ def test_must_return_custom_log_group_name(self): result = LogGroupProvider.for_lambda_function(given_client_provider, "my_function_name") self.assertEqual(expected, result) + given_client_provider.assert_has_calls( + [call("lambda").get_function_configuration(FunctionName="my_function_name")] + ) def test_must_return_default_log_group_name_with_exception_raised(self): expected = "/aws/lambda/my_function_name" From 6ef9435e569c2f49e1ecfba6cdb23d49e76a0f38 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 2 Jan 2024 14:38:12 -0800 Subject: [PATCH 018/100] chore: update aws_lambda_builders to 1.45.0 (#6502) * chore: update aws_lambda_builders to 1.45.0 * Update reproducibles: update-reproducible-linux-reqs * Update reproducibles: update-reproducible-mac-reqs * Update reproducibles: update-reproducible-win-reqs --------- Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index f91f8d83ebd..66e77d161ae 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -11,7 +11,7 @@ aws-sam-translator==1.82.0 docker~=6.1.0 dateparser~=1.2 requests~=2.31.0 -aws_lambda_builders==1.44.0 +aws_lambda_builders==1.45.0 tomlkit==0.12.3 watchdog==3.0.0 rich~=13.7.0 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 8e1529c8be7..e36dbca1fe9 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -20,9 +20,9 @@ attrs==23.1.0 \ # jsonschema # referencing # sarif-om -aws-lambda-builders==1.44.0 \ - --hash=sha256:2bb2dfec6f7be83592bb504a0ac10b444a39f544a04fc1ba076ee914ededc8fc \ - --hash=sha256:677a853541cde425001fea43afd82cf7d252296e2be42d65cc584c25ce2dc4e3 +aws-lambda-builders==1.45.0 \ + --hash=sha256:5c19a6628eecf21578cd9c521e747f4a2163c62c527cd840b11b62a10b661348 \ + --hash=sha256:a4db7766198c052900905bd7ee3b1a8b486511394cdabffed054204d43b29943 # via aws-sam-cli (setup.py) aws-sam-translator==1.82.0 \ --hash=sha256:29ba61f2a70b2b1cf0c76b92b78a23c7cdd19ea1b0a5992753180b56d040d20b \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 9313588935b..3f7849fbd24 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -20,9 +20,9 @@ attrs==23.1.0 \ # jsonschema # referencing # sarif-om -aws-lambda-builders==1.44.0 \ - --hash=sha256:2bb2dfec6f7be83592bb504a0ac10b444a39f544a04fc1ba076ee914ededc8fc \ - --hash=sha256:677a853541cde425001fea43afd82cf7d252296e2be42d65cc584c25ce2dc4e3 +aws-lambda-builders==1.45.0 \ + --hash=sha256:5c19a6628eecf21578cd9c521e747f4a2163c62c527cd840b11b62a10b661348 \ + --hash=sha256:a4db7766198c052900905bd7ee3b1a8b486511394cdabffed054204d43b29943 # via aws-sam-cli (setup.py) aws-sam-translator==1.82.0 \ --hash=sha256:29ba61f2a70b2b1cf0c76b92b78a23c7cdd19ea1b0a5992753180b56d040d20b \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 17206261223..1218aa965c9 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -20,9 +20,9 @@ attrs==23.1.0 \ # jsonschema # referencing # sarif-om -aws-lambda-builders==1.44.0 \ - --hash=sha256:2bb2dfec6f7be83592bb504a0ac10b444a39f544a04fc1ba076ee914ededc8fc \ - --hash=sha256:677a853541cde425001fea43afd82cf7d252296e2be42d65cc584c25ce2dc4e3 +aws-lambda-builders==1.45.0 \ + --hash=sha256:5c19a6628eecf21578cd9c521e747f4a2163c62c527cd840b11b62a10b661348 \ + --hash=sha256:a4db7766198c052900905bd7ee3b1a8b486511394cdabffed054204d43b29943 # via aws-sam-cli (setup.py) aws-sam-translator==1.82.0 \ --hash=sha256:29ba61f2a70b2b1cf0c76b92b78a23c7cdd19ea1b0a5992753180b56d040d20b \ From b5503aeb70e463a09b59c7aea9e5782ddc945877 Mon Sep 17 00:00:00 2001 From: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com> Date: Tue, 2 Jan 2024 15:16:49 -0800 Subject: [PATCH 019/100] chore: bump version to 1.106.0 (#6503) --- samcli/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samcli/__init__.py b/samcli/__init__.py index ed98927f4eb..5f119978686 100644 --- a/samcli/__init__.py +++ b/samcli/__init__.py @@ -2,4 +2,4 @@ SAM CLI version """ -__version__ = "1.105.0" +__version__ = "1.106.0" From e03f1457fe72f3332fa0c751d474a9c2d944cee3 Mon Sep 17 00:00:00 2001 From: Daniel Mil <84205762+mildaniel@users.noreply.github.com> Date: Wed, 3 Jan 2024 21:45:56 -0800 Subject: [PATCH 020/100] fix: Explicitly exit when container is out-of-memory (#6476) * Revert "chore: Upgrade Mac installer to python3.11 (#6424)" This reverts commit ec451f2be7e4f9a8290f32f4c7a51ff19f757fce. * Update GH action python version to 3.8 * fix: Explicitly exit when container is out-of-memory * fix: Explicitly exit when container is out-of-memory * Add log, add unit tests * Format files --- samcli/local/docker/container.py | 2 +- samcli/local/docker/container_analyzer.py | 48 +++++++++++++ samcli/local/docker/exceptions.py | 7 ++ samcli/local/docker/manager.py | 21 ++++++ samcli/local/lambdafn/runtime.py | 24 +++++++ .../local/docker/test_container_analyzer.py | 69 +++++++++++++++++++ tests/unit/local/docker/test_manager.py | 24 +++++++ tests/unit/local/lambdafn/test_runtime.py | 6 ++ 8 files changed, 200 insertions(+), 1 deletion(-) create mode 100644 samcli/local/docker/container_analyzer.py create mode 100644 tests/unit/local/docker/test_container_analyzer.py diff --git a/samcli/local/docker/container.py b/samcli/local/docker/container.py index 7450f25d447..6e54ed25311 100644 --- a/samcli/local/docker/container.py +++ b/samcli/local/docker/container.py @@ -120,7 +120,7 @@ def __init__( self.docker_client = docker_client or docker.from_env(version=DOCKER_MIN_API_VERSION) # Runtime properties of the container. They won't have value until container is created or started - self.id = None + self.id: Optional[str] = None # aws-lambda-rie defaults to 8080 as the port, however that's a common port. A port is chosen by # selecting the first free port in a range that's not ephemeral. diff --git a/samcli/local/docker/container_analyzer.py b/samcli/local/docker/container_analyzer.py new file mode 100644 index 00000000000..02916f870aa --- /dev/null +++ b/samcli/local/docker/container_analyzer.py @@ -0,0 +1,48 @@ +""" +Class for handling the analysis and inspection of Docker containers +""" +import logging +from dataclasses import dataclass + +from samcli.local.docker.container import Container +from samcli.local.docker.manager import ContainerManager + +LOG = logging.getLogger(__name__) + +DEFAULT_OUT_OF_MEMORY = False + + +@dataclass +class ContainerState: + out_of_memory: bool + + +class ContainerAnalyzer: + def __init__(self, container_manager: ContainerManager, container: Container): + self.container_manager = container_manager + self.container = container + + def inspect(self) -> ContainerState: + """ + Inspect the state of a container by calling the "inspect()" API that Docker provides. + Extract relevant information into a ContainerState object. + + Returns + ------- + ContainerState: + Returns a ContainerState object with relevant container data + """ + if not self.container.id: + LOG.debug("Container ID not defined, unable to fetch container state") + return ContainerState(DEFAULT_OUT_OF_MEMORY) + + state = self.container_manager.inspect(self.container.id) + + if isinstance(state, bool): + LOG.debug("Unable to fetch container state") + return ContainerState(DEFAULT_OUT_OF_MEMORY) + + container_state = ContainerState(state.get("State", {}).get("OOMKilled", DEFAULT_OUT_OF_MEMORY)) + LOG.debug("[Container state] OOMKilled %s", container_state.out_of_memory) + + return container_state diff --git a/samcli/local/docker/exceptions.py b/samcli/local/docker/exceptions.py index 5aee68e9ccd..388041e0ff7 100644 --- a/samcli/local/docker/exceptions.py +++ b/samcli/local/docker/exceptions.py @@ -1,6 +1,7 @@ """ Docker container related exceptions """ +from samcli.commands.exceptions import UserException class ContainerNotStartableException(Exception): @@ -17,3 +18,9 @@ class PortAlreadyInUse(Exception): """ Exception to raise when the provided port is not available for use. """ + + +class ContainerFailureError(UserException): + """ + Raised when the invoke container fails execution + """ diff --git a/samcli/local/docker/manager.py b/samcli/local/docker/manager.py index 6975828cd1c..ceda43ce8ea 100644 --- a/samcli/local/docker/manager.py +++ b/samcli/local/docker/manager.py @@ -5,6 +5,7 @@ import logging import sys import threading +from typing import Union, cast import docker @@ -193,6 +194,26 @@ def has_image(self, image_name): except docker.errors.ImageNotFound: return False + def inspect(self, container: str) -> Union[bool, dict]: + """ + Low-level Docker API for inspecting the container state + + Parameters + ---------- + container: str + ID of the container + + Returns + ------- + Union[bool, dict] + Container inspection state if successful, False otherwise + """ + try: + return cast(dict, self.docker_client.api.inspect_container(container)) + except (docker.errors.APIError, docker.errors.NullResource) as ex: + LOG.debug("Failed to call Docker inspect: %s", str(ex)) + return False + class DockerImagePullFailedException(Exception): pass diff --git a/samcli/local/lambdafn/runtime.py b/samcli/local/lambdafn/runtime.py index 0272604656c..ba406d06ea0 100644 --- a/samcli/local/lambdafn/runtime.py +++ b/samcli/local/lambdafn/runtime.py @@ -13,6 +13,9 @@ from samcli.lib.telemetry.metric import capture_parameter from samcli.lib.utils.file_observer import LambdaFunctionObserver from samcli.lib.utils.packagetype import ZIP +from samcli.local.docker.container import Container +from samcli.local.docker.container_analyzer import ContainerAnalyzer +from samcli.local.docker.exceptions import ContainerFailureError from samcli.local.docker.lambda_container import LambdaContainer from ...lib.providers.provider import LayerVersion @@ -223,9 +226,30 @@ def _on_invoke_done(self, container): The current running container """ if container: + self._check_exit_state(container) self._container_manager.stop(container) self._clean_decompressed_paths() + def _check_exit_state(self, container: Container): + """ + Check and validate the exit state of the invoke container. + + Parameters + ---------- + container: Container + Docker container to be checked + + Raises + ------- + ContainerFailureError + If the exit reason is due to out-of-memory, return exit code 1 + + """ + container_analyzer = ContainerAnalyzer(self._container_manager, container) + exit_state = container_analyzer.inspect() + if exit_state.out_of_memory: + raise ContainerFailureError("Container invocation failed due to maximum memory usage") + def _configure_interrupt(self, function_full_path, timeout, container, is_debugging): """ When a Lambda function is executing, we setup certain interrupt handlers to stop the execution. diff --git a/tests/unit/local/docker/test_container_analyzer.py b/tests/unit/local/docker/test_container_analyzer.py new file mode 100644 index 00000000000..9832bd83adf --- /dev/null +++ b/tests/unit/local/docker/test_container_analyzer.py @@ -0,0 +1,69 @@ +from unittest import TestCase +from unittest.mock import Mock, patch + +from samcli.lib.utils.packagetype import IMAGE +from samcli.local.docker.container import Container +from samcli.local.docker.container_analyzer import ContainerAnalyzer, ContainerState +from samcli.local.docker.manager import ContainerManager + + +class TestContainerAnalyzer(TestCase): + def setUp(self) -> None: + self.image = IMAGE + self.cmd = "cmd" + self.working_dir = "working_dir" + self.host_dir = "host_dir" + self.memory_mb = 123 + self.exposed_ports = {123: 123} + self.entrypoint = ["a", "b", "c"] + self.env_vars = {"key": "value"} + + self.mock_docker_client = Mock() + + self.container = Container( + self.image, + self.cmd, + self.working_dir, + self.host_dir, + self.memory_mb, + self.exposed_ports, + self.entrypoint, + self.env_vars, + self.mock_docker_client, + ) + + @patch("samcli.local.docker.container_analyzer.LOG") + def test_inspect_returns_container_state(self, mock_log): + self.container.id = "id" + manager = ContainerManager() + manager.inspect = Mock() + manager.inspect.return_value = {"State": {"OOMKilled": True}} + + analyzer = ContainerAnalyzer(container_manager=manager, container=self.container) + state = analyzer.inspect() + + manager.inspect.assert_called_once_with("id") + mock_log.debug.assert_called_once_with("[Container state] OOMKilled %s", True) + self.assertEqual(state, ContainerState(out_of_memory=True)) + + def test_inspect_no_container_id(self): + manager = ContainerManager() + manager.inspect = Mock() + + analyzer = ContainerAnalyzer(container_manager=manager, container=self.container) + state = analyzer.inspect() + + manager.inspect.assert_not_called() + self.assertEqual(state, ContainerState(out_of_memory=False)) + + def test_inspect_docker_call_fails(self): + self.container.id = "id" + manager = ContainerManager() + manager.inspect = Mock() + manager.inspect.return_value = False + + analyzer = ContainerAnalyzer(container_manager=manager, container=self.container) + state = analyzer.inspect() + + manager.inspect.assert_called_once_with("id") + self.assertEqual(state, ContainerState(out_of_memory=False)) diff --git a/tests/unit/local/docker/test_manager.py b/tests/unit/local/docker/test_manager.py index 4cb42bbd02e..87b6af154de 100644 --- a/tests/unit/local/docker/test_manager.py +++ b/tests/unit/local/docker/test_manager.py @@ -7,6 +7,8 @@ import requests from docker.errors import APIError, ImageNotFound + +import docker from samcli.local.docker.manager import ContainerManager, DockerImagePullFailedException from samcli.local.docker.lambda_image import RAPID_IMAGE_TAG_PREFIX @@ -384,3 +386,25 @@ def test_must_call_delete_on_container(self): manager.stop(container) container.delete.assert_called_with() + + +class TestContainerManager_inspect(TestCase): + def test_must_call_inspect_on_container(self): + manager = ContainerManager() + manager.docker_client = Mock() + + container = "container_id" + + manager.inspect(container) + manager.docker_client.docker_client.api.inspect_container(container) + + @patch("samcli.local.docker.manager.LOG") + def test_must_fail_with_error_message(self, mock_log): + manager = ContainerManager() + manager.docker_client.api.inspect_container = Mock() + manager.docker_client.api.inspect_container.side_effect = [docker.errors.APIError("Failed")] + + return_val = manager.inspect("container_id") + + self.assertEqual(return_val, False) + mock_log.debug.assert_called_once_with("Failed to call Docker inspect: %s", "Failed") diff --git a/tests/unit/local/lambdafn/test_runtime.py b/tests/unit/local/lambdafn/test_runtime.py index 42087ebd000..cc5753869a3 100644 --- a/tests/unit/local/lambdafn/test_runtime.py +++ b/tests/unit/local/lambdafn/test_runtime.py @@ -310,6 +310,8 @@ def test_must_run_container_and_wait_for_result(self, LambdaContainerMock): self.runtime._configure_interrupt = Mock() self.runtime._configure_interrupt.return_value = start_timer + self.runtime._check_exit_state = Mock() + LambdaContainerMock.return_value = container container.is_running.return_value = False @@ -369,6 +371,8 @@ def test_exception_from_run_must_trigger_cleanup(self, LambdaContainerMock): self.runtime._configure_interrupt = Mock() self.runtime._configure_interrupt.return_value = start_timer + self.runtime._check_exit_state = Mock() + LambdaContainerMock.return_value = container container.is_running.return_value = False @@ -404,6 +408,7 @@ def test_exception_from_wait_for_result_must_trigger_cleanup(self, LambdaContain self.runtime._get_code_dir.return_value = code_dir self.runtime._configure_interrupt = Mock() self.runtime._configure_interrupt.return_value = timer + self.runtime._check_exit_state = Mock() LambdaContainerMock.return_value = container container.is_running.return_value = False @@ -437,6 +442,7 @@ def test_keyboard_interrupt_must_not_raise(self, LambdaContainerMock): self.runtime._get_code_dir = MagicMock() self.runtime._get_code_dir.return_value = code_dir self.runtime._configure_interrupt = Mock() + self.runtime._check_exit_state = Mock() LambdaContainerMock.return_value = container container.is_running.return_value = False From 6f1effcfccd8127c25004c8a4c08feb6419997f1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 11:27:25 -0500 Subject: [PATCH 021/100] chore(deps-dev): bump black from 23.12.0 to 23.12.1 in /requirements (#6514) Bumps [black](https://github.com/psf/black) from 23.12.0 to 23.12.1. - [Release notes](https://github.com/psf/black/releases) - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md) - [Commits](https://github.com/psf/black/compare/23.12.0...23.12.1) --- updated-dependencies: - dependency-name: black dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index 40a53b25dc9..da406c8bdaf 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -36,5 +36,5 @@ pytest-json-report==1.5.0 filelock==3.13.1 # formatter -black==23.12.0 +black==23.12.1 psutil==5.9.7 From 21427a7202e40de49efc88bb4923d6a963fbc088 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 16:28:04 +0000 Subject: [PATCH 022/100] chore(deps-dev): update pytest requirement in /requirements (#6515) Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/7.4.3...7.4.4) --- updated-dependencies: - dependency-name: pytest dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index da406c8bdaf..a20c23809d1 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -24,7 +24,7 @@ types-requests==2.31.0.6 types-urllib3==1.26.25.14 # Test requirements -pytest~=7.4.3 +pytest~=7.4.4 parameterized==0.9.0 pytest-xdist==3.5.0 pytest-forked==1.6.0 From 282f87942d8f9cba2f4c97f3a20af3bb1dbbdb50 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 16:31:23 +0000 Subject: [PATCH 023/100] chore(deps): bump rpds-py from 0.15.2 to 0.16.2 in /requirements (#6513) Bumps [rpds-py](https://github.com/crate-py/rpds) from 0.15.2 to 0.16.2. - [Release notes](https://github.com/crate-py/rpds/releases) - [Commits](https://github.com/crate-py/rpds/compare/v0.15.2...v0.16.2) --- updated-dependencies: - dependency-name: rpds-py dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/reproducible-linux.txt | 200 ++++++++++++++-------------- requirements/reproducible-mac.txt | 200 ++++++++++++++-------------- requirements/reproducible-win.txt | 200 ++++++++++++++-------------- 3 files changed, 300 insertions(+), 300 deletions(-) diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index e36dbca1fe9..b7d119c7ae4 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -753,106 +753,106 @@ rich==13.7.0 \ # via # aws-sam-cli (setup.py) # cookiecutter -rpds-py==0.15.2 \ - --hash=sha256:02744236ac1895d7be837878e707a5c35fb8edc5137602f253b63623d7ad5c8c \ - --hash=sha256:03f9c5875515820633bd7709a25c3e60c1ea9ad1c5d4030ce8a8c203309c36fd \ - --hash=sha256:044f6f46d62444800402851afa3c3ae50141f12013060c1a3a0677e013310d6d \ - --hash=sha256:07a2e1d78d382f7181789713cdf0c16edbad4fe14fe1d115526cb6f0eef0daa3 \ - --hash=sha256:082e0e55d73690ffb4da4352d1b5bbe1b5c6034eb9dc8c91aa2a3ee15f70d3e2 \ - --hash=sha256:13152dfe7d7c27c40df8b99ac6aab12b978b546716e99f67e8a67a1d441acbc3 \ - --hash=sha256:13716e53627ad97babf72ac9e01cf9a7d4af2f75dd5ed7b323a7a9520e948282 \ - --hash=sha256:13ff62d3561a23c17341b4afc78e8fcfd799ab67c0b1ca32091d71383a98ba4b \ - --hash=sha256:1607cda6129f815493a3c184492acb5ae4aa6ed61d3a1b3663aa9824ed26f7ac \ - --hash=sha256:164fcee32f15d04d61568c9cb0d919e37ff3195919cd604039ff3053ada0461b \ - --hash=sha256:1c24e30d720c0009b6fb2e1905b025da56103c70a8b31b99138e4ed1c2a6c5b0 \ - --hash=sha256:1e6fcd0a0f62f2997107f758bb372397b8d5fd5f39cc6dcb86f7cb98a2172d6c \ - --hash=sha256:1fd0f0b1ccd7d537b858a56355a250108df692102e08aa2036e1a094fd78b2dc \ - --hash=sha256:2181e86d4e1cdf49a7320cb72a36c45efcb7670d0a88f09fd2d3a7967c0540fd \ - --hash=sha256:2974e6dff38afafd5ccf8f41cb8fc94600b3f4fd9b0a98f6ece6e2219e3158d5 \ - --hash=sha256:2dccc623725d0b298f557d869a68496a2fd2a9e9c41107f234fa5f7a37d278ac \ - --hash=sha256:2df3d07a16a3bef0917b28cd564778fbb31f3ffa5b5e33584470e2d1b0f248f0 \ - --hash=sha256:2e7e5633577b3bd56bf3af2ef6ae3778bbafb83743989d57f0e7edbf6c0980e4 \ - --hash=sha256:2ee066a64f0d2ba45391cac15b3a70dcb549e968a117bd0500634754cfe0e5fc \ - --hash=sha256:2f1f295a5c28cfa74a7d48c95acc1c8a7acd49d7d9072040d4b694fe11cd7166 \ - --hash=sha256:2faa97212b0dc465afeedf49045cdd077f97be1188285e646a9f689cb5dfff9e \ - --hash=sha256:30479a9f1fce47df56b07460b520f49fa2115ec2926d3b1303c85c81f8401ed1 \ - --hash=sha256:337a8653fb11d2fbe7157c961cc78cb3c161d98cf44410ace9a3dc2db4fad882 \ - --hash=sha256:3423007fc0661827e06f8a185a3792c73dda41f30f3421562f210cf0c9e49569 \ - --hash=sha256:373b76eeb79e8c14f6d82cb1d4d5293f9e4059baec6c1b16dca7ad13b6131b39 \ - --hash=sha256:3b79c63d29101cbaa53a517683557bb550462394fb91044cc5998dd2acff7340 \ - --hash=sha256:3bbc89ce2a219662ea142f0abcf8d43f04a41d5b1880be17a794c39f0d609cb0 \ - --hash=sha256:3c11bc5814554b018f6c5d6ae0969e43766f81e995000b53a5d8c8057055e886 \ - --hash=sha256:3cd61e759c4075510052d1eca5cddbd297fe1164efec14ef1fce3f09b974dfe4 \ - --hash=sha256:3d40fb3ca22e3d40f494d577441b263026a3bd8c97ae6ce89b2d3c4b39ac9581 \ - --hash=sha256:3db0c998c92b909d7c90b66c965590d4f3cd86157176a6cf14aa1f867b77b889 \ - --hash=sha256:422b0901878a31ef167435c5ad46560362891816a76cc0d150683f3868a6f0d1 \ - --hash=sha256:46b4f3d47d1033db569173be62365fbf7808c2bd3fb742314d251f130d90d44c \ - --hash=sha256:485fbdd23becb822804ed05622907ee5c8e8a5f43f6f43894a45f463b2217045 \ - --hash=sha256:53304cc14b1d94487d70086e1cb0cb4c29ec6da994d58ae84a4d7e78c6a6d04d \ - --hash=sha256:5595c80dd03d7e6c6afb73f3594bf3379a7d79fa57164b591d012d4b71d6ac4c \ - --hash=sha256:56b51ba29a18e5f5810224bcf00747ad931c0716e3c09a76b4a1edd3d4aba71f \ - --hash=sha256:580182fa5b269c2981e9ce9764367cb4edc81982ce289208d4607c203f44ffde \ - --hash=sha256:5e99d6510c8557510c220b865d966b105464740dcbebf9b79ecd4fbab30a13d9 \ - --hash=sha256:5eb05b654a41e0f81ab27a7c3e88b6590425eb3e934e1d533ecec5dc88a6ffff \ - --hash=sha256:62b292fff4739c6be89e6a0240c02bda5a9066a339d90ab191cf66e9fdbdc193 \ - --hash=sha256:6a5122b17a4faf5d7a6d91fa67b479736c0cacc7afe791ddebb7163a8550b799 \ - --hash=sha256:6a8ff8e809da81363bffca2b965cb6e4bf6056b495fc3f078467d1f8266fe27f \ - --hash=sha256:6c43e1b89099279cc03eb1c725c5de12af6edcd2f78e2f8a022569efa639ada3 \ - --hash=sha256:709dc11af2f74ba89c68b1592368c6edcbccdb0a06ba77eb28c8fe08bb6997da \ - --hash=sha256:7e072f5da38d6428ba1fc1115d3cc0dae895df671cb04c70c019985e8c7606be \ - --hash=sha256:813a65f95bfcb7c8f2a70dd6add9b51e9accc3bdb3e03d0ff7a9e6a2d3e174bf \ - --hash=sha256:86c01299942b0f4b5b5f28c8701689181ad2eab852e65417172dbdd6c5b3ccc8 \ - --hash=sha256:893e38d0f4319dfa70c0f36381a37cc418985c87b11d9784365b1fff4fa6973b \ - --hash=sha256:8a5f574b92b3ee7d254e56d56e37ec0e1416acb1ae357c4956d76a1788dc58fb \ - --hash=sha256:8b9650f92251fdef843e74fc252cdfd6e3c700157ad686eeb0c6d7fdb2d11652 \ - --hash=sha256:8ec464f20fe803ae00419bd1610934e3bda963aeba1e6181dfc9033dc7e8940c \ - --hash=sha256:8f333bfe782a2d05a67cfaa0cc9cd68b36b39ee6acfe099f980541ed973a7093 \ - --hash=sha256:8ffdeb7dbd0160d4e391e1f857477e4762d00aa2199c294eb95dfb9451aa1d9f \ - --hash=sha256:911e600e798374c0d86235e7ef19109cf865d1336942d398ff313375a25a93ba \ - --hash=sha256:9235be95662559141934fced8197de6fee8c58870f36756b0584424b6d708393 \ - --hash=sha256:938518a11780b39998179d07f31a4a468888123f9b00463842cd40f98191f4d3 \ - --hash=sha256:93c18a1696a8e0388ed84b024fe1a188a26ba999b61d1d9a371318cb89885a8c \ - --hash=sha256:97532802f14d383f37d603a56e226909f825a83ff298dc1b6697de00d2243999 \ - --hash=sha256:98ee201a52a7f65608e5494518932e1473fd43535f12cade0a1b4ab32737fe28 \ - --hash=sha256:9d2ae79f31da5143e020a8d4fc74e1f0cbcb8011bdf97453c140aa616db51406 \ - --hash=sha256:9d38494a8d21c246c535b41ecdb2d562c4b933cf3d68de03e8bc43a0d41be652 \ - --hash=sha256:9d41ebb471a6f064c0d1c873c4f7dded733d16ca5db7d551fb04ff3805d87802 \ - --hash=sha256:9e09d017e3f4d9bd7d17a30d3f59e4d6d9ba2d2ced280eec2425e84112cf623f \ - --hash=sha256:a6945c2d61c42bb7e818677f43638675b8c1c43e858b67a96df3eb2426a86c9d \ - --hash=sha256:a72e00826a2b032dda3eb25aa3e3579c6d6773d22d8446089a57a123481cc46c \ - --hash=sha256:aa1e626c524d2c7972c0f3a8a575d654a3a9c008370dc2a97e46abd0eaa749b9 \ - --hash=sha256:ab095edf1d840a6a6a4307e1a5b907a299a94e7b90e75436ee770b8c35d22a25 \ - --hash=sha256:ac2ac84a4950d627d84b61f082eba61314373cfab4b3c264b62efab02ababe83 \ - --hash=sha256:ac7187bee72384b9cfedf09a29a3b2b6e8815cc64c095cdc8b5e6aec81e9fd5f \ - --hash=sha256:ae9d83a81b09ce3a817e2cbb23aabc07f86a3abc664c613cd283ce7a03541e95 \ - --hash=sha256:afeabb382c1256a7477b739820bce7fe782bb807d82927102cee73e79b41b38b \ - --hash=sha256:b2a4cd924d0e2f4b1a68034abe4cadc73d69ad5f4cf02db6481c0d4d749f548f \ - --hash=sha256:b414ef79f1f06fb90b5165db8aef77512c1a5e3ed1b4807da8476b7e2c853283 \ - --hash=sha256:b4ecbba7efd82bd2a4bb88aab7f984eb5470991c1347bdd1f35fb34ea28dba6e \ - --hash=sha256:b61d5096e75fd71018b25da50b82dd70ec39b5e15bb2134daf7eb7bbbc103644 \ - --hash=sha256:b629db53fe17e6ce478a969d30bd1d0e8b53238c46e3a9c9db39e8b65a9ef973 \ - --hash=sha256:b70b45a40ad0798b69748b34d508259ef2bdc84fb2aad4048bc7c9cafb68ddb3 \ - --hash=sha256:b88c3ab98556bc351b36d6208a6089de8c8db14a7f6e1f57f82a334bd2c18f0b \ - --hash=sha256:baf744e5f9d5ee6531deea443be78b36ed1cd36c65a0b95ea4e8d69fa0102268 \ - --hash=sha256:bbc7421cbd28b4316d1d017db338039a7943f945c6f2bb15e1439b14b5682d28 \ - --hash=sha256:c31272c674f725dfe0f343d73b0abe8c878c646967ec1c6106122faae1efc15b \ - --hash=sha256:c51a899792ee2c696072791e56b2020caff58b275abecbc9ae0cb71af0645c95 \ - --hash=sha256:c61e42b4ceb9759727045765e87d51c1bb9f89987aca1fcc8a040232138cad1c \ - --hash=sha256:c7cd0841a586b7105513a7c8c3d5c276f3adc762a072d81ef7fae80632afad1e \ - --hash=sha256:c827a931c6b57f50f1bb5de400dcfb00bad8117e3753e80b96adb72d9d811514 \ - --hash=sha256:d2aa3ca9552f83b0b4fa6ca8c6ce08da6580f37e3e0ab7afac73a1cfdc230c0e \ - --hash=sha256:d46ee458452727a147d7897bb33886981ae1235775e05decae5d5d07f537695a \ - --hash=sha256:d64a657de7aae8db2da60dc0c9e4638a0c3893b4d60101fd564a3362b2bfeb34 \ - --hash=sha256:d800a8e2ac62db1b9ea5d6d1724f1a93c53907ca061de4d05ed94e8dfa79050c \ - --hash=sha256:d9d7ebcd11ea76ba0feaae98485cd8e31467c3d7985210fab46983278214736b \ - --hash=sha256:dd7d3608589072f63078b4063a6c536af832e76b0b3885f1bfe9e892abe6c207 \ - --hash=sha256:ec19e823b4ccd87bd69e990879acbce9e961fc7aebe150156b8f4418d4b27b7f \ - --hash=sha256:ee40206d1d6e95eaa2b7b919195e3689a5cf6ded730632de7f187f35a1b6052c \ - --hash=sha256:f138f550b83554f5b344d6be35d3ed59348510edc3cb96f75309db6e9bfe8210 \ - --hash=sha256:f3e6e2e502c4043c52a99316d89dc49f416acda5b0c6886e0dd8ea7bb35859e8 \ - --hash=sha256:fb10bb720348fe1647a94eb605accb9ef6a9b1875d8845f9e763d9d71a706387 \ - --hash=sha256:fc066395e6332da1e7525d605b4c96055669f8336600bef8ac569d5226a7c76f \ - --hash=sha256:fc33267d58dfbb2361baed52668c5d8c15d24bc0372cecbb79fed77339b55e0d +rpds-py==0.16.2 \ + --hash=sha256:0474df4ade9a3b4af96c3d36eb81856cb9462e4c6657d4caecfd840d2a13f3c9 \ + --hash=sha256:071980663c273bf3d388fe5c794c547e6f35ba3335477072c713a3176bf14a60 \ + --hash=sha256:07aab64e2808c3ebac2a44f67e9dc0543812b715126dfd6fe4264df527556cb6 \ + --hash=sha256:088396c7c70e59872f67462fcac3ecbded5233385797021976a09ebd55961dfe \ + --hash=sha256:162d7cd9cd311c1b0ff1c55a024b8f38bd8aad1876b648821da08adc40e95734 \ + --hash=sha256:19f00f57fdd38db4bb5ad09f9ead1b535332dbf624200e9029a45f1f35527ebb \ + --hash=sha256:1bdbc5fcb04a7309074de6b67fa9bc4b418ab3fc435fec1f2779a0eced688d04 \ + --hash=sha256:1be2f033df1b8be8c3167ba3c29d5dca425592ee31e35eac52050623afba5772 \ + --hash=sha256:24f7a2eb3866a9e91f4599851e0c8d39878a470044875c49bd528d2b9b88361c \ + --hash=sha256:290a81cfbe4673285cdf140ec5cd1658ffbf63ab359f2b352ebe172e7cfa5bf0 \ + --hash=sha256:2946b120718eba9af2b4dd103affc1164a87b9e9ebff8c3e4c05d7b7a7e274e2 \ + --hash=sha256:2bd82db36cd70b3628c0c57d81d2438e8dd4b7b32a6a9f25f24ab0e657cb6c4e \ + --hash=sha256:2ddef620e70eaffebed5932ce754d539c0930f676aae6212f8e16cd9743dd365 \ + --hash=sha256:2e53b9b25cac9065328901713a7e9e3b12e4f57ef4280b370fbbf6fef2052eef \ + --hash=sha256:302bd4983bbd47063e452c38be66153760112f6d3635c7eeefc094299fa400a9 \ + --hash=sha256:349cb40897fd529ca15317c22c0eab67f5ac5178b5bd2c6adc86172045210acc \ + --hash=sha256:358dafc89ce3894c7f486c615ba914609f38277ef67f566abc4c854d23b997fa \ + --hash=sha256:35953f4f2b3216421af86fd236b7c0c65935936a94ea83ddbd4904ba60757773 \ + --hash=sha256:35ae5ece284cf36464eb160880018cf6088a9ac5ddc72292a6092b6ef3f4da53 \ + --hash=sha256:3b811d182ad17ea294f2ec63c0621e7be92a1141e1012383461872cead87468f \ + --hash=sha256:3da5a4c56953bdbf6d04447c3410309616c54433146ccdb4a277b9cb499bc10e \ + --hash=sha256:3dc6a7620ba7639a3db6213da61312cb4aa9ac0ca6e00dc1cbbdc21c2aa6eb57 \ + --hash=sha256:3f91df8e6dbb7360e176d1affd5fb0246d2b88d16aa5ebc7db94fd66b68b61da \ + --hash=sha256:4022b9dc620e14f30201a8a73898a873c8e910cb642bcd2f3411123bc527f6ac \ + --hash=sha256:413b9c17388bbd0d87a329d8e30c1a4c6e44e2bb25457f43725a8e6fe4161e9e \ + --hash=sha256:43d4dd5fb16eb3825742bad8339d454054261ab59fed2fbac84e1d84d5aae7ba \ + --hash=sha256:44627b6ca7308680a70766454db5249105fa6344853af6762eaad4158a2feebe \ + --hash=sha256:44a54e99a2b9693a37ebf245937fd6e9228b4cbd64b9cc961e1f3391ec6c7391 \ + --hash=sha256:47713dc4fce213f5c74ca8a1f6a59b622fc1b90868deb8e8e4d993e421b4b39d \ + --hash=sha256:495a14b72bbe217f2695dcd9b5ab14d4f8066a00f5d209ed94f0aca307f85f6e \ + --hash=sha256:4c46ad6356e1561f2a54f08367d1d2e70a0a1bb2db2282d2c1972c1d38eafc3b \ + --hash=sha256:4d6a9f052e72d493efd92a77f861e45bab2f6be63e37fa8ecf0c6fd1a58fedb0 \ + --hash=sha256:509b617ac787cd1149600e731db9274ebbef094503ca25158e6f23edaba1ca8f \ + --hash=sha256:5552f328eaef1a75ff129d4d0c437bf44e43f9436d3996e8eab623ea0f5fcf73 \ + --hash=sha256:5a80e2f83391ad0808b4646732af2a7b67550b98f0cae056cb3b40622a83dbb3 \ + --hash=sha256:5cf6af100ffb5c195beec11ffaa8cf8523057f123afa2944e6571d54da84cdc9 \ + --hash=sha256:5e6caa3809e50690bd92fa490f5c38caa86082c8c3315aa438bce43786d5e90d \ + --hash=sha256:5ef00873303d678aaf8b0627e111fd434925ca01c657dbb2641410f1cdaef261 \ + --hash=sha256:69ac7ea9897ec201ce68b48582f3eb34a3f9924488a5432a93f177bf76a82a7e \ + --hash=sha256:6a61226465bda9283686db8f17d02569a98e4b13c637be5a26d44aa1f1e361c2 \ + --hash=sha256:6d904c5693e08bad240f16d79305edba78276be87061c872a4a15e2c301fa2c0 \ + --hash=sha256:6dace7b26a13353e24613417ce2239491b40a6ad44e5776a18eaff7733488b44 \ + --hash=sha256:6df15846ee3fb2e6397fe25d7ca6624af9f89587f3f259d177b556fed6bebe2c \ + --hash=sha256:703d95c75a72e902544fda08e965885525e297578317989fd15a6ce58414b41d \ + --hash=sha256:726ac36e8a3bb8daef2fd482534cabc5e17334052447008405daca7ca04a3108 \ + --hash=sha256:781ef8bfc091b19960fc0142a23aedadafa826bc32b433fdfe6fd7f964d7ef44 \ + --hash=sha256:80443fe2f7b3ea3934c5d75fb0e04a5dbb4a8e943e5ff2de0dec059202b70a8b \ + --hash=sha256:83640a5d7cd3bff694747d50436b8b541b5b9b9782b0c8c1688931d6ee1a1f2d \ + --hash=sha256:84c5a4d1f9dd7e2d2c44097fb09fffe728629bad31eb56caf97719e55575aa82 \ + --hash=sha256:882ce6e25e585949c3d9f9abd29202367175e0aab3aba0c58c9abbb37d4982ff \ + --hash=sha256:888a97002e986eca10d8546e3c8b97da1d47ad8b69726dcfeb3e56348ebb28a3 \ + --hash=sha256:8aad80645a011abae487d356e0ceb359f4938dfb6f7bcc410027ed7ae4f7bb8b \ + --hash=sha256:8cb6fe8ecdfffa0e711a75c931fb39f4ba382b4b3ccedeca43f18693864fe850 \ + --hash=sha256:8d6b6937ae9eac6d6c0ca3c42774d89fa311f55adff3970fb364b34abde6ed3d \ + --hash=sha256:90123853fc8b1747f80b0d354be3d122b4365a93e50fc3aacc9fb4c2488845d6 \ + --hash=sha256:96f957d6ab25a78b9e7fc9749d754b98eac825a112b4e666525ce89afcbd9ed5 \ + --hash=sha256:981d135c7cdaf6cd8eadae1c950de43b976de8f09d8e800feed307140d3d6d00 \ + --hash=sha256:9b32f742ce5b57201305f19c2ef7a184b52f6f9ba6871cc042c2a61f0d6b49b8 \ + --hash=sha256:9f0350ef2fba5f34eb0c9000ea328e51b9572b403d2f7f3b19f24085f6f598e8 \ + --hash=sha256:a297a4d08cc67c7466c873c78039d87840fb50d05473db0ec1b7b03d179bf322 \ + --hash=sha256:a3d7e2ea25d3517c6d7e5a1cc3702cffa6bd18d9ef8d08d9af6717fc1c700eed \ + --hash=sha256:a4b682c5775d6a3d21e314c10124599976809455ee67020e8e72df1769b87bc3 \ + --hash=sha256:a4ebb8b20bd09c5ce7884c8f0388801100f5e75e7f733b1b6613c713371feefc \ + --hash=sha256:a61f659665a39a4d17d699ab3593d7116d66e1e2e3f03ef3fb8f484e91908808 \ + --hash=sha256:a9880b4656efe36ccad41edc66789e191e5ee19a1ea8811e0aed6f69851a82f4 \ + --hash=sha256:ac08472f41ea77cd6a5dae36ae7d4ed3951d6602833af87532b556c1b4601d63 \ + --hash=sha256:adc0c3d6fc6ae35fee3e4917628983f6ce630d513cbaad575b4517d47e81b4bb \ + --hash=sha256:af27423662f32d7501a00c5e7342f7dbd1e4a718aea7a239781357d15d437133 \ + --hash=sha256:b2e75e17bd0bb66ee34a707da677e47c14ee51ccef78ed6a263a4cc965a072a1 \ + --hash=sha256:b634c5ec0103c5cbebc24ebac4872b045cccb9456fc59efdcf6fe39775365bd2 \ + --hash=sha256:b6f5549d6ed1da9bfe3631ca9483ae906f21410be2445b73443fa9f017601c6f \ + --hash=sha256:bd4b677d929cf1f6bac07ad76e0f2d5de367e6373351c01a9c0a39f6b21b4a8b \ + --hash=sha256:bf721ede3eb7b829e4a9b8142bd55db0bdc82902720548a703f7e601ee13bdc3 \ + --hash=sha256:c647ca87fc0ebe808a41de912e9a1bfef9acb85257e5d63691364ac16b81c1f0 \ + --hash=sha256:ca57468da2d9a660bcf8961637c85f2fbb2aa64d9bc3f9484e30c3f9f67b1dd7 \ + --hash=sha256:cad0f59ee3dc35526039f4bc23642d52d5f6616b5f687d846bfc6d0d6d486db0 \ + --hash=sha256:cc97f0640e91d7776530f06e6836c546c1c752a52de158720c4224c9e8053cad \ + --hash=sha256:ccd4e400309e1f34a5095bf9249d371f0fd60f8a3a5c4a791cad7b99ce1fd38d \ + --hash=sha256:cffa76b385dfe1e38527662a302b19ffb0e7f5cf7dd5e89186d2c94a22dd9d0c \ + --hash=sha256:d0dd7ed2f16df2e129496e7fbe59a34bc2d7fc8db443a606644d069eb69cbd45 \ + --hash=sha256:d452817e0d9c749c431a1121d56a777bd7099b720b3d1c820f1725cb40928f58 \ + --hash=sha256:d8dda2a806dfa4a9b795950c4f5cc56d6d6159f7d68080aedaff3bdc9b5032f5 \ + --hash=sha256:dcbe1f8dd179e4d69b70b1f1d9bb6fd1e7e1bdc9c9aad345cdeb332e29d40748 \ + --hash=sha256:e0441fb4fdd39a230477b2ca9be90868af64425bfe7b122b57e61e45737a653b \ + --hash=sha256:e04e56b4ca7a770593633556e8e9e46579d66ec2ada846b401252a2bdcf70a6d \ + --hash=sha256:e061de3b745fe611e23cd7318aec2c8b0e4153939c25c9202a5811ca911fd733 \ + --hash=sha256:e93ec1b300acf89730cf27975ef574396bc04edecc358e9bd116fb387a123239 \ + --hash=sha256:e9e557db6a177470316c82f023e5d571811c9a4422b5ea084c85da9aa3c035fc \ + --hash=sha256:eab36eae3f3e8e24b05748ec9acc66286662f5d25c52ad70cadab544e034536b \ + --hash=sha256:ec23fcad480e77ede06cf4127a25fc440f7489922e17fc058f426b5256ee0edb \ + --hash=sha256:ec2e1cf025b2c0f48ec17ff3e642661da7ee332d326f2e6619366ce8e221f018 \ + --hash=sha256:ed99b4f7179d2111702020fd7d156e88acd533f5a7d3971353e568b6051d5c97 \ + --hash=sha256:ee94cb58c0ba2c62ee108c2b7c9131b2c66a29e82746e8fa3aa1a1effbd3dcf1 \ + --hash=sha256:f19afcfc0dd0dca35694df441e9b0f95bc231b512f51bded3c3d8ca32153ec19 \ + --hash=sha256:f1b9d9260e06ea017feb7172976ab261e011c1dc2f8883c7c274f6b2aabfe01a \ + --hash=sha256:f28ac0e8e7242d140f99402a903a2c596ab71550272ae9247ad78f9a932b5698 \ + --hash=sha256:f42e25c016927e2a6b1ce748112c3ab134261fc2ddc867e92d02006103e1b1b7 \ + --hash=sha256:f4bd4578e44f26997e9e56c96dedc5f1af43cc9d16c4daa29c771a00b2a26851 \ + --hash=sha256:f811771019f063bbd0aa7bb72c8a934bc13ebacb4672d712fc1639cfd314cccc # via # jsonschema # referencing diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 3f7849fbd24..b03a6e48288 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -785,106 +785,106 @@ rich==13.7.0 \ # via # aws-sam-cli (setup.py) # cookiecutter -rpds-py==0.15.2 \ - --hash=sha256:02744236ac1895d7be837878e707a5c35fb8edc5137602f253b63623d7ad5c8c \ - --hash=sha256:03f9c5875515820633bd7709a25c3e60c1ea9ad1c5d4030ce8a8c203309c36fd \ - --hash=sha256:044f6f46d62444800402851afa3c3ae50141f12013060c1a3a0677e013310d6d \ - --hash=sha256:07a2e1d78d382f7181789713cdf0c16edbad4fe14fe1d115526cb6f0eef0daa3 \ - --hash=sha256:082e0e55d73690ffb4da4352d1b5bbe1b5c6034eb9dc8c91aa2a3ee15f70d3e2 \ - --hash=sha256:13152dfe7d7c27c40df8b99ac6aab12b978b546716e99f67e8a67a1d441acbc3 \ - --hash=sha256:13716e53627ad97babf72ac9e01cf9a7d4af2f75dd5ed7b323a7a9520e948282 \ - --hash=sha256:13ff62d3561a23c17341b4afc78e8fcfd799ab67c0b1ca32091d71383a98ba4b \ - --hash=sha256:1607cda6129f815493a3c184492acb5ae4aa6ed61d3a1b3663aa9824ed26f7ac \ - --hash=sha256:164fcee32f15d04d61568c9cb0d919e37ff3195919cd604039ff3053ada0461b \ - --hash=sha256:1c24e30d720c0009b6fb2e1905b025da56103c70a8b31b99138e4ed1c2a6c5b0 \ - --hash=sha256:1e6fcd0a0f62f2997107f758bb372397b8d5fd5f39cc6dcb86f7cb98a2172d6c \ - --hash=sha256:1fd0f0b1ccd7d537b858a56355a250108df692102e08aa2036e1a094fd78b2dc \ - --hash=sha256:2181e86d4e1cdf49a7320cb72a36c45efcb7670d0a88f09fd2d3a7967c0540fd \ - --hash=sha256:2974e6dff38afafd5ccf8f41cb8fc94600b3f4fd9b0a98f6ece6e2219e3158d5 \ - --hash=sha256:2dccc623725d0b298f557d869a68496a2fd2a9e9c41107f234fa5f7a37d278ac \ - --hash=sha256:2df3d07a16a3bef0917b28cd564778fbb31f3ffa5b5e33584470e2d1b0f248f0 \ - --hash=sha256:2e7e5633577b3bd56bf3af2ef6ae3778bbafb83743989d57f0e7edbf6c0980e4 \ - --hash=sha256:2ee066a64f0d2ba45391cac15b3a70dcb549e968a117bd0500634754cfe0e5fc \ - --hash=sha256:2f1f295a5c28cfa74a7d48c95acc1c8a7acd49d7d9072040d4b694fe11cd7166 \ - --hash=sha256:2faa97212b0dc465afeedf49045cdd077f97be1188285e646a9f689cb5dfff9e \ - --hash=sha256:30479a9f1fce47df56b07460b520f49fa2115ec2926d3b1303c85c81f8401ed1 \ - --hash=sha256:337a8653fb11d2fbe7157c961cc78cb3c161d98cf44410ace9a3dc2db4fad882 \ - --hash=sha256:3423007fc0661827e06f8a185a3792c73dda41f30f3421562f210cf0c9e49569 \ - --hash=sha256:373b76eeb79e8c14f6d82cb1d4d5293f9e4059baec6c1b16dca7ad13b6131b39 \ - --hash=sha256:3b79c63d29101cbaa53a517683557bb550462394fb91044cc5998dd2acff7340 \ - --hash=sha256:3bbc89ce2a219662ea142f0abcf8d43f04a41d5b1880be17a794c39f0d609cb0 \ - --hash=sha256:3c11bc5814554b018f6c5d6ae0969e43766f81e995000b53a5d8c8057055e886 \ - --hash=sha256:3cd61e759c4075510052d1eca5cddbd297fe1164efec14ef1fce3f09b974dfe4 \ - --hash=sha256:3d40fb3ca22e3d40f494d577441b263026a3bd8c97ae6ce89b2d3c4b39ac9581 \ - --hash=sha256:3db0c998c92b909d7c90b66c965590d4f3cd86157176a6cf14aa1f867b77b889 \ - --hash=sha256:422b0901878a31ef167435c5ad46560362891816a76cc0d150683f3868a6f0d1 \ - --hash=sha256:46b4f3d47d1033db569173be62365fbf7808c2bd3fb742314d251f130d90d44c \ - --hash=sha256:485fbdd23becb822804ed05622907ee5c8e8a5f43f6f43894a45f463b2217045 \ - --hash=sha256:53304cc14b1d94487d70086e1cb0cb4c29ec6da994d58ae84a4d7e78c6a6d04d \ - --hash=sha256:5595c80dd03d7e6c6afb73f3594bf3379a7d79fa57164b591d012d4b71d6ac4c \ - --hash=sha256:56b51ba29a18e5f5810224bcf00747ad931c0716e3c09a76b4a1edd3d4aba71f \ - --hash=sha256:580182fa5b269c2981e9ce9764367cb4edc81982ce289208d4607c203f44ffde \ - --hash=sha256:5e99d6510c8557510c220b865d966b105464740dcbebf9b79ecd4fbab30a13d9 \ - --hash=sha256:5eb05b654a41e0f81ab27a7c3e88b6590425eb3e934e1d533ecec5dc88a6ffff \ - --hash=sha256:62b292fff4739c6be89e6a0240c02bda5a9066a339d90ab191cf66e9fdbdc193 \ - --hash=sha256:6a5122b17a4faf5d7a6d91fa67b479736c0cacc7afe791ddebb7163a8550b799 \ - --hash=sha256:6a8ff8e809da81363bffca2b965cb6e4bf6056b495fc3f078467d1f8266fe27f \ - --hash=sha256:6c43e1b89099279cc03eb1c725c5de12af6edcd2f78e2f8a022569efa639ada3 \ - --hash=sha256:709dc11af2f74ba89c68b1592368c6edcbccdb0a06ba77eb28c8fe08bb6997da \ - --hash=sha256:7e072f5da38d6428ba1fc1115d3cc0dae895df671cb04c70c019985e8c7606be \ - --hash=sha256:813a65f95bfcb7c8f2a70dd6add9b51e9accc3bdb3e03d0ff7a9e6a2d3e174bf \ - --hash=sha256:86c01299942b0f4b5b5f28c8701689181ad2eab852e65417172dbdd6c5b3ccc8 \ - --hash=sha256:893e38d0f4319dfa70c0f36381a37cc418985c87b11d9784365b1fff4fa6973b \ - --hash=sha256:8a5f574b92b3ee7d254e56d56e37ec0e1416acb1ae357c4956d76a1788dc58fb \ - --hash=sha256:8b9650f92251fdef843e74fc252cdfd6e3c700157ad686eeb0c6d7fdb2d11652 \ - --hash=sha256:8ec464f20fe803ae00419bd1610934e3bda963aeba1e6181dfc9033dc7e8940c \ - --hash=sha256:8f333bfe782a2d05a67cfaa0cc9cd68b36b39ee6acfe099f980541ed973a7093 \ - --hash=sha256:8ffdeb7dbd0160d4e391e1f857477e4762d00aa2199c294eb95dfb9451aa1d9f \ - --hash=sha256:911e600e798374c0d86235e7ef19109cf865d1336942d398ff313375a25a93ba \ - --hash=sha256:9235be95662559141934fced8197de6fee8c58870f36756b0584424b6d708393 \ - --hash=sha256:938518a11780b39998179d07f31a4a468888123f9b00463842cd40f98191f4d3 \ - --hash=sha256:93c18a1696a8e0388ed84b024fe1a188a26ba999b61d1d9a371318cb89885a8c \ - --hash=sha256:97532802f14d383f37d603a56e226909f825a83ff298dc1b6697de00d2243999 \ - --hash=sha256:98ee201a52a7f65608e5494518932e1473fd43535f12cade0a1b4ab32737fe28 \ - --hash=sha256:9d2ae79f31da5143e020a8d4fc74e1f0cbcb8011bdf97453c140aa616db51406 \ - --hash=sha256:9d38494a8d21c246c535b41ecdb2d562c4b933cf3d68de03e8bc43a0d41be652 \ - --hash=sha256:9d41ebb471a6f064c0d1c873c4f7dded733d16ca5db7d551fb04ff3805d87802 \ - --hash=sha256:9e09d017e3f4d9bd7d17a30d3f59e4d6d9ba2d2ced280eec2425e84112cf623f \ - --hash=sha256:a6945c2d61c42bb7e818677f43638675b8c1c43e858b67a96df3eb2426a86c9d \ - --hash=sha256:a72e00826a2b032dda3eb25aa3e3579c6d6773d22d8446089a57a123481cc46c \ - --hash=sha256:aa1e626c524d2c7972c0f3a8a575d654a3a9c008370dc2a97e46abd0eaa749b9 \ - --hash=sha256:ab095edf1d840a6a6a4307e1a5b907a299a94e7b90e75436ee770b8c35d22a25 \ - --hash=sha256:ac2ac84a4950d627d84b61f082eba61314373cfab4b3c264b62efab02ababe83 \ - --hash=sha256:ac7187bee72384b9cfedf09a29a3b2b6e8815cc64c095cdc8b5e6aec81e9fd5f \ - --hash=sha256:ae9d83a81b09ce3a817e2cbb23aabc07f86a3abc664c613cd283ce7a03541e95 \ - --hash=sha256:afeabb382c1256a7477b739820bce7fe782bb807d82927102cee73e79b41b38b \ - --hash=sha256:b2a4cd924d0e2f4b1a68034abe4cadc73d69ad5f4cf02db6481c0d4d749f548f \ - --hash=sha256:b414ef79f1f06fb90b5165db8aef77512c1a5e3ed1b4807da8476b7e2c853283 \ - --hash=sha256:b4ecbba7efd82bd2a4bb88aab7f984eb5470991c1347bdd1f35fb34ea28dba6e \ - --hash=sha256:b61d5096e75fd71018b25da50b82dd70ec39b5e15bb2134daf7eb7bbbc103644 \ - --hash=sha256:b629db53fe17e6ce478a969d30bd1d0e8b53238c46e3a9c9db39e8b65a9ef973 \ - --hash=sha256:b70b45a40ad0798b69748b34d508259ef2bdc84fb2aad4048bc7c9cafb68ddb3 \ - --hash=sha256:b88c3ab98556bc351b36d6208a6089de8c8db14a7f6e1f57f82a334bd2c18f0b \ - --hash=sha256:baf744e5f9d5ee6531deea443be78b36ed1cd36c65a0b95ea4e8d69fa0102268 \ - --hash=sha256:bbc7421cbd28b4316d1d017db338039a7943f945c6f2bb15e1439b14b5682d28 \ - --hash=sha256:c31272c674f725dfe0f343d73b0abe8c878c646967ec1c6106122faae1efc15b \ - --hash=sha256:c51a899792ee2c696072791e56b2020caff58b275abecbc9ae0cb71af0645c95 \ - --hash=sha256:c61e42b4ceb9759727045765e87d51c1bb9f89987aca1fcc8a040232138cad1c \ - --hash=sha256:c7cd0841a586b7105513a7c8c3d5c276f3adc762a072d81ef7fae80632afad1e \ - --hash=sha256:c827a931c6b57f50f1bb5de400dcfb00bad8117e3753e80b96adb72d9d811514 \ - --hash=sha256:d2aa3ca9552f83b0b4fa6ca8c6ce08da6580f37e3e0ab7afac73a1cfdc230c0e \ - --hash=sha256:d46ee458452727a147d7897bb33886981ae1235775e05decae5d5d07f537695a \ - --hash=sha256:d64a657de7aae8db2da60dc0c9e4638a0c3893b4d60101fd564a3362b2bfeb34 \ - --hash=sha256:d800a8e2ac62db1b9ea5d6d1724f1a93c53907ca061de4d05ed94e8dfa79050c \ - --hash=sha256:d9d7ebcd11ea76ba0feaae98485cd8e31467c3d7985210fab46983278214736b \ - --hash=sha256:dd7d3608589072f63078b4063a6c536af832e76b0b3885f1bfe9e892abe6c207 \ - --hash=sha256:ec19e823b4ccd87bd69e990879acbce9e961fc7aebe150156b8f4418d4b27b7f \ - --hash=sha256:ee40206d1d6e95eaa2b7b919195e3689a5cf6ded730632de7f187f35a1b6052c \ - --hash=sha256:f138f550b83554f5b344d6be35d3ed59348510edc3cb96f75309db6e9bfe8210 \ - --hash=sha256:f3e6e2e502c4043c52a99316d89dc49f416acda5b0c6886e0dd8ea7bb35859e8 \ - --hash=sha256:fb10bb720348fe1647a94eb605accb9ef6a9b1875d8845f9e763d9d71a706387 \ - --hash=sha256:fc066395e6332da1e7525d605b4c96055669f8336600bef8ac569d5226a7c76f \ - --hash=sha256:fc33267d58dfbb2361baed52668c5d8c15d24bc0372cecbb79fed77339b55e0d +rpds-py==0.16.2 \ + --hash=sha256:0474df4ade9a3b4af96c3d36eb81856cb9462e4c6657d4caecfd840d2a13f3c9 \ + --hash=sha256:071980663c273bf3d388fe5c794c547e6f35ba3335477072c713a3176bf14a60 \ + --hash=sha256:07aab64e2808c3ebac2a44f67e9dc0543812b715126dfd6fe4264df527556cb6 \ + --hash=sha256:088396c7c70e59872f67462fcac3ecbded5233385797021976a09ebd55961dfe \ + --hash=sha256:162d7cd9cd311c1b0ff1c55a024b8f38bd8aad1876b648821da08adc40e95734 \ + --hash=sha256:19f00f57fdd38db4bb5ad09f9ead1b535332dbf624200e9029a45f1f35527ebb \ + --hash=sha256:1bdbc5fcb04a7309074de6b67fa9bc4b418ab3fc435fec1f2779a0eced688d04 \ + --hash=sha256:1be2f033df1b8be8c3167ba3c29d5dca425592ee31e35eac52050623afba5772 \ + --hash=sha256:24f7a2eb3866a9e91f4599851e0c8d39878a470044875c49bd528d2b9b88361c \ + --hash=sha256:290a81cfbe4673285cdf140ec5cd1658ffbf63ab359f2b352ebe172e7cfa5bf0 \ + --hash=sha256:2946b120718eba9af2b4dd103affc1164a87b9e9ebff8c3e4c05d7b7a7e274e2 \ + --hash=sha256:2bd82db36cd70b3628c0c57d81d2438e8dd4b7b32a6a9f25f24ab0e657cb6c4e \ + --hash=sha256:2ddef620e70eaffebed5932ce754d539c0930f676aae6212f8e16cd9743dd365 \ + --hash=sha256:2e53b9b25cac9065328901713a7e9e3b12e4f57ef4280b370fbbf6fef2052eef \ + --hash=sha256:302bd4983bbd47063e452c38be66153760112f6d3635c7eeefc094299fa400a9 \ + --hash=sha256:349cb40897fd529ca15317c22c0eab67f5ac5178b5bd2c6adc86172045210acc \ + --hash=sha256:358dafc89ce3894c7f486c615ba914609f38277ef67f566abc4c854d23b997fa \ + --hash=sha256:35953f4f2b3216421af86fd236b7c0c65935936a94ea83ddbd4904ba60757773 \ + --hash=sha256:35ae5ece284cf36464eb160880018cf6088a9ac5ddc72292a6092b6ef3f4da53 \ + --hash=sha256:3b811d182ad17ea294f2ec63c0621e7be92a1141e1012383461872cead87468f \ + --hash=sha256:3da5a4c56953bdbf6d04447c3410309616c54433146ccdb4a277b9cb499bc10e \ + --hash=sha256:3dc6a7620ba7639a3db6213da61312cb4aa9ac0ca6e00dc1cbbdc21c2aa6eb57 \ + --hash=sha256:3f91df8e6dbb7360e176d1affd5fb0246d2b88d16aa5ebc7db94fd66b68b61da \ + --hash=sha256:4022b9dc620e14f30201a8a73898a873c8e910cb642bcd2f3411123bc527f6ac \ + --hash=sha256:413b9c17388bbd0d87a329d8e30c1a4c6e44e2bb25457f43725a8e6fe4161e9e \ + --hash=sha256:43d4dd5fb16eb3825742bad8339d454054261ab59fed2fbac84e1d84d5aae7ba \ + --hash=sha256:44627b6ca7308680a70766454db5249105fa6344853af6762eaad4158a2feebe \ + --hash=sha256:44a54e99a2b9693a37ebf245937fd6e9228b4cbd64b9cc961e1f3391ec6c7391 \ + --hash=sha256:47713dc4fce213f5c74ca8a1f6a59b622fc1b90868deb8e8e4d993e421b4b39d \ + --hash=sha256:495a14b72bbe217f2695dcd9b5ab14d4f8066a00f5d209ed94f0aca307f85f6e \ + --hash=sha256:4c46ad6356e1561f2a54f08367d1d2e70a0a1bb2db2282d2c1972c1d38eafc3b \ + --hash=sha256:4d6a9f052e72d493efd92a77f861e45bab2f6be63e37fa8ecf0c6fd1a58fedb0 \ + --hash=sha256:509b617ac787cd1149600e731db9274ebbef094503ca25158e6f23edaba1ca8f \ + --hash=sha256:5552f328eaef1a75ff129d4d0c437bf44e43f9436d3996e8eab623ea0f5fcf73 \ + --hash=sha256:5a80e2f83391ad0808b4646732af2a7b67550b98f0cae056cb3b40622a83dbb3 \ + --hash=sha256:5cf6af100ffb5c195beec11ffaa8cf8523057f123afa2944e6571d54da84cdc9 \ + --hash=sha256:5e6caa3809e50690bd92fa490f5c38caa86082c8c3315aa438bce43786d5e90d \ + --hash=sha256:5ef00873303d678aaf8b0627e111fd434925ca01c657dbb2641410f1cdaef261 \ + --hash=sha256:69ac7ea9897ec201ce68b48582f3eb34a3f9924488a5432a93f177bf76a82a7e \ + --hash=sha256:6a61226465bda9283686db8f17d02569a98e4b13c637be5a26d44aa1f1e361c2 \ + --hash=sha256:6d904c5693e08bad240f16d79305edba78276be87061c872a4a15e2c301fa2c0 \ + --hash=sha256:6dace7b26a13353e24613417ce2239491b40a6ad44e5776a18eaff7733488b44 \ + --hash=sha256:6df15846ee3fb2e6397fe25d7ca6624af9f89587f3f259d177b556fed6bebe2c \ + --hash=sha256:703d95c75a72e902544fda08e965885525e297578317989fd15a6ce58414b41d \ + --hash=sha256:726ac36e8a3bb8daef2fd482534cabc5e17334052447008405daca7ca04a3108 \ + --hash=sha256:781ef8bfc091b19960fc0142a23aedadafa826bc32b433fdfe6fd7f964d7ef44 \ + --hash=sha256:80443fe2f7b3ea3934c5d75fb0e04a5dbb4a8e943e5ff2de0dec059202b70a8b \ + --hash=sha256:83640a5d7cd3bff694747d50436b8b541b5b9b9782b0c8c1688931d6ee1a1f2d \ + --hash=sha256:84c5a4d1f9dd7e2d2c44097fb09fffe728629bad31eb56caf97719e55575aa82 \ + --hash=sha256:882ce6e25e585949c3d9f9abd29202367175e0aab3aba0c58c9abbb37d4982ff \ + --hash=sha256:888a97002e986eca10d8546e3c8b97da1d47ad8b69726dcfeb3e56348ebb28a3 \ + --hash=sha256:8aad80645a011abae487d356e0ceb359f4938dfb6f7bcc410027ed7ae4f7bb8b \ + --hash=sha256:8cb6fe8ecdfffa0e711a75c931fb39f4ba382b4b3ccedeca43f18693864fe850 \ + --hash=sha256:8d6b6937ae9eac6d6c0ca3c42774d89fa311f55adff3970fb364b34abde6ed3d \ + --hash=sha256:90123853fc8b1747f80b0d354be3d122b4365a93e50fc3aacc9fb4c2488845d6 \ + --hash=sha256:96f957d6ab25a78b9e7fc9749d754b98eac825a112b4e666525ce89afcbd9ed5 \ + --hash=sha256:981d135c7cdaf6cd8eadae1c950de43b976de8f09d8e800feed307140d3d6d00 \ + --hash=sha256:9b32f742ce5b57201305f19c2ef7a184b52f6f9ba6871cc042c2a61f0d6b49b8 \ + --hash=sha256:9f0350ef2fba5f34eb0c9000ea328e51b9572b403d2f7f3b19f24085f6f598e8 \ + --hash=sha256:a297a4d08cc67c7466c873c78039d87840fb50d05473db0ec1b7b03d179bf322 \ + --hash=sha256:a3d7e2ea25d3517c6d7e5a1cc3702cffa6bd18d9ef8d08d9af6717fc1c700eed \ + --hash=sha256:a4b682c5775d6a3d21e314c10124599976809455ee67020e8e72df1769b87bc3 \ + --hash=sha256:a4ebb8b20bd09c5ce7884c8f0388801100f5e75e7f733b1b6613c713371feefc \ + --hash=sha256:a61f659665a39a4d17d699ab3593d7116d66e1e2e3f03ef3fb8f484e91908808 \ + --hash=sha256:a9880b4656efe36ccad41edc66789e191e5ee19a1ea8811e0aed6f69851a82f4 \ + --hash=sha256:ac08472f41ea77cd6a5dae36ae7d4ed3951d6602833af87532b556c1b4601d63 \ + --hash=sha256:adc0c3d6fc6ae35fee3e4917628983f6ce630d513cbaad575b4517d47e81b4bb \ + --hash=sha256:af27423662f32d7501a00c5e7342f7dbd1e4a718aea7a239781357d15d437133 \ + --hash=sha256:b2e75e17bd0bb66ee34a707da677e47c14ee51ccef78ed6a263a4cc965a072a1 \ + --hash=sha256:b634c5ec0103c5cbebc24ebac4872b045cccb9456fc59efdcf6fe39775365bd2 \ + --hash=sha256:b6f5549d6ed1da9bfe3631ca9483ae906f21410be2445b73443fa9f017601c6f \ + --hash=sha256:bd4b677d929cf1f6bac07ad76e0f2d5de367e6373351c01a9c0a39f6b21b4a8b \ + --hash=sha256:bf721ede3eb7b829e4a9b8142bd55db0bdc82902720548a703f7e601ee13bdc3 \ + --hash=sha256:c647ca87fc0ebe808a41de912e9a1bfef9acb85257e5d63691364ac16b81c1f0 \ + --hash=sha256:ca57468da2d9a660bcf8961637c85f2fbb2aa64d9bc3f9484e30c3f9f67b1dd7 \ + --hash=sha256:cad0f59ee3dc35526039f4bc23642d52d5f6616b5f687d846bfc6d0d6d486db0 \ + --hash=sha256:cc97f0640e91d7776530f06e6836c546c1c752a52de158720c4224c9e8053cad \ + --hash=sha256:ccd4e400309e1f34a5095bf9249d371f0fd60f8a3a5c4a791cad7b99ce1fd38d \ + --hash=sha256:cffa76b385dfe1e38527662a302b19ffb0e7f5cf7dd5e89186d2c94a22dd9d0c \ + --hash=sha256:d0dd7ed2f16df2e129496e7fbe59a34bc2d7fc8db443a606644d069eb69cbd45 \ + --hash=sha256:d452817e0d9c749c431a1121d56a777bd7099b720b3d1c820f1725cb40928f58 \ + --hash=sha256:d8dda2a806dfa4a9b795950c4f5cc56d6d6159f7d68080aedaff3bdc9b5032f5 \ + --hash=sha256:dcbe1f8dd179e4d69b70b1f1d9bb6fd1e7e1bdc9c9aad345cdeb332e29d40748 \ + --hash=sha256:e0441fb4fdd39a230477b2ca9be90868af64425bfe7b122b57e61e45737a653b \ + --hash=sha256:e04e56b4ca7a770593633556e8e9e46579d66ec2ada846b401252a2bdcf70a6d \ + --hash=sha256:e061de3b745fe611e23cd7318aec2c8b0e4153939c25c9202a5811ca911fd733 \ + --hash=sha256:e93ec1b300acf89730cf27975ef574396bc04edecc358e9bd116fb387a123239 \ + --hash=sha256:e9e557db6a177470316c82f023e5d571811c9a4422b5ea084c85da9aa3c035fc \ + --hash=sha256:eab36eae3f3e8e24b05748ec9acc66286662f5d25c52ad70cadab544e034536b \ + --hash=sha256:ec23fcad480e77ede06cf4127a25fc440f7489922e17fc058f426b5256ee0edb \ + --hash=sha256:ec2e1cf025b2c0f48ec17ff3e642661da7ee332d326f2e6619366ce8e221f018 \ + --hash=sha256:ed99b4f7179d2111702020fd7d156e88acd533f5a7d3971353e568b6051d5c97 \ + --hash=sha256:ee94cb58c0ba2c62ee108c2b7c9131b2c66a29e82746e8fa3aa1a1effbd3dcf1 \ + --hash=sha256:f19afcfc0dd0dca35694df441e9b0f95bc231b512f51bded3c3d8ca32153ec19 \ + --hash=sha256:f1b9d9260e06ea017feb7172976ab261e011c1dc2f8883c7c274f6b2aabfe01a \ + --hash=sha256:f28ac0e8e7242d140f99402a903a2c596ab71550272ae9247ad78f9a932b5698 \ + --hash=sha256:f42e25c016927e2a6b1ce748112c3ab134261fc2ddc867e92d02006103e1b1b7 \ + --hash=sha256:f4bd4578e44f26997e9e56c96dedc5f1af43cc9d16c4daa29c771a00b2a26851 \ + --hash=sha256:f811771019f063bbd0aa7bb72c8a934bc13ebacb4672d712fc1639cfd314cccc # via # jsonschema # referencing diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 1218aa965c9..485d2186557 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -773,106 +773,106 @@ rich==13.7.0 \ # via # aws-sam-cli (setup.py) # cookiecutter -rpds-py==0.15.2 \ - --hash=sha256:02744236ac1895d7be837878e707a5c35fb8edc5137602f253b63623d7ad5c8c \ - --hash=sha256:03f9c5875515820633bd7709a25c3e60c1ea9ad1c5d4030ce8a8c203309c36fd \ - --hash=sha256:044f6f46d62444800402851afa3c3ae50141f12013060c1a3a0677e013310d6d \ - --hash=sha256:07a2e1d78d382f7181789713cdf0c16edbad4fe14fe1d115526cb6f0eef0daa3 \ - --hash=sha256:082e0e55d73690ffb4da4352d1b5bbe1b5c6034eb9dc8c91aa2a3ee15f70d3e2 \ - --hash=sha256:13152dfe7d7c27c40df8b99ac6aab12b978b546716e99f67e8a67a1d441acbc3 \ - --hash=sha256:13716e53627ad97babf72ac9e01cf9a7d4af2f75dd5ed7b323a7a9520e948282 \ - --hash=sha256:13ff62d3561a23c17341b4afc78e8fcfd799ab67c0b1ca32091d71383a98ba4b \ - --hash=sha256:1607cda6129f815493a3c184492acb5ae4aa6ed61d3a1b3663aa9824ed26f7ac \ - --hash=sha256:164fcee32f15d04d61568c9cb0d919e37ff3195919cd604039ff3053ada0461b \ - --hash=sha256:1c24e30d720c0009b6fb2e1905b025da56103c70a8b31b99138e4ed1c2a6c5b0 \ - --hash=sha256:1e6fcd0a0f62f2997107f758bb372397b8d5fd5f39cc6dcb86f7cb98a2172d6c \ - --hash=sha256:1fd0f0b1ccd7d537b858a56355a250108df692102e08aa2036e1a094fd78b2dc \ - --hash=sha256:2181e86d4e1cdf49a7320cb72a36c45efcb7670d0a88f09fd2d3a7967c0540fd \ - --hash=sha256:2974e6dff38afafd5ccf8f41cb8fc94600b3f4fd9b0a98f6ece6e2219e3158d5 \ - --hash=sha256:2dccc623725d0b298f557d869a68496a2fd2a9e9c41107f234fa5f7a37d278ac \ - --hash=sha256:2df3d07a16a3bef0917b28cd564778fbb31f3ffa5b5e33584470e2d1b0f248f0 \ - --hash=sha256:2e7e5633577b3bd56bf3af2ef6ae3778bbafb83743989d57f0e7edbf6c0980e4 \ - --hash=sha256:2ee066a64f0d2ba45391cac15b3a70dcb549e968a117bd0500634754cfe0e5fc \ - --hash=sha256:2f1f295a5c28cfa74a7d48c95acc1c8a7acd49d7d9072040d4b694fe11cd7166 \ - --hash=sha256:2faa97212b0dc465afeedf49045cdd077f97be1188285e646a9f689cb5dfff9e \ - --hash=sha256:30479a9f1fce47df56b07460b520f49fa2115ec2926d3b1303c85c81f8401ed1 \ - --hash=sha256:337a8653fb11d2fbe7157c961cc78cb3c161d98cf44410ace9a3dc2db4fad882 \ - --hash=sha256:3423007fc0661827e06f8a185a3792c73dda41f30f3421562f210cf0c9e49569 \ - --hash=sha256:373b76eeb79e8c14f6d82cb1d4d5293f9e4059baec6c1b16dca7ad13b6131b39 \ - --hash=sha256:3b79c63d29101cbaa53a517683557bb550462394fb91044cc5998dd2acff7340 \ - --hash=sha256:3bbc89ce2a219662ea142f0abcf8d43f04a41d5b1880be17a794c39f0d609cb0 \ - --hash=sha256:3c11bc5814554b018f6c5d6ae0969e43766f81e995000b53a5d8c8057055e886 \ - --hash=sha256:3cd61e759c4075510052d1eca5cddbd297fe1164efec14ef1fce3f09b974dfe4 \ - --hash=sha256:3d40fb3ca22e3d40f494d577441b263026a3bd8c97ae6ce89b2d3c4b39ac9581 \ - --hash=sha256:3db0c998c92b909d7c90b66c965590d4f3cd86157176a6cf14aa1f867b77b889 \ - --hash=sha256:422b0901878a31ef167435c5ad46560362891816a76cc0d150683f3868a6f0d1 \ - --hash=sha256:46b4f3d47d1033db569173be62365fbf7808c2bd3fb742314d251f130d90d44c \ - --hash=sha256:485fbdd23becb822804ed05622907ee5c8e8a5f43f6f43894a45f463b2217045 \ - --hash=sha256:53304cc14b1d94487d70086e1cb0cb4c29ec6da994d58ae84a4d7e78c6a6d04d \ - --hash=sha256:5595c80dd03d7e6c6afb73f3594bf3379a7d79fa57164b591d012d4b71d6ac4c \ - --hash=sha256:56b51ba29a18e5f5810224bcf00747ad931c0716e3c09a76b4a1edd3d4aba71f \ - --hash=sha256:580182fa5b269c2981e9ce9764367cb4edc81982ce289208d4607c203f44ffde \ - --hash=sha256:5e99d6510c8557510c220b865d966b105464740dcbebf9b79ecd4fbab30a13d9 \ - --hash=sha256:5eb05b654a41e0f81ab27a7c3e88b6590425eb3e934e1d533ecec5dc88a6ffff \ - --hash=sha256:62b292fff4739c6be89e6a0240c02bda5a9066a339d90ab191cf66e9fdbdc193 \ - --hash=sha256:6a5122b17a4faf5d7a6d91fa67b479736c0cacc7afe791ddebb7163a8550b799 \ - --hash=sha256:6a8ff8e809da81363bffca2b965cb6e4bf6056b495fc3f078467d1f8266fe27f \ - --hash=sha256:6c43e1b89099279cc03eb1c725c5de12af6edcd2f78e2f8a022569efa639ada3 \ - --hash=sha256:709dc11af2f74ba89c68b1592368c6edcbccdb0a06ba77eb28c8fe08bb6997da \ - --hash=sha256:7e072f5da38d6428ba1fc1115d3cc0dae895df671cb04c70c019985e8c7606be \ - --hash=sha256:813a65f95bfcb7c8f2a70dd6add9b51e9accc3bdb3e03d0ff7a9e6a2d3e174bf \ - --hash=sha256:86c01299942b0f4b5b5f28c8701689181ad2eab852e65417172dbdd6c5b3ccc8 \ - --hash=sha256:893e38d0f4319dfa70c0f36381a37cc418985c87b11d9784365b1fff4fa6973b \ - --hash=sha256:8a5f574b92b3ee7d254e56d56e37ec0e1416acb1ae357c4956d76a1788dc58fb \ - --hash=sha256:8b9650f92251fdef843e74fc252cdfd6e3c700157ad686eeb0c6d7fdb2d11652 \ - --hash=sha256:8ec464f20fe803ae00419bd1610934e3bda963aeba1e6181dfc9033dc7e8940c \ - --hash=sha256:8f333bfe782a2d05a67cfaa0cc9cd68b36b39ee6acfe099f980541ed973a7093 \ - --hash=sha256:8ffdeb7dbd0160d4e391e1f857477e4762d00aa2199c294eb95dfb9451aa1d9f \ - --hash=sha256:911e600e798374c0d86235e7ef19109cf865d1336942d398ff313375a25a93ba \ - --hash=sha256:9235be95662559141934fced8197de6fee8c58870f36756b0584424b6d708393 \ - --hash=sha256:938518a11780b39998179d07f31a4a468888123f9b00463842cd40f98191f4d3 \ - --hash=sha256:93c18a1696a8e0388ed84b024fe1a188a26ba999b61d1d9a371318cb89885a8c \ - --hash=sha256:97532802f14d383f37d603a56e226909f825a83ff298dc1b6697de00d2243999 \ - --hash=sha256:98ee201a52a7f65608e5494518932e1473fd43535f12cade0a1b4ab32737fe28 \ - --hash=sha256:9d2ae79f31da5143e020a8d4fc74e1f0cbcb8011bdf97453c140aa616db51406 \ - --hash=sha256:9d38494a8d21c246c535b41ecdb2d562c4b933cf3d68de03e8bc43a0d41be652 \ - --hash=sha256:9d41ebb471a6f064c0d1c873c4f7dded733d16ca5db7d551fb04ff3805d87802 \ - --hash=sha256:9e09d017e3f4d9bd7d17a30d3f59e4d6d9ba2d2ced280eec2425e84112cf623f \ - --hash=sha256:a6945c2d61c42bb7e818677f43638675b8c1c43e858b67a96df3eb2426a86c9d \ - --hash=sha256:a72e00826a2b032dda3eb25aa3e3579c6d6773d22d8446089a57a123481cc46c \ - --hash=sha256:aa1e626c524d2c7972c0f3a8a575d654a3a9c008370dc2a97e46abd0eaa749b9 \ - --hash=sha256:ab095edf1d840a6a6a4307e1a5b907a299a94e7b90e75436ee770b8c35d22a25 \ - --hash=sha256:ac2ac84a4950d627d84b61f082eba61314373cfab4b3c264b62efab02ababe83 \ - --hash=sha256:ac7187bee72384b9cfedf09a29a3b2b6e8815cc64c095cdc8b5e6aec81e9fd5f \ - --hash=sha256:ae9d83a81b09ce3a817e2cbb23aabc07f86a3abc664c613cd283ce7a03541e95 \ - --hash=sha256:afeabb382c1256a7477b739820bce7fe782bb807d82927102cee73e79b41b38b \ - --hash=sha256:b2a4cd924d0e2f4b1a68034abe4cadc73d69ad5f4cf02db6481c0d4d749f548f \ - --hash=sha256:b414ef79f1f06fb90b5165db8aef77512c1a5e3ed1b4807da8476b7e2c853283 \ - --hash=sha256:b4ecbba7efd82bd2a4bb88aab7f984eb5470991c1347bdd1f35fb34ea28dba6e \ - --hash=sha256:b61d5096e75fd71018b25da50b82dd70ec39b5e15bb2134daf7eb7bbbc103644 \ - --hash=sha256:b629db53fe17e6ce478a969d30bd1d0e8b53238c46e3a9c9db39e8b65a9ef973 \ - --hash=sha256:b70b45a40ad0798b69748b34d508259ef2bdc84fb2aad4048bc7c9cafb68ddb3 \ - --hash=sha256:b88c3ab98556bc351b36d6208a6089de8c8db14a7f6e1f57f82a334bd2c18f0b \ - --hash=sha256:baf744e5f9d5ee6531deea443be78b36ed1cd36c65a0b95ea4e8d69fa0102268 \ - --hash=sha256:bbc7421cbd28b4316d1d017db338039a7943f945c6f2bb15e1439b14b5682d28 \ - --hash=sha256:c31272c674f725dfe0f343d73b0abe8c878c646967ec1c6106122faae1efc15b \ - --hash=sha256:c51a899792ee2c696072791e56b2020caff58b275abecbc9ae0cb71af0645c95 \ - --hash=sha256:c61e42b4ceb9759727045765e87d51c1bb9f89987aca1fcc8a040232138cad1c \ - --hash=sha256:c7cd0841a586b7105513a7c8c3d5c276f3adc762a072d81ef7fae80632afad1e \ - --hash=sha256:c827a931c6b57f50f1bb5de400dcfb00bad8117e3753e80b96adb72d9d811514 \ - --hash=sha256:d2aa3ca9552f83b0b4fa6ca8c6ce08da6580f37e3e0ab7afac73a1cfdc230c0e \ - --hash=sha256:d46ee458452727a147d7897bb33886981ae1235775e05decae5d5d07f537695a \ - --hash=sha256:d64a657de7aae8db2da60dc0c9e4638a0c3893b4d60101fd564a3362b2bfeb34 \ - --hash=sha256:d800a8e2ac62db1b9ea5d6d1724f1a93c53907ca061de4d05ed94e8dfa79050c \ - --hash=sha256:d9d7ebcd11ea76ba0feaae98485cd8e31467c3d7985210fab46983278214736b \ - --hash=sha256:dd7d3608589072f63078b4063a6c536af832e76b0b3885f1bfe9e892abe6c207 \ - --hash=sha256:ec19e823b4ccd87bd69e990879acbce9e961fc7aebe150156b8f4418d4b27b7f \ - --hash=sha256:ee40206d1d6e95eaa2b7b919195e3689a5cf6ded730632de7f187f35a1b6052c \ - --hash=sha256:f138f550b83554f5b344d6be35d3ed59348510edc3cb96f75309db6e9bfe8210 \ - --hash=sha256:f3e6e2e502c4043c52a99316d89dc49f416acda5b0c6886e0dd8ea7bb35859e8 \ - --hash=sha256:fb10bb720348fe1647a94eb605accb9ef6a9b1875d8845f9e763d9d71a706387 \ - --hash=sha256:fc066395e6332da1e7525d605b4c96055669f8336600bef8ac569d5226a7c76f \ - --hash=sha256:fc33267d58dfbb2361baed52668c5d8c15d24bc0372cecbb79fed77339b55e0d +rpds-py==0.16.2 \ + --hash=sha256:0474df4ade9a3b4af96c3d36eb81856cb9462e4c6657d4caecfd840d2a13f3c9 \ + --hash=sha256:071980663c273bf3d388fe5c794c547e6f35ba3335477072c713a3176bf14a60 \ + --hash=sha256:07aab64e2808c3ebac2a44f67e9dc0543812b715126dfd6fe4264df527556cb6 \ + --hash=sha256:088396c7c70e59872f67462fcac3ecbded5233385797021976a09ebd55961dfe \ + --hash=sha256:162d7cd9cd311c1b0ff1c55a024b8f38bd8aad1876b648821da08adc40e95734 \ + --hash=sha256:19f00f57fdd38db4bb5ad09f9ead1b535332dbf624200e9029a45f1f35527ebb \ + --hash=sha256:1bdbc5fcb04a7309074de6b67fa9bc4b418ab3fc435fec1f2779a0eced688d04 \ + --hash=sha256:1be2f033df1b8be8c3167ba3c29d5dca425592ee31e35eac52050623afba5772 \ + --hash=sha256:24f7a2eb3866a9e91f4599851e0c8d39878a470044875c49bd528d2b9b88361c \ + --hash=sha256:290a81cfbe4673285cdf140ec5cd1658ffbf63ab359f2b352ebe172e7cfa5bf0 \ + --hash=sha256:2946b120718eba9af2b4dd103affc1164a87b9e9ebff8c3e4c05d7b7a7e274e2 \ + --hash=sha256:2bd82db36cd70b3628c0c57d81d2438e8dd4b7b32a6a9f25f24ab0e657cb6c4e \ + --hash=sha256:2ddef620e70eaffebed5932ce754d539c0930f676aae6212f8e16cd9743dd365 \ + --hash=sha256:2e53b9b25cac9065328901713a7e9e3b12e4f57ef4280b370fbbf6fef2052eef \ + --hash=sha256:302bd4983bbd47063e452c38be66153760112f6d3635c7eeefc094299fa400a9 \ + --hash=sha256:349cb40897fd529ca15317c22c0eab67f5ac5178b5bd2c6adc86172045210acc \ + --hash=sha256:358dafc89ce3894c7f486c615ba914609f38277ef67f566abc4c854d23b997fa \ + --hash=sha256:35953f4f2b3216421af86fd236b7c0c65935936a94ea83ddbd4904ba60757773 \ + --hash=sha256:35ae5ece284cf36464eb160880018cf6088a9ac5ddc72292a6092b6ef3f4da53 \ + --hash=sha256:3b811d182ad17ea294f2ec63c0621e7be92a1141e1012383461872cead87468f \ + --hash=sha256:3da5a4c56953bdbf6d04447c3410309616c54433146ccdb4a277b9cb499bc10e \ + --hash=sha256:3dc6a7620ba7639a3db6213da61312cb4aa9ac0ca6e00dc1cbbdc21c2aa6eb57 \ + --hash=sha256:3f91df8e6dbb7360e176d1affd5fb0246d2b88d16aa5ebc7db94fd66b68b61da \ + --hash=sha256:4022b9dc620e14f30201a8a73898a873c8e910cb642bcd2f3411123bc527f6ac \ + --hash=sha256:413b9c17388bbd0d87a329d8e30c1a4c6e44e2bb25457f43725a8e6fe4161e9e \ + --hash=sha256:43d4dd5fb16eb3825742bad8339d454054261ab59fed2fbac84e1d84d5aae7ba \ + --hash=sha256:44627b6ca7308680a70766454db5249105fa6344853af6762eaad4158a2feebe \ + --hash=sha256:44a54e99a2b9693a37ebf245937fd6e9228b4cbd64b9cc961e1f3391ec6c7391 \ + --hash=sha256:47713dc4fce213f5c74ca8a1f6a59b622fc1b90868deb8e8e4d993e421b4b39d \ + --hash=sha256:495a14b72bbe217f2695dcd9b5ab14d4f8066a00f5d209ed94f0aca307f85f6e \ + --hash=sha256:4c46ad6356e1561f2a54f08367d1d2e70a0a1bb2db2282d2c1972c1d38eafc3b \ + --hash=sha256:4d6a9f052e72d493efd92a77f861e45bab2f6be63e37fa8ecf0c6fd1a58fedb0 \ + --hash=sha256:509b617ac787cd1149600e731db9274ebbef094503ca25158e6f23edaba1ca8f \ + --hash=sha256:5552f328eaef1a75ff129d4d0c437bf44e43f9436d3996e8eab623ea0f5fcf73 \ + --hash=sha256:5a80e2f83391ad0808b4646732af2a7b67550b98f0cae056cb3b40622a83dbb3 \ + --hash=sha256:5cf6af100ffb5c195beec11ffaa8cf8523057f123afa2944e6571d54da84cdc9 \ + --hash=sha256:5e6caa3809e50690bd92fa490f5c38caa86082c8c3315aa438bce43786d5e90d \ + --hash=sha256:5ef00873303d678aaf8b0627e111fd434925ca01c657dbb2641410f1cdaef261 \ + --hash=sha256:69ac7ea9897ec201ce68b48582f3eb34a3f9924488a5432a93f177bf76a82a7e \ + --hash=sha256:6a61226465bda9283686db8f17d02569a98e4b13c637be5a26d44aa1f1e361c2 \ + --hash=sha256:6d904c5693e08bad240f16d79305edba78276be87061c872a4a15e2c301fa2c0 \ + --hash=sha256:6dace7b26a13353e24613417ce2239491b40a6ad44e5776a18eaff7733488b44 \ + --hash=sha256:6df15846ee3fb2e6397fe25d7ca6624af9f89587f3f259d177b556fed6bebe2c \ + --hash=sha256:703d95c75a72e902544fda08e965885525e297578317989fd15a6ce58414b41d \ + --hash=sha256:726ac36e8a3bb8daef2fd482534cabc5e17334052447008405daca7ca04a3108 \ + --hash=sha256:781ef8bfc091b19960fc0142a23aedadafa826bc32b433fdfe6fd7f964d7ef44 \ + --hash=sha256:80443fe2f7b3ea3934c5d75fb0e04a5dbb4a8e943e5ff2de0dec059202b70a8b \ + --hash=sha256:83640a5d7cd3bff694747d50436b8b541b5b9b9782b0c8c1688931d6ee1a1f2d \ + --hash=sha256:84c5a4d1f9dd7e2d2c44097fb09fffe728629bad31eb56caf97719e55575aa82 \ + --hash=sha256:882ce6e25e585949c3d9f9abd29202367175e0aab3aba0c58c9abbb37d4982ff \ + --hash=sha256:888a97002e986eca10d8546e3c8b97da1d47ad8b69726dcfeb3e56348ebb28a3 \ + --hash=sha256:8aad80645a011abae487d356e0ceb359f4938dfb6f7bcc410027ed7ae4f7bb8b \ + --hash=sha256:8cb6fe8ecdfffa0e711a75c931fb39f4ba382b4b3ccedeca43f18693864fe850 \ + --hash=sha256:8d6b6937ae9eac6d6c0ca3c42774d89fa311f55adff3970fb364b34abde6ed3d \ + --hash=sha256:90123853fc8b1747f80b0d354be3d122b4365a93e50fc3aacc9fb4c2488845d6 \ + --hash=sha256:96f957d6ab25a78b9e7fc9749d754b98eac825a112b4e666525ce89afcbd9ed5 \ + --hash=sha256:981d135c7cdaf6cd8eadae1c950de43b976de8f09d8e800feed307140d3d6d00 \ + --hash=sha256:9b32f742ce5b57201305f19c2ef7a184b52f6f9ba6871cc042c2a61f0d6b49b8 \ + --hash=sha256:9f0350ef2fba5f34eb0c9000ea328e51b9572b403d2f7f3b19f24085f6f598e8 \ + --hash=sha256:a297a4d08cc67c7466c873c78039d87840fb50d05473db0ec1b7b03d179bf322 \ + --hash=sha256:a3d7e2ea25d3517c6d7e5a1cc3702cffa6bd18d9ef8d08d9af6717fc1c700eed \ + --hash=sha256:a4b682c5775d6a3d21e314c10124599976809455ee67020e8e72df1769b87bc3 \ + --hash=sha256:a4ebb8b20bd09c5ce7884c8f0388801100f5e75e7f733b1b6613c713371feefc \ + --hash=sha256:a61f659665a39a4d17d699ab3593d7116d66e1e2e3f03ef3fb8f484e91908808 \ + --hash=sha256:a9880b4656efe36ccad41edc66789e191e5ee19a1ea8811e0aed6f69851a82f4 \ + --hash=sha256:ac08472f41ea77cd6a5dae36ae7d4ed3951d6602833af87532b556c1b4601d63 \ + --hash=sha256:adc0c3d6fc6ae35fee3e4917628983f6ce630d513cbaad575b4517d47e81b4bb \ + --hash=sha256:af27423662f32d7501a00c5e7342f7dbd1e4a718aea7a239781357d15d437133 \ + --hash=sha256:b2e75e17bd0bb66ee34a707da677e47c14ee51ccef78ed6a263a4cc965a072a1 \ + --hash=sha256:b634c5ec0103c5cbebc24ebac4872b045cccb9456fc59efdcf6fe39775365bd2 \ + --hash=sha256:b6f5549d6ed1da9bfe3631ca9483ae906f21410be2445b73443fa9f017601c6f \ + --hash=sha256:bd4b677d929cf1f6bac07ad76e0f2d5de367e6373351c01a9c0a39f6b21b4a8b \ + --hash=sha256:bf721ede3eb7b829e4a9b8142bd55db0bdc82902720548a703f7e601ee13bdc3 \ + --hash=sha256:c647ca87fc0ebe808a41de912e9a1bfef9acb85257e5d63691364ac16b81c1f0 \ + --hash=sha256:ca57468da2d9a660bcf8961637c85f2fbb2aa64d9bc3f9484e30c3f9f67b1dd7 \ + --hash=sha256:cad0f59ee3dc35526039f4bc23642d52d5f6616b5f687d846bfc6d0d6d486db0 \ + --hash=sha256:cc97f0640e91d7776530f06e6836c546c1c752a52de158720c4224c9e8053cad \ + --hash=sha256:ccd4e400309e1f34a5095bf9249d371f0fd60f8a3a5c4a791cad7b99ce1fd38d \ + --hash=sha256:cffa76b385dfe1e38527662a302b19ffb0e7f5cf7dd5e89186d2c94a22dd9d0c \ + --hash=sha256:d0dd7ed2f16df2e129496e7fbe59a34bc2d7fc8db443a606644d069eb69cbd45 \ + --hash=sha256:d452817e0d9c749c431a1121d56a777bd7099b720b3d1c820f1725cb40928f58 \ + --hash=sha256:d8dda2a806dfa4a9b795950c4f5cc56d6d6159f7d68080aedaff3bdc9b5032f5 \ + --hash=sha256:dcbe1f8dd179e4d69b70b1f1d9bb6fd1e7e1bdc9c9aad345cdeb332e29d40748 \ + --hash=sha256:e0441fb4fdd39a230477b2ca9be90868af64425bfe7b122b57e61e45737a653b \ + --hash=sha256:e04e56b4ca7a770593633556e8e9e46579d66ec2ada846b401252a2bdcf70a6d \ + --hash=sha256:e061de3b745fe611e23cd7318aec2c8b0e4153939c25c9202a5811ca911fd733 \ + --hash=sha256:e93ec1b300acf89730cf27975ef574396bc04edecc358e9bd116fb387a123239 \ + --hash=sha256:e9e557db6a177470316c82f023e5d571811c9a4422b5ea084c85da9aa3c035fc \ + --hash=sha256:eab36eae3f3e8e24b05748ec9acc66286662f5d25c52ad70cadab544e034536b \ + --hash=sha256:ec23fcad480e77ede06cf4127a25fc440f7489922e17fc058f426b5256ee0edb \ + --hash=sha256:ec2e1cf025b2c0f48ec17ff3e642661da7ee332d326f2e6619366ce8e221f018 \ + --hash=sha256:ed99b4f7179d2111702020fd7d156e88acd533f5a7d3971353e568b6051d5c97 \ + --hash=sha256:ee94cb58c0ba2c62ee108c2b7c9131b2c66a29e82746e8fa3aa1a1effbd3dcf1 \ + --hash=sha256:f19afcfc0dd0dca35694df441e9b0f95bc231b512f51bded3c3d8ca32153ec19 \ + --hash=sha256:f1b9d9260e06ea017feb7172976ab261e011c1dc2f8883c7c274f6b2aabfe01a \ + --hash=sha256:f28ac0e8e7242d140f99402a903a2c596ab71550272ae9247ad78f9a932b5698 \ + --hash=sha256:f42e25c016927e2a6b1ce748112c3ab134261fc2ddc867e92d02006103e1b1b7 \ + --hash=sha256:f4bd4578e44f26997e9e56c96dedc5f1af43cc9d16c4daa29c771a00b2a26851 \ + --hash=sha256:f811771019f063bbd0aa7bb72c8a934bc13ebacb4672d712fc1639cfd314cccc # via # jsonschema # referencing From 0c00d405b18fd8a9e776b54ee7d399d99528c5ec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 16:42:52 +0000 Subject: [PATCH 024/100] chore(deps-dev): bump mypy from 1.7.1 to 1.8.0 in /requirements (#6487) Bumps [mypy](https://github.com/python/mypy) from 1.7.1 to 1.8.0. - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/v1.7.1...v1.8.0) --- updated-dependencies: - dependency-name: mypy dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index a20c23809d1..d37ee0d2608 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -7,7 +7,7 @@ pytest-cov==4.1.0 # type checking and related stubs # mypy adds new rules in new minor versions, which could cause our PR check to fail # here we fix its version and upgrade it manually in the future -mypy==1.7.1 +mypy==1.8.0 types-pywin32==306.0.0.8 types-PyYAML==6.0.12.12 types-chevron==0.14.2.5 From be0eb703c844db2498fbb6919b0c8c20997a4943 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 16:43:07 +0000 Subject: [PATCH 025/100] chore(deps-dev): bump ruff from 0.1.8 to 0.1.11 in /requirements (#6505) Bumps [ruff](https://github.com/astral-sh/ruff) from 0.1.8 to 0.1.11. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/v0.1.8...v0.1.11) --- updated-dependencies: - dependency-name: ruff dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/pre-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/pre-dev.txt b/requirements/pre-dev.txt index e89c4992b0a..2f569f7fcc1 100644 --- a/requirements/pre-dev.txt +++ b/requirements/pre-dev.txt @@ -1 +1 @@ -ruff==0.1.8 +ruff==0.1.11 From 2bc924c1821146f29d2d91ac994bc9312580058a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 16:43:21 +0000 Subject: [PATCH 026/100] chore(deps): bump jsonschema-specifications in /requirements (#6493) Bumps [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) from 2023.11.2 to 2023.12.1. - [Release notes](https://github.com/python-jsonschema/jsonschema-specifications/releases) - [Commits](https://github.com/python-jsonschema/jsonschema-specifications/compare/v2023.11.2...v2023.12.1) --- updated-dependencies: - dependency-name: jsonschema-specifications dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index b7d119c7ae4..263977aac98 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -314,9 +314,9 @@ jsonschema==4.20.0 \ # aws-sam-cli (setup.py) # aws-sam-translator # cfn-lint -jsonschema-specifications==2023.11.2 \ - --hash=sha256:9472fc4fea474cd74bea4a2b190daeccb5a9e4db2ea80efcf7a1b582fc9a81b8 \ - --hash=sha256:e74ba7c0a65e8cb49dc26837d6cfe576557084a8b423ed16a420984228104f93 +jsonschema-specifications==2023.12.1 \ + --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ + --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c # via jsonschema junit-xml==1.9 \ --hash=sha256:de16a051990d4e25a3982b2dd9e89d671067548718866416faec14d9de56db9f \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index b03a6e48288..27106bfd063 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -342,9 +342,9 @@ jsonschema==4.20.0 \ # aws-sam-cli (setup.py) # aws-sam-translator # cfn-lint -jsonschema-specifications==2023.11.2 \ - --hash=sha256:9472fc4fea474cd74bea4a2b190daeccb5a9e4db2ea80efcf7a1b582fc9a81b8 \ - --hash=sha256:e74ba7c0a65e8cb49dc26837d6cfe576557084a8b423ed16a420984228104f93 +jsonschema-specifications==2023.12.1 \ + --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ + --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c # via jsonschema junit-xml==1.9 \ --hash=sha256:de16a051990d4e25a3982b2dd9e89d671067548718866416faec14d9de56db9f \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 485d2186557..f94d9256107 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -318,9 +318,9 @@ jsonschema==4.20.0 \ # aws-sam-cli (setup.py) # aws-sam-translator # cfn-lint -jsonschema-specifications==2023.11.2 \ - --hash=sha256:9472fc4fea474cd74bea4a2b190daeccb5a9e4db2ea80efcf7a1b582fc9a81b8 \ - --hash=sha256:e74ba7c0a65e8cb49dc26837d6cfe576557084a8b423ed16a420984228104f93 +jsonschema-specifications==2023.12.1 \ + --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ + --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c # via jsonschema junit-xml==1.9 \ --hash=sha256:de16a051990d4e25a3982b2dd9e89d671067548718866416faec14d9de56db9f \ From 75767039ceb456e65fcd541510a91b2408e30f8a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 16:44:35 +0000 Subject: [PATCH 027/100] chore(deps): bump the boto group in /requirements with 4 updates (#6512) Bumps the boto group in /requirements with 4 updates: [boto3](https://github.com/boto/boto3), [boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]](https://github.com/youtype/mypy_boto3_builder), [botocore](https://github.com/boto/botocore) and [botocore-stubs](https://github.com/youtype/botocore-stubs). Updates `boto3` from 1.34.9 to 1.34.12 - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.34.9...1.34.12) Updates `boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]` from 1.34.9 to 1.34.12 - [Release notes](https://github.com/youtype/mypy_boto3_builder/releases) - [Commits](https://github.com/youtype/mypy_boto3_builder/commits) Updates `botocore` from 1.34.9 to 1.34.12 - [Changelog](https://github.com/boto/botocore/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/botocore/compare/1.34.9...1.34.12) Updates `botocore-stubs` from 1.34.9 to 1.34.12 - [Release notes](https://github.com/youtype/botocore-stubs/releases) - [Commits](https://github.com/youtype/botocore-stubs/commits) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray] dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: botocore dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: botocore-stubs dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/base.txt | 2 +- requirements/reproducible-linux.txt | 24 ++++++++++++------------ requirements/reproducible-mac.txt | 24 ++++++++++++------------ requirements/reproducible-win.txt | 24 ++++++++++++------------ 4 files changed, 37 insertions(+), 37 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 66e77d161ae..c9bffe98797 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -31,4 +31,4 @@ tzlocal==5.2 cfn-lint~=0.83.5 # Type checking boto3 objects -boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.9 +boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.12 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 263977aac98..c8d693a0dbf 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -38,27 +38,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.9 \ - --hash=sha256:18c386a55e461749e6c9c8a10627a230db18a20dd72f2950ce19546974f15cd5 \ - --hash=sha256:8e48343d52389041af053992decf651bc4fc7b2d65eca12acdcff62d446ecdf4 +boto3==1.34.12 \ + --hash=sha256:67b763669f9eff10a55fe199875d6e66fda8051647af49f8b9b8fced674d75d7 \ + --hash=sha256:7d7eac86a2cbdfb8074927119da61884bfa29f3c504717d455371fc0a07c99d8 # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.9 \ - --hash=sha256:41220432e898a7a3fa60bb52ef2d49c864f5b38e2baa6a6235f57387325a242e \ - --hash=sha256:d75fa019e181fd87a23b7684684da47e3fba9c501bc4bd1d70ccef21c1b9bf8b +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.12 \ + --hash=sha256:f0ed25e31eab1ee9b0e8e8e1226160243b15be5b65129f0947cbe10915971a8a \ + --hash=sha256:f0f9ea058624e22359f4060a5aece334eaabb4173581b7b1e2fc41056d44f938 # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.9 \ - --hash=sha256:2cf43fa5b5438a95fc466c700f3098228b45df38e311103488554b2334b42ee3 \ - --hash=sha256:b40f027f371a1bd211ef67a3727c74bc3713af5fc5d830d4587abda296ebb19e +botocore==1.34.12 \ + --hash=sha256:346b0788f3bf4c68928db909170e4c7300119a22f9a2176bf5f764d3542997e8 \ + --hash=sha256:53dfc19d63f2b70821e9804b7ecfc5e50fc84d9bd6818359b27db629ef43ec59 # via # boto3 # s3transfer -botocore-stubs==1.34.9 \ - --hash=sha256:20a3c2ffc19dfa1ded192cafefca855f569f9e80b077ddc6390114432d7560c6 \ - --hash=sha256:55aed8679dce47b2ee1e35028826037b643b8897419ec4b7c493289ef0fd1bbf +botocore-stubs==1.34.12 \ + --hash=sha256:6f2414ea5c2aba7d67c8a6ab8d8090eb3cdaa58eec23c4c4949c512d01b7907a \ + --hash=sha256:bc0caf41c0e05464ea74a8c502d8e5e16761a2f9975ff598483b87c4c1d7f253 # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 27106bfd063..3949a471b7d 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -56,27 +56,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.9 \ - --hash=sha256:18c386a55e461749e6c9c8a10627a230db18a20dd72f2950ce19546974f15cd5 \ - --hash=sha256:8e48343d52389041af053992decf651bc4fc7b2d65eca12acdcff62d446ecdf4 +boto3==1.34.12 \ + --hash=sha256:67b763669f9eff10a55fe199875d6e66fda8051647af49f8b9b8fced674d75d7 \ + --hash=sha256:7d7eac86a2cbdfb8074927119da61884bfa29f3c504717d455371fc0a07c99d8 # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.9 \ - --hash=sha256:41220432e898a7a3fa60bb52ef2d49c864f5b38e2baa6a6235f57387325a242e \ - --hash=sha256:d75fa019e181fd87a23b7684684da47e3fba9c501bc4bd1d70ccef21c1b9bf8b +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.12 \ + --hash=sha256:f0ed25e31eab1ee9b0e8e8e1226160243b15be5b65129f0947cbe10915971a8a \ + --hash=sha256:f0f9ea058624e22359f4060a5aece334eaabb4173581b7b1e2fc41056d44f938 # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.9 \ - --hash=sha256:2cf43fa5b5438a95fc466c700f3098228b45df38e311103488554b2334b42ee3 \ - --hash=sha256:b40f027f371a1bd211ef67a3727c74bc3713af5fc5d830d4587abda296ebb19e +botocore==1.34.12 \ + --hash=sha256:346b0788f3bf4c68928db909170e4c7300119a22f9a2176bf5f764d3542997e8 \ + --hash=sha256:53dfc19d63f2b70821e9804b7ecfc5e50fc84d9bd6818359b27db629ef43ec59 # via # boto3 # s3transfer -botocore-stubs==1.34.9 \ - --hash=sha256:20a3c2ffc19dfa1ded192cafefca855f569f9e80b077ddc6390114432d7560c6 \ - --hash=sha256:55aed8679dce47b2ee1e35028826037b643b8897419ec4b7c493289ef0fd1bbf +botocore-stubs==1.34.12 \ + --hash=sha256:6f2414ea5c2aba7d67c8a6ab8d8090eb3cdaa58eec23c4c4949c512d01b7907a \ + --hash=sha256:bc0caf41c0e05464ea74a8c502d8e5e16761a2f9975ff598483b87c4c1d7f253 # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index f94d9256107..747bd951b65 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -38,27 +38,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.9 \ - --hash=sha256:18c386a55e461749e6c9c8a10627a230db18a20dd72f2950ce19546974f15cd5 \ - --hash=sha256:8e48343d52389041af053992decf651bc4fc7b2d65eca12acdcff62d446ecdf4 +boto3==1.34.12 \ + --hash=sha256:67b763669f9eff10a55fe199875d6e66fda8051647af49f8b9b8fced674d75d7 \ + --hash=sha256:7d7eac86a2cbdfb8074927119da61884bfa29f3c504717d455371fc0a07c99d8 # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.9 \ - --hash=sha256:41220432e898a7a3fa60bb52ef2d49c864f5b38e2baa6a6235f57387325a242e \ - --hash=sha256:d75fa019e181fd87a23b7684684da47e3fba9c501bc4bd1d70ccef21c1b9bf8b +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.12 \ + --hash=sha256:f0ed25e31eab1ee9b0e8e8e1226160243b15be5b65129f0947cbe10915971a8a \ + --hash=sha256:f0f9ea058624e22359f4060a5aece334eaabb4173581b7b1e2fc41056d44f938 # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.9 \ - --hash=sha256:2cf43fa5b5438a95fc466c700f3098228b45df38e311103488554b2334b42ee3 \ - --hash=sha256:b40f027f371a1bd211ef67a3727c74bc3713af5fc5d830d4587abda296ebb19e +botocore==1.34.12 \ + --hash=sha256:346b0788f3bf4c68928db909170e4c7300119a22f9a2176bf5f764d3542997e8 \ + --hash=sha256:53dfc19d63f2b70821e9804b7ecfc5e50fc84d9bd6818359b27db629ef43ec59 # via # boto3 # s3transfer -botocore-stubs==1.34.9 \ - --hash=sha256:20a3c2ffc19dfa1ded192cafefca855f569f9e80b077ddc6390114432d7560c6 \ - --hash=sha256:55aed8679dce47b2ee1e35028826037b643b8897419ec4b7c493289ef0fd1bbf +botocore-stubs==1.34.12 \ + --hash=sha256:6f2414ea5c2aba7d67c8a6ab8d8090eb3cdaa58eec23c4c4949c512d01b7907a \ + --hash=sha256:bc0caf41c0e05464ea74a8c502d8e5e16761a2f9975ff598483b87c4c1d7f253 # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ From e0193ad512e938bbb51836222566a78cfef34395 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 17:02:27 +0000 Subject: [PATCH 028/100] chore(deps): bump the types group in /requirements with 1 update (#6482) Bumps the types group in /requirements with 1 update: [types-s3transfer](https://github.com/youtype/types-s3transfer). Updates `types-s3transfer` from 0.9.0 to 0.10.0 - [Release notes](https://github.com/youtype/types-s3transfer/releases) - [Commits](https://github.com/youtype/types-s3transfer/commits) --- updated-dependencies: - dependency-name: types-s3transfer dependency-type: direct:production update-type: version-update:semver-minor dependency-group: types ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index c8d693a0dbf..422565854b2 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -946,9 +946,9 @@ types-python-dateutil==2.8.19.14 \ --hash=sha256:1f4f10ac98bb8b16ade9dbee3518d9ace017821d94b057a425b069f834737f4b \ --hash=sha256:f977b8de27787639986b4e28963263fd0e5158942b3ecef91b9335c130cb1ce9 # via arrow -types-s3transfer==0.9.0 \ - --hash=sha256:0f78c95c2ee390faad71735df35b6b81fca5bce4b864ac6a7707da2a845a5e86 \ - --hash=sha256:241e8b7b209c4064a451897bace1525ba64098a3ae955bdd0fb4b970cc69db73 +types-s3transfer==0.10.0 \ + --hash=sha256:35e4998c25df7f8985ad69dedc8e4860e8af3b43b7615e940d53c00d413bdc69 \ + --hash=sha256:44fcdf0097b924a9aab1ee4baa1179081a9559ca62a88c807e2b256893ce688f # via boto3-stubs typing-extensions==4.9.0 \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 3949a471b7d..21966b748c8 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -978,9 +978,9 @@ types-python-dateutil==2.8.19.14 \ --hash=sha256:1f4f10ac98bb8b16ade9dbee3518d9ace017821d94b057a425b069f834737f4b \ --hash=sha256:f977b8de27787639986b4e28963263fd0e5158942b3ecef91b9335c130cb1ce9 # via arrow -types-s3transfer==0.9.0 \ - --hash=sha256:0f78c95c2ee390faad71735df35b6b81fca5bce4b864ac6a7707da2a845a5e86 \ - --hash=sha256:241e8b7b209c4064a451897bace1525ba64098a3ae955bdd0fb4b970cc69db73 +types-s3transfer==0.10.0 \ + --hash=sha256:35e4998c25df7f8985ad69dedc8e4860e8af3b43b7615e940d53c00d413bdc69 \ + --hash=sha256:44fcdf0097b924a9aab1ee4baa1179081a9559ca62a88c807e2b256893ce688f # via boto3-stubs typing-extensions==4.9.0 \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 747bd951b65..a67cef09878 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -966,9 +966,9 @@ types-python-dateutil==2.8.19.14 \ --hash=sha256:1f4f10ac98bb8b16ade9dbee3518d9ace017821d94b057a425b069f834737f4b \ --hash=sha256:f977b8de27787639986b4e28963263fd0e5158942b3ecef91b9335c130cb1ce9 # via arrow -types-s3transfer==0.9.0 \ - --hash=sha256:0f78c95c2ee390faad71735df35b6b81fca5bce4b864ac6a7707da2a845a5e86 \ - --hash=sha256:241e8b7b209c4064a451897bace1525ba64098a3ae955bdd0fb4b970cc69db73 +types-s3transfer==0.10.0 \ + --hash=sha256:35e4998c25df7f8985ad69dedc8e4860e8af3b43b7615e940d53c00d413bdc69 \ + --hash=sha256:44fcdf0097b924a9aab1ee4baa1179081a9559ca62a88c807e2b256893ce688f # via boto3-stubs typing-extensions==4.9.0 \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ From 37d3a7b1996ff4978772dfca704e5a4e8e84cf35 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 18:18:55 +0000 Subject: [PATCH 029/100] chore(deps): bump cfn-lint from 0.83.5 to 0.83.7 in /requirements (#6488) Bumps [cfn-lint](https://github.com/aws-cloudformation/cfn-python-lint) from 0.83.5 to 0.83.7. - [Release notes](https://github.com/aws-cloudformation/cfn-python-lint/releases) - [Changelog](https://github.com/aws-cloudformation/cfn-lint/blob/main/CHANGELOG.md) - [Commits](https://github.com/aws-cloudformation/cfn-python-lint/compare/v0.83.5...v0.83.7) --- updated-dependencies: - dependency-name: cfn-lint dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/base.txt | 2 +- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index c9bffe98797..2925b7b145f 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -28,7 +28,7 @@ regex!=2021.10.8 tzlocal==5.2 #Adding cfn-lint dependency for SAM validate -cfn-lint~=0.83.5 +cfn-lint~=0.83.7 # Type checking boto3 objects boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.12 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 422565854b2..0d8ad041f98 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -118,9 +118,9 @@ cffi==1.16.0 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 # via cryptography -cfn-lint==0.83.5 \ - --hash=sha256:91145a94968f0f3c0095fcc4366602efb3b9f5eee413171845f298fa1227e0fa \ - --hash=sha256:97ed0b36f77defba9fe843d2401160c7bb2a81dd4478dd17859bac9f027da311 +cfn-lint==0.83.7 \ + --hash=sha256:9c335de744d4a4dd0b26f797dfd06a50214ba9f4f4bd149a59e31b22ac2e23fc \ + --hash=sha256:a6456de27b4fa6927fc5505b1efacc7c6d03676be14b2add4803c73dd97692ae # via aws-sam-cli (setup.py) chardet==5.2.0 \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 21966b748c8..9e7de7177e3 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -136,9 +136,9 @@ cffi==1.16.0 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 # via cryptography -cfn-lint==0.83.5 \ - --hash=sha256:91145a94968f0f3c0095fcc4366602efb3b9f5eee413171845f298fa1227e0fa \ - --hash=sha256:97ed0b36f77defba9fe843d2401160c7bb2a81dd4478dd17859bac9f027da311 +cfn-lint==0.83.7 \ + --hash=sha256:9c335de744d4a4dd0b26f797dfd06a50214ba9f4f4bd149a59e31b22ac2e23fc \ + --hash=sha256:a6456de27b4fa6927fc5505b1efacc7c6d03676be14b2add4803c73dd97692ae # via aws-sam-cli (setup.py) chardet==5.2.0 \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index a67cef09878..c9b92053d87 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -118,9 +118,9 @@ cffi==1.16.0 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 # via cryptography -cfn-lint==0.83.5 \ - --hash=sha256:91145a94968f0f3c0095fcc4366602efb3b9f5eee413171845f298fa1227e0fa \ - --hash=sha256:97ed0b36f77defba9fe843d2401160c7bb2a81dd4478dd17859bac9f027da311 +cfn-lint==0.83.7 \ + --hash=sha256:9c335de744d4a4dd0b26f797dfd06a50214ba9f4f4bd149a59e31b22ac2e23fc \ + --hash=sha256:a6456de27b4fa6927fc5505b1efacc7c6d03676be14b2add4803c73dd97692ae # via aws-sam-cli (setup.py) chardet==5.2.0 \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ From af9e38fc7ead351f608fe22334e405351a94b72b Mon Sep 17 00:00:00 2001 From: sidhujus <105385029+sidhujus@users.noreply.github.com> Date: Thu, 4 Jan 2024 10:19:15 -0800 Subject: [PATCH 030/100] fix: skip checks on non serverless api resources (#6471) * skip checks on non serverless api resources * fix comment * handle ApiGatewayV2 * add test * update comment --- samcli/commands/deploy/auth_utils.py | 6 ++++ tests/unit/commands/deploy/test_auth_utils.py | 29 +++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/samcli/commands/deploy/auth_utils.py b/samcli/commands/deploy/auth_utils.py index 7e13cd85931..cd12c19cd6d 100644 --- a/samcli/commands/deploy/auth_utils.py +++ b/samcli/commands/deploy/auth_utils.py @@ -7,6 +7,7 @@ from samcli.commands.local.lib.swagger.reader import SwaggerReader from samcli.lib.providers.provider import Stack from samcli.lib.providers.sam_function_provider import SamFunctionProvider +from samcli.lib.utils.resources import AWS_APIGATEWAY_RESTAPI, AWS_APIGATEWAY_V2_API LOG = logging.getLogger(__name__) @@ -101,6 +102,11 @@ def _auth_id(resources_dict, event_properties, identifier): """ resource_name = event_properties.get(identifier, "") api_resource = resources_dict.get(resource_name, {}) + + # Auth does not apply to ApiGateway::RestApi or ApiGatwayV2::Api resources so return true and continue + if api_resource and (api_resource.get("Type") in [AWS_APIGATEWAY_RESTAPI, AWS_APIGATEWAY_V2_API]): + return True + return any( [ api_resource.get("Properties", {}).get("Auth", False), diff --git a/tests/unit/commands/deploy/test_auth_utils.py b/tests/unit/commands/deploy/test_auth_utils.py index a5574c2c6fb..72f5123da4a 100644 --- a/tests/unit/commands/deploy/test_auth_utils.py +++ b/tests/unit/commands/deploy/test_auth_utils.py @@ -88,6 +88,35 @@ def test_auth_per_resource_defined_on_api_resource(self): _auth_per_resource = auth_per_resource([Stack("", "", "", {}, self.template_dict)]) self.assertEqual(_auth_per_resource, [("HelloWorldFunction", True)]) + def test_auth_per_resource_on_non_serverless_restapi(self): + self.template_dict["Resources"]["HelloWorldApi"] = OrderedDict( + [ + ("Type", "AWS::ApiGateway::RestApi"), + ("Properties", OrderedDict([("StageName", "Prod")])), + ] + ) + # setup the lambda function with a restapiId which has Auth defined. + self.template_dict["Resources"]["HelloWorldFunction"]["Properties"]["Events"]["HelloWorld"]["Properties"][ + "RestApiId" + ] = {"Ref": "HelloWorldApi"} + self.template_dict["Resources"]["HelloWorldFunction"]["Properties"]["Events"]["HelloWorld"]["Type"] = "Api" + _auth_per_resource = auth_per_resource([Stack("", "", "", {}, self.template_dict)]) + self.assertEqual(_auth_per_resource, [("HelloWorldFunction", True)]) + + def test_auth_per_resource_on_non_serverless_httpapi(self): + self.template_dict["Resources"]["HelloWorldApi"] = OrderedDict( + [ + ("Type", "AWS::ApiGatewayV2::Api"), + ] + ) + # setup the lambda function with a restapiId which has Auth defined. + self.template_dict["Resources"]["HelloWorldFunction"]["Properties"]["Events"]["HelloWorld"]["Properties"][ + "ApiId" + ] = {"Ref": "HelloWorldApi"} + self.template_dict["Resources"]["HelloWorldFunction"]["Properties"]["Events"]["HelloWorld"]["Type"] = "HttpApi" + _auth_per_resource = auth_per_resource([Stack("", "", "", {}, self.template_dict)]) + self.assertEqual(_auth_per_resource, [("HelloWorldFunction", True)]) + def test_auth_supplied_via_definition_body_uri(self): self.template_dict["Resources"]["HelloWorldApi"] = OrderedDict( [ From 5af0918f8c5ac69f03df69ad52dccc589169c032 Mon Sep 17 00:00:00 2001 From: Jared Bentvelsen Date: Thu, 4 Jan 2024 10:47:44 -0800 Subject: [PATCH 031/100] SAM Publish add flag to fail on duplicate semantic version (#6470) * Add flag, exceptions, fail on same version * testing & refactors * Integration test * Fix position of warning message in except clause * Format fixes * Reword flag description * Format comments * Schema * Refactors and reformats --------- Co-authored-by: Jared Bentvelsen --- samcli/commands/publish/command.py | 18 +- samcli/vendor/serverlessrepo/exceptions.py | 17 +- samcli/vendor/serverlessrepo/publish.py | 237 ++++++++++++++---- schema/samcli.json | 7 +- .../publish/publish_app_integ_base.py | 7 +- .../integration/publish/test_command_integ.py | 18 ++ tests/unit/commands/publish/test_command.py | 20 +- .../unit/commands/samconfig/test_samconfig.py | 2 +- .../vendor/serverlessrepo/test_publish.py | 47 +++- 9 files changed, 307 insertions(+), 66 deletions(-) diff --git a/samcli/commands/publish/command.py b/samcli/commands/publish/command.py index 22997f5e72b..5c9f6c31471 100644 --- a/samcli/commands/publish/command.py +++ b/samcli/commands/publish/command.py @@ -41,12 +41,18 @@ SERVERLESSREPO_CONSOLE_URL = "https://console.aws.amazon.com/serverlessrepo/home?region={}#/published-applications/{}" SEMANTIC_VERSION_HELP = "Optional. The value provided here overrides SemanticVersion in the template metadata." SEMANTIC_VERSION = "SemanticVersion" +FAIL_ON_SAME_VERSION = """ +If set, AWS SAM CLI will prevent a publish and return a non-zero exit code +if the publish is attempted with a semantic version that already exists on the SAR application. +Default is False. +""" @click.command("publish", help=HELP_TEXT, short_help=SHORT_HELP) @configuration_option(provider=ConfigProvider(section="parameters")) @template_common_option @click.option("--semantic-version", help=SEMANTIC_VERSION_HELP) +@click.option("--fail-on-same-version", default=False, required=False, is_flag=True, help=FAIL_ON_SAME_VERSION) @aws_creds_options @cli_framework_options @save_params_option @@ -59,21 +65,25 @@ def cli( ctx, template_file, semantic_version, + fail_on_same_version, save_params, config_file, config_env, ): # All logic must be implemented in the ``do_cli`` method. This helps with easy unit testing - do_cli(ctx, template_file, semantic_version) # pragma: no cover + do_cli(ctx, template_file, semantic_version, fail_on_same_version) # pragma: no cover -def do_cli(ctx, template, semantic_version): +def do_cli(ctx, template, semantic_version, fail_on_same_version): """Publish the application based on command line inputs.""" from samcli.commands.exceptions import UserException from samcli.vendor.serverlessrepo import publish_application - from samcli.vendor.serverlessrepo.exceptions import InvalidS3UriError, ServerlessRepoError + from samcli.vendor.serverlessrepo.exceptions import ( + InvalidS3UriError, + ServerlessRepoError, + ) from samcli.vendor.serverlessrepo.parser import METADATA, SERVERLESS_REPO_APPLICATION try: @@ -87,7 +97,7 @@ def do_cli(ctx, template, semantic_version): template_data.get(METADATA).get(SERVERLESS_REPO_APPLICATION)[SEMANTIC_VERSION] = semantic_version try: - publish_output = publish_application(template_data) + publish_output = publish_application(template=template_data, fail_on_same_version=fail_on_same_version) click.secho("Publish Succeeded", fg="green") click.secho(_gen_success_message(publish_output)) except InvalidS3UriError as ex: diff --git a/samcli/vendor/serverlessrepo/exceptions.py b/samcli/vendor/serverlessrepo/exceptions.py index ea73eae3438..06717c4428c 100644 --- a/samcli/vendor/serverlessrepo/exceptions.py +++ b/samcli/vendor/serverlessrepo/exceptions.py @@ -6,9 +6,10 @@ class ServerlessRepoError(Exception): MESSAGE = "" - def __init__(self, **kwargs): + def __init__(self, message=None, **kwargs): """Init the exception object.""" - Exception.__init__(self, self.MESSAGE.format(**kwargs)) + message = self.MESSAGE.format(**kwargs) if message is None else message + Exception.__init__(self, message) class InvalidApplicationMetadataError(ServerlessRepoError): @@ -41,6 +42,18 @@ class InvalidS3UriError(ServerlessRepoError): MESSAGE = "{message}" +class MissingSemanticVersionError(ServerlessRepoError): + """Raised when a required semantic version is not provided""" + + # If --fail-on-same-version is set, then a Semantic Version is required + + +class DuplicateSemanticVersionError(ServerlessRepoError): + """Raised when a publish is attempted with a Semantic Version that already exists""" + + # If --fail-on-same-version is set, then publish fails on duplicate semantic versions + + class ServerlessRepoClientError(ServerlessRepoError): """Wrapper for botocore ClientError.""" diff --git a/samcli/vendor/serverlessrepo/publish.py b/samcli/vendor/serverlessrepo/publish.py index ed19af9d285..603755bce70 100644 --- a/samcli/vendor/serverlessrepo/publish.py +++ b/samcli/vendor/serverlessrepo/publish.py @@ -1,6 +1,7 @@ """Module containing functions to publish or update application.""" import copy +import logging import re import boto3 @@ -9,25 +10,55 @@ from samcli.yamlhelper import yaml_dump from .application_metadata import ApplicationMetadata -from .exceptions import InvalidS3UriError, S3PermissionsRequired, ServerlessRepoClientError +from .exceptions import ( + DuplicateSemanticVersionError, + InvalidS3UriError, + MissingSemanticVersionError, + S3PermissionsRequired, + ServerlessRepoClientError, +) from .parser import get_app_metadata, parse_application_id, parse_template, strip_app_metadata +LOG = logging.getLogger(__name__) + CREATE_APPLICATION = "CREATE_APPLICATION" UPDATE_APPLICATION = "UPDATE_APPLICATION" CREATE_APPLICATION_VERSION = "CREATE_APPLICATION_VERSION" -def publish_application(template, sar_client=None): +def publish_application(template, sar_client=None, fail_on_same_version=False): """ Create a new application or new application version in SAR. - :param template: Content of a packaged YAML or JSON SAM template - :type template: str_or_dict - :param sar_client: The boto3 client used to access SAR - :type sar_client: boto3.client - :return: Dictionary containing application id, actions taken, and updated details - :rtype: dict - :raises ValueError + Parameters + ---------- + template: str | dict + Content of a packaged YAML or JSON SAM template + + sar_client: boto3.client + The boto3 client used to access SAR + + fail_on_same_version: bool + Whether or not publish hard fails when a duplicate semantic version is provided + + Returns + ------- + dict + Dictionary containing application id, actions taken, and updated details + + Raises + ------ + ValueError + If the template is null + + ClientError + If sar client operations fail + + MissingSemanticVersionError + If --fail-on-same-version is set in sam publish command but no semantic version is provided + + DuplicateSemanticVersionError + If --fail-on-same-version is set in sam publish command and the provided semantic version already exists """ if not template: raise ValueError("Require SAM template to publish the application") @@ -51,6 +82,31 @@ def publish_application(template, sar_client=None): # Update the application if it already exists error_message = e.response["Error"]["Message"] application_id = parse_application_id(error_message) + + if fail_on_same_version: + if not app_metadata.semantic_version: + raise MissingSemanticVersionError( + "--fail-on-same-version is set, but no semantic version is specified.\n" + "Please provide a semantic version in either the " + "template metadata or with the --semantic-version option." + ) + + semantic_version = app_metadata.semantic_version + + # Check if the given semantic version already exists + try: + application_exists = _check_app_with_semantic_version_exists( + sar_client, application_id, semantic_version + ) + except ClientError as e: + raise _wrap_client_error(e) + + if application_exists: + raise DuplicateSemanticVersionError( + f"Cannot publish version {semantic_version} for application " + f"{application_id} because it already exists" + ) + try: request = _update_application_request(app_metadata, application_id) sar_client.update_application(**request) @@ -68,6 +124,10 @@ def publish_application(template, sar_client=None): if not _is_conflict_exception(e): raise _wrap_client_error(e) + LOG.warning( + "WARNING: Publishing with semantic version that already exists. This may cause issues deploying." + ) + return { "application_id": application_id, "actions": actions, @@ -75,15 +135,63 @@ def publish_application(template, sar_client=None): } +def _check_app_with_semantic_version_exists(sar_client, application_id, semantic_version): + """ + Checks if a given SAR application exists with a given semantic version + + Parameters + ---------- + sar_client: boto3.client + The boto3 client used to access SAR + + application_id: str + Application Id to check + + semantic_version: str + The semantic version to check with Application Id + + Returns + ------- + bool + Whether or not the given Application exists with the given semantic version + + Raises + ------ + ClientError + If the sar client operations fail + + """ + + # SAR API does not have a direct method to check if an application exists + # with a given semantic version, but if it does not exist, a NotFoundException is thrown. + try: + sar_client.get_application(ApplicationId=application_id, SemanticVersion=semantic_version) + return True + except ClientError as error: + if error.response["Error"]["Code"] == "NotFoundException": + return False + else: + raise error + + def _get_template_dict(template): """ Parse string template and or copy dictionary template. - :param template: Content of a packaged YAML or JSON SAM template - :type template: str_or_dict - :return: Template as a dictionary - :rtype: dict - :raises ValueError + Parameters + ---------- + template: str | dict + Content of a packaged YAML or JSON SAM template + + Returns + ------- + dict + Template as a dictionary + + Raises + ------ + ValueError + If the supplied template is not a string or dictionary """ if isinstance(template, str): return parse_template(template) @@ -98,12 +206,18 @@ def _create_application_request(app_metadata, template): """ Construct the request body to create application. - :param app_metadata: Object containing app metadata - :type app_metadata: ApplicationMetadata - :param template: A packaged YAML or JSON SAM template - :type template: str - :return: SAR CreateApplication request body - :rtype: dict + Parameters + ---------- + app_metadata: ApplicationMetadata + Object containing app metadata + + template: str + A packaged YAML or JSON SAM template + + Returns + ------- + dict + SAR CreateApplication request body """ app_metadata.validate(["author", "description", "name"]) request = { @@ -129,12 +243,18 @@ def _update_application_request(app_metadata, application_id): """ Construct the request body to update application. - :param app_metadata: Object containing app metadata - :type app_metadata: ApplicationMetadata - :param application_id: The Amazon Resource Name (ARN) of the application - :type application_id: str - :return: SAR UpdateApplication request body - :rtype: dict + Parameters + ---------- + app_metadata: ApplicationMetadata + Object containing app metadata + + application_id: str + The Amazon Resource Name (ARN) of the application + + Returns + ------- + dict + SAR CreateApplication request body """ request = { "ApplicationId": application_id, @@ -152,14 +272,21 @@ def _create_application_version_request(app_metadata, application_id, template): """ Construct the request body to create application version. - :param app_metadata: Object containing app metadata - :type app_metadata: ApplicationMetadata - :param application_id: The Amazon Resource Name (ARN) of the application - :type application_id: str - :param template: A packaged YAML or JSON SAM template - :type template: str - :return: SAR CreateApplicationVersion request body - :rtype: dict + Parameters + ---------- + app_metadata: ApplicationMetadata + Object containing app metadata + + application_id: str + The Amazon Resource Name (ARN) of the application + + template: str + A packaged YAML or JSON SAM template + + Returns + ------- + dict + SAR CreateApplication request body """ app_metadata.validate(["semantic_version"]) request = { @@ -175,9 +302,15 @@ def _is_conflict_exception(e): """ Check whether the botocore ClientError is ConflictException. - :param e: botocore exception - :type e: ClientError - :return: True if e is ConflictException + Parameters + ---------- + e: ClientError + botocore exception + + Returns + ------- + bool + True if e is ConflictException, False otherwise """ error_code = e.response["Error"]["Code"] return error_code == "ConflictException" @@ -187,9 +320,15 @@ def _wrap_client_error(e): """ Wrap botocore ClientError exception into ServerlessRepoClientError. - :param e: botocore exception - :type e: ClientError - :return: S3PermissionsRequired or InvalidS3UriError or general ServerlessRepoClientError + Parameters + ---------- + e: ClientError + botocore exception + + Returns + ------- + ServerlessRepoError + S3PermissionsRequired or InvalidS3UriError or general ServerlessRepoClientError """ error_code = e.response["Error"]["Code"] message = e.response["Error"]["Message"] @@ -209,12 +348,18 @@ def _get_publish_details(actions, app_metadata_template): """ Get the changed application details after publishing. - :param actions: Actions taken during publishing - :type actions: list of str - :param app_metadata_template: Original template definitions of app metadata - :type app_metadata_template: dict - :return: Updated fields and values of the application - :rtype: dict + Parameters + ---------- + actions: str | list + Actions taken during publishing + + app_metadata_template: dict + Original template definitions of app metadata + + Returns + ------- + dict + Updated fields and values of the application """ if actions == [CREATE_APPLICATION]: return {k: v for k, v in app_metadata_template.items() if v} diff --git a/schema/samcli.json b/schema/samcli.json index c620315e8cb..0ca80e4bd18 100644 --- a/schema/samcli.json +++ b/schema/samcli.json @@ -1412,7 +1412,7 @@ "properties": { "parameters": { "title": "Parameters for the publish command", - "description": "Available parameters for the publish command:\n* template_file:\nAWS SAM template which references built artifacts for resources in the template. (if applicable)\n* semantic_version:\nOptional. The value provided here overrides SemanticVersion in the template metadata.\n* profile:\nSelect a specific profile from your credential file to get AWS credentials.\n* region:\nSet the AWS Region of the service. (e.g. us-east-1)\n* beta_features:\nEnable/Disable beta features.\n* debug:\nTurn on debug logging to print debug message generated by AWS SAM CLI and display timestamps.\n* save_params:\nSave the parameters provided via the command line to the configuration file.", + "description": "Available parameters for the publish command:\n* template_file:\nAWS SAM template which references built artifacts for resources in the template. (if applicable)\n* semantic_version:\nOptional. The value provided here overrides SemanticVersion in the template metadata.\n* fail_on_same_version:\nIf set, AWS SAM CLI will prevent a publish and return a non-zero exit code\nif the publish is attempted with a semantic version that already exists on the SAR application.\nDefault is False.\n* profile:\nSelect a specific profile from your credential file to get AWS credentials.\n* region:\nSet the AWS Region of the service. (e.g. us-east-1)\n* beta_features:\nEnable/Disable beta features.\n* debug:\nTurn on debug logging to print debug message generated by AWS SAM CLI and display timestamps.\n* save_params:\nSave the parameters provided via the command line to the configuration file.", "type": "object", "properties": { "template_file": { @@ -1426,6 +1426,11 @@ "type": "string", "description": "Optional. The value provided here overrides SemanticVersion in the template metadata." }, + "fail_on_same_version": { + "title": "fail_on_same_version", + "type": "boolean", + "description": "If set, AWS SAM CLI will prevent a publish and return a non-zero exit code\nif the publish is attempted with a semantic version that already exists on the SAR application.\nDefault is False." + }, "profile": { "title": "profile", "type": "string", diff --git a/tests/integration/publish/publish_app_integ_base.py b/tests/integration/publish/publish_app_integ_base.py index b8480c1a273..faa2895f192 100644 --- a/tests/integration/publish/publish_app_integ_base.py +++ b/tests/integration/publish/publish_app_integ_base.py @@ -80,7 +80,9 @@ def assert_metadata_details(self, app_metadata, std_output): for key, value in app_metadata.items(): self.assertIn('"{}":{}'.format(key, json.dumps(value)), stripped_std_output) - def get_command_list(self, template_path=None, region=None, profile=None, semantic_version=None): + def get_command_list( + self, template_path=None, region=None, profile=None, semantic_version=None, fail_on_same_version=None + ): command_list = [get_sam_command(), "publish"] if template_path: @@ -95,4 +97,7 @@ def get_command_list(self, template_path=None, region=None, profile=None, semant if semantic_version: command_list = command_list + ["--semantic-version", semantic_version] + if fail_on_same_version: + command_list = command_list + ["--fail-on-same-version"] + return command_list diff --git a/tests/integration/publish/test_command_integ.py b/tests/integration/publish/test_command_integ.py index 6d6d759f2bc..b7cc2bf0ff2 100644 --- a/tests/integration/publish/test_command_integ.py +++ b/tests/integration/publish/test_command_integ.py @@ -74,6 +74,24 @@ def test_update_application_version_with_semantic_version_option(self): app_metadata[SEMANTIC_VERSION] = "0.1.0" self.assert_metadata_details(app_metadata, result.stdout.decode("utf-8")) + @pytest.mark.flaky(reruns=3) + def test_update_application_fail_on_same_semantic_version(self): + template_path = self.temp_dir.joinpath("template_create_app_version.yaml") + command_list = self.get_command_list( + template_path=template_path, region=self.region_name, semantic_version="0.1.0" + ) + # Publish the version initially + run_command(command_list) + + second_command_list = self.get_command_list( + template_path=template_path, region=self.region_name, semantic_version="0.1.0", fail_on_same_version=True + ) + + # Attempt to publish again with the same semantic version and with --fail-on-same-version + result = run_command(second_command_list) + expected_msg = "Cannot publish version 0.1.0 for application" + self.assertIn(expected_msg, result.stderr.decode("utf-8")) + @skipIf(SKIP_PUBLISH_TESTS, "Skip publish tests in CI/CD only") class TestPublishNewApp(PublishAppIntegBase): diff --git a/tests/unit/commands/publish/test_command.py b/tests/unit/commands/publish/test_command.py index ce0c124040b..28bfa716e41 100644 --- a/tests/unit/commands/publish/test_command.py +++ b/tests/unit/commands/publish/test_command.py @@ -30,7 +30,7 @@ def setUp(self): def test_must_raise_if_invalid_template(self, exception_to_raise, click_mock, get_template_data_mock): get_template_data_mock.side_effect = exception_to_raise("Template not found") with self.assertRaises(exception_to_raise) as context: - publish_cli(self.ctx_mock, self.template, None) + publish_cli(self.ctx_mock, self.template, None, False) message = str(context.exception) self.assertEqual("Template not found", message) @@ -42,7 +42,7 @@ def test_must_raise_if_invalid_template(self, exception_to_raise, click_mock, ge def test_must_raise_if_serverlessrepo_error(self, click_mock, publish_application_mock): publish_application_mock.side_effect = ServerlessRepoError() with self.assertRaises(UserException): - publish_cli(self.ctx_mock, self.template, None) + publish_cli(self.ctx_mock, self.template, None, False) click_mock.secho.assert_called_with("Publish Failed", fg="red") @@ -52,7 +52,7 @@ def test_must_raise_if_serverlessrepo_error(self, click_mock, publish_applicatio def test_must_raise_if_invalid_S3_uri_error(self, click_mock, publish_application_mock): publish_application_mock.side_effect = InvalidS3UriError(message="") with self.assertRaises(UserException) as context: - publish_cli(self.ctx_mock, self.template, None) + publish_cli(self.ctx_mock, self.template, None, False) message = str(context.exception) self.assertTrue("Your SAM template contains invalid S3 URIs" in message) @@ -68,7 +68,7 @@ def test_must_succeed_to_create_application(self, click_mock, publish_applicatio "actions": [CREATE_APPLICATION], } - publish_cli(self.ctx_mock, self.template, None) + publish_cli(self.ctx_mock, self.template, None, False) details_str = json.dumps({"attr1": "value1"}, indent=2) expected_msg = "Created new application with the following metadata:\n{}" expected_link = self.console_link.format(self.ctx_mock.region, self.application_id.replace("/", "~")) @@ -90,7 +90,7 @@ def test_must_succeed_to_update_application(self, click_mock, publish_applicatio "actions": [UPDATE_APPLICATION], } - publish_cli(self.ctx_mock, self.template, None) + publish_cli(self.ctx_mock, self.template, None, False) details_str = json.dumps({"attr1": "value1"}, indent=2) expected_msg = 'The following metadata of application "{}" has been updated:\n{}' expected_link = self.console_link.format(self.ctx_mock.region, self.application_id.replace("/", "~")) @@ -118,7 +118,7 @@ def test_print_console_link_if_context_region_not_set(self, click_mock, boto3_mo session_mock.region_name = "us-west-1" boto3_mock.Session.return_value = session_mock - publish_cli(self.ctx_mock, self.template, None) + publish_cli(self.ctx_mock, self.template, None, False) expected_link = self.console_link.format(session_mock.region_name, self.application_id.replace("/", "~")) click_mock.secho.assert_called_with(expected_link, fg="yellow") @@ -128,8 +128,8 @@ def test_must_use_template_semantic_version(self, publish_application_mock, get_ template_data = {METADATA: {SERVERLESS_REPO_APPLICATION: {SEMANTIC_VERSION: "0.1"}}} get_template_data_mock.return_value = template_data publish_application_mock.return_value = {"application_id": self.application_id, "details": {}, "actions": {}} - publish_cli(self.ctx_mock, self.template, None) - publish_application_mock.assert_called_with(template_data) + publish_cli(self.ctx_mock, self.template, None, False) + publish_application_mock.assert_called_with(template=template_data, fail_on_same_version=False) @patch("samcli.commands.publish.command.get_template_data") @patch("samcli.vendor.serverlessrepo.publish_application") @@ -138,6 +138,6 @@ def test_must_override_template_semantic_version(self, publish_application_mock, get_template_data_mock.return_value = template_data publish_application_mock.return_value = {"application_id": self.application_id, "details": {}, "actions": {}} - publish_cli(self.ctx_mock, self.template, "0.2") + publish_cli(self.ctx_mock, self.template, "0.2", False) expected_template_data = {METADATA: {SERVERLESS_REPO_APPLICATION: {SEMANTIC_VERSION: "0.2"}}} - publish_application_mock.assert_called_with(expected_template_data) + publish_application_mock.assert_called_with(template=expected_template_data, fail_on_same_version=False) diff --git a/tests/unit/commands/samconfig/test_samconfig.py b/tests/unit/commands/samconfig/test_samconfig.py index f1860559e92..dd1f8578cce 100644 --- a/tests/unit/commands/samconfig/test_samconfig.py +++ b/tests/unit/commands/samconfig/test_samconfig.py @@ -908,7 +908,7 @@ def test_publish(self, do_cli_mock): LOG.exception("Command failed", exc_info=result.exc_info) self.assertIsNone(result.exception) - do_cli_mock.assert_called_with(ANY, str(Path(os.getcwd(), "mytemplate.yaml")), "0.1.1") + do_cli_mock.assert_called_with(ANY, str(Path(os.getcwd(), "mytemplate.yaml")), "0.1.1", False) @patch("samcli.cli.main.gather_system_info") @patch("samcli.cli.main.gather_additional_dependencies_info") diff --git a/tests/unit/vendor/serverlessrepo/test_publish.py b/tests/unit/vendor/serverlessrepo/test_publish.py index f0519a84776..78b1ec3a8d4 100644 --- a/tests/unit/vendor/serverlessrepo/test_publish.py +++ b/tests/unit/vendor/serverlessrepo/test_publish.py @@ -10,6 +10,8 @@ S3PermissionsRequired, InvalidS3UriError, ServerlessRepoClientError, + DuplicateSemanticVersionError, + MissingSemanticVersionError, ) from samcli.vendor.serverlessrepo.parser import get_app_metadata, strip_app_metadata from samcli.vendor.serverlessrepo.publish import CREATE_APPLICATION, UPDATE_APPLICATION, CREATE_APPLICATION_VERSION @@ -198,7 +200,11 @@ def test_publish_wrap_client_error_when_update_application(self, wrap_client_err # create_application_version shouldn't be called if update_application fails self.serverlessrepo_mock.create_application_version.assert_not_called() - def test_publish_existing_application_should_update_application_if_version_exists(self): + @patch("samcli.vendor.serverlessrepo.publish.LOG") + @patch("samcli.vendor.serverlessrepo.publish._check_app_with_semantic_version_exists") + def test_publish_existing_application_should_update_application_if_version_exists( + self, _check_app_with_semantic_version_exists_patch, LOG_patch + ): self.serverlessrepo_mock.create_application.side_effect = self.application_exists_error self.serverlessrepo_mock.create_application_version.side_effect = ClientError( {"Error": {"Code": "ConflictException", "Message": "Random"}}, "create_application_version" @@ -222,6 +228,12 @@ def test_publish_existing_application_should_update_application_if_version_exist self.serverlessrepo_mock.create_application.assert_called_once() self.serverlessrepo_mock.update_application.assert_called_once() self.serverlessrepo_mock.create_application_version.assert_called_once() + # If --fail-on-same-version is not specified, warning is printed + LOG_patch.warning.assert_called_once_with( + "WARNING: Publishing with semantic version that already exists. This may cause issues deploying." + ) + + _check_app_with_semantic_version_exists_patch.assert_not_called() def test_publish_new_version_should_create_application_version(self): self.serverlessrepo_mock.create_application.side_effect = self.application_exists_error @@ -332,6 +344,39 @@ def test_update_application_with_readmebody(self): } self.assertEqual(expected_result, actual_result) + def test_semantic_version_publish_succeeds(self): + # If the supplied semantic version does not exist with the --fail-on-same-version flag, + # publish should succeed + sar_client = Mock() + sar_client.create_application.side_effect = self.application_exists_error + sar_client.get_application.side_effect = ClientError( + error_response={"Error": {"Code": "NotFoundException", "Message": "Application does not exist"}}, + operation_name="get_application", + ) + + publish_application(self.template, sar_client, fail_on_same_version=True) + + @patch("samcli.vendor.serverlessrepo.publish._check_app_with_semantic_version_exists") + def test_fail_update_on_same_semantic_version(self, check_app_with_semantic_version_exists_patch): + sar_client = Mock() + sar_client.create_application.side_effect = self.application_exists_error + + check_app_with_semantic_version_exists_patch.return_value = True + + with self.assertRaises(DuplicateSemanticVersionError): + publish_application(self.template, sar_client, fail_on_same_version=True) + + @patch("samcli.vendor.serverlessrepo.publish._check_app_with_semantic_version_exists") + def test_fail_update_on_no_semantic_version(self, check_app_with_semantic_version_exists_patch): + sar_client = Mock() + sar_client.create_application.side_effect = self.application_exists_error + template_without_version = self.template.replace('"SemanticVersion": "1.0.0"', "") + + check_app_with_semantic_version_exists_patch.return_value = True + + with self.assertRaises(MissingSemanticVersionError): + publish_application(template_without_version, sar_client, fail_on_same_version=True) + class TestUpdateApplicationMetadata(TestCase): def setUp(self): From e4ae660993a62fdc6ed3ebbbea914797dfeab06d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 12:15:29 -0800 Subject: [PATCH 032/100] chore(deps): bump docker from 6.1.3 to 7.0.0 in /requirements (#6431) * chore(deps): bump docker from 6.1.3 to 7.0.0 in /requirements Bumps [docker](https://github.com/docker/docker-py) from 6.1.3 to 7.0.0. - [Release notes](https://github.com/docker/docker-py/releases) - [Commits](https://github.com/docker/docker-py/compare/6.1.3...7.0.0) --- updated-dependencies: - dependency-name: docker dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Update reproducibles: update-reproducible-linux-reqs * Update reproducibles: update-reproducible-mac-reqs * Update reproducibles: update-reproducible-win-reqs --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: GitHub Action Co-authored-by: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com> Co-authored-by: Lucas <12496191+lucashuy@users.noreply.github.com> --- requirements/base.txt | 2 +- requirements/reproducible-linux.txt | 10 +++------- requirements/reproducible-mac.txt | 10 +++------- requirements/reproducible-win.txt | 10 +++------- 4 files changed, 10 insertions(+), 22 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 2925b7b145f..d32a3a79d82 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -8,7 +8,7 @@ PyYAML~=6.0,>=6.0.1 cookiecutter~=2.5.0 aws-sam-translator==1.82.0 #docker minor version updates can include breaking changes. Auto update micro version only. -docker~=6.1.0 +docker~=7.0.0 dateparser~=1.2 requests~=2.31.0 aws_lambda_builders==1.45.0 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 0d8ad041f98..9a4ece6febe 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -262,9 +262,9 @@ dateparser==1.2.0 \ --hash=sha256:0b21ad96534e562920a0083e97fd45fa959882d4162acc358705144520a35830 \ --hash=sha256:7975b43a4222283e0ae15be7b4999d08c9a70e2d378ac87385b1ccf2cffbbb30 # via aws-sam-cli (setup.py) -docker==6.1.3 \ - --hash=sha256:aa6d17830045ba5ef0168d5eaa34d37beeb113948c413affe1d5991fc11f9a20 \ - --hash=sha256:aecd2277b8bf8e506e484f6ab7aec39abe0038e29fa4a6d3ba86c3fe01844ed9 +docker==7.0.0 \ + --hash=sha256:12ba681f2777a0ad28ffbcc846a69c31b4dfd9752b47eb425a274ee269c5e14b \ + --hash=sha256:323736fb92cd9418fc5e7133bc953e11a9da04f4483f828b527db553f1e7e5a3 # via aws-sam-cli (setup.py) flask==3.0.0 \ --hash=sha256:21128f47e4e3b9d597a3e8521a329bf56909b690fcc3fa3e477725aa81367638 \ @@ -1015,10 +1015,6 @@ watchdog==3.0.0 \ --hash=sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44 \ --hash=sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33 # via aws-sam-cli (setup.py) -websocket-client==1.7.0 \ - --hash=sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6 \ - --hash=sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588 - # via docker werkzeug==3.0.1 \ --hash=sha256:507e811ecea72b18a404947aded4b3390e1db8f826b494d76550ef45bb3b1dcc \ --hash=sha256:90a285dc0e42ad56b34e696398b8122ee4c681833fb35b8334a095d82c56da10 diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 9e7de7177e3..5fbc4e56f25 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -280,9 +280,9 @@ dateparser==1.2.0 \ --hash=sha256:0b21ad96534e562920a0083e97fd45fa959882d4162acc358705144520a35830 \ --hash=sha256:7975b43a4222283e0ae15be7b4999d08c9a70e2d378ac87385b1ccf2cffbbb30 # via aws-sam-cli (setup.py) -docker==6.1.3 \ - --hash=sha256:aa6d17830045ba5ef0168d5eaa34d37beeb113948c413affe1d5991fc11f9a20 \ - --hash=sha256:aecd2277b8bf8e506e484f6ab7aec39abe0038e29fa4a6d3ba86c3fe01844ed9 +docker==7.0.0 \ + --hash=sha256:12ba681f2777a0ad28ffbcc846a69c31b4dfd9752b47eb425a274ee269c5e14b \ + --hash=sha256:323736fb92cd9418fc5e7133bc953e11a9da04f4483f828b527db553f1e7e5a3 # via aws-sam-cli (setup.py) flask==3.0.0 \ --hash=sha256:21128f47e4e3b9d597a3e8521a329bf56909b690fcc3fa3e477725aa81367638 \ @@ -1050,10 +1050,6 @@ watchdog==3.0.0 \ --hash=sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44 \ --hash=sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33 # via aws-sam-cli (setup.py) -websocket-client==1.7.0 \ - --hash=sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6 \ - --hash=sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588 - # via docker werkzeug==3.0.1 \ --hash=sha256:507e811ecea72b18a404947aded4b3390e1db8f826b494d76550ef45bb3b1dcc \ --hash=sha256:90a285dc0e42ad56b34e696398b8122ee4c681833fb35b8334a095d82c56da10 diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index c9b92053d87..8acb82224dc 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -266,9 +266,9 @@ dateparser==1.2.0 \ --hash=sha256:0b21ad96534e562920a0083e97fd45fa959882d4162acc358705144520a35830 \ --hash=sha256:7975b43a4222283e0ae15be7b4999d08c9a70e2d378ac87385b1ccf2cffbbb30 # via aws-sam-cli (setup.py) -docker==6.1.3 \ - --hash=sha256:aa6d17830045ba5ef0168d5eaa34d37beeb113948c413affe1d5991fc11f9a20 \ - --hash=sha256:aecd2277b8bf8e506e484f6ab7aec39abe0038e29fa4a6d3ba86c3fe01844ed9 +docker==7.0.0 \ + --hash=sha256:12ba681f2777a0ad28ffbcc846a69c31b4dfd9752b47eb425a274ee269c5e14b \ + --hash=sha256:323736fb92cd9418fc5e7133bc953e11a9da04f4483f828b527db553f1e7e5a3 # via aws-sam-cli (setup.py) flask==3.0.0 \ --hash=sha256:21128f47e4e3b9d597a3e8521a329bf56909b690fcc3fa3e477725aa81367638 \ @@ -1039,10 +1039,6 @@ watchdog==3.0.0 \ --hash=sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44 \ --hash=sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33 # via aws-sam-cli (setup.py) -websocket-client==1.7.0 \ - --hash=sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6 \ - --hash=sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588 - # via docker werkzeug==3.0.1 \ --hash=sha256:507e811ecea72b18a404947aded4b3390e1db8f826b494d76550ef45bb3b1dcc \ --hash=sha256:90a285dc0e42ad56b34e696398b8122ee4c681833fb35b8334a095d82c56da10 From a36fedc5c2f5a65dcb08cd8eae2c7e7d50dd2c3e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 20:56:05 +0000 Subject: [PATCH 033/100] chore(deps): bump actions/upload-artifact from 3 to 4 (#6458) * chore(deps): bump actions/upload-artifact from 3 to 4 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * chore: Revert upload artifact version in linux installer to keep glibc version --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Daniel Mil --- .github/workflows/validate_pyinstaller.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/validate_pyinstaller.yml b/.github/workflows/validate_pyinstaller.yml index 912b0b73dda..9049443ff45 100644 --- a/.github/workflows/validate_pyinstaller.yml +++ b/.github/workflows/validate_pyinstaller.yml @@ -66,7 +66,7 @@ jobs: sudo ./sam-installation/install sam-beta --version ./tests/sanity-check.sh - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: pyinstaller-macos-zip path: .build/output/aws-sam-cli-macos-x86_64.zip From ff7fd48f461b747541ce871bb6071911c61dd79c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 20:56:12 +0000 Subject: [PATCH 034/100] chore(deps): bump actions/setup-go from 4 to 5 (#6413) * chore(deps): bump actions/setup-go from 4 to 5 Bumps [actions/setup-go](https://github.com/actions/setup-go) from 4 to 5. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/setup-go dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * bump go version in validate_pyinstaller GH action * chore: Revert go version in linux installer to keep glibc version --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Co-authored-by: Haresh Nasit Co-authored-by: Daniel Mil --- .github/workflows/build.yml | 2 +- .github/workflows/validate_pyinstaller.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8fb2f413b8b..314ca5414f4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -145,7 +145,7 @@ jobs: 3.11 3.12 ${{ matrix.python }} - - uses: actions/setup-go@v4 + - uses: actions/setup-go@v5 with: go-version: '1.19' - uses: ruby/setup-ruby@v1 diff --git a/.github/workflows/validate_pyinstaller.yml b/.github/workflows/validate_pyinstaller.yml index 9049443ff45..4eefae4cb36 100644 --- a/.github/workflows/validate_pyinstaller.yml +++ b/.github/workflows/validate_pyinstaller.yml @@ -53,7 +53,7 @@ jobs: with: python-version: "3.8" - name: Set up Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: "1.20" - name: Build PyInstaller From c49c2189815405d936c5f9529c2bb261e629d44d Mon Sep 17 00:00:00 2001 From: sidhujus <105385029+sidhujus@users.noreply.github.com> Date: Fri, 5 Jan 2024 11:16:44 -0800 Subject: [PATCH 035/100] Fix: sam invoke local throw error 'utf-8' codec can't decode byte 0xff (#6509) * accept bytes to be returned from lambda * add tests for stream writer * fix error * update doc strings and remove leftover comments * add integ test * change image * pr feedback * remove duplicate assignment --- samcli/lib/utils/stream_writer.py | 31 +++++++- .../apigw/authorizers/lambda_authorizer.py | 10 +-- samcli/local/apigw/local_apigw_service.py | 8 +- samcli/local/docker/container.py | 13 +++- .../local_lambda_invoke_service.py | 9 ++- samcli/local/services/base_local_service.py | 15 +++- .../local/invoke/test_integrations_cli.py | 35 +++++++++ .../testdata/invoke/image-for-lambda.png | Bin 0 -> 110984 bytes tests/integration/testdata/invoke/main.py | 7 ++ .../invoke/template-return-image.yaml | 12 +++ tests/unit/lib/utils/test_stream_writer.py | 33 ++++++++- tests/unit/local/docker/test_container.py | 69 ++++++++++++++++-- .../test_local_lambda_invoke_service.py | 2 +- 13 files changed, 213 insertions(+), 31 deletions(-) create mode 100644 tests/integration/testdata/invoke/image-for-lambda.png create mode 100644 tests/integration/testdata/invoke/template-return-image.yaml diff --git a/samcli/lib/utils/stream_writer.py b/samcli/lib/utils/stream_writer.py index 78bae0d8ffc..dc2c2b9b5ca 100644 --- a/samcli/lib/utils/stream_writer.py +++ b/samcli/lib/utils/stream_writer.py @@ -1,11 +1,12 @@ """ This class acts like a wrapper around output streams to provide any flexibility with output we need """ -from typing import TextIO +from io import BytesIO, TextIOWrapper +from typing import Optional, TextIO, Union class StreamWriter: - def __init__(self, stream: TextIO, auto_flush: bool = False): + def __init__(self, stream: TextIO, stream_bytes: Optional[Union[TextIO, BytesIO]] = None, auto_flush: bool = False): """ Instatiates new StreamWriter to the specified stream @@ -13,16 +14,40 @@ def __init__(self, stream: TextIO, auto_flush: bool = False): ---------- stream io.RawIOBase Stream to wrap + stream_bytes io.TextIO | io.BytesIO + Stream to wrap if bytes are being written auto_flush bool Whether to autoflush the stream upon writing """ self._stream = stream + self._stream_bytes = stream if isinstance(stream, TextIOWrapper) else stream_bytes self._auto_flush = auto_flush @property def stream(self) -> TextIO: return self._stream + def write_bytes(self, output: bytes): + """ + Writes specified text to the underlying stream + Parameters + ---------- + output bytes-like object + Bytes to write into buffer + """ + # all these ifs are to satisfy the linting/type checking + if not self._stream_bytes: + return + if isinstance(self._stream_bytes, TextIOWrapper): + self._stream_bytes.buffer.write(output) + if self._auto_flush: + self._stream_bytes.flush() + + elif isinstance(self._stream_bytes, BytesIO): + self._stream_bytes.write(output) + if self._auto_flush: + self._stream_bytes.flush() + def write_str(self, output: str): """ Writes specified text to the underlying stream @@ -39,3 +64,5 @@ def write_str(self, output: str): def flush(self): self._stream.flush() + if self._stream_bytes: + self._stream_bytes.flush() diff --git a/samcli/local/apigw/authorizers/lambda_authorizer.py b/samcli/local/apigw/authorizers/lambda_authorizer.py index ed3483eee5f..8b7b92c6ea7 100644 --- a/samcli/local/apigw/authorizers/lambda_authorizer.py +++ b/samcli/local/apigw/authorizers/lambda_authorizer.py @@ -5,7 +5,7 @@ from abc import ABC, abstractmethod from dataclasses import dataclass from json import JSONDecodeError, loads -from typing import Any, Dict, List, Optional, Tuple, Type, cast +from typing import Any, Dict, List, Optional, Tuple, Type, Union, cast from urllib.parse import parse_qsl from samcli.commands.local.lib.validators.identity_source_validator import IdentitySourceValidator @@ -321,13 +321,13 @@ def _parse_identity_sources(self, identity_sources: List[str]) -> None: break - def is_valid_response(self, response: str, method_arn: str) -> bool: + def is_valid_response(self, response: Union[str, bytes], method_arn: str) -> bool: """ Validates whether a Lambda authorizer request is authenticated or not. Parameters ---------- - response: str + response: Union[str, bytes] JSON string containing the output from a Lambda authorizer method_arn: str The method ARN of the route that invoked the Lambda authorizer @@ -418,13 +418,13 @@ def _validate_simple_response(self, response: dict) -> bool: return cast(bool, is_authorized) - def get_context(self, response: str) -> Dict[str, Any]: + def get_context(self, response: Union[str, bytes]) -> Dict[str, Any]: """ Returns the context (if set) from the authorizer response and appends the principalId to it. Parameters ---------- - response: str + response: Union[str, bytes] Output from Lambda authorizer Returns diff --git a/samcli/local/apigw/local_apigw_service.py b/samcli/local/apigw/local_apigw_service.py index 80da1f4480f..f5a0ea0802d 100644 --- a/samcli/local/apigw/local_apigw_service.py +++ b/samcli/local/apigw/local_apigw_service.py @@ -6,7 +6,7 @@ from datetime import datetime from io import StringIO from time import time -from typing import Any, Dict, List, Optional, Tuple +from typing import Any, Dict, List, Optional, Tuple, Union from flask import Flask, Request, request from werkzeug.datastructures import Headers @@ -593,7 +593,7 @@ def _valid_identity_sources(self, request: Request, route: Route) -> bool: return True - def _invoke_lambda_function(self, lambda_function_name: str, event: dict) -> str: + def _invoke_lambda_function(self, lambda_function_name: str, event: dict) -> Union[str, bytes]: """ Helper method to invoke a function and setup stdout+stderr @@ -606,8 +606,8 @@ def _invoke_lambda_function(self, lambda_function_name: str, event: dict) -> str Returns ------- - str - A string containing the output from the Lambda function + Union[str, bytes] + A string or bytes containing the output from the Lambda function """ with StringIO() as stdout: event_str = json.dumps(event, sort_keys=True) diff --git a/samcli/local/docker/container.py b/samcli/local/docker/container.py index 6e54ed25311..bef505d87cd 100644 --- a/samcli/local/docker/container.py +++ b/samcli/local/docker/container.py @@ -363,7 +363,7 @@ def start(self, input_data=None): raise ex @retry(exc=requests.exceptions.RequestException, exc_raise=ContainerResponseException) - def wait_for_http_response(self, name, event, stdout) -> Union[str, bytes]: + def wait_for_http_response(self, name, event, stdout) -> Tuple[Union[str, bytes], bool]: # TODO(sriram-mv): `aws-lambda-rie` is in a mode where the function_name is always "function" # NOTE(sriram-mv): There is a connection timeout set on the http call to `aws-lambda-rie`, however there is not # a read time out for the response received from the server. @@ -374,10 +374,13 @@ def wait_for_http_response(self, name, event, stdout) -> Union[str, bytes]: timeout=(self.RAPID_CONNECTION_TIMEOUT, None), ) try: - return json.dumps(json.loads(resp.content), ensure_ascii=False) + # if response is an image then json.loads/dumps will throw a UnicodeDecodeError so return raw content + if "image" in resp.headers["Content-Type"]: + return resp.content, True + return json.dumps(json.loads(resp.content), ensure_ascii=False), False except json.JSONDecodeError: LOG.debug("Failed to deserialize response from RIE, returning the raw response as is") - return resp.content + return resp.content, False def wait_for_result(self, full_path, event, stdout, stderr, start_timer=None): # NOTE(sriram-mv): Let logging happen in its own thread, so that a http request can be sent. @@ -400,13 +403,15 @@ def wait_for_result(self, full_path, event, stdout, stderr, start_timer=None): # start the timer for function timeout right before executing the function, as waiting for the socket # can take some time timer = start_timer() if start_timer else None - response = self.wait_for_http_response(full_path, event, stdout) + response, is_image = self.wait_for_http_response(full_path, event, stdout) if timer: timer.cancel() self._logs_thread_event.wait(timeout=1) if isinstance(response, str): stdout.write_str(response) + elif isinstance(response, bytes) and is_image: + stdout.write_bytes(response) elif isinstance(response, bytes): stdout.write_str(response.decode("utf-8")) stdout.flush() diff --git a/samcli/local/lambda_service/local_lambda_invoke_service.py b/samcli/local/lambda_service/local_lambda_invoke_service.py index 1e46a105076..a847802b3c4 100644 --- a/samcli/local/lambda_service/local_lambda_invoke_service.py +++ b/samcli/local/lambda_service/local_lambda_invoke_service.py @@ -165,8 +165,9 @@ def _invoke_request_handler(self, function_name): request_data = request_data.decode("utf-8") - stdout_stream = io.StringIO() - stdout_stream_writer = StreamWriter(stdout_stream, auto_flush=True) + stdout_stream_string = io.StringIO() + stdout_stream_bytes = io.BytesIO() + stdout_stream_writer = StreamWriter(stdout_stream_string, stdout_stream_bytes, auto_flush=True) try: self.lambda_runner.invoke(function_name, request_data, stdout=stdout_stream_writer, stderr=self.stderr) @@ -178,7 +179,9 @@ def _invoke_request_handler(self, function_name): "Inline code is not supported for sam local commands. Please write your code in a separate file." ) - lambda_response, is_lambda_user_error_response = LambdaOutputParser.get_lambda_output(stdout_stream) + lambda_response, is_lambda_user_error_response = LambdaOutputParser.get_lambda_output( + stdout_stream_string, stdout_stream_bytes + ) if is_lambda_user_error_response: return self.service_response( diff --git a/samcli/local/services/base_local_service.py b/samcli/local/services/base_local_service.py index 5de5beb7dd5..573c24b445b 100644 --- a/samcli/local/services/base_local_service.py +++ b/samcli/local/services/base_local_service.py @@ -2,7 +2,7 @@ import io import json import logging -from typing import Tuple +from typing import Optional, Tuple, Union from flask import Response @@ -85,7 +85,9 @@ def service_response(body, headers, status_code): class LambdaOutputParser: @staticmethod - def get_lambda_output(stdout_stream: io.StringIO) -> Tuple[str, bool]: + def get_lambda_output( + stdout_stream_str: io.StringIO, stdout_stream_bytes: Optional[io.BytesIO] = None + ) -> Tuple[Union[str, bytes], bool]: """ This method will extract read the given stream and return the response from Lambda function separated out from any log statements it might have outputted. Logs end up in the stdout stream if the Lambda function @@ -93,9 +95,12 @@ def get_lambda_output(stdout_stream: io.StringIO) -> Tuple[str, bool]: Parameters ---------- - stdout_stream : io.BaseIO + stdout_stream_str : io.BaseIO Stream to fetch data from + stdout_stream_bytes : Optional[io.BytesIO], optional + Stream to fetch raw bytes data from + Returns ------- str @@ -103,7 +108,9 @@ def get_lambda_output(stdout_stream: io.StringIO) -> Tuple[str, bool]: bool If the response is an error/exception from the container """ - lambda_response = stdout_stream.getvalue() + lambda_response: Union[str, bytes] = stdout_stream_str.getvalue() + if stdout_stream_bytes and not lambda_response: + lambda_response = stdout_stream_bytes.getvalue() # When the Lambda Function returns an Error/Exception, the output is added to the stdout of the container. From # our perspective, the container returned some value, which is not always true. Since the output is the only diff --git a/tests/integration/local/invoke/test_integrations_cli.py b/tests/integration/local/invoke/test_integrations_cli.py index c1a114b5d49..3c33a25cead 100644 --- a/tests/integration/local/invoke/test_integrations_cli.py +++ b/tests/integration/local/invoke/test_integrations_cli.py @@ -1197,6 +1197,41 @@ def test_invoke_inline_code_function(self): self.assertEqual(process.returncode, 1) +class TestInvokeFunctionWithImageBytesAsReturn(InvokeIntegBase): + template = Path("template-return-image.yaml") + + @pytest.mark.flaky(reruns=3) + def test_invoke_returncode_is_zero(self): + command_list = InvokeIntegBase.get_command_list( + "GetImageFunction", template_path=self.template_path, event_path=self.event_path + ) + + process = Popen(command_list, stdout=PIPE) + try: + process.communicate(timeout=TIMEOUT) + except TimeoutExpired: + process.kill() + raise + + self.assertEqual(process.returncode, 0) + + @pytest.mark.flaky(reruns=3) + def test_invoke_image_is_returned(self): + command_list = InvokeIntegBase.get_command_list( + "GetImageFunction", template_path=self.template_path, event_path=self.event_path + ) + + process = Popen(command_list, stdout=PIPE) + try: + stdout, _ = process.communicate(timeout=TIMEOUT) + except TimeoutExpired: + process.kill() + raise + + # The first byte of a png image file is \x89 so we can check that to verify that it returned an image + self.assertEqual(stdout[0:1], b"\x89") + + class TestInvokeFunctionWithError(InvokeIntegBase): template = Path("template.yml") diff --git a/tests/integration/testdata/invoke/image-for-lambda.png b/tests/integration/testdata/invoke/image-for-lambda.png new file mode 100644 index 0000000000000000000000000000000000000000..56a3af614bf81d70f280cb36c576aa82b684b8f8 GIT binary patch literal 110984 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 M07*qoM6N<$f|_ Date: Mon, 8 Jan 2024 13:40:23 -0800 Subject: [PATCH 036/100] Fix Erroneous "No BuildArchitecture specified in Layer" Warning (#6508) * Move Missing BuildArchitecture warning to build_layer * Formatting * Fix typo * Narrow warnings to mismatches between buildArch and Compatible Architectures * Fix some tests * Fix integ test * More integ tests * Format fix * Fix integ test * Fix typo * Parameterize test with use_container --------- Co-authored-by: Jared Bentvelsen --- samcli/lib/build/build_strategy.py | 14 ++++ samcli/lib/providers/provider.py | 13 ---- tests/integration/buildcmd/test_build_cmd.py | 68 +++++++++++++++++-- .../buildcmd/layers-functions-template.yaml | 31 ++++++++- .../lib/build_module/test_build_strategy.py | 3 + 5 files changed, 109 insertions(+), 20 deletions(-) diff --git a/samcli/lib/build/build_strategy.py b/samcli/lib/build/build_strategy.py index c59b3078b78..7031e26b339 100644 --- a/samcli/lib/build/build_strategy.py +++ b/samcli/lib/build/build_strategy.py @@ -26,6 +26,7 @@ from samcli.lib.build.exceptions import MissingBuildMethodException from samcli.lib.build.utils import warn_on_invalid_architecture +from samcli.lib.utils.architecture import X86_64, ARM64 LOG = logging.getLogger(__name__) @@ -218,6 +219,19 @@ def build_single_layer_definition(self, layer_definition: LayerBuildDefinition) if layer.build_method == "makefile": warn_on_invalid_architecture(layer_definition) + # There are two cases where we'd like to warn the customer + # 1. Compatible Architectures is only x86 (or not present) but Build Architecture is arm64 + # 2. Build Architecture is x86 (or not present) but Compatible Architectures is only arm64 + + build_architecture = layer.build_architecture or X86_64 + compatible_architectures = layer.compatible_architectures or [X86_64] + + if build_architecture not in compatible_architectures: + LOG.warning( + "WARNING: Layer '%s' has BuildArchitecture %s, which is not listed in CompatibleArchitectures", + layer.layer_id, + build_architecture, + ) single_build_dir = layer.get_build_dir(self._build_dir) # when a layer is passed here, it is ZIP function, codeuri and runtime are not None # codeuri and compatible_runtimes are not None diff --git a/samcli/lib/providers/provider.py b/samcli/lib/providers/provider.py index 59e3f98f7f1..e0d3183c15c 100644 --- a/samcli/lib/providers/provider.py +++ b/samcli/lib/providers/provider.py @@ -244,22 +244,9 @@ def __init__( self._compatible_runtimes = compatible_runtimes self._custom_layer_id = metadata.get(SAM_RESOURCE_ID_KEY) - if "BuildArchitecture" not in metadata: - LOG.warning( - "WARNING: No BuildArchitecture specifed in Layer `%s`" + " Metadata. Defaulting to x86_64.", - self._custom_layer_id, - ) - self._build_architecture = cast(str, metadata.get("BuildArchitecture", X86_64)) self._compatible_architectures = compatible_architectures - if self._compatible_architectures and self._build_architecture not in self._compatible_architectures: - LOG.warning( - "WARNING: Layer `%s` has BuildArchitecture `%s`," + " which is not listed in CompatibleArchitectures.", - self._custom_layer_id, - self._build_architecture, - ) - self._skip_build = bool(metadata.get(SAM_METADATA_SKIP_BUILD_KEY, False)) @staticmethod diff --git a/tests/integration/buildcmd/test_build_cmd.py b/tests/integration/buildcmd/test_build_cmd.py index 656f1ab5159..4e4f6b3f9d7 100644 --- a/tests/integration/buildcmd/test_build_cmd.py +++ b/tests/integration/buildcmd/test_build_cmd.py @@ -46,6 +46,7 @@ BuildIntegEsbuildBase, ) + LOG = logging.getLogger(__name__) # SAR tests require credentials. This is to skip running the test where credentials are not available. @@ -1675,6 +1676,8 @@ def test_build_layer_with_makefile_no_compatible_runtimes(self): ) def test_build_layer_with_architecture_not_compatible(self, build_method, use_container): # The BuildArchitecture is not one of the listed CompatibleArchitectures + if use_container and (SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD): + self.skipTest(SKIP_DOCKER_MESSAGE) layer_identifier = "LayerWithNoCompatibleArchitectures" @@ -1691,7 +1694,59 @@ def test_build_layer_with_architecture_not_compatible(self, build_method, use_co command_result = run_command(cmdlist, cwd=self.working_dir) # Capture warning self.assertIn( - f"Layer `{layer_identifier}` has BuildArchitecture `x86_64`, which is not listed in CompatibleArchitectures.", + f"Layer '{layer_identifier}' has BuildArchitecture x86_64, which is not listed in CompatibleArchitectures", + str(command_result.stderr.decode("utf-8")), + ) + # Build should still succeed + self.assertEqual(command_result.process.returncode, 0) + + @parameterized.expand([("python3.8", False), ("python3.8", "use_container")]) + def test_build_arch_no_compatible_arch(self, runtime, use_container): + # BuildArchitecture is present, but CompatibleArchitectures section is missing + if use_container and (SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD): + self.skipTest(SKIP_DOCKER_MESSAGE) + + layer_identifier = "LayerWithBuildArchButNoCompatibleArchs" + + overrides = { + "LayerBuildMethod": runtime, + "LayerMakeContentUri": "PyLayer", + "LayerBuildArchitecture": "arm64", + } + cmdlist = self.get_command_list( + use_container=use_container, parameter_overrides=overrides, function_identifier=layer_identifier + ) + + command_result = run_command(cmdlist, cwd=self.working_dir) + # Capture warning + self.assertIn( + f"Layer '{layer_identifier}' has BuildArchitecture arm64, which is not listed in CompatibleArchitectures", + str(command_result.stderr), + ) + # Build should still succeed + self.assertEqual(command_result.process.returncode, 0) + + @parameterized.expand([("python3.8", False), ("python3.8", "use_container")]) + def test_compatible_arch_no_build_arch(self, runtime, use_container): + # CompatibleArchitectures is present, but BuildArchitecture section is missing + if use_container and (SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD): + self.skipTest(SKIP_DOCKER_MESSAGE) + + layer_identifier = "LayerWithCompatibleArchsButNoBuildArch" + + overrides = { + "LayerBuildMethod": runtime, + "LayerMakeContentUri": "PyLayer", + "LayerCompatibleArchitecture": "arm64", + } + cmdlist = self.get_command_list( + use_container=use_container, parameter_overrides=overrides, function_identifier=layer_identifier + ) + + command_result = run_command(cmdlist, cwd=self.working_dir) + # Capture warning + self.assertIn( + f"Layer '{layer_identifier}' has BuildArchitecture x86_64, which is not listed in CompatibleArchitectures", str(command_result.stderr), ) # Build should still succeed @@ -1736,18 +1791,19 @@ def test_build_fails_with_missing_metadata(self, runtime, use_container, layer_i self.assertEqual(command_result.process.returncode, 1) self.assertFalse(self.default_build_dir.joinpath(layer_identifier).exists()) - @parameterized.expand([("python3.7", False, "LayerOne"), ("python3.7", "use_container", "LayerOne")]) - def test_build_with_missing_buildarchitecture(self, runtime, use_container, layer_identifier): + @parameterized.expand([False, "use_container"]) + def test_function_build_succeeds_with_referenced_layer(self, use_container): if use_container and (SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD): self.skipTest(SKIP_DOCKER_MESSAGE) - overrides = {"LayerBuildMethod": runtime, "LayerContentUri": "PyLayer"} + overrides = {"Runtime": "python3.8", "CodeUri": "Python"} + cmdlist = self.get_command_list( - use_container=use_container, parameter_overrides=overrides, function_identifier=layer_identifier + use_container=use_container, parameter_overrides=overrides, function_identifier="FunctionTwo" ) + command_result = run_command(cmdlist, cwd=self.working_dir) self.assertEqual(command_result.process.returncode, 0) - self.assertIn("No BuildArchitecture specifed", str(command_result.stderr)) @parameterized.expand([("python3.7", False), ("python3.7", "use_container")]) def test_build_function_and_layer(self, runtime, use_container): diff --git a/tests/integration/testdata/buildcmd/layers-functions-template.yaml b/tests/integration/testdata/buildcmd/layers-functions-template.yaml index 3f0bc318b54..36810c782f4 100644 --- a/tests/integration/testdata/buildcmd/layers-functions-template.yaml +++ b/tests/integration/testdata/buildcmd/layers-functions-template.yaml @@ -32,6 +32,16 @@ Resources: Layers: - !Ref LayerOne + FunctionTwo: + Type: AWS::Serverless::Function + Properties: + Handler: !Ref Handler + Runtime: !Ref Runtime + CodeUri: !Ref CodeUri + Timeout: 600 + Layers: + - !Sub arn:${AWS::Partition}:lambda:${AWS::Region}:012345678912:layer:layerName:1 + LayerOne: Type: AWS::Serverless::LayerVersion Properties: @@ -87,4 +97,23 @@ Resources: - !Ref LayerCompatibleArchitecture Metadata: BuildMethod: !Ref LayerBuildMethod - BuildArchitecture: !Ref LayerBuildArchitecture \ No newline at end of file + BuildArchitecture: !Ref LayerBuildArchitecture + + LayerWithBuildArchButNoCompatibleArchs: + Type: AWS::Serverless::LayerVersion + Properties: + Description: Build arch present but CompatibleArchs not present + ContentUri: !Ref LayerMakeContentUri + Metadata: + BuildMethod: !Ref LayerBuildMethod + BuildArchitecture: !Ref LayerBuildArchitecture + + LayerWithCompatibleArchsButNoBuildArch: + Type: AWS::Serverless::LayerVersion + Properties: + Description: Build arch present but CompatibleArchs not present + ContentUri: !Ref LayerMakeContentUri + CompatibleArchitectures: + - !Ref LayerCompatibleArchitecture + Metadata: + BuildMethod: !Ref LayerBuildMethod \ No newline at end of file diff --git a/tests/unit/lib/build_module/test_build_strategy.py b/tests/unit/lib/build_module/test_build_strategy.py index 5b2f3f7d771..086a67bd787 100644 --- a/tests/unit/lib/build_module/test_build_strategy.py +++ b/tests/unit/lib/build_module/test_build_strategy.py @@ -56,7 +56,9 @@ def setUp(self): self.build_graph.put_function_build_definition(self.function_build_definition2, self.function2) self.layer1 = Mock() + self.layer1.compatible_architectures = None self.layer2 = Mock() + self.layer2.compatible_architectures = None self.layer_build_definition1 = LayerBuildDefinition("layer1", "codeuri", "build_method", [], X86_64) self.layer_build_definition2 = LayerBuildDefinition("layer2", "codeuri", "build_method", [], X86_64) @@ -699,6 +701,7 @@ def test_assert_incremental_build_layer(self, patched_manifest_hash, patched_os, given_layer_build_def = Mock( manifest_hash=build_toml_manifest_hash, functions=[Mock()], dependencies_dir=dependency_dir ) + given_layer_build_def.layer.compatible_architectures = None self.build_graph.get_function_build_definitions.return_value = [] self.build_graph.get_layer_build_definitions.return_value = [given_layer_build_def] From 6781981663166ec1cb7d12be0f23cfd3262d8748 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 9 Jan 2024 01:19:10 +0000 Subject: [PATCH 037/100] feat: updating app templates repo hash with (7f9ce9837a548980ad3420c693c486a5f96c4039) (#6518) Co-authored-by: GitHub Action --- samcli/runtime_config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samcli/runtime_config.json b/samcli/runtime_config.json index 9ceb81017c7..ebabaea046c 100644 --- a/samcli/runtime_config.json +++ b/samcli/runtime_config.json @@ -1,3 +1,3 @@ { - "app_template_repo_commit": "4f2d39629050c935934a5024955a2e384b8260c5" + "app_template_repo_commit": "7f9ce9837a548980ad3420c693c486a5f96c4039" } From db5d131b1a09b3793e751254390407d9b6fa739e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 9 Jan 2024 01:30:18 +0000 Subject: [PATCH 038/100] chore: update aws-sam-translator to 1.83.0 (#6519) * chore: update aws-sam-translator to 1.83.0 * Update reproducibles: update-reproducible-linux-reqs * Update reproducibles: update-reproducible-mac-reqs * Update reproducibles: update-reproducible-win-reqs --------- Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index d32a3a79d82..a8f8ebb8450 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -6,7 +6,7 @@ jmespath~=1.0.1 ruamel_yaml~=0.18.5 PyYAML~=6.0,>=6.0.1 cookiecutter~=2.5.0 -aws-sam-translator==1.82.0 +aws-sam-translator==1.83.0 #docker minor version updates can include breaking changes. Auto update micro version only. docker~=7.0.0 dateparser~=1.2 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 9a4ece6febe..c5107b58068 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -24,9 +24,9 @@ aws-lambda-builders==1.45.0 \ --hash=sha256:5c19a6628eecf21578cd9c521e747f4a2163c62c527cd840b11b62a10b661348 \ --hash=sha256:a4db7766198c052900905bd7ee3b1a8b486511394cdabffed054204d43b29943 # via aws-sam-cli (setup.py) -aws-sam-translator==1.82.0 \ - --hash=sha256:29ba61f2a70b2b1cf0c76b92b78a23c7cdd19ea1b0a5992753180b56d040d20b \ - --hash=sha256:f78e58194461635aef6255d04e82a9b690e331ca9fd669d1401bf7f9a93ae49f +aws-sam-translator==1.83.0 \ + --hash=sha256:022246b4745cc9067f88ab2b051f49898606bcf0222e22b9da41063e5619c6f9 \ + --hash=sha256:46025ca8894a56eacd87eb0e4f9af5c01c567c9a734b97fbba353bffd56ba5dc # via # aws-sam-cli (setup.py) # cfn-lint diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 5fbc4e56f25..1335e1a4e02 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -24,9 +24,9 @@ aws-lambda-builders==1.45.0 \ --hash=sha256:5c19a6628eecf21578cd9c521e747f4a2163c62c527cd840b11b62a10b661348 \ --hash=sha256:a4db7766198c052900905bd7ee3b1a8b486511394cdabffed054204d43b29943 # via aws-sam-cli (setup.py) -aws-sam-translator==1.82.0 \ - --hash=sha256:29ba61f2a70b2b1cf0c76b92b78a23c7cdd19ea1b0a5992753180b56d040d20b \ - --hash=sha256:f78e58194461635aef6255d04e82a9b690e331ca9fd669d1401bf7f9a93ae49f +aws-sam-translator==1.83.0 \ + --hash=sha256:022246b4745cc9067f88ab2b051f49898606bcf0222e22b9da41063e5619c6f9 \ + --hash=sha256:46025ca8894a56eacd87eb0e4f9af5c01c567c9a734b97fbba353bffd56ba5dc # via # aws-sam-cli (setup.py) # cfn-lint diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 8acb82224dc..af09feb00e7 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -24,9 +24,9 @@ aws-lambda-builders==1.45.0 \ --hash=sha256:5c19a6628eecf21578cd9c521e747f4a2163c62c527cd840b11b62a10b661348 \ --hash=sha256:a4db7766198c052900905bd7ee3b1a8b486511394cdabffed054204d43b29943 # via aws-sam-cli (setup.py) -aws-sam-translator==1.82.0 \ - --hash=sha256:29ba61f2a70b2b1cf0c76b92b78a23c7cdd19ea1b0a5992753180b56d040d20b \ - --hash=sha256:f78e58194461635aef6255d04e82a9b690e331ca9fd669d1401bf7f9a93ae49f +aws-sam-translator==1.83.0 \ + --hash=sha256:022246b4745cc9067f88ab2b051f49898606bcf0222e22b9da41063e5619c6f9 \ + --hash=sha256:46025ca8894a56eacd87eb0e4f9af5c01c567c9a734b97fbba353bffd56ba5dc # via # aws-sam-cli (setup.py) # cfn-lint From cfa435b87fadc6e02f1a60b4bd5d2a5c4cfd6d77 Mon Sep 17 00:00:00 2001 From: sidhujus <105385029+sidhujus@users.noreply.github.com> Date: Tue, 9 Jan 2024 09:15:20 -0800 Subject: [PATCH 039/100] fix: remove version from rest api payload (#6532) * remove version from rest api payload * remove unused variable * update documentation * fix format error --- samcli/local/apigw/event_constructor.py | 8 +++++-- samcli/local/apigw/local_apigw_service.py | 1 + samcli/local/events/api_event.py | 11 ++++++++-- .../local/apigw/test_local_apigw_service.py | 2 ++ tests/unit/local/events/test_api_event.py | 22 ++++++++++++++++++- 5 files changed, 39 insertions(+), 5 deletions(-) diff --git a/samcli/local/apigw/event_constructor.py b/samcli/local/apigw/event_constructor.py index 441d94d20e7..b9e07ecb8d1 100644 --- a/samcli/local/apigw/event_constructor.py +++ b/samcli/local/apigw/event_constructor.py @@ -9,6 +9,7 @@ from typing import Any, Dict from samcli.local.apigw.path_converter import PathConverter +from samcli.local.apigw.route import Route from samcli.local.events.api_event import ( ApiGatewayLambdaEvent, ApiGatewayV2LambdaEvent, @@ -22,16 +23,18 @@ def construct_v1_event( - flask_request, port, binary_types, stage_name=None, stage_variables=None, operation_name=None + flask_request, port, binary_types, stage_name=None, stage_variables=None, operation_name=None, api_type=Route.API ) -> Dict[str, Any]: """ - Helper method that constructs the Event to be passed to Lambda + Helper method that constructs the Event to be passed to Lambda. + Used for Http apis with payload v1 and Rest apis because the payloads are almost identical :param request flask_request: Flask Request :param port: the port number :param binary_types: list of binary types :param stage_name: Optional, the stage name string :param stage_variables: Optional, API Gateway Stage Variables + :param api_type: Optional, the type of api payload being constructed :return: JSON object """ @@ -86,6 +89,7 @@ def construct_v1_event( path=flask_request.path, is_base_64_encoded=is_base_64, stage_variables=stage_variables, + api_type=api_type, ) event_dict = event.to_dict() diff --git a/samcli/local/apigw/local_apigw_service.py b/samcli/local/apigw/local_apigw_service.py index f5a0ea0802d..1e0f871fcda 100644 --- a/samcli/local/apigw/local_apigw_service.py +++ b/samcli/local/apigw/local_apigw_service.py @@ -477,6 +477,7 @@ def _generate_lambda_event(self, flask_request: Request, route: Route, method: s stage_name=self.api.stage_name, stage_variables=self.api.stage_variables, operation_name=route_key, + api_type=route.event_type, ) def _build_v1_context(self, route: Route) -> Dict[str, Any]: diff --git a/samcli/local/events/api_event.py b/samcli/local/events/api_event.py index 1b82c7caea1..f73e554d9a3 100644 --- a/samcli/local/events/api_event.py +++ b/samcli/local/events/api_event.py @@ -4,6 +4,8 @@ from time import time from typing import Any, Dict +from samcli.local.apigw.route import Route + class ContextIdentity: def __init__( @@ -169,6 +171,7 @@ def __init__( stage_variables=None, path=None, is_base_64_encoded=False, + api_type=Route.API, ): """ Constructs an ApiGatewayLambdaEvent @@ -185,6 +188,7 @@ def __init__( :param dict stage_variables: API Gateway Stage Variables :param str path: Path of the request :param bool is_base_64_encoded: True if the data is base64 encoded. + :param str api_type: The type of API the event is being generated for """ if not isinstance(query_string_params, dict) and query_string_params is not None: @@ -205,7 +209,6 @@ def __init__( if not isinstance(stage_variables, dict) and stage_variables is not None: raise TypeError("'stage_variables' must be of type dict or None") - self.version = "1.0" self.http_method = http_method self.body = body self.resource = resource @@ -218,6 +221,7 @@ def __init__( self.stage_variables = stage_variables self.path = path self.is_base_64_encoded = is_base_64_encoded + self.api_type = api_type def to_dict(self) -> Dict[str, Any]: """ @@ -233,7 +237,6 @@ def to_dict(self) -> Dict[str, Any]: request_context_dict = self.request_context.to_dict() json_dict = { - "version": self.version, "httpMethod": self.http_method, "body": self.body if self.body else None, "resource": self.resource, @@ -250,6 +253,10 @@ def to_dict(self) -> Dict[str, Any]: "isBase64Encoded": self.is_base_64_encoded, } + # v1 payloads and rest api payloads are identical save for the version field + if self.api_type == Route.HTTP: + json_dict["version"] = "1.0" + return json_dict diff --git a/tests/unit/local/apigw/test_local_apigw_service.py b/tests/unit/local/apigw/test_local_apigw_service.py index e77ce996aca..c3442aaf06f 100644 --- a/tests/unit/local/apigw/test_local_apigw_service.py +++ b/tests/unit/local/apigw/test_local_apigw_service.py @@ -123,6 +123,7 @@ def test_api_request_must_invoke_lambda(self, v2_event_mock, v1_event_mock, requ stage_name=ANY, stage_variables=ANY, operation_name="getRestApi", + api_type=Route.API, ) @patch.object(LocalApigwService, "get_request_methods_endpoints") @@ -190,6 +191,7 @@ def test_http_v1_payload_request_must_invoke_lambda(self, v2_event_mock, v1_even stage_name=ANY, stage_variables=ANY, operation_name=None, + api_type=Route.HTTP, ) @patch.object(LocalApigwService, "get_request_methods_endpoints") diff --git a/tests/unit/local/events/test_api_event.py b/tests/unit/local/events/test_api_event.py index e4e3d26e65e..6cd3e6c3b0a 100644 --- a/tests/unit/local/events/test_api_event.py +++ b/tests/unit/local/events/test_api_event.py @@ -3,6 +3,7 @@ from time import time from datetime import datetime +from samcli.local.apigw.route import Route from samcli.local.events.api_event import ( ContextIdentity, @@ -335,7 +336,6 @@ def test_to_dict(self): ) expected = { - "version": "1.0", "httpMethod": "request_method", "body": "request_data", "resource": "resource", @@ -355,6 +355,26 @@ def test_to_dict(self): def test_to_dict_with_defaults(self): event = ApiGatewayLambdaEvent() + expected = { + "httpMethod": None, + "body": None, + "resource": None, + "requestContext": {}, + "queryStringParameters": None, + "multiValueQueryStringParameters": None, + "headers": None, + "multiValueHeaders": None, + "pathParameters": None, + "stageVariables": None, + "path": None, + "isBase64Encoded": False, + } + + self.assertEqual(event.to_dict(), expected) + + def test_to_dict_with_http_v1(self): + event = ApiGatewayLambdaEvent(api_type=Route.HTTP) + expected = { "version": "1.0", "httpMethod": None, From 5e44da89142f1630816c3b5bab1a2ab7ccabcd03 Mon Sep 17 00:00:00 2001 From: jysheng123 <141280295+jysheng123@users.noreply.github.com> Date: Tue, 9 Jan 2024 11:03:20 -0800 Subject: [PATCH 040/100] Allow Security Field for Schema to be optional (#6537) * bump websocket-client to 1.7.0 * Add edge case of optional security * fix formatting --- samcli/commands/local/lib/swagger/parser.py | 3 +- .../commands/local/lib/swagger/test_parser.py | 40 +++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/samcli/commands/local/lib/swagger/parser.py b/samcli/commands/local/lib/swagger/parser.py index 68ada78024a..dd97a2a9597 100644 --- a/samcli/commands/local/lib/swagger/parser.py +++ b/samcli/commands/local/lib/swagger/parser.py @@ -359,7 +359,6 @@ def get_routes(self, event_type=Route.API) -> List[Route]: authorizer_name = None use_default_authorizer = True - if authorizers is not None: if not isinstance(authorizers, list): raise InvalidSecurityDefinition( @@ -373,7 +372,7 @@ def get_routes(self, event_type=Route.API) -> List[Route]: f"for path='{full_path}' method='{method}', found '{len(authorizers)}'" ) - if len(authorizers) == 1: + if len(authorizers) == 1 and authorizers[0] != {}: # user has authorizer defined authorizer_object = authorizers[0] authorizer_object = list(authorizers[0]) diff --git a/tests/unit/commands/local/lib/swagger/test_parser.py b/tests/unit/commands/local/lib/swagger/test_parser.py index d854ca595ec..62b3e2c861f 100644 --- a/tests/unit/commands/local/lib/swagger/test_parser.py +++ b/tests/unit/commands/local/lib/swagger/test_parser.py @@ -232,6 +232,46 @@ def test_set_no_authorizer(self): self.assertEqual(results, expected_result) + def test_set_optional_authorizer(self): + function_name = "function" + payload_version = "1.0" + + swagger = { + "paths": { + "/path1": { + "get": { + "security": [{}], + "x-amazon-apigateway-integration": { + "type": "aws_proxy", + "uri": "someuri", + "payloadFormatVersion": payload_version, + }, + } + } + } + } + + parser = SwaggerParser(self.stack_path, swagger) + parser._get_integration_function_name = Mock(return_value=function_name) + parser._get_payload_format_version = Mock(return_value=payload_version) + + results = parser.get_routes() + print(results) + expected_result = [ + Route( + path="/path1", + methods=["get"], + function_name=function_name, + payload_format_version=payload_version, + stack_path=self.stack_path, + authorizer_name=None, + authorizer_object=None, + use_default_authorizer=False, + ), + ] + + self.assertEqual(results, expected_result) + def test_set_defined_authorizer(self): function_name = "function" payload_version = "1.0" From ced47f99e5863787ee80e6e56d2ba27de24753fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jan 2024 14:48:48 -0800 Subject: [PATCH 041/100] chore(deps): bump regex from 2023.10.3 to 2023.12.25 in /requirements (#6527) Bumps [regex](https://github.com/mrabarnett/mrab-regex) from 2023.10.3 to 2023.12.25. - [Changelog](https://github.com/mrabarnett/mrab-regex/blob/hg/changelog.txt) - [Commits](https://github.com/mrabarnett/mrab-regex/compare/2023.10.3...2023.12.25) --- updated-dependencies: - dependency-name: regex dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/reproducible-linux.txt | 183 ++++++++++++++-------------- requirements/reproducible-mac.txt | 183 ++++++++++++++-------------- requirements/reproducible-win.txt | 183 ++++++++++++++-------------- 3 files changed, 282 insertions(+), 267 deletions(-) diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index c5107b58068..07ace8fb431 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -647,95 +647,100 @@ referencing==0.32.0 \ # via # jsonschema # jsonschema-specifications -regex==2023.10.3 \ - --hash=sha256:00ba3c9818e33f1fa974693fb55d24cdc8ebafcb2e4207680669d8f8d7cca79a \ - --hash=sha256:00e871d83a45eee2f8688d7e6849609c2ca2a04a6d48fba3dff4deef35d14f07 \ - --hash=sha256:06e9abc0e4c9ab4779c74ad99c3fc10d3967d03114449acc2c2762ad4472b8ca \ - --hash=sha256:0b9ac09853b2a3e0d0082104036579809679e7715671cfbf89d83c1cb2a30f58 \ - --hash=sha256:0d47840dc05e0ba04fe2e26f15126de7c755496d5a8aae4a08bda4dd8d646c54 \ - --hash=sha256:0f649fa32fe734c4abdfd4edbb8381c74abf5f34bc0b3271ce687b23729299ed \ - --hash=sha256:107ac60d1bfdc3edb53be75e2a52aff7481b92817cfdddd9b4519ccf0e54a6ff \ - --hash=sha256:11175910f62b2b8c055f2b089e0fedd694fe2be3941b3e2633653bc51064c528 \ - --hash=sha256:12bd4bc2c632742c7ce20db48e0d99afdc05e03f0b4c1af90542e05b809a03d9 \ - --hash=sha256:16f8740eb6dbacc7113e3097b0a36065a02e37b47c936b551805d40340fb9971 \ - --hash=sha256:1c0e8fae5b27caa34177bdfa5a960c46ff2f78ee2d45c6db15ae3f64ecadde14 \ - --hash=sha256:2c54e23836650bdf2c18222c87f6f840d4943944146ca479858404fedeb9f9af \ - --hash=sha256:3367007ad1951fde612bf65b0dffc8fd681a4ab98ac86957d16491400d661302 \ - --hash=sha256:36362386b813fa6c9146da6149a001b7bd063dabc4d49522a1f7aa65b725c7ec \ - --hash=sha256:39807cbcbe406efca2a233884e169d056c35aa7e9f343d4e78665246a332f597 \ - --hash=sha256:39cdf8d141d6d44e8d5a12a8569d5a227f645c87df4f92179bd06e2e2705e76b \ - --hash=sha256:3b2c3502603fab52d7619b882c25a6850b766ebd1b18de3df23b2f939360e1bd \ - --hash=sha256:3ccf2716add72f80714b9a63899b67fa711b654be3fcdd34fa391d2d274ce767 \ - --hash=sha256:3fef4f844d2290ee0ba57addcec17eec9e3df73f10a2748485dfd6a3a188cc0f \ - --hash=sha256:4023e2efc35a30e66e938de5aef42b520c20e7eda7bb5fb12c35e5d09a4c43f6 \ - --hash=sha256:4a3ee019a9befe84fa3e917a2dd378807e423d013377a884c1970a3c2792d293 \ - --hash=sha256:4a8bf76e3182797c6b1afa5b822d1d5802ff30284abe4599e1247be4fd6b03be \ - --hash=sha256:4a992f702c9be9c72fa46f01ca6e18d131906a7180950958f766c2aa294d4b41 \ - --hash=sha256:4c34d4f73ea738223a094d8e0ffd6d2c1a1b4c175da34d6b0de3d8d69bee6bcc \ - --hash=sha256:4cd1bccf99d3ef1ab6ba835308ad85be040e6a11b0977ef7ea8c8005f01a3c29 \ - --hash=sha256:4ef80829117a8061f974b2fda8ec799717242353bff55f8a29411794d635d964 \ - --hash=sha256:58837f9d221744d4c92d2cf7201c6acd19623b50c643b56992cbd2b745485d3d \ - --hash=sha256:5a8f91c64f390ecee09ff793319f30a0f32492e99f5dc1c72bc361f23ccd0a9a \ - --hash=sha256:5addc9d0209a9afca5fc070f93b726bf7003bd63a427f65ef797a931782e7edc \ - --hash=sha256:6239d4e2e0b52c8bd38c51b760cd870069f0bdf99700a62cd509d7a031749a55 \ - --hash=sha256:66e2fe786ef28da2b28e222c89502b2af984858091675044d93cb50e6f46d7af \ - --hash=sha256:69c0771ca5653c7d4b65203cbfc5e66db9375f1078689459fe196fe08b7b4930 \ - --hash=sha256:6ac965a998e1388e6ff2e9781f499ad1eaa41e962a40d11c7823c9952c77123e \ - --hash=sha256:6c56c3d47da04f921b73ff9415fbaa939f684d47293f071aa9cbb13c94afc17d \ - --hash=sha256:6f85739e80d13644b981a88f529d79c5bdf646b460ba190bffcaf6d57b2a9863 \ - --hash=sha256:706e7b739fdd17cb89e1fbf712d9dc21311fc2333f6d435eac2d4ee81985098c \ - --hash=sha256:741ba2f511cc9626b7561a440f87d658aabb3d6b744a86a3c025f866b4d19e7f \ - --hash=sha256:7434a61b158be563c1362d9071358f8ab91b8d928728cd2882af060481244c9e \ - --hash=sha256:76066d7ff61ba6bf3cb5efe2428fc82aac91802844c022d849a1f0f53820502d \ - --hash=sha256:7979b834ec7a33aafae34a90aad9f914c41fd6eaa8474e66953f3f6f7cbd4368 \ - --hash=sha256:7eece6fbd3eae4a92d7c748ae825cbc1ee41a89bb1c3db05b5578ed3cfcfd7cb \ - --hash=sha256:7ef1e014eed78ab650bef9a6a9cbe50b052c0aebe553fb2881e0453717573f52 \ - --hash=sha256:81dce2ddc9f6e8f543d94b05d56e70d03a0774d32f6cca53e978dc01e4fc75b8 \ - --hash=sha256:82fcc1f1cc3ff1ab8a57ba619b149b907072e750815c5ba63e7aa2e1163384a4 \ - --hash=sha256:8d1f21af4c1539051049796a0f50aa342f9a27cde57318f2fc41ed50b0dbc4ac \ - --hash=sha256:90a79bce019c442604662d17bf69df99090e24cdc6ad95b18b6725c2988a490e \ - --hash=sha256:9145f092b5d1977ec8c0ab46e7b3381b2fd069957b9862a43bd383e5c01d18c2 \ - --hash=sha256:91dc1d531f80c862441d7b66c4505cd6ea9d312f01fb2f4654f40c6fdf5cc37a \ - --hash=sha256:979c24cbefaf2420c4e377ecd1f165ea08cc3d1fbb44bdc51bccbbf7c66a2cb4 \ - --hash=sha256:994645a46c6a740ee8ce8df7911d4aee458d9b1bc5639bc968226763d07f00fa \ - --hash=sha256:9b98b7681a9437262947f41c7fac567c7e1f6eddd94b0483596d320092004533 \ - --hash=sha256:9c6b4d23c04831e3ab61717a707a5d763b300213db49ca680edf8bf13ab5d91b \ - --hash=sha256:9c6d0ced3c06d0f183b73d3c5920727268d2201aa0fe6d55c60d68c792ff3588 \ - --hash=sha256:9fd88f373cb71e6b59b7fa597e47e518282455c2734fd4306a05ca219a1991b0 \ - --hash=sha256:a8f4e49fc3ce020f65411432183e6775f24e02dff617281094ba6ab079ef0915 \ - --hash=sha256:a9e908ef5889cda4de038892b9accc36d33d72fb3e12c747e2799a0e806ec841 \ - --hash=sha256:ad08a69728ff3c79866d729b095872afe1e0557251da4abb2c5faff15a91d19a \ - --hash=sha256:adbccd17dcaff65704c856bd29951c58a1bd4b2b0f8ad6b826dbd543fe740988 \ - --hash=sha256:b0c7d2f698e83f15228ba41c135501cfe7d5740181d5903e250e47f617eb4292 \ - --hash=sha256:b3ab05a182c7937fb374f7e946f04fb23a0c0699c0450e9fb02ef567412d2fa3 \ - --hash=sha256:b6104f9a46bd8743e4f738afef69b153c4b8b592d35ae46db07fc28ae3d5fb7c \ - --hash=sha256:ba7cd6dc4d585ea544c1412019921570ebd8a597fabf475acc4528210d7c4a6f \ - --hash=sha256:bc72c231f5449d86d6c7d9cc7cd819b6eb30134bb770b8cfdc0765e48ef9c420 \ - --hash=sha256:bce8814b076f0ce5766dc87d5a056b0e9437b8e0cd351b9a6c4e1134a7dfbda9 \ - --hash=sha256:be5e22bbb67924dea15039c3282fa4cc6cdfbe0cbbd1c0515f9223186fc2ec5f \ - --hash=sha256:be6b7b8d42d3090b6c80793524fa66c57ad7ee3fe9722b258aec6d0672543fd0 \ - --hash=sha256:bfe50b61bab1b1ec260fa7cd91106fa9fece57e6beba05630afe27c71259c59b \ - --hash=sha256:bff507ae210371d4b1fe316d03433ac099f184d570a1a611e541923f78f05037 \ - --hash=sha256:c148bec483cc4b421562b4bcedb8e28a3b84fcc8f0aa4418e10898f3c2c0eb9b \ - --hash=sha256:c15ad0aee158a15e17e0495e1e18741573d04eb6da06d8b84af726cfc1ed02ee \ - --hash=sha256:c2169b2dcabf4e608416f7f9468737583ce5f0a6e8677c4efbf795ce81109d7c \ - --hash=sha256:c55853684fe08d4897c37dfc5faeff70607a5f1806c8be148f1695be4a63414b \ - --hash=sha256:c65a3b5330b54103e7d21cac3f6bf3900d46f6d50138d73343d9e5b2900b2353 \ - --hash=sha256:c7964c2183c3e6cce3f497e3a9f49d182e969f2dc3aeeadfa18945ff7bdd7051 \ - --hash=sha256:cc3f1c053b73f20c7ad88b0d1d23be7e7b3901229ce89f5000a8399746a6e039 \ - --hash=sha256:ce615c92d90df8373d9e13acddd154152645c0dc060871abf6bd43809673d20a \ - --hash=sha256:d29338556a59423d9ff7b6eb0cb89ead2b0875e08fe522f3e068b955c3e7b59b \ - --hash=sha256:d8a993c0a0ffd5f2d3bda23d0cd75e7086736f8f8268de8a82fbc4bd0ac6791e \ - --hash=sha256:d9c727bbcf0065cbb20f39d2b4f932f8fa1631c3e01fcedc979bd4f51fe051c5 \ - --hash=sha256:dac37cf08fcf2094159922edc7a2784cfcc5c70f8354469f79ed085f0328ebdf \ - --hash=sha256:dd829712de97753367153ed84f2de752b86cd1f7a88b55a3a775eb52eafe8a94 \ - --hash=sha256:e54ddd0bb8fb626aa1f9ba7b36629564544954fff9669b15da3610c22b9a0991 \ - --hash=sha256:e77c90ab5997e85901da85131fd36acd0ed2221368199b65f0d11bca44549711 \ - --hash=sha256:ebedc192abbc7fd13c5ee800e83a6df252bec691eb2c4bedc9f8b2e2903f5e2a \ - --hash=sha256:ef71561f82a89af6cfcbee47f0fabfdb6e63788a9258e913955d89fdd96902ab \ - --hash=sha256:f0a47efb1dbef13af9c9a54a94a0b814902e547b7f21acb29434504d18f36e3a \ - --hash=sha256:f4f2ca6df64cbdd27f27b34f35adb640b5d2d77264228554e68deda54456eb11 \ - --hash=sha256:fb02e4257376ae25c6dd95a5aec377f9b18c09be6ebdefa7ad209b9137b73d48 +regex==2023.12.25 \ + --hash=sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5 \ + --hash=sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770 \ + --hash=sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc \ + --hash=sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105 \ + --hash=sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d \ + --hash=sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b \ + --hash=sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9 \ + --hash=sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630 \ + --hash=sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6 \ + --hash=sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c \ + --hash=sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482 \ + --hash=sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6 \ + --hash=sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a \ + --hash=sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80 \ + --hash=sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5 \ + --hash=sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1 \ + --hash=sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f \ + --hash=sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf \ + --hash=sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb \ + --hash=sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2 \ + --hash=sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347 \ + --hash=sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20 \ + --hash=sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060 \ + --hash=sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5 \ + --hash=sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73 \ + --hash=sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f \ + --hash=sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d \ + --hash=sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3 \ + --hash=sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae \ + --hash=sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4 \ + --hash=sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2 \ + --hash=sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457 \ + --hash=sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c \ + --hash=sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4 \ + --hash=sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87 \ + --hash=sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0 \ + --hash=sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704 \ + --hash=sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f \ + --hash=sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f \ + --hash=sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b \ + --hash=sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5 \ + --hash=sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923 \ + --hash=sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715 \ + --hash=sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c \ + --hash=sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca \ + --hash=sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1 \ + --hash=sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756 \ + --hash=sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360 \ + --hash=sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc \ + --hash=sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445 \ + --hash=sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e \ + --hash=sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4 \ + --hash=sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a \ + --hash=sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8 \ + --hash=sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53 \ + --hash=sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697 \ + --hash=sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf \ + --hash=sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a \ + --hash=sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415 \ + --hash=sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f \ + --hash=sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9 \ + --hash=sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400 \ + --hash=sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d \ + --hash=sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392 \ + --hash=sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb \ + --hash=sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd \ + --hash=sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861 \ + --hash=sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232 \ + --hash=sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95 \ + --hash=sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7 \ + --hash=sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39 \ + --hash=sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887 \ + --hash=sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5 \ + --hash=sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39 \ + --hash=sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb \ + --hash=sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586 \ + --hash=sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97 \ + --hash=sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423 \ + --hash=sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69 \ + --hash=sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7 \ + --hash=sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1 \ + --hash=sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7 \ + --hash=sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5 \ + --hash=sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8 \ + --hash=sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91 \ + --hash=sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590 \ + --hash=sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe \ + --hash=sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c \ + --hash=sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64 \ + --hash=sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd \ + --hash=sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa \ + --hash=sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31 \ + --hash=sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988 # via # aws-sam-cli (setup.py) # cfn-lint diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 1335e1a4e02..2e902057539 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -679,95 +679,100 @@ referencing==0.32.0 \ # via # jsonschema # jsonschema-specifications -regex==2023.10.3 \ - --hash=sha256:00ba3c9818e33f1fa974693fb55d24cdc8ebafcb2e4207680669d8f8d7cca79a \ - --hash=sha256:00e871d83a45eee2f8688d7e6849609c2ca2a04a6d48fba3dff4deef35d14f07 \ - --hash=sha256:06e9abc0e4c9ab4779c74ad99c3fc10d3967d03114449acc2c2762ad4472b8ca \ - --hash=sha256:0b9ac09853b2a3e0d0082104036579809679e7715671cfbf89d83c1cb2a30f58 \ - --hash=sha256:0d47840dc05e0ba04fe2e26f15126de7c755496d5a8aae4a08bda4dd8d646c54 \ - --hash=sha256:0f649fa32fe734c4abdfd4edbb8381c74abf5f34bc0b3271ce687b23729299ed \ - --hash=sha256:107ac60d1bfdc3edb53be75e2a52aff7481b92817cfdddd9b4519ccf0e54a6ff \ - --hash=sha256:11175910f62b2b8c055f2b089e0fedd694fe2be3941b3e2633653bc51064c528 \ - --hash=sha256:12bd4bc2c632742c7ce20db48e0d99afdc05e03f0b4c1af90542e05b809a03d9 \ - --hash=sha256:16f8740eb6dbacc7113e3097b0a36065a02e37b47c936b551805d40340fb9971 \ - --hash=sha256:1c0e8fae5b27caa34177bdfa5a960c46ff2f78ee2d45c6db15ae3f64ecadde14 \ - --hash=sha256:2c54e23836650bdf2c18222c87f6f840d4943944146ca479858404fedeb9f9af \ - --hash=sha256:3367007ad1951fde612bf65b0dffc8fd681a4ab98ac86957d16491400d661302 \ - --hash=sha256:36362386b813fa6c9146da6149a001b7bd063dabc4d49522a1f7aa65b725c7ec \ - --hash=sha256:39807cbcbe406efca2a233884e169d056c35aa7e9f343d4e78665246a332f597 \ - --hash=sha256:39cdf8d141d6d44e8d5a12a8569d5a227f645c87df4f92179bd06e2e2705e76b \ - --hash=sha256:3b2c3502603fab52d7619b882c25a6850b766ebd1b18de3df23b2f939360e1bd \ - --hash=sha256:3ccf2716add72f80714b9a63899b67fa711b654be3fcdd34fa391d2d274ce767 \ - --hash=sha256:3fef4f844d2290ee0ba57addcec17eec9e3df73f10a2748485dfd6a3a188cc0f \ - --hash=sha256:4023e2efc35a30e66e938de5aef42b520c20e7eda7bb5fb12c35e5d09a4c43f6 \ - --hash=sha256:4a3ee019a9befe84fa3e917a2dd378807e423d013377a884c1970a3c2792d293 \ - --hash=sha256:4a8bf76e3182797c6b1afa5b822d1d5802ff30284abe4599e1247be4fd6b03be \ - --hash=sha256:4a992f702c9be9c72fa46f01ca6e18d131906a7180950958f766c2aa294d4b41 \ - --hash=sha256:4c34d4f73ea738223a094d8e0ffd6d2c1a1b4c175da34d6b0de3d8d69bee6bcc \ - --hash=sha256:4cd1bccf99d3ef1ab6ba835308ad85be040e6a11b0977ef7ea8c8005f01a3c29 \ - --hash=sha256:4ef80829117a8061f974b2fda8ec799717242353bff55f8a29411794d635d964 \ - --hash=sha256:58837f9d221744d4c92d2cf7201c6acd19623b50c643b56992cbd2b745485d3d \ - --hash=sha256:5a8f91c64f390ecee09ff793319f30a0f32492e99f5dc1c72bc361f23ccd0a9a \ - --hash=sha256:5addc9d0209a9afca5fc070f93b726bf7003bd63a427f65ef797a931782e7edc \ - --hash=sha256:6239d4e2e0b52c8bd38c51b760cd870069f0bdf99700a62cd509d7a031749a55 \ - --hash=sha256:66e2fe786ef28da2b28e222c89502b2af984858091675044d93cb50e6f46d7af \ - --hash=sha256:69c0771ca5653c7d4b65203cbfc5e66db9375f1078689459fe196fe08b7b4930 \ - --hash=sha256:6ac965a998e1388e6ff2e9781f499ad1eaa41e962a40d11c7823c9952c77123e \ - --hash=sha256:6c56c3d47da04f921b73ff9415fbaa939f684d47293f071aa9cbb13c94afc17d \ - --hash=sha256:6f85739e80d13644b981a88f529d79c5bdf646b460ba190bffcaf6d57b2a9863 \ - --hash=sha256:706e7b739fdd17cb89e1fbf712d9dc21311fc2333f6d435eac2d4ee81985098c \ - --hash=sha256:741ba2f511cc9626b7561a440f87d658aabb3d6b744a86a3c025f866b4d19e7f \ - --hash=sha256:7434a61b158be563c1362d9071358f8ab91b8d928728cd2882af060481244c9e \ - --hash=sha256:76066d7ff61ba6bf3cb5efe2428fc82aac91802844c022d849a1f0f53820502d \ - --hash=sha256:7979b834ec7a33aafae34a90aad9f914c41fd6eaa8474e66953f3f6f7cbd4368 \ - --hash=sha256:7eece6fbd3eae4a92d7c748ae825cbc1ee41a89bb1c3db05b5578ed3cfcfd7cb \ - --hash=sha256:7ef1e014eed78ab650bef9a6a9cbe50b052c0aebe553fb2881e0453717573f52 \ - --hash=sha256:81dce2ddc9f6e8f543d94b05d56e70d03a0774d32f6cca53e978dc01e4fc75b8 \ - --hash=sha256:82fcc1f1cc3ff1ab8a57ba619b149b907072e750815c5ba63e7aa2e1163384a4 \ - --hash=sha256:8d1f21af4c1539051049796a0f50aa342f9a27cde57318f2fc41ed50b0dbc4ac \ - --hash=sha256:90a79bce019c442604662d17bf69df99090e24cdc6ad95b18b6725c2988a490e \ - --hash=sha256:9145f092b5d1977ec8c0ab46e7b3381b2fd069957b9862a43bd383e5c01d18c2 \ - --hash=sha256:91dc1d531f80c862441d7b66c4505cd6ea9d312f01fb2f4654f40c6fdf5cc37a \ - --hash=sha256:979c24cbefaf2420c4e377ecd1f165ea08cc3d1fbb44bdc51bccbbf7c66a2cb4 \ - --hash=sha256:994645a46c6a740ee8ce8df7911d4aee458d9b1bc5639bc968226763d07f00fa \ - --hash=sha256:9b98b7681a9437262947f41c7fac567c7e1f6eddd94b0483596d320092004533 \ - --hash=sha256:9c6b4d23c04831e3ab61717a707a5d763b300213db49ca680edf8bf13ab5d91b \ - --hash=sha256:9c6d0ced3c06d0f183b73d3c5920727268d2201aa0fe6d55c60d68c792ff3588 \ - --hash=sha256:9fd88f373cb71e6b59b7fa597e47e518282455c2734fd4306a05ca219a1991b0 \ - --hash=sha256:a8f4e49fc3ce020f65411432183e6775f24e02dff617281094ba6ab079ef0915 \ - --hash=sha256:a9e908ef5889cda4de038892b9accc36d33d72fb3e12c747e2799a0e806ec841 \ - --hash=sha256:ad08a69728ff3c79866d729b095872afe1e0557251da4abb2c5faff15a91d19a \ - --hash=sha256:adbccd17dcaff65704c856bd29951c58a1bd4b2b0f8ad6b826dbd543fe740988 \ - --hash=sha256:b0c7d2f698e83f15228ba41c135501cfe7d5740181d5903e250e47f617eb4292 \ - --hash=sha256:b3ab05a182c7937fb374f7e946f04fb23a0c0699c0450e9fb02ef567412d2fa3 \ - --hash=sha256:b6104f9a46bd8743e4f738afef69b153c4b8b592d35ae46db07fc28ae3d5fb7c \ - --hash=sha256:ba7cd6dc4d585ea544c1412019921570ebd8a597fabf475acc4528210d7c4a6f \ - --hash=sha256:bc72c231f5449d86d6c7d9cc7cd819b6eb30134bb770b8cfdc0765e48ef9c420 \ - --hash=sha256:bce8814b076f0ce5766dc87d5a056b0e9437b8e0cd351b9a6c4e1134a7dfbda9 \ - --hash=sha256:be5e22bbb67924dea15039c3282fa4cc6cdfbe0cbbd1c0515f9223186fc2ec5f \ - --hash=sha256:be6b7b8d42d3090b6c80793524fa66c57ad7ee3fe9722b258aec6d0672543fd0 \ - --hash=sha256:bfe50b61bab1b1ec260fa7cd91106fa9fece57e6beba05630afe27c71259c59b \ - --hash=sha256:bff507ae210371d4b1fe316d03433ac099f184d570a1a611e541923f78f05037 \ - --hash=sha256:c148bec483cc4b421562b4bcedb8e28a3b84fcc8f0aa4418e10898f3c2c0eb9b \ - --hash=sha256:c15ad0aee158a15e17e0495e1e18741573d04eb6da06d8b84af726cfc1ed02ee \ - --hash=sha256:c2169b2dcabf4e608416f7f9468737583ce5f0a6e8677c4efbf795ce81109d7c \ - --hash=sha256:c55853684fe08d4897c37dfc5faeff70607a5f1806c8be148f1695be4a63414b \ - --hash=sha256:c65a3b5330b54103e7d21cac3f6bf3900d46f6d50138d73343d9e5b2900b2353 \ - --hash=sha256:c7964c2183c3e6cce3f497e3a9f49d182e969f2dc3aeeadfa18945ff7bdd7051 \ - --hash=sha256:cc3f1c053b73f20c7ad88b0d1d23be7e7b3901229ce89f5000a8399746a6e039 \ - --hash=sha256:ce615c92d90df8373d9e13acddd154152645c0dc060871abf6bd43809673d20a \ - --hash=sha256:d29338556a59423d9ff7b6eb0cb89ead2b0875e08fe522f3e068b955c3e7b59b \ - --hash=sha256:d8a993c0a0ffd5f2d3bda23d0cd75e7086736f8f8268de8a82fbc4bd0ac6791e \ - --hash=sha256:d9c727bbcf0065cbb20f39d2b4f932f8fa1631c3e01fcedc979bd4f51fe051c5 \ - --hash=sha256:dac37cf08fcf2094159922edc7a2784cfcc5c70f8354469f79ed085f0328ebdf \ - --hash=sha256:dd829712de97753367153ed84f2de752b86cd1f7a88b55a3a775eb52eafe8a94 \ - --hash=sha256:e54ddd0bb8fb626aa1f9ba7b36629564544954fff9669b15da3610c22b9a0991 \ - --hash=sha256:e77c90ab5997e85901da85131fd36acd0ed2221368199b65f0d11bca44549711 \ - --hash=sha256:ebedc192abbc7fd13c5ee800e83a6df252bec691eb2c4bedc9f8b2e2903f5e2a \ - --hash=sha256:ef71561f82a89af6cfcbee47f0fabfdb6e63788a9258e913955d89fdd96902ab \ - --hash=sha256:f0a47efb1dbef13af9c9a54a94a0b814902e547b7f21acb29434504d18f36e3a \ - --hash=sha256:f4f2ca6df64cbdd27f27b34f35adb640b5d2d77264228554e68deda54456eb11 \ - --hash=sha256:fb02e4257376ae25c6dd95a5aec377f9b18c09be6ebdefa7ad209b9137b73d48 +regex==2023.12.25 \ + --hash=sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5 \ + --hash=sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770 \ + --hash=sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc \ + --hash=sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105 \ + --hash=sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d \ + --hash=sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b \ + --hash=sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9 \ + --hash=sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630 \ + --hash=sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6 \ + --hash=sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c \ + --hash=sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482 \ + --hash=sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6 \ + --hash=sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a \ + --hash=sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80 \ + --hash=sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5 \ + --hash=sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1 \ + --hash=sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f \ + --hash=sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf \ + --hash=sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb \ + --hash=sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2 \ + --hash=sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347 \ + --hash=sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20 \ + --hash=sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060 \ + --hash=sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5 \ + --hash=sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73 \ + --hash=sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f \ + --hash=sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d \ + --hash=sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3 \ + --hash=sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae \ + --hash=sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4 \ + --hash=sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2 \ + --hash=sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457 \ + --hash=sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c \ + --hash=sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4 \ + --hash=sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87 \ + --hash=sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0 \ + --hash=sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704 \ + --hash=sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f \ + --hash=sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f \ + --hash=sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b \ + --hash=sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5 \ + --hash=sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923 \ + --hash=sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715 \ + --hash=sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c \ + --hash=sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca \ + --hash=sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1 \ + --hash=sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756 \ + --hash=sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360 \ + --hash=sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc \ + --hash=sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445 \ + --hash=sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e \ + --hash=sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4 \ + --hash=sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a \ + --hash=sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8 \ + --hash=sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53 \ + --hash=sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697 \ + --hash=sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf \ + --hash=sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a \ + --hash=sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415 \ + --hash=sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f \ + --hash=sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9 \ + --hash=sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400 \ + --hash=sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d \ + --hash=sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392 \ + --hash=sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb \ + --hash=sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd \ + --hash=sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861 \ + --hash=sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232 \ + --hash=sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95 \ + --hash=sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7 \ + --hash=sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39 \ + --hash=sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887 \ + --hash=sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5 \ + --hash=sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39 \ + --hash=sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb \ + --hash=sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586 \ + --hash=sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97 \ + --hash=sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423 \ + --hash=sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69 \ + --hash=sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7 \ + --hash=sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1 \ + --hash=sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7 \ + --hash=sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5 \ + --hash=sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8 \ + --hash=sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91 \ + --hash=sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590 \ + --hash=sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe \ + --hash=sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c \ + --hash=sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64 \ + --hash=sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd \ + --hash=sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa \ + --hash=sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31 \ + --hash=sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988 # via # aws-sam-cli (setup.py) # cfn-lint diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index af09feb00e7..39ba49229a4 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -667,95 +667,100 @@ referencing==0.32.0 \ # via # jsonschema # jsonschema-specifications -regex==2023.10.3 \ - --hash=sha256:00ba3c9818e33f1fa974693fb55d24cdc8ebafcb2e4207680669d8f8d7cca79a \ - --hash=sha256:00e871d83a45eee2f8688d7e6849609c2ca2a04a6d48fba3dff4deef35d14f07 \ - --hash=sha256:06e9abc0e4c9ab4779c74ad99c3fc10d3967d03114449acc2c2762ad4472b8ca \ - --hash=sha256:0b9ac09853b2a3e0d0082104036579809679e7715671cfbf89d83c1cb2a30f58 \ - --hash=sha256:0d47840dc05e0ba04fe2e26f15126de7c755496d5a8aae4a08bda4dd8d646c54 \ - --hash=sha256:0f649fa32fe734c4abdfd4edbb8381c74abf5f34bc0b3271ce687b23729299ed \ - --hash=sha256:107ac60d1bfdc3edb53be75e2a52aff7481b92817cfdddd9b4519ccf0e54a6ff \ - --hash=sha256:11175910f62b2b8c055f2b089e0fedd694fe2be3941b3e2633653bc51064c528 \ - --hash=sha256:12bd4bc2c632742c7ce20db48e0d99afdc05e03f0b4c1af90542e05b809a03d9 \ - --hash=sha256:16f8740eb6dbacc7113e3097b0a36065a02e37b47c936b551805d40340fb9971 \ - --hash=sha256:1c0e8fae5b27caa34177bdfa5a960c46ff2f78ee2d45c6db15ae3f64ecadde14 \ - --hash=sha256:2c54e23836650bdf2c18222c87f6f840d4943944146ca479858404fedeb9f9af \ - --hash=sha256:3367007ad1951fde612bf65b0dffc8fd681a4ab98ac86957d16491400d661302 \ - --hash=sha256:36362386b813fa6c9146da6149a001b7bd063dabc4d49522a1f7aa65b725c7ec \ - --hash=sha256:39807cbcbe406efca2a233884e169d056c35aa7e9f343d4e78665246a332f597 \ - --hash=sha256:39cdf8d141d6d44e8d5a12a8569d5a227f645c87df4f92179bd06e2e2705e76b \ - --hash=sha256:3b2c3502603fab52d7619b882c25a6850b766ebd1b18de3df23b2f939360e1bd \ - --hash=sha256:3ccf2716add72f80714b9a63899b67fa711b654be3fcdd34fa391d2d274ce767 \ - --hash=sha256:3fef4f844d2290ee0ba57addcec17eec9e3df73f10a2748485dfd6a3a188cc0f \ - --hash=sha256:4023e2efc35a30e66e938de5aef42b520c20e7eda7bb5fb12c35e5d09a4c43f6 \ - --hash=sha256:4a3ee019a9befe84fa3e917a2dd378807e423d013377a884c1970a3c2792d293 \ - --hash=sha256:4a8bf76e3182797c6b1afa5b822d1d5802ff30284abe4599e1247be4fd6b03be \ - --hash=sha256:4a992f702c9be9c72fa46f01ca6e18d131906a7180950958f766c2aa294d4b41 \ - --hash=sha256:4c34d4f73ea738223a094d8e0ffd6d2c1a1b4c175da34d6b0de3d8d69bee6bcc \ - --hash=sha256:4cd1bccf99d3ef1ab6ba835308ad85be040e6a11b0977ef7ea8c8005f01a3c29 \ - --hash=sha256:4ef80829117a8061f974b2fda8ec799717242353bff55f8a29411794d635d964 \ - --hash=sha256:58837f9d221744d4c92d2cf7201c6acd19623b50c643b56992cbd2b745485d3d \ - --hash=sha256:5a8f91c64f390ecee09ff793319f30a0f32492e99f5dc1c72bc361f23ccd0a9a \ - --hash=sha256:5addc9d0209a9afca5fc070f93b726bf7003bd63a427f65ef797a931782e7edc \ - --hash=sha256:6239d4e2e0b52c8bd38c51b760cd870069f0bdf99700a62cd509d7a031749a55 \ - --hash=sha256:66e2fe786ef28da2b28e222c89502b2af984858091675044d93cb50e6f46d7af \ - --hash=sha256:69c0771ca5653c7d4b65203cbfc5e66db9375f1078689459fe196fe08b7b4930 \ - --hash=sha256:6ac965a998e1388e6ff2e9781f499ad1eaa41e962a40d11c7823c9952c77123e \ - --hash=sha256:6c56c3d47da04f921b73ff9415fbaa939f684d47293f071aa9cbb13c94afc17d \ - --hash=sha256:6f85739e80d13644b981a88f529d79c5bdf646b460ba190bffcaf6d57b2a9863 \ - --hash=sha256:706e7b739fdd17cb89e1fbf712d9dc21311fc2333f6d435eac2d4ee81985098c \ - --hash=sha256:741ba2f511cc9626b7561a440f87d658aabb3d6b744a86a3c025f866b4d19e7f \ - --hash=sha256:7434a61b158be563c1362d9071358f8ab91b8d928728cd2882af060481244c9e \ - --hash=sha256:76066d7ff61ba6bf3cb5efe2428fc82aac91802844c022d849a1f0f53820502d \ - --hash=sha256:7979b834ec7a33aafae34a90aad9f914c41fd6eaa8474e66953f3f6f7cbd4368 \ - --hash=sha256:7eece6fbd3eae4a92d7c748ae825cbc1ee41a89bb1c3db05b5578ed3cfcfd7cb \ - --hash=sha256:7ef1e014eed78ab650bef9a6a9cbe50b052c0aebe553fb2881e0453717573f52 \ - --hash=sha256:81dce2ddc9f6e8f543d94b05d56e70d03a0774d32f6cca53e978dc01e4fc75b8 \ - --hash=sha256:82fcc1f1cc3ff1ab8a57ba619b149b907072e750815c5ba63e7aa2e1163384a4 \ - --hash=sha256:8d1f21af4c1539051049796a0f50aa342f9a27cde57318f2fc41ed50b0dbc4ac \ - --hash=sha256:90a79bce019c442604662d17bf69df99090e24cdc6ad95b18b6725c2988a490e \ - --hash=sha256:9145f092b5d1977ec8c0ab46e7b3381b2fd069957b9862a43bd383e5c01d18c2 \ - --hash=sha256:91dc1d531f80c862441d7b66c4505cd6ea9d312f01fb2f4654f40c6fdf5cc37a \ - --hash=sha256:979c24cbefaf2420c4e377ecd1f165ea08cc3d1fbb44bdc51bccbbf7c66a2cb4 \ - --hash=sha256:994645a46c6a740ee8ce8df7911d4aee458d9b1bc5639bc968226763d07f00fa \ - --hash=sha256:9b98b7681a9437262947f41c7fac567c7e1f6eddd94b0483596d320092004533 \ - --hash=sha256:9c6b4d23c04831e3ab61717a707a5d763b300213db49ca680edf8bf13ab5d91b \ - --hash=sha256:9c6d0ced3c06d0f183b73d3c5920727268d2201aa0fe6d55c60d68c792ff3588 \ - --hash=sha256:9fd88f373cb71e6b59b7fa597e47e518282455c2734fd4306a05ca219a1991b0 \ - --hash=sha256:a8f4e49fc3ce020f65411432183e6775f24e02dff617281094ba6ab079ef0915 \ - --hash=sha256:a9e908ef5889cda4de038892b9accc36d33d72fb3e12c747e2799a0e806ec841 \ - --hash=sha256:ad08a69728ff3c79866d729b095872afe1e0557251da4abb2c5faff15a91d19a \ - --hash=sha256:adbccd17dcaff65704c856bd29951c58a1bd4b2b0f8ad6b826dbd543fe740988 \ - --hash=sha256:b0c7d2f698e83f15228ba41c135501cfe7d5740181d5903e250e47f617eb4292 \ - --hash=sha256:b3ab05a182c7937fb374f7e946f04fb23a0c0699c0450e9fb02ef567412d2fa3 \ - --hash=sha256:b6104f9a46bd8743e4f738afef69b153c4b8b592d35ae46db07fc28ae3d5fb7c \ - --hash=sha256:ba7cd6dc4d585ea544c1412019921570ebd8a597fabf475acc4528210d7c4a6f \ - --hash=sha256:bc72c231f5449d86d6c7d9cc7cd819b6eb30134bb770b8cfdc0765e48ef9c420 \ - --hash=sha256:bce8814b076f0ce5766dc87d5a056b0e9437b8e0cd351b9a6c4e1134a7dfbda9 \ - --hash=sha256:be5e22bbb67924dea15039c3282fa4cc6cdfbe0cbbd1c0515f9223186fc2ec5f \ - --hash=sha256:be6b7b8d42d3090b6c80793524fa66c57ad7ee3fe9722b258aec6d0672543fd0 \ - --hash=sha256:bfe50b61bab1b1ec260fa7cd91106fa9fece57e6beba05630afe27c71259c59b \ - --hash=sha256:bff507ae210371d4b1fe316d03433ac099f184d570a1a611e541923f78f05037 \ - --hash=sha256:c148bec483cc4b421562b4bcedb8e28a3b84fcc8f0aa4418e10898f3c2c0eb9b \ - --hash=sha256:c15ad0aee158a15e17e0495e1e18741573d04eb6da06d8b84af726cfc1ed02ee \ - --hash=sha256:c2169b2dcabf4e608416f7f9468737583ce5f0a6e8677c4efbf795ce81109d7c \ - --hash=sha256:c55853684fe08d4897c37dfc5faeff70607a5f1806c8be148f1695be4a63414b \ - --hash=sha256:c65a3b5330b54103e7d21cac3f6bf3900d46f6d50138d73343d9e5b2900b2353 \ - --hash=sha256:c7964c2183c3e6cce3f497e3a9f49d182e969f2dc3aeeadfa18945ff7bdd7051 \ - --hash=sha256:cc3f1c053b73f20c7ad88b0d1d23be7e7b3901229ce89f5000a8399746a6e039 \ - --hash=sha256:ce615c92d90df8373d9e13acddd154152645c0dc060871abf6bd43809673d20a \ - --hash=sha256:d29338556a59423d9ff7b6eb0cb89ead2b0875e08fe522f3e068b955c3e7b59b \ - --hash=sha256:d8a993c0a0ffd5f2d3bda23d0cd75e7086736f8f8268de8a82fbc4bd0ac6791e \ - --hash=sha256:d9c727bbcf0065cbb20f39d2b4f932f8fa1631c3e01fcedc979bd4f51fe051c5 \ - --hash=sha256:dac37cf08fcf2094159922edc7a2784cfcc5c70f8354469f79ed085f0328ebdf \ - --hash=sha256:dd829712de97753367153ed84f2de752b86cd1f7a88b55a3a775eb52eafe8a94 \ - --hash=sha256:e54ddd0bb8fb626aa1f9ba7b36629564544954fff9669b15da3610c22b9a0991 \ - --hash=sha256:e77c90ab5997e85901da85131fd36acd0ed2221368199b65f0d11bca44549711 \ - --hash=sha256:ebedc192abbc7fd13c5ee800e83a6df252bec691eb2c4bedc9f8b2e2903f5e2a \ - --hash=sha256:ef71561f82a89af6cfcbee47f0fabfdb6e63788a9258e913955d89fdd96902ab \ - --hash=sha256:f0a47efb1dbef13af9c9a54a94a0b814902e547b7f21acb29434504d18f36e3a \ - --hash=sha256:f4f2ca6df64cbdd27f27b34f35adb640b5d2d77264228554e68deda54456eb11 \ - --hash=sha256:fb02e4257376ae25c6dd95a5aec377f9b18c09be6ebdefa7ad209b9137b73d48 +regex==2023.12.25 \ + --hash=sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5 \ + --hash=sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770 \ + --hash=sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc \ + --hash=sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105 \ + --hash=sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d \ + --hash=sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b \ + --hash=sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9 \ + --hash=sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630 \ + --hash=sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6 \ + --hash=sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c \ + --hash=sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482 \ + --hash=sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6 \ + --hash=sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a \ + --hash=sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80 \ + --hash=sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5 \ + --hash=sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1 \ + --hash=sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f \ + --hash=sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf \ + --hash=sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb \ + --hash=sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2 \ + --hash=sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347 \ + --hash=sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20 \ + --hash=sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060 \ + --hash=sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5 \ + --hash=sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73 \ + --hash=sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f \ + --hash=sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d \ + --hash=sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3 \ + --hash=sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae \ + --hash=sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4 \ + --hash=sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2 \ + --hash=sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457 \ + --hash=sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c \ + --hash=sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4 \ + --hash=sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87 \ + --hash=sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0 \ + --hash=sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704 \ + --hash=sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f \ + --hash=sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f \ + --hash=sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b \ + --hash=sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5 \ + --hash=sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923 \ + --hash=sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715 \ + --hash=sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c \ + --hash=sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca \ + --hash=sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1 \ + --hash=sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756 \ + --hash=sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360 \ + --hash=sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc \ + --hash=sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445 \ + --hash=sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e \ + --hash=sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4 \ + --hash=sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a \ + --hash=sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8 \ + --hash=sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53 \ + --hash=sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697 \ + --hash=sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf \ + --hash=sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a \ + --hash=sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415 \ + --hash=sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f \ + --hash=sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9 \ + --hash=sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400 \ + --hash=sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d \ + --hash=sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392 \ + --hash=sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb \ + --hash=sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd \ + --hash=sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861 \ + --hash=sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232 \ + --hash=sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95 \ + --hash=sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7 \ + --hash=sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39 \ + --hash=sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887 \ + --hash=sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5 \ + --hash=sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39 \ + --hash=sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb \ + --hash=sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586 \ + --hash=sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97 \ + --hash=sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423 \ + --hash=sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69 \ + --hash=sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7 \ + --hash=sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1 \ + --hash=sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7 \ + --hash=sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5 \ + --hash=sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8 \ + --hash=sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91 \ + --hash=sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590 \ + --hash=sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe \ + --hash=sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c \ + --hash=sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64 \ + --hash=sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd \ + --hash=sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa \ + --hash=sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31 \ + --hash=sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988 # via # aws-sam-cli (setup.py) # cfn-lint From de61f7b47f75d8d21f0c75adc3b7f272b8d28183 Mon Sep 17 00:00:00 2001 From: Lucas <12496191+lucashuy@users.noreply.github.com> Date: Tue, 9 Jan 2024 16:13:11 -0800 Subject: [PATCH 042/100] chore: bump version to 1.107.0 (#6542) --- samcli/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samcli/__init__.py b/samcli/__init__.py index 5f119978686..387b323a8e3 100644 --- a/samcli/__init__.py +++ b/samcli/__init__.py @@ -2,4 +2,4 @@ SAM CLI version """ -__version__ = "1.106.0" +__version__ = "1.107.0" From 335e529d819d0f8b938a491b1c69e232daa22ce8 Mon Sep 17 00:00:00 2001 From: sidhujus <105385029+sidhujus@users.noreply.github.com> Date: Tue, 9 Jan 2024 16:43:55 -0800 Subject: [PATCH 043/100] Revert "Fix: sam invoke local throw error 'utf-8' codec can't decode byte 0xff (#6509)" (#6543) This reverts commit c49c2189815405d936c5f9529c2bb261e629d44d. --- samcli/lib/utils/stream_writer.py | 31 +------- .../apigw/authorizers/lambda_authorizer.py | 10 +-- samcli/local/apigw/local_apigw_service.py | 8 +- samcli/local/docker/container.py | 13 +--- .../local_lambda_invoke_service.py | 9 +-- samcli/local/services/base_local_service.py | 15 +--- .../local/invoke/test_integrations_cli.py | 35 --------- .../testdata/invoke/image-for-lambda.png | Bin 110984 -> 0 bytes tests/integration/testdata/invoke/main.py | 7 -- .../invoke/template-return-image.yaml | 12 --- tests/unit/lib/utils/test_stream_writer.py | 33 +-------- tests/unit/local/docker/test_container.py | 69 ++---------------- .../test_local_lambda_invoke_service.py | 2 +- 13 files changed, 31 insertions(+), 213 deletions(-) delete mode 100644 tests/integration/testdata/invoke/image-for-lambda.png delete mode 100644 tests/integration/testdata/invoke/template-return-image.yaml diff --git a/samcli/lib/utils/stream_writer.py b/samcli/lib/utils/stream_writer.py index dc2c2b9b5ca..78bae0d8ffc 100644 --- a/samcli/lib/utils/stream_writer.py +++ b/samcli/lib/utils/stream_writer.py @@ -1,12 +1,11 @@ """ This class acts like a wrapper around output streams to provide any flexibility with output we need """ -from io import BytesIO, TextIOWrapper -from typing import Optional, TextIO, Union +from typing import TextIO class StreamWriter: - def __init__(self, stream: TextIO, stream_bytes: Optional[Union[TextIO, BytesIO]] = None, auto_flush: bool = False): + def __init__(self, stream: TextIO, auto_flush: bool = False): """ Instatiates new StreamWriter to the specified stream @@ -14,40 +13,16 @@ def __init__(self, stream: TextIO, stream_bytes: Optional[Union[TextIO, BytesIO] ---------- stream io.RawIOBase Stream to wrap - stream_bytes io.TextIO | io.BytesIO - Stream to wrap if bytes are being written auto_flush bool Whether to autoflush the stream upon writing """ self._stream = stream - self._stream_bytes = stream if isinstance(stream, TextIOWrapper) else stream_bytes self._auto_flush = auto_flush @property def stream(self) -> TextIO: return self._stream - def write_bytes(self, output: bytes): - """ - Writes specified text to the underlying stream - Parameters - ---------- - output bytes-like object - Bytes to write into buffer - """ - # all these ifs are to satisfy the linting/type checking - if not self._stream_bytes: - return - if isinstance(self._stream_bytes, TextIOWrapper): - self._stream_bytes.buffer.write(output) - if self._auto_flush: - self._stream_bytes.flush() - - elif isinstance(self._stream_bytes, BytesIO): - self._stream_bytes.write(output) - if self._auto_flush: - self._stream_bytes.flush() - def write_str(self, output: str): """ Writes specified text to the underlying stream @@ -64,5 +39,3 @@ def write_str(self, output: str): def flush(self): self._stream.flush() - if self._stream_bytes: - self._stream_bytes.flush() diff --git a/samcli/local/apigw/authorizers/lambda_authorizer.py b/samcli/local/apigw/authorizers/lambda_authorizer.py index 8b7b92c6ea7..ed3483eee5f 100644 --- a/samcli/local/apigw/authorizers/lambda_authorizer.py +++ b/samcli/local/apigw/authorizers/lambda_authorizer.py @@ -5,7 +5,7 @@ from abc import ABC, abstractmethod from dataclasses import dataclass from json import JSONDecodeError, loads -from typing import Any, Dict, List, Optional, Tuple, Type, Union, cast +from typing import Any, Dict, List, Optional, Tuple, Type, cast from urllib.parse import parse_qsl from samcli.commands.local.lib.validators.identity_source_validator import IdentitySourceValidator @@ -321,13 +321,13 @@ def _parse_identity_sources(self, identity_sources: List[str]) -> None: break - def is_valid_response(self, response: Union[str, bytes], method_arn: str) -> bool: + def is_valid_response(self, response: str, method_arn: str) -> bool: """ Validates whether a Lambda authorizer request is authenticated or not. Parameters ---------- - response: Union[str, bytes] + response: str JSON string containing the output from a Lambda authorizer method_arn: str The method ARN of the route that invoked the Lambda authorizer @@ -418,13 +418,13 @@ def _validate_simple_response(self, response: dict) -> bool: return cast(bool, is_authorized) - def get_context(self, response: Union[str, bytes]) -> Dict[str, Any]: + def get_context(self, response: str) -> Dict[str, Any]: """ Returns the context (if set) from the authorizer response and appends the principalId to it. Parameters ---------- - response: Union[str, bytes] + response: str Output from Lambda authorizer Returns diff --git a/samcli/local/apigw/local_apigw_service.py b/samcli/local/apigw/local_apigw_service.py index 1e0f871fcda..df82b68ae4c 100644 --- a/samcli/local/apigw/local_apigw_service.py +++ b/samcli/local/apigw/local_apigw_service.py @@ -6,7 +6,7 @@ from datetime import datetime from io import StringIO from time import time -from typing import Any, Dict, List, Optional, Tuple, Union +from typing import Any, Dict, List, Optional, Tuple from flask import Flask, Request, request from werkzeug.datastructures import Headers @@ -594,7 +594,7 @@ def _valid_identity_sources(self, request: Request, route: Route) -> bool: return True - def _invoke_lambda_function(self, lambda_function_name: str, event: dict) -> Union[str, bytes]: + def _invoke_lambda_function(self, lambda_function_name: str, event: dict) -> str: """ Helper method to invoke a function and setup stdout+stderr @@ -607,8 +607,8 @@ def _invoke_lambda_function(self, lambda_function_name: str, event: dict) -> Uni Returns ------- - Union[str, bytes] - A string or bytes containing the output from the Lambda function + str + A string containing the output from the Lambda function """ with StringIO() as stdout: event_str = json.dumps(event, sort_keys=True) diff --git a/samcli/local/docker/container.py b/samcli/local/docker/container.py index bef505d87cd..6e54ed25311 100644 --- a/samcli/local/docker/container.py +++ b/samcli/local/docker/container.py @@ -363,7 +363,7 @@ def start(self, input_data=None): raise ex @retry(exc=requests.exceptions.RequestException, exc_raise=ContainerResponseException) - def wait_for_http_response(self, name, event, stdout) -> Tuple[Union[str, bytes], bool]: + def wait_for_http_response(self, name, event, stdout) -> Union[str, bytes]: # TODO(sriram-mv): `aws-lambda-rie` is in a mode where the function_name is always "function" # NOTE(sriram-mv): There is a connection timeout set on the http call to `aws-lambda-rie`, however there is not # a read time out for the response received from the server. @@ -374,13 +374,10 @@ def wait_for_http_response(self, name, event, stdout) -> Tuple[Union[str, bytes] timeout=(self.RAPID_CONNECTION_TIMEOUT, None), ) try: - # if response is an image then json.loads/dumps will throw a UnicodeDecodeError so return raw content - if "image" in resp.headers["Content-Type"]: - return resp.content, True - return json.dumps(json.loads(resp.content), ensure_ascii=False), False + return json.dumps(json.loads(resp.content), ensure_ascii=False) except json.JSONDecodeError: LOG.debug("Failed to deserialize response from RIE, returning the raw response as is") - return resp.content, False + return resp.content def wait_for_result(self, full_path, event, stdout, stderr, start_timer=None): # NOTE(sriram-mv): Let logging happen in its own thread, so that a http request can be sent. @@ -403,15 +400,13 @@ def wait_for_result(self, full_path, event, stdout, stderr, start_timer=None): # start the timer for function timeout right before executing the function, as waiting for the socket # can take some time timer = start_timer() if start_timer else None - response, is_image = self.wait_for_http_response(full_path, event, stdout) + response = self.wait_for_http_response(full_path, event, stdout) if timer: timer.cancel() self._logs_thread_event.wait(timeout=1) if isinstance(response, str): stdout.write_str(response) - elif isinstance(response, bytes) and is_image: - stdout.write_bytes(response) elif isinstance(response, bytes): stdout.write_str(response.decode("utf-8")) stdout.flush() diff --git a/samcli/local/lambda_service/local_lambda_invoke_service.py b/samcli/local/lambda_service/local_lambda_invoke_service.py index a847802b3c4..1e46a105076 100644 --- a/samcli/local/lambda_service/local_lambda_invoke_service.py +++ b/samcli/local/lambda_service/local_lambda_invoke_service.py @@ -165,9 +165,8 @@ def _invoke_request_handler(self, function_name): request_data = request_data.decode("utf-8") - stdout_stream_string = io.StringIO() - stdout_stream_bytes = io.BytesIO() - stdout_stream_writer = StreamWriter(stdout_stream_string, stdout_stream_bytes, auto_flush=True) + stdout_stream = io.StringIO() + stdout_stream_writer = StreamWriter(stdout_stream, auto_flush=True) try: self.lambda_runner.invoke(function_name, request_data, stdout=stdout_stream_writer, stderr=self.stderr) @@ -179,9 +178,7 @@ def _invoke_request_handler(self, function_name): "Inline code is not supported for sam local commands. Please write your code in a separate file." ) - lambda_response, is_lambda_user_error_response = LambdaOutputParser.get_lambda_output( - stdout_stream_string, stdout_stream_bytes - ) + lambda_response, is_lambda_user_error_response = LambdaOutputParser.get_lambda_output(stdout_stream) if is_lambda_user_error_response: return self.service_response( diff --git a/samcli/local/services/base_local_service.py b/samcli/local/services/base_local_service.py index 573c24b445b..5de5beb7dd5 100644 --- a/samcli/local/services/base_local_service.py +++ b/samcli/local/services/base_local_service.py @@ -2,7 +2,7 @@ import io import json import logging -from typing import Optional, Tuple, Union +from typing import Tuple from flask import Response @@ -85,9 +85,7 @@ def service_response(body, headers, status_code): class LambdaOutputParser: @staticmethod - def get_lambda_output( - stdout_stream_str: io.StringIO, stdout_stream_bytes: Optional[io.BytesIO] = None - ) -> Tuple[Union[str, bytes], bool]: + def get_lambda_output(stdout_stream: io.StringIO) -> Tuple[str, bool]: """ This method will extract read the given stream and return the response from Lambda function separated out from any log statements it might have outputted. Logs end up in the stdout stream if the Lambda function @@ -95,12 +93,9 @@ def get_lambda_output( Parameters ---------- - stdout_stream_str : io.BaseIO + stdout_stream : io.BaseIO Stream to fetch data from - stdout_stream_bytes : Optional[io.BytesIO], optional - Stream to fetch raw bytes data from - Returns ------- str @@ -108,9 +103,7 @@ def get_lambda_output( bool If the response is an error/exception from the container """ - lambda_response: Union[str, bytes] = stdout_stream_str.getvalue() - if stdout_stream_bytes and not lambda_response: - lambda_response = stdout_stream_bytes.getvalue() + lambda_response = stdout_stream.getvalue() # When the Lambda Function returns an Error/Exception, the output is added to the stdout of the container. From # our perspective, the container returned some value, which is not always true. Since the output is the only diff --git a/tests/integration/local/invoke/test_integrations_cli.py b/tests/integration/local/invoke/test_integrations_cli.py index 3c33a25cead..c1a114b5d49 100644 --- a/tests/integration/local/invoke/test_integrations_cli.py +++ b/tests/integration/local/invoke/test_integrations_cli.py @@ -1197,41 +1197,6 @@ def test_invoke_inline_code_function(self): self.assertEqual(process.returncode, 1) -class TestInvokeFunctionWithImageBytesAsReturn(InvokeIntegBase): - template = Path("template-return-image.yaml") - - @pytest.mark.flaky(reruns=3) - def test_invoke_returncode_is_zero(self): - command_list = InvokeIntegBase.get_command_list( - "GetImageFunction", template_path=self.template_path, event_path=self.event_path - ) - - process = Popen(command_list, stdout=PIPE) - try: - process.communicate(timeout=TIMEOUT) - except TimeoutExpired: - process.kill() - raise - - self.assertEqual(process.returncode, 0) - - @pytest.mark.flaky(reruns=3) - def test_invoke_image_is_returned(self): - command_list = InvokeIntegBase.get_command_list( - "GetImageFunction", template_path=self.template_path, event_path=self.event_path - ) - - process = Popen(command_list, stdout=PIPE) - try: - stdout, _ = process.communicate(timeout=TIMEOUT) - except TimeoutExpired: - process.kill() - raise - - # The first byte of a png image file is \x89 so we can check that to verify that it returned an image - self.assertEqual(stdout[0:1], b"\x89") - - class TestInvokeFunctionWithError(InvokeIntegBase): template = Path("template.yml") diff --git a/tests/integration/testdata/invoke/image-for-lambda.png b/tests/integration/testdata/invoke/image-for-lambda.png deleted file mode 100644 index 56a3af614bf81d70f280cb36c576aa82b684b8f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110984 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 M07*qoM6N<$f|_ Date: Thu, 11 Jan 2024 12:54:38 -0500 Subject: [PATCH 044/100] Add --add-host cli option to expose docker container option with the same name. (#6078) * add: expose Docker --add-host to local invoke command Docker supports providing host to ip settings via add-host cli option. This change exposes this option similarly and utilizes in docker container creation. * lint: formatting long lines * fix: unit tests for add-host cli option With these fixes, unit tests are aligned to handle add-host cli option and extra_hosts dictionary for Docker container creation. * fix: start-lambda cli is missing add_host for InvokeContext * refactor: move add_host parsing from InvokeContext This change moves add_host parameter parsing into its own type DockerAdditionalHostType . * Update lambda_container.py deleting the extra line * style: applied formatting * fix: add missing schema changes for add-host cli option --------- Co-authored-by: Murat Yukselen Co-authored-by: Lucas <12496191+lucashuy@users.noreply.github.com> Co-authored-by: Wing Fung Lau <4760060+hawflau@users.noreply.github.com> --- samcli/cli/types.py | 27 ++++++ samcli/commands/_utils/options.py | 15 +++ .../local/cli_common/invoke_context.py | 7 ++ samcli/commands/local/cli_common/options.py | 20 +++- samcli/commands/local/invoke/cli.py | 4 + samcli/commands/local/invoke/core/options.py | 1 + samcli/commands/local/lib/local_lambda.py | 4 + samcli/commands/local/start_api/cli.py | 2 + .../commands/local/start_api/core/options.py | 1 + samcli/commands/local/start_lambda/cli.py | 4 + .../local/start_lambda/core/options.py | 1 + samcli/local/docker/container.py | 6 ++ samcli/local/docker/lambda_container.py | 4 + samcli/local/lambdafn/runtime.py | 20 +++- schema/samcli.json | 30 +++++- .../local/cli_common/test_invoke_context.py | 92 +++++++++++++++++++ tests/unit/commands/local/invoke/test_cli.py | 4 + .../commands/local/lib/test_local_lambda.py | 4 + .../commands/local/start_lambda/test_cli.py | 3 + .../unit/commands/samconfig/test_samconfig.py | 5 + tests/unit/local/lambdafn/test_runtime.py | 8 ++ .../passing_tests/local_invokecmd.toml | 4 +- .../passing_tests/local_start_apicmd.toml | 4 +- .../passing_tests/local_start_lambdacmd.toml | 4 +- 24 files changed, 263 insertions(+), 11 deletions(-) diff --git a/samcli/cli/types.py b/samcli/cli/types.py index a1488407d66..894437b9a1f 100644 --- a/samcli/cli/types.py +++ b/samcli/cli/types.py @@ -453,6 +453,33 @@ def convert(self, value, param, ctx): return {key: _value} +class DockerAdditionalHostType(click.ParamType): + """ + Custom Parameter Type for managing Docker container's host file for local commands + """ + + name = "list" + MIN_KEY_VALUE_PAIR_LENGTH = 2 + + def convert(self, value, param, ctx): + """Converts the user provided parameters value with the format "host:IP" to dict + {"host": "IP"} + + Parameters + ------------ + value: User provided value for the click option + param: click parameter + ctx: Context + """ + host_ip_pair = value.split(":", maxsplit=1) + if len(host_ip_pair) < self.MIN_KEY_VALUE_PAIR_LENGTH: + raise click.BadParameter(f"{param.opts[0]} is not a valid format, it needs to be of the form hostname:IP") + host = host_ip_pair[0] + ip = host_ip_pair[1] + LOG.debug("Converting provided %s option value to dict", param.opts[0]) + return {host: ip} + + class RemoteInvokeOutputFormatType(click.Choice): """ Custom Parameter Type for output-format option of remote invoke command. diff --git a/samcli/commands/_utils/options.py b/samcli/commands/_utils/options.py index 4796610b563..777058216b4 100644 --- a/samcli/commands/_utils/options.py +++ b/samcli/commands/_utils/options.py @@ -156,6 +156,21 @@ def remote_invoke_boto_parameter_callback(ctx, param, provided_value): return boto_api_parameters +def local_add_host_callback(ctx, param, provided_value): + """ + Create a dictionary of hostnames to IP addresses to add into Docker container's hosts file. + :param ctx: Click Context + :param param: Param name + :param provided_value: Value provided by Click, after being processed by DockerAdditionalHostType. + :return: dictionary of hostnames to IP addresses. + """ + extra_hosts = {} + for value in provided_value: + extra_hosts.update(value) + + return extra_hosts + + def artifact_callback(ctx, param, provided_value, artifact): """ Provide an error if there are zip/image artifact based resources, diff --git a/samcli/commands/local/cli_common/invoke_context.py b/samcli/commands/local/cli_common/invoke_context.py index 30dc8b4c031..fc7ca7020dd 100644 --- a/samcli/commands/local/cli_common/invoke_context.py +++ b/samcli/commands/local/cli_common/invoke_context.py @@ -97,6 +97,7 @@ def __init__( shutdown: bool = False, container_host: Optional[str] = None, container_host_interface: Optional[str] = None, + add_host: Optional[dict] = None, invoke_images: Optional[str] = None, ) -> None: """ @@ -148,6 +149,8 @@ def __init__( Optional. Host of locally emulated Lambda container container_host_interface string Optional. Interface that Docker host binds ports to + add_host dict + Optional. Docker extra hosts support from --add-host parameters invoke_images dict Optional. A dictionary that defines the custom invoke image URI of each function """ @@ -177,6 +180,9 @@ def __init__( self._container_host = container_host self._container_host_interface = container_host_interface + + self._extra_hosts: Optional[Dict] = add_host + self._invoke_images = invoke_images self._containers_mode = ContainersMode.COLD @@ -396,6 +402,7 @@ def local_lambda_runner(self) -> LocalLambdaRunner: debug_context=self._debug_context, container_host=self._container_host, container_host_interface=self._container_host_interface, + extra_hosts=self._extra_hosts, ) return self._local_lambda_runner diff --git a/samcli/commands/local/cli_common/options.py b/samcli/commands/local/cli_common/options.py index 052902eab7e..a525fb463c5 100644 --- a/samcli/commands/local/cli_common/options.py +++ b/samcli/commands/local/cli_common/options.py @@ -5,7 +5,13 @@ import click -from samcli.commands._utils.options import docker_click_options, parameter_override_click_option, template_click_option +from samcli.cli.types import DockerAdditionalHostType +from samcli.commands._utils.options import ( + docker_click_options, + local_add_host_callback, + parameter_override_click_option, + template_click_option, +) from samcli.commands.local.cli_common.invoke_context import ContainersInitializationMode from samcli.local.docker.container import DEFAULT_CONTAINER_HOST_INTERFACE @@ -65,6 +71,18 @@ def local_common_options(f): help="IP address of the host network interface that container ports should bind to. " "Use 0.0.0.0 to bind to all interfaces.", ), + click.option( + "--add-host", + multiple=True, + type=DockerAdditionalHostType(), + callback=local_add_host_callback, + required=False, + help="Passes a hostname to IP address mapping to the Docker container's host file. " + "This parameter can be passed multiple times." + "" + "Example:" + "--add-host example.com:127.0.0.1", + ), click.option( "--invoke-image", "-ii", diff --git a/samcli/commands/local/invoke/cli.py b/samcli/commands/local/invoke/cli.py index ac3856bb008..a31d68386d0 100644 --- a/samcli/commands/local/invoke/cli.py +++ b/samcli/commands/local/invoke/cli.py @@ -90,6 +90,7 @@ def cli( config_env, container_host, container_host_interface, + add_host, invoke_image, hook_name, skip_prepare_infra, @@ -121,6 +122,7 @@ def cli( parameter_overrides, container_host, container_host_interface, + add_host, invoke_image, hook_name, ) # pragma: no cover @@ -147,6 +149,7 @@ def do_cli( # pylint: disable=R0914 parameter_overrides, container_host, container_host_interface, + add_host, invoke_image, hook_name, ): @@ -195,6 +198,7 @@ def do_cli( # pylint: disable=R0914 shutdown=shutdown, container_host=container_host, container_host_interface=container_host_interface, + add_host=add_host, invoke_images=processed_invoke_images, ) as context: # Invoke the function diff --git a/samcli/commands/local/invoke/core/options.py b/samcli/commands/local/invoke/core/options.py index 25a9576b218..ff23f857f56 100644 --- a/samcli/commands/local/invoke/core/options.py +++ b/samcli/commands/local/invoke/core/options.py @@ -32,6 +32,7 @@ "shutdown", "container_host", "container_host_interface", + "add_host", "invoke_image", ] diff --git a/samcli/commands/local/lib/local_lambda.py b/samcli/commands/local/lib/local_lambda.py index 14f7578187a..e2d0e80b9e6 100644 --- a/samcli/commands/local/lib/local_lambda.py +++ b/samcli/commands/local/lib/local_lambda.py @@ -51,6 +51,7 @@ def __init__( debug_context: Optional[DebugContext] = None, container_host: Optional[str] = None, container_host_interface: Optional[str] = None, + extra_hosts: Optional[dict] = None, ) -> None: """ Initializes the class @@ -65,6 +66,7 @@ def __init__( :param DebugContext debug_context: Optional. Debug context for the function (includes port, args, and path). :param string container_host: Optional. Host of locally emulated Lambda container :param string container_host_interface: Optional. Interface that Docker host binds ports to + :param dict extra_hosts: Optional. Dict of hostname to IP resolutions """ self.local_runtime = local_runtime @@ -78,6 +80,7 @@ def __init__( self._boto3_region: Optional[str] = None self.container_host = container_host self.container_host_interface = container_host_interface + self.extra_hosts = extra_hosts def invoke( self, @@ -149,6 +152,7 @@ def invoke( stderr=stderr, container_host=self.container_host, container_host_interface=self.container_host_interface, + extra_hosts=self.extra_hosts, ) except ContainerResponseException: # NOTE(sriram-mv): This should still result in a exit code zero to avoid regressions. diff --git a/samcli/commands/local/start_api/cli.py b/samcli/commands/local/start_api/cli.py index d8b94fe48e9..0ef1ef5c52b 100644 --- a/samcli/commands/local/start_api/cli.py +++ b/samcli/commands/local/start_api/cli.py @@ -134,6 +134,7 @@ def cli( debug_function, container_host, container_host_interface, + add_host, invoke_image, hook_name, skip_prepare_infra, @@ -170,6 +171,7 @@ def cli( debug_function, container_host, container_host_interface, + add_host, invoke_image, hook_name, ssl_cert_file, diff --git a/samcli/commands/local/start_api/core/options.py b/samcli/commands/local/start_api/core/options.py index 49712814506..5a5c7ca23dd 100644 --- a/samcli/commands/local/start_api/core/options.py +++ b/samcli/commands/local/start_api/core/options.py @@ -38,6 +38,7 @@ "shutdown", "container_host", "container_host_interface", + "add_host", "invoke_image", "disable_authorizer", ] diff --git a/samcli/commands/local/start_lambda/cli.py b/samcli/commands/local/start_lambda/cli.py index 338e76332c8..88a5078d7e9 100644 --- a/samcli/commands/local/start_lambda/cli.py +++ b/samcli/commands/local/start_lambda/cli.py @@ -96,6 +96,7 @@ def cli( debug_function, container_host, container_host_interface, + add_host, invoke_image, hook_name, skip_prepare_infra, @@ -128,6 +129,7 @@ def cli( debug_function, container_host, container_host_interface, + add_host, invoke_image, hook_name, ) # pragma: no cover @@ -155,6 +157,7 @@ def do_cli( # pylint: disable=R0914 debug_function, container_host, container_host_interface, + add_host, invoke_image, hook_name, ): @@ -200,6 +203,7 @@ def do_cli( # pylint: disable=R0914 shutdown=shutdown, container_host=container_host, container_host_interface=container_host_interface, + add_host=add_host, invoke_images=processed_invoke_images, ) as invoke_context: service = LocalLambdaService(lambda_invoke_context=invoke_context, port=port, host=host) diff --git a/samcli/commands/local/start_lambda/core/options.py b/samcli/commands/local/start_lambda/core/options.py index 73d3f973102..1a35f564ea6 100644 --- a/samcli/commands/local/start_lambda/core/options.py +++ b/samcli/commands/local/start_lambda/core/options.py @@ -34,6 +34,7 @@ "shutdown", "container_host", "container_host_interface", + "add_host", "invoke_image", ] diff --git a/samcli/local/docker/container.py b/samcli/local/docker/container.py index 6e54ed25311..b1777279b07 100644 --- a/samcli/local/docker/container.py +++ b/samcli/local/docker/container.py @@ -79,6 +79,7 @@ def __init__( container_host_interface=DEFAULT_CONTAINER_HOST_INTERFACE, mount_with_write: bool = False, host_tmp_dir: Optional[str] = None, + extra_hosts: Optional[dict] = None, ): """ Initializes the class with given configuration. This does not automatically create or run the container. @@ -100,6 +101,7 @@ def __init__( :param bool mount_with_write: Optional. Mount source code directory with write permissions when building on container :param string host_tmp_dir: Optional. Temporary directory on the host when mounting with write permissions. + :param dict extra_hosts: Optional. Dict of hostname to IP resolutions """ self._image = image @@ -114,6 +116,7 @@ def __init__( self._container_opts = container_opts self._additional_volumes = additional_volumes self._logs_thread = None + self._extra_hosts = extra_hosts self._logs_thread_event = None # Use the given Docker client or create new one @@ -215,6 +218,9 @@ def create(self): # Ex: 128m => 128MB kwargs["mem_limit"] = "{}m".format(self._memory_limit_mb) + if self._extra_hosts: + kwargs["extra_hosts"] = self._extra_hosts + real_container = self.docker_client.containers.create(self._image, **kwargs) self.id = real_container.id diff --git a/samcli/local/docker/lambda_container.py b/samcli/local/docker/lambda_container.py index c9a3dfd2b37..0e3a96efadf 100644 --- a/samcli/local/docker/lambda_container.py +++ b/samcli/local/docker/lambda_container.py @@ -51,6 +51,7 @@ def __init__( debug_options=None, container_host=None, container_host_interface=DEFAULT_CONTAINER_HOST_INTERFACE, + extra_hosts=None, function_full_path=None, ): """ @@ -87,6 +88,8 @@ def __init__( Optional. Host of locally emulated Lambda container container_host_interface Optional. Interface that Docker host binds ports to + extra_hosts + Optional. Dict of hostname to IP resolutions function_full_path str Optional. The function full path, unique in all stacks """ @@ -138,6 +141,7 @@ def __init__( additional_volumes=additional_volumes, container_host=container_host, container_host_interface=container_host_interface, + extra_hosts=extra_hosts, ) @staticmethod diff --git a/samcli/local/lambdafn/runtime.py b/samcli/local/lambdafn/runtime.py index ba406d06ea0..7e42a53978f 100644 --- a/samcli/local/lambdafn/runtime.py +++ b/samcli/local/lambdafn/runtime.py @@ -49,7 +49,9 @@ def __init__(self, container_manager, image_builder): self._image_builder = image_builder self._temp_uncompressed_paths_to_be_cleaned = [] - def create(self, function_config, debug_context=None, container_host=None, container_host_interface=None): + def create( + self, function_config, debug_context=None, container_host=None, container_host_interface=None, extra_hosts=None + ): """ Create a new Container for the passed function, then store it in a dictionary using the function name, so it can be retrieved later and used in the other functions. Make sure to use the debug_context only @@ -100,6 +102,7 @@ def create(self, function_config, debug_context=None, container_host=None, conta debug_options=debug_context, container_host=container_host, container_host_interface=container_host_interface, + extra_hosts=extra_hosts, function_full_path=function_config.full_path, ) try: @@ -162,6 +165,7 @@ def invoke( stderr: Optional[StreamWriter] = None, container_host=None, container_host_interface=None, + extra_hosts=None, ): """ Invoke the given Lambda function locally. @@ -184,12 +188,16 @@ def invoke( Host of locally emulated Lambda container :param string container_host_interface: Optional. Interface that Docker host binds ports to + :param dict extra_hosts: Optional. + Dict of hostname to IP resolutions :raises Keyboard """ container = None try: # Start the container. This call returns immediately after the container starts - container = self.create(function_config, debug_context, container_host, container_host_interface) + container = self.create( + function_config, debug_context, container_host, container_host_interface, extra_hosts + ) container = self.run(container, function_config, debug_context) # Setup appropriate interrupt - timeout or Ctrl+C - before function starts executing and # get callback function to start timeout timer @@ -375,7 +383,9 @@ def __init__(self, container_manager, image_builder, observer=None): super().__init__(container_manager, image_builder) - def create(self, function_config, debug_context=None, container_host=None, container_host_interface=None): + def create( + self, function_config, debug_context=None, container_host=None, container_host_interface=None, extra_hosts=None + ): """ Create a new Container for the passed function, then store it in a dictionary using the function name, so it can be retrieved later and used in the other functions. Make sure to use the debug_context only @@ -429,7 +439,9 @@ def create(self, function_config, debug_context=None, container_host=None, conta self._observer.watch(function_config) self._observer.start() - container = super().create(function_config, debug_context, container_host, container_host_interface) + container = super().create( + function_config, debug_context, container_host, container_host_interface, extra_hosts + ) self._function_configs[function_config.full_path] = function_config self._containers[function_config.full_path] = container diff --git a/schema/samcli.json b/schema/samcli.json index 0ca80e4bd18..3dca17f2592 100644 --- a/schema/samcli.json +++ b/schema/samcli.json @@ -403,7 +403,7 @@ "properties": { "parameters": { "title": "Parameters for the local invoke command", - "description": "Available parameters for the local invoke command:\n* terraform_plan_file:\nUsed for passing a custom plan file when executing the Terraform hook.\n* hook_name:\nHook package id to extend AWS SAM CLI commands functionality. \n\nExample: `terraform` to extend AWS SAM CLI commands functionality to support terraform applications. \n\nAvailable Hook Names: ['terraform']\n* skip_prepare_infra:\nSkip preparation stage when there are no infrastructure changes. Only used in conjunction with --hook-name.\n* event:\nJSON file containing event data passed to the Lambda function during invoke. If this option is not specified, no event is assumed. Pass in the value '-' to input JSON via stdin\n* no_event:\nDEPRECATED: By default no event is assumed.\n* template_file:\nAWS SAM template which references built artifacts for resources in the template. (if applicable)\n* env_vars:\nJSON file containing values for Lambda function's environment variables.\n* parameter_overrides:\nString that contains AWS CloudFormation parameter overrides encoded as key=value pairs.\n* debug_port:\nWhen specified, Lambda function container will start in debug mode and will expose this port on localhost.\n* debugger_path:\nHost path to a debugger that will be mounted into the Lambda container.\n* debug_args:\nAdditional arguments to be passed to the debugger.\n* container_env_vars:\nJSON file containing additional environment variables to be set within the container when used in a debugging session locally.\n* docker_volume_basedir:\nSpecify the location basedir where the SAM template exists. If Docker is running on a remote machine, Path of the SAM template must be mounted on the Docker machine and modified to match the remote machine.\n* log_file:\nFile to capture output logs.\n* layer_cache_basedir:\nSpecify the location basedir where the lambda layers used by the template will be downloaded to.\n* skip_pull_image:\nSkip pulling down the latest Docker image for Lambda runtime.\n* docker_network:\nName or ID of an existing docker network for AWS Lambda docker containers to connect to, along with the default bridge network. If not specified, the Lambda containers will only connect to the default bridge docker network.\n* force_image_build:\nForce rebuilding the image used for invoking functions with layers.\n* shutdown:\nEmulate a shutdown event after invoke completes, to test extension handling of shutdown behavior.\n* container_host:\nHost of locally emulated Lambda container. This option is useful when the container runs on a different host than AWS SAM CLI. For example, if one wants to run AWS SAM CLI in a Docker container on macOS, this option could specify `host.docker.internal`\n* container_host_interface:\nIP address of the host network interface that container ports should bind to. Use 0.0.0.0 to bind to all interfaces.\n* invoke_image:\nContainer image URIs for invoking functions or starting api and function. One can specify the image URI used for the local function invocation (--invoke-image public.ecr.aws/sam/build-nodejs14.x:latest). One can also specify for each individual function with (--invoke-image Function1=public.ecr.aws/sam/build-nodejs14.x:latest). If a function does not have invoke image specified, the default AWS SAM CLI emulation image will be used.\n* beta_features:\nEnable/Disable beta features.\n* debug:\nTurn on debug logging to print debug message generated by AWS SAM CLI and display timestamps.\n* profile:\nSelect a specific profile from your credential file to get AWS credentials.\n* region:\nSet the AWS Region of the service. (e.g. us-east-1)\n* save_params:\nSave the parameters provided via the command line to the configuration file.", + "description": "Available parameters for the local invoke command:\n* terraform_plan_file:\nUsed for passing a custom plan file when executing the Terraform hook.\n* hook_name:\nHook package id to extend AWS SAM CLI commands functionality. \n\nExample: `terraform` to extend AWS SAM CLI commands functionality to support terraform applications. \n\nAvailable Hook Names: ['terraform']\n* skip_prepare_infra:\nSkip preparation stage when there are no infrastructure changes. Only used in conjunction with --hook-name.\n* event:\nJSON file containing event data passed to the Lambda function during invoke. If this option is not specified, no event is assumed. Pass in the value '-' to input JSON via stdin\n* no_event:\nDEPRECATED: By default no event is assumed.\n* template_file:\nAWS SAM template which references built artifacts for resources in the template. (if applicable)\n* env_vars:\nJSON file containing values for Lambda function's environment variables.\n* parameter_overrides:\nString that contains AWS CloudFormation parameter overrides encoded as key=value pairs.\n* debug_port:\nWhen specified, Lambda function container will start in debug mode and will expose this port on localhost.\n* debugger_path:\nHost path to a debugger that will be mounted into the Lambda container.\n* debug_args:\nAdditional arguments to be passed to the debugger.\n* container_env_vars:\nJSON file containing additional environment variables to be set within the container when used in a debugging session locally.\n* docker_volume_basedir:\nSpecify the location basedir where the SAM template exists. If Docker is running on a remote machine, Path of the SAM template must be mounted on the Docker machine and modified to match the remote machine.\n* log_file:\nFile to capture output logs.\n* layer_cache_basedir:\nSpecify the location basedir where the lambda layers used by the template will be downloaded to.\n* skip_pull_image:\nSkip pulling down the latest Docker image for Lambda runtime.\n* docker_network:\nName or ID of an existing docker network for AWS Lambda docker containers to connect to, along with the default bridge network. If not specified, the Lambda containers will only connect to the default bridge docker network.\n* force_image_build:\nForce rebuilding the image used for invoking functions with layers.\n* shutdown:\nEmulate a shutdown event after invoke completes, to test extension handling of shutdown behavior.\n* container_host:\nHost of locally emulated Lambda container. This option is useful when the container runs on a different host than AWS SAM CLI. For example, if one wants to run AWS SAM CLI in a Docker container on macOS, this option could specify `host.docker.internal`\n* container_host_interface:\nIP address of the host network interface that container ports should bind to. Use 0.0.0.0 to bind to all interfaces.\n* add_host:\nPasses a hostname to IP address mapping to the Docker container's host file. This parameter can be passed multiple times.Example:--add-host example.com:127.0.0.1\n* invoke_image:\nContainer image URIs for invoking functions or starting api and function. One can specify the image URI used for the local function invocation (--invoke-image public.ecr.aws/sam/build-nodejs14.x:latest). One can also specify for each individual function with (--invoke-image Function1=public.ecr.aws/sam/build-nodejs14.x:latest). If a function does not have invoke image specified, the default AWS SAM CLI emulation image will be used.\n* beta_features:\nEnable/Disable beta features.\n* debug:\nTurn on debug logging to print debug message generated by AWS SAM CLI and display timestamps.\n* profile:\nSelect a specific profile from your credential file to get AWS credentials.\n* region:\nSet the AWS Region of the service. (e.g. us-east-1)\n* save_params:\nSave the parameters provided via the command line to the configuration file.", "type": "object", "properties": { "terraform_plan_file": { @@ -521,6 +521,14 @@ "description": "IP address of the host network interface that container ports should bind to. Use 0.0.0.0 to bind to all interfaces.", "default": "127.0.0.1" }, + "add_host": { + "title": "add_host", + "type": "array", + "description": "Passes a hostname to IP address mapping to the Docker container's host file. This parameter can be passed multiple times.Example:--add-host example.com:127.0.0.1", + "items": { + "type": "string" + } + }, "invoke_image": { "title": "invoke_image", "type": "string", @@ -564,7 +572,7 @@ "properties": { "parameters": { "title": "Parameters for the local start api command", - "description": "Available parameters for the local start api command:\n* terraform_plan_file:\nUsed for passing a custom plan file when executing the Terraform hook.\n* hook_name:\nHook package id to extend AWS SAM CLI commands functionality. \n\nExample: `terraform` to extend AWS SAM CLI commands functionality to support terraform applications. \n\nAvailable Hook Names: ['terraform']\n* skip_prepare_infra:\nSkip preparation stage when there are no infrastructure changes. Only used in conjunction with --hook-name.\n* host:\nLocal hostname or IP address to bind to (default: '127.0.0.1')\n* port:\nLocal port number to listen on (default: '3000')\n* static_dir:\nAny static assets (e.g. CSS/Javascript/HTML) files located in this directory will be presented at /\n* disable_authorizer:\nDisable custom Lambda Authorizers from being parsed and invoked.\n* ssl_cert_file:\nPath to SSL certificate file (default: None)\n* ssl_key_file:\nPath to SSL key file (default: None)\n* template_file:\nAWS SAM template which references built artifacts for resources in the template. (if applicable)\n* env_vars:\nJSON file containing values for Lambda function's environment variables.\n* parameter_overrides:\nString that contains AWS CloudFormation parameter overrides encoded as key=value pairs.\n* debug_port:\nWhen specified, Lambda function container will start in debug mode and will expose this port on localhost.\n* debugger_path:\nHost path to a debugger that will be mounted into the Lambda container.\n* debug_args:\nAdditional arguments to be passed to the debugger.\n* container_env_vars:\nJSON file containing additional environment variables to be set within the container when used in a debugging session locally.\n* docker_volume_basedir:\nSpecify the location basedir where the SAM template exists. If Docker is running on a remote machine, Path of the SAM template must be mounted on the Docker machine and modified to match the remote machine.\n* log_file:\nFile to capture output logs.\n* layer_cache_basedir:\nSpecify the location basedir where the lambda layers used by the template will be downloaded to.\n* skip_pull_image:\nSkip pulling down the latest Docker image for Lambda runtime.\n* docker_network:\nName or ID of an existing docker network for AWS Lambda docker containers to connect to, along with the default bridge network. If not specified, the Lambda containers will only connect to the default bridge docker network.\n* force_image_build:\nForce rebuilding the image used for invoking functions with layers.\n* warm_containers:\nOptional. Specifies how AWS SAM CLI manages \ncontainers for each function.\nTwo modes are available:\nEAGER: Containers for all functions are \nloaded at startup and persist between \ninvocations.\nLAZY: Containers are only loaded when each \nfunction is first invoked. Those containers \npersist for additional invocations.\n* debug_function:\nOptional. Specifies the Lambda Function logicalId to apply debug options to when --warm-containers is specified. This parameter applies to --debug-port, --debugger-path, and --debug-args.\n* shutdown:\nEmulate a shutdown event after invoke completes, to test extension handling of shutdown behavior.\n* container_host:\nHost of locally emulated Lambda container. This option is useful when the container runs on a different host than AWS SAM CLI. For example, if one wants to run AWS SAM CLI in a Docker container on macOS, this option could specify `host.docker.internal`\n* container_host_interface:\nIP address of the host network interface that container ports should bind to. Use 0.0.0.0 to bind to all interfaces.\n* invoke_image:\nContainer image URIs for invoking functions or starting api and function. One can specify the image URI used for the local function invocation (--invoke-image public.ecr.aws/sam/build-nodejs14.x:latest). One can also specify for each individual function with (--invoke-image Function1=public.ecr.aws/sam/build-nodejs14.x:latest). If a function does not have invoke image specified, the default AWS SAM CLI emulation image will be used.\n* beta_features:\nEnable/Disable beta features.\n* debug:\nTurn on debug logging to print debug message generated by AWS SAM CLI and display timestamps.\n* profile:\nSelect a specific profile from your credential file to get AWS credentials.\n* region:\nSet the AWS Region of the service. (e.g. us-east-1)\n* save_params:\nSave the parameters provided via the command line to the configuration file.", + "description": "Available parameters for the local start api command:\n* terraform_plan_file:\nUsed for passing a custom plan file when executing the Terraform hook.\n* hook_name:\nHook package id to extend AWS SAM CLI commands functionality. \n\nExample: `terraform` to extend AWS SAM CLI commands functionality to support terraform applications. \n\nAvailable Hook Names: ['terraform']\n* skip_prepare_infra:\nSkip preparation stage when there are no infrastructure changes. Only used in conjunction with --hook-name.\n* host:\nLocal hostname or IP address to bind to (default: '127.0.0.1')\n* port:\nLocal port number to listen on (default: '3000')\n* static_dir:\nAny static assets (e.g. CSS/Javascript/HTML) files located in this directory will be presented at /\n* disable_authorizer:\nDisable custom Lambda Authorizers from being parsed and invoked.\n* ssl_cert_file:\nPath to SSL certificate file (default: None)\n* ssl_key_file:\nPath to SSL key file (default: None)\n* template_file:\nAWS SAM template which references built artifacts for resources in the template. (if applicable)\n* env_vars:\nJSON file containing values for Lambda function's environment variables.\n* parameter_overrides:\nString that contains AWS CloudFormation parameter overrides encoded as key=value pairs.\n* debug_port:\nWhen specified, Lambda function container will start in debug mode and will expose this port on localhost.\n* debugger_path:\nHost path to a debugger that will be mounted into the Lambda container.\n* debug_args:\nAdditional arguments to be passed to the debugger.\n* container_env_vars:\nJSON file containing additional environment variables to be set within the container when used in a debugging session locally.\n* docker_volume_basedir:\nSpecify the location basedir where the SAM template exists. If Docker is running on a remote machine, Path of the SAM template must be mounted on the Docker machine and modified to match the remote machine.\n* log_file:\nFile to capture output logs.\n* layer_cache_basedir:\nSpecify the location basedir where the lambda layers used by the template will be downloaded to.\n* skip_pull_image:\nSkip pulling down the latest Docker image for Lambda runtime.\n* docker_network:\nName or ID of an existing docker network for AWS Lambda docker containers to connect to, along with the default bridge network. If not specified, the Lambda containers will only connect to the default bridge docker network.\n* force_image_build:\nForce rebuilding the image used for invoking functions with layers.\n* warm_containers:\nOptional. Specifies how AWS SAM CLI manages \ncontainers for each function.\nTwo modes are available:\nEAGER: Containers for all functions are \nloaded at startup and persist between \ninvocations.\nLAZY: Containers are only loaded when each \nfunction is first invoked. Those containers \npersist for additional invocations.\n* debug_function:\nOptional. Specifies the Lambda Function logicalId to apply debug options to when --warm-containers is specified. This parameter applies to --debug-port, --debugger-path, and --debug-args.\n* shutdown:\nEmulate a shutdown event after invoke completes, to test extension handling of shutdown behavior.\n* container_host:\nHost of locally emulated Lambda container. This option is useful when the container runs on a different host than AWS SAM CLI. For example, if one wants to run AWS SAM CLI in a Docker container on macOS, this option could specify `host.docker.internal`\n* container_host_interface:\nIP address of the host network interface that container ports should bind to. Use 0.0.0.0 to bind to all interfaces.\n* add_host:\nPasses a hostname to IP address mapping to the Docker container's host file. This parameter can be passed multiple times.Example:--add-host example.com:127.0.0.1\n* invoke_image:\nContainer image URIs for invoking functions or starting api and function. One can specify the image URI used for the local function invocation (--invoke-image public.ecr.aws/sam/build-nodejs14.x:latest). One can also specify for each individual function with (--invoke-image Function1=public.ecr.aws/sam/build-nodejs14.x:latest). If a function does not have invoke image specified, the default AWS SAM CLI emulation image will be used.\n* beta_features:\nEnable/Disable beta features.\n* debug:\nTurn on debug logging to print debug message generated by AWS SAM CLI and display timestamps.\n* profile:\nSelect a specific profile from your credential file to get AWS credentials.\n* region:\nSet the AWS Region of the service. (e.g. us-east-1)\n* save_params:\nSave the parameters provided via the command line to the configuration file.", "type": "object", "properties": { "terraform_plan_file": { @@ -718,6 +726,14 @@ "description": "IP address of the host network interface that container ports should bind to. Use 0.0.0.0 to bind to all interfaces.", "default": "127.0.0.1" }, + "add_host": { + "title": "add_host", + "type": "array", + "description": "Passes a hostname to IP address mapping to the Docker container's host file. This parameter can be passed multiple times.Example:--add-host example.com:127.0.0.1", + "items": { + "type": "string" + } + }, "invoke_image": { "title": "invoke_image", "type": "string", @@ -776,7 +792,7 @@ "properties": { "parameters": { "title": "Parameters for the local start lambda command", - "description": "Available parameters for the local start lambda command:\n* terraform_plan_file:\nUsed for passing a custom plan file when executing the Terraform hook.\n* hook_name:\nHook package id to extend AWS SAM CLI commands functionality. \n\nExample: `terraform` to extend AWS SAM CLI commands functionality to support terraform applications. \n\nAvailable Hook Names: ['terraform']\n* skip_prepare_infra:\nSkip preparation stage when there are no infrastructure changes. Only used in conjunction with --hook-name.\n* host:\nLocal hostname or IP address to bind to (default: '127.0.0.1')\n* port:\nLocal port number to listen on (default: '3001')\n* template_file:\nAWS SAM template which references built artifacts for resources in the template. (if applicable)\n* env_vars:\nJSON file containing values for Lambda function's environment variables.\n* parameter_overrides:\nString that contains AWS CloudFormation parameter overrides encoded as key=value pairs.\n* debug_port:\nWhen specified, Lambda function container will start in debug mode and will expose this port on localhost.\n* debugger_path:\nHost path to a debugger that will be mounted into the Lambda container.\n* debug_args:\nAdditional arguments to be passed to the debugger.\n* container_env_vars:\nJSON file containing additional environment variables to be set within the container when used in a debugging session locally.\n* docker_volume_basedir:\nSpecify the location basedir where the SAM template exists. If Docker is running on a remote machine, Path of the SAM template must be mounted on the Docker machine and modified to match the remote machine.\n* log_file:\nFile to capture output logs.\n* layer_cache_basedir:\nSpecify the location basedir where the lambda layers used by the template will be downloaded to.\n* skip_pull_image:\nSkip pulling down the latest Docker image for Lambda runtime.\n* docker_network:\nName or ID of an existing docker network for AWS Lambda docker containers to connect to, along with the default bridge network. If not specified, the Lambda containers will only connect to the default bridge docker network.\n* force_image_build:\nForce rebuilding the image used for invoking functions with layers.\n* warm_containers:\nOptional. Specifies how AWS SAM CLI manages \ncontainers for each function.\nTwo modes are available:\nEAGER: Containers for all functions are \nloaded at startup and persist between \ninvocations.\nLAZY: Containers are only loaded when each \nfunction is first invoked. Those containers \npersist for additional invocations.\n* debug_function:\nOptional. Specifies the Lambda Function logicalId to apply debug options to when --warm-containers is specified. This parameter applies to --debug-port, --debugger-path, and --debug-args.\n* shutdown:\nEmulate a shutdown event after invoke completes, to test extension handling of shutdown behavior.\n* container_host:\nHost of locally emulated Lambda container. This option is useful when the container runs on a different host than AWS SAM CLI. For example, if one wants to run AWS SAM CLI in a Docker container on macOS, this option could specify `host.docker.internal`\n* container_host_interface:\nIP address of the host network interface that container ports should bind to. Use 0.0.0.0 to bind to all interfaces.\n* invoke_image:\nContainer image URIs for invoking functions or starting api and function. One can specify the image URI used for the local function invocation (--invoke-image public.ecr.aws/sam/build-nodejs14.x:latest). One can also specify for each individual function with (--invoke-image Function1=public.ecr.aws/sam/build-nodejs14.x:latest). If a function does not have invoke image specified, the default AWS SAM CLI emulation image will be used.\n* beta_features:\nEnable/Disable beta features.\n* debug:\nTurn on debug logging to print debug message generated by AWS SAM CLI and display timestamps.\n* profile:\nSelect a specific profile from your credential file to get AWS credentials.\n* region:\nSet the AWS Region of the service. (e.g. us-east-1)\n* save_params:\nSave the parameters provided via the command line to the configuration file.", + "description": "Available parameters for the local start lambda command:\n* terraform_plan_file:\nUsed for passing a custom plan file when executing the Terraform hook.\n* hook_name:\nHook package id to extend AWS SAM CLI commands functionality. \n\nExample: `terraform` to extend AWS SAM CLI commands functionality to support terraform applications. \n\nAvailable Hook Names: ['terraform']\n* skip_prepare_infra:\nSkip preparation stage when there are no infrastructure changes. Only used in conjunction with --hook-name.\n* host:\nLocal hostname or IP address to bind to (default: '127.0.0.1')\n* port:\nLocal port number to listen on (default: '3001')\n* template_file:\nAWS SAM template which references built artifacts for resources in the template. (if applicable)\n* env_vars:\nJSON file containing values for Lambda function's environment variables.\n* parameter_overrides:\nString that contains AWS CloudFormation parameter overrides encoded as key=value pairs.\n* debug_port:\nWhen specified, Lambda function container will start in debug mode and will expose this port on localhost.\n* debugger_path:\nHost path to a debugger that will be mounted into the Lambda container.\n* debug_args:\nAdditional arguments to be passed to the debugger.\n* container_env_vars:\nJSON file containing additional environment variables to be set within the container when used in a debugging session locally.\n* docker_volume_basedir:\nSpecify the location basedir where the SAM template exists. If Docker is running on a remote machine, Path of the SAM template must be mounted on the Docker machine and modified to match the remote machine.\n* log_file:\nFile to capture output logs.\n* layer_cache_basedir:\nSpecify the location basedir where the lambda layers used by the template will be downloaded to.\n* skip_pull_image:\nSkip pulling down the latest Docker image for Lambda runtime.\n* docker_network:\nName or ID of an existing docker network for AWS Lambda docker containers to connect to, along with the default bridge network. If not specified, the Lambda containers will only connect to the default bridge docker network.\n* force_image_build:\nForce rebuilding the image used for invoking functions with layers.\n* warm_containers:\nOptional. Specifies how AWS SAM CLI manages \ncontainers for each function.\nTwo modes are available:\nEAGER: Containers for all functions are \nloaded at startup and persist between \ninvocations.\nLAZY: Containers are only loaded when each \nfunction is first invoked. Those containers \npersist for additional invocations.\n* debug_function:\nOptional. Specifies the Lambda Function logicalId to apply debug options to when --warm-containers is specified. This parameter applies to --debug-port, --debugger-path, and --debug-args.\n* shutdown:\nEmulate a shutdown event after invoke completes, to test extension handling of shutdown behavior.\n* container_host:\nHost of locally emulated Lambda container. This option is useful when the container runs on a different host than AWS SAM CLI. For example, if one wants to run AWS SAM CLI in a Docker container on macOS, this option could specify `host.docker.internal`\n* container_host_interface:\nIP address of the host network interface that container ports should bind to. Use 0.0.0.0 to bind to all interfaces.\n* add_host:\nPasses a hostname to IP address mapping to the Docker container's host file. This parameter can be passed multiple times.Example:--add-host example.com:127.0.0.1\n* invoke_image:\nContainer image URIs for invoking functions or starting api and function. One can specify the image URI used for the local function invocation (--invoke-image public.ecr.aws/sam/build-nodejs14.x:latest). One can also specify for each individual function with (--invoke-image Function1=public.ecr.aws/sam/build-nodejs14.x:latest). If a function does not have invoke image specified, the default AWS SAM CLI emulation image will be used.\n* beta_features:\nEnable/Disable beta features.\n* debug:\nTurn on debug logging to print debug message generated by AWS SAM CLI and display timestamps.\n* profile:\nSelect a specific profile from your credential file to get AWS credentials.\n* region:\nSet the AWS Region of the service. (e.g. us-east-1)\n* save_params:\nSave the parameters provided via the command line to the configuration file.", "type": "object", "properties": { "terraform_plan_file": { @@ -909,6 +925,14 @@ "description": "IP address of the host network interface that container ports should bind to. Use 0.0.0.0 to bind to all interfaces.", "default": "127.0.0.1" }, + "add_host": { + "title": "add_host", + "type": "array", + "description": "Passes a hostname to IP address mapping to the Docker container's host file. This parameter can be passed multiple times.Example:--add-host example.com:127.0.0.1", + "items": { + "type": "string" + } + }, "invoke_image": { "title": "invoke_image", "type": "string", diff --git a/tests/unit/commands/local/cli_common/test_invoke_context.py b/tests/unit/commands/local/cli_common/test_invoke_context.py index b89d5b61154..f30a9574fc4 100644 --- a/tests/unit/commands/local/cli_common/test_invoke_context.py +++ b/tests/unit/commands/local/cli_common/test_invoke_context.py @@ -630,6 +630,7 @@ def test_must_create_runner( aws_region="region", container_host=None, container_host_interface=None, + extra_hosts=None, ) result = self.context.local_lambda_runner @@ -708,6 +709,7 @@ def test_must_create_runner_using_warm_containers( aws_region="region", container_host=None, container_host_interface=None, + extra_hosts=None, ) result = self.context.local_lambda_runner @@ -792,6 +794,95 @@ def test_must_create_runner_with_container_host_option( aws_region="region", container_host="abcdef", container_host_interface="192.168.100.101", + extra_hosts=None, + ) + + result = self.context.local_lambda_runner + self.assertEqual(result, runner_mock) + # assert that lambda runner is created only one time, and the cached version used in the second call + self.assertEqual(LocalLambdaMock.call_count, 1) + + @patch("samcli.local.lambdafn.runtime.LambdaFunctionObserver") + @patch("samcli.commands.local.cli_common.invoke_context.LambdaImage") + @patch("samcli.commands.local.cli_common.invoke_context.LayerDownloader") + @patch("samcli.commands.local.cli_common.invoke_context.LambdaRuntime") + @patch("samcli.commands.local.cli_common.invoke_context.LocalLambdaRunner") + @patch("samcli.commands.local.cli_common.invoke_context.SamFunctionProvider") + def test_must_create_runner_with_extra_hosts_option( + self, + SamFunctionProviderMock, + LocalLambdaMock, + LambdaRuntimeMock, + download_layers_mock, + lambda_image_patch, + LambdaFunctionObserver_patch, + ): + runtime_mock = Mock() + LambdaRuntimeMock.return_value = runtime_mock + + runner_mock = Mock() + LocalLambdaMock.return_value = runner_mock + + download_mock = Mock() + download_layers_mock.return_value = download_mock + + image_mock = Mock() + lambda_image_patch.return_value = image_mock + + LambdaFunctionObserver_mock = Mock() + LambdaFunctionObserver_patch.return_value = LambdaFunctionObserver_mock + + cwd = "cwd" + self.context = InvokeContext( + template_file="template_file", + function_identifier="id", + env_vars_file="env_vars_file", + docker_volume_basedir="volumedir", + docker_network="network", + log_file="log_file", + skip_pull_image=True, + force_image_build=True, + debug_ports=[1111], + debugger_path="path-to-debugger", + debug_args="args", + aws_profile="profile", + aws_region="region", + container_host="abcdef", + add_host={"prod-na.host": "10.11.12.13", "gamma-na.host": "10.22.23.24"}, + ) + self.context.get_cwd = Mock() + self.context.get_cwd.return_value = cwd + + self.context._get_stacks = Mock() + self.context._get_stacks.return_value = [Mock()] + self.context._get_env_vars_value = Mock() + self.context._setup_log_file = Mock() + self.context._get_debug_context = Mock(return_value=None) + + container_manager_mock = Mock() + container_manager_mock.is_docker_reachable = PropertyMock(return_value=True) + self.context._get_container_manager = Mock(return_value=container_manager_mock) + + with self.context: + result = self.context.local_lambda_runner + self.assertEqual(result, runner_mock) + + LambdaRuntimeMock.assert_called_with(container_manager_mock, image_mock) + lambda_image_patch.assert_called_once_with(download_mock, True, True, invoke_images=None) + LocalLambdaMock.assert_called_with( + local_runtime=runtime_mock, + function_provider=ANY, + cwd=cwd, + debug_context=None, + env_vars_values=ANY, + aws_profile="profile", + aws_region="region", + container_host="abcdef", + container_host_interface=None, + extra_hosts={ + "prod-na.host": "10.11.12.13", + "gamma-na.host": "10.22.23.24", + }, ) result = self.context.local_lambda_runner @@ -875,6 +966,7 @@ def test_must_create_runner_with_invoke_image_option( aws_region="region", container_host=None, container_host_interface=None, + extra_hosts=None, ) result = self.context.local_lambda_runner diff --git a/tests/unit/commands/local/invoke/test_cli.py b/tests/unit/commands/local/invoke/test_cli.py index bf17f13cb94..a033905b8c7 100644 --- a/tests/unit/commands/local/invoke/test_cli.py +++ b/tests/unit/commands/local/invoke/test_cli.py @@ -43,6 +43,7 @@ def setUp(self): self.profile = "profile" self.container_host = "localhost" self.container_host_interface = "127.0.0.1" + self.add_host = (["prod-na.host:10.11.12.13"],) self.invoke_image = ("amazon/aws-sam-cli-emulation-image-python3.9",) self.hook_name = None @@ -72,6 +73,7 @@ def call_cli(self): shutdown=self.shutdown, container_host=self.container_host, container_host_interface=self.container_host_interface, + add_host=self.add_host, invoke_image=self.invoke_image, hook_name=self.hook_name, ) @@ -108,6 +110,7 @@ def test_cli_must_setup_context_and_invoke(self, get_event_mock, InvokeContextMo aws_profile=self.profile, container_host=self.container_host, container_host_interface=self.container_host_interface, + add_host=self.add_host, invoke_images={None: "amazon/aws-sam-cli-emulation-image-python3.9"}, ) @@ -147,6 +150,7 @@ def test_cli_must_invoke_with_no_event(self, get_event_mock, InvokeContextMock): aws_profile=self.profile, container_host=self.container_host, container_host_interface=self.container_host_interface, + add_host=self.add_host, invoke_images={None: "amazon/aws-sam-cli-emulation-image-python3.9"}, ) diff --git a/tests/unit/commands/local/lib/test_local_lambda.py b/tests/unit/commands/local/lib/test_local_lambda.py index 384771f7533..1014ea001d2 100644 --- a/tests/unit/commands/local/lib/test_local_lambda.py +++ b/tests/unit/commands/local/lib/test_local_lambda.py @@ -572,6 +572,7 @@ def test_must_work(self, patched_validate_architecture_runtime): stderr=stderr, container_host=None, container_host_interface=None, + extra_hosts=None, ) @patch("samcli.commands.local.lib.local_lambda.validate_architecture_runtime") @@ -597,6 +598,7 @@ def test_must_work_packagetype_ZIP(self, patched_validate_architecture_runtime): stderr=stderr, container_host=None, container_host_interface=None, + extra_hosts=None, ) @patch("samcli.commands.local.lib.local_lambda.validate_architecture_runtime") @@ -680,6 +682,7 @@ def test_works_if_imageuri_and_Image_packagetype(self, patched_validate_architec stderr=stderr, container_host=None, container_host_interface=None, + extra_hosts=None, ) def test_must_raise_if_imageuri_not_found(self): @@ -759,6 +762,7 @@ def test_must_work(self, patched_validate_architecture_runtime): stderr=stderr, container_host="localhost", container_host_interface="127.0.0.1", + extra_hosts=None, ) diff --git a/tests/unit/commands/local/start_lambda/test_cli.py b/tests/unit/commands/local/start_lambda/test_cli.py index 4eb6dcdaeb1..aa779ed871a 100644 --- a/tests/unit/commands/local/start_lambda/test_cli.py +++ b/tests/unit/commands/local/start_lambda/test_cli.py @@ -42,6 +42,7 @@ def setUp(self): self.container_host = "localhost" self.container_host_interface = "127.0.0.1" + self.add_host = {} self.invoke_image = () self.hook_name = None @@ -81,6 +82,7 @@ def test_cli_must_setup_context_and_start_service(self, local_lambda_service_moc shutdown=self.shutdown, container_host=self.container_host, container_host_interface=self.container_host_interface, + add_host=self.add_host, invoke_images={}, ) @@ -180,6 +182,7 @@ def call_cli(self): shutdown=self.shutdown, container_host=self.container_host, container_host_interface=self.container_host_interface, + add_host=self.add_host, invoke_image=self.invoke_image, hook_name=self.hook_name, ) diff --git a/tests/unit/commands/samconfig/test_samconfig.py b/tests/unit/commands/samconfig/test_samconfig.py index dd1f8578cce..04597bcb5f0 100644 --- a/tests/unit/commands/samconfig/test_samconfig.py +++ b/tests/unit/commands/samconfig/test_samconfig.py @@ -393,6 +393,7 @@ def test_local_invoke(self, do_cli_mock): {"Key": "Value", "Key2": "Value2"}, "localhost", "127.0.0.1", + {}, ("image",), None, ) @@ -459,6 +460,7 @@ def test_local_start_api(self, do_cli_mock): None, "localhost", "127.0.0.1", + {}, ("image",), None, None, @@ -523,6 +525,7 @@ def test_local_start_lambda(self, do_cli_mock): None, "localhost", "127.0.0.1", + {}, ("image",), None, ) @@ -1137,6 +1140,7 @@ def test_override_with_cli_params(self, do_cli_mock): None, "localhost", "127.0.0.1", + {}, ("image",), None, ) @@ -1233,6 +1237,7 @@ def test_override_with_cli_params_and_envvars(self, do_cli_mock): None, "localhost", "127.0.0.1", + {}, ("image",), None, ) diff --git a/tests/unit/local/lambdafn/test_runtime.py b/tests/unit/local/lambdafn/test_runtime.py index cc5753869a3..142ce362086 100644 --- a/tests/unit/local/lambdafn/test_runtime.py +++ b/tests/unit/local/lambdafn/test_runtime.py @@ -91,6 +91,7 @@ def test_must_create_lambda_container(self, LambdaContainerMock, LogMock): memory_mb=self.DEFAULT_MEMORY, container_host=None, container_host_interface=None, + extra_hosts=None, function_full_path=self.full_path, ) # Run the container and get results @@ -161,6 +162,7 @@ def test_must_log_if_template_has_runtime_version(self, LambdaContainerMock, Log memory_mb=self.DEFAULT_MEMORY, container_host=None, container_host_interface=None, + extra_hosts=None, function_full_path=self.full_path, ) # Run the container and get results @@ -339,6 +341,7 @@ def test_must_run_container_and_wait_for_result(self, LambdaContainerMock): memory_mb=self.DEFAULT_MEMORY, container_host=None, container_host_interface=None, + extra_hosts=None, function_full_path=self.full_path, ) @@ -696,6 +699,7 @@ def test_must_run_container_then_wait_for_result_and_container_not_stopped( memory_mb=self.DEFAULT_MEMORY, container_host=None, container_host_interface=None, + extra_hosts=None, function_full_path=self.full_path, ) @@ -797,6 +801,7 @@ def test_must_create_non_cached_container(self, LambdaContainerMock, LambdaFunct memory_mb=self.DEFAULT_MEMORY, container_host=None, container_host_interface=None, + extra_hosts=None, function_full_path=self.full_path, ) @@ -843,6 +848,7 @@ def test_must_create_incase_function_config_changed(self, LambdaContainerMock, L memory_mb=self.DEFAULT_MEMORY, container_host=None, container_host_interface=None, + extra_hosts=None, function_full_path=self.full_path, ), call( @@ -860,6 +866,7 @@ def test_must_create_incase_function_config_changed(self, LambdaContainerMock, L memory_mb=self.DEFAULT_MEMORY, container_host=None, container_host_interface=None, + extra_hosts=None, function_full_path=self.full_path, ), ] @@ -931,6 +938,7 @@ def test_must_ignore_debug_options_if_function_name_is_not_debug_function( memory_mb=self.DEFAULT_MEMORY, container_host=None, container_host_interface=None, + extra_hosts=None, function_full_path=self.full_path, ) self.manager_mock.create.assert_called_with(container) diff --git a/tests/unit/schema/testdata/passing_tests/local_invokecmd.toml b/tests/unit/schema/testdata/passing_tests/local_invokecmd.toml index d5cd5f24a3e..5acd318938b 100644 --- a/tests/unit/schema/testdata/passing_tests/local_invokecmd.toml +++ b/tests/unit/schema/testdata/passing_tests/local_invokecmd.toml @@ -21,6 +21,7 @@ force_image_build = false shutdown = false container_host = "Container host" container_host_interface = "Container host interface" +add_host = [] invoke_image = "Invoke image" beta_features = false debug = false @@ -35,5 +36,6 @@ debug_port = 20 skip_pull_image = true force_image_build = true shutdown = true +add_host = ["example.com:127.0.0.1"] beta_features = true -debug = true \ No newline at end of file +debug = true diff --git a/tests/unit/schema/testdata/passing_tests/local_start_apicmd.toml b/tests/unit/schema/testdata/passing_tests/local_start_apicmd.toml index bb833a24191..e011c7977b6 100644 --- a/tests/unit/schema/testdata/passing_tests/local_start_apicmd.toml +++ b/tests/unit/schema/testdata/passing_tests/local_start_apicmd.toml @@ -24,6 +24,7 @@ debug_function = "Debug function" shutdown = false container_host = "Container host" container_host_interface = "Container host interface" +add_host = [] invoke_image = "Invoke image" beta_features = false debug = false @@ -39,5 +40,6 @@ skip_pull_image = true force_image_build = true warm_containers = "LAZY" shutdown = true +add_host = ["example.com:127.0.0.1"] beta_features = true -debug = true \ No newline at end of file +debug = true diff --git a/tests/unit/schema/testdata/passing_tests/local_start_lambdacmd.toml b/tests/unit/schema/testdata/passing_tests/local_start_lambdacmd.toml index b738f8639bb..f99641e18ba 100644 --- a/tests/unit/schema/testdata/passing_tests/local_start_lambdacmd.toml +++ b/tests/unit/schema/testdata/passing_tests/local_start_lambdacmd.toml @@ -23,6 +23,7 @@ debug_function = "Debug function" shutdown = false container_host = "Container host" container_host_interface = "Container host interface" +add_host = [] invoke_image = "Invoke image" beta_features = false debug = false @@ -38,5 +39,6 @@ skip_pull_image = true force_image_build = true warm_containers = "LAZY" shutdown = true +add_host = ["example.com:127.0.0.1"] beta_features = true -debug = true \ No newline at end of file +debug = true From 0e87d84f2b5e55c120cd191fe1074a9ea9d24deb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Jan 2024 00:07:18 +0000 Subject: [PATCH 045/100] chore(deps): bump tzdata from 2023.3 to 2023.4 in /requirements (#6524) Bumps [tzdata](https://github.com/python/tzdata) from 2023.3 to 2023.4. - [Release notes](https://github.com/python/tzdata/releases) - [Changelog](https://github.com/python/tzdata/blob/master/NEWS.md) - [Commits](https://github.com/python/tzdata/compare/2023.3...2023.4) --- updated-dependencies: - dependency-name: tzdata dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Lucas <12496191+lucashuy@users.noreply.github.com> --- requirements/reproducible-win.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 39ba49229a4..3ecc8a5b348 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -998,9 +998,9 @@ typing-extensions==4.9.0 \ # mypy-boto3-xray # pydantic # pydantic-core -tzdata==2023.3 \ - --hash=sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a \ - --hash=sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda +tzdata==2023.4 \ + --hash=sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3 \ + --hash=sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9 # via tzlocal tzlocal==5.2 \ --hash=sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8 \ From eabd22cb515fda7fc45b912c3c3ccac7f6696e8b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Jan 2024 18:07:02 +0000 Subject: [PATCH 046/100] chore(deps): bump setuptools from 69.0.2 to 69.0.3 in /requirements (#6525) Bumps [setuptools](https://github.com/pypa/setuptools) from 69.0.2 to 69.0.3. - [Release notes](https://github.com/pypa/setuptools/releases) - [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst) - [Commits](https://github.com/pypa/setuptools/compare/v69.0.2...v69.0.3) --- updated-dependencies: - dependency-name: setuptools dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Lucas <12496191+lucashuy@users.noreply.github.com> Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com> --- requirements/pyinstaller-build.txt | 2 +- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/requirements/pyinstaller-build.txt b/requirements/pyinstaller-build.txt index a698aab2c81..02a5aeda3e1 100644 --- a/requirements/pyinstaller-build.txt +++ b/requirements/pyinstaller-build.txt @@ -1,3 +1,3 @@ # Executable binary builder requirements -setuptools==69.0.2 +setuptools==69.0.3 pyinstaller==6.3.0 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 07ace8fb431..d5d3e5daa6d 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -1030,7 +1030,7 @@ wheel==0.42.0 \ # via aws-lambda-builders # The following packages are considered to be unsafe in a requirements file: -setuptools==69.0.2 \ - --hash=sha256:1e8fdff6797d3865f37397be788a4e3cba233608e9b509382a2777d25ebde7f2 \ - --hash=sha256:735896e78a4742605974de002ac60562d286fa8051a7e2299445e8e8fbb01aa6 +setuptools==69.0.3 \ + --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ + --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 # via aws-lambda-builders diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 2e902057539..798d8b80fad 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -1071,7 +1071,7 @@ zipp==3.17.0 \ # importlib-resources # The following packages are considered to be unsafe in a requirements file: -setuptools==69.0.2 \ - --hash=sha256:1e8fdff6797d3865f37397be788a4e3cba233608e9b509382a2777d25ebde7f2 \ - --hash=sha256:735896e78a4742605974de002ac60562d286fa8051a7e2299445e8e8fbb01aa6 +setuptools==69.0.3 \ + --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ + --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 # via aws-lambda-builders diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 3ecc8a5b348..e7b02e990cb 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -1054,7 +1054,7 @@ wheel==0.42.0 \ # via aws-lambda-builders # The following packages are considered to be unsafe in a requirements file: -setuptools==69.0.2 \ - --hash=sha256:1e8fdff6797d3865f37397be788a4e3cba233608e9b509382a2777d25ebde7f2 \ - --hash=sha256:735896e78a4742605974de002ac60562d286fa8051a7e2299445e8e8fbb01aa6 +setuptools==69.0.3 \ + --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ + --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 # via aws-lambda-builders From cbe6d539bd7479ca693d80d49dfbf80ed8fc56af Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Jan 2024 10:47:02 -0800 Subject: [PATCH 047/100] chore(deps): bump pydantic from 2.5.2 to 2.5.3 in /requirements (#6526) * chore(deps): bump pydantic from 2.5.2 to 2.5.3 in /requirements Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.5.2 to 2.5.3. - [Release notes](https://github.com/pydantic/pydantic/releases) - [Changelog](https://github.com/pydantic/pydantic/blob/main/HISTORY.md) - [Commits](https://github.com/pydantic/pydantic/compare/v2.5.2...v2.5.3) --- updated-dependencies: - dependency-name: pydantic dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Update reproducibles: update-reproducible-linux-reqs * Update reproducibles: update-reproducible-mac-reqs * Update reproducibles: update-reproducible-win-reqs --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: GitHub Action Co-authored-by: Lucas <12496191+lucashuy@users.noreply.github.com> --- requirements/reproducible-linux.txt | 218 ++++++++++++++-------------- requirements/reproducible-mac.txt | 218 ++++++++++++++-------------- requirements/reproducible-win.txt | 218 ++++++++++++++-------------- 3 files changed, 327 insertions(+), 327 deletions(-) diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index d5d3e5daa6d..59afd9d9f9e 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -462,116 +462,116 @@ pycparser==2.21 \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 # via cffi -pydantic==2.5.2 \ - --hash=sha256:80c50fb8e3dcecfddae1adbcc00ec5822918490c99ab31f6cf6140ca1c1429f0 \ - --hash=sha256:ff177ba64c6faf73d7afa2e8cad38fd456c0dbe01c9954e71038001cd15a6edd +pydantic==2.5.3 \ + --hash=sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a \ + --hash=sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4 # via aws-sam-translator -pydantic-core==2.14.5 \ - --hash=sha256:038c9f763e650712b899f983076ce783175397c848da04985658e7628cbe873b \ - --hash=sha256:074f3d86f081ce61414d2dc44901f4f83617329c6f3ab49d2bc6c96948b2c26b \ - --hash=sha256:079206491c435b60778cf2b0ee5fd645e61ffd6e70c47806c9ed51fc75af078d \ - --hash=sha256:09b0e985fbaf13e6b06a56d21694d12ebca6ce5414b9211edf6f17738d82b0f8 \ - --hash=sha256:0f6116a558fd06d1b7c2902d1c4cf64a5bd49d67c3540e61eccca93f41418124 \ - --hash=sha256:103ef8d5b58596a731b690112819501ba1db7a36f4ee99f7892c40da02c3e189 \ - --hash=sha256:16e29bad40bcf97aac682a58861249ca9dcc57c3f6be22f506501833ddb8939c \ - --hash=sha256:206ed23aecd67c71daf5c02c3cd19c0501b01ef3cbf7782db9e4e051426b3d0d \ - --hash=sha256:2248485b0322c75aee7565d95ad0e16f1c67403a470d02f94da7344184be770f \ - --hash=sha256:27548e16c79702f1e03f5628589c6057c9ae17c95b4c449de3c66b589ead0520 \ - --hash=sha256:2d0ae0d8670164e10accbeb31d5ad45adb71292032d0fdb9079912907f0085f4 \ - --hash=sha256:3128e0bbc8c091ec4375a1828d6118bc20404883169ac95ffa8d983b293611e6 \ - --hash=sha256:3387277f1bf659caf1724e1afe8ee7dbc9952a82d90f858ebb931880216ea955 \ - --hash=sha256:34708cc82c330e303f4ce87758828ef6e457681b58ce0e921b6e97937dd1e2a3 \ - --hash=sha256:35613015f0ba7e14c29ac6c2483a657ec740e5ac5758d993fdd5870b07a61d8b \ - --hash=sha256:3ad873900297bb36e4b6b3f7029d88ff9829ecdc15d5cf20161775ce12306f8a \ - --hash=sha256:40180930807ce806aa71eda5a5a5447abb6b6a3c0b4b3b1b1962651906484d68 \ - --hash=sha256:439c9afe34638ace43a49bf72d201e0ffc1a800295bed8420c2a9ca8d5e3dbb3 \ - --hash=sha256:45e95333b8418ded64745f14574aa9bfc212cb4fbeed7a687b0c6e53b5e188cd \ - --hash=sha256:4641e8ad4efb697f38a9b64ca0523b557c7931c5f84e0fd377a9a3b05121f0de \ - --hash=sha256:49b08aae5013640a3bfa25a8eebbd95638ec3f4b2eaf6ed82cf0c7047133f03b \ - --hash=sha256:4bc536201426451f06f044dfbf341c09f540b4ebdb9fd8d2c6164d733de5e634 \ - --hash=sha256:4ce601907e99ea5b4adb807ded3570ea62186b17f88e271569144e8cca4409c7 \ - --hash=sha256:4e40f2bd0d57dac3feb3a3aed50f17d83436c9e6b09b16af271b6230a2915459 \ - --hash=sha256:4e47a76848f92529879ecfc417ff88a2806438f57be4a6a8bf2961e8f9ca9ec7 \ - --hash=sha256:513b07e99c0a267b1d954243845d8a833758a6726a3b5d8948306e3fe14675e3 \ - --hash=sha256:531f4b4252fac6ca476fbe0e6f60f16f5b65d3e6b583bc4d87645e4e5ddde331 \ - --hash=sha256:57d52fa717ff445cb0a5ab5237db502e6be50809b43a596fb569630c665abddf \ - --hash=sha256:59986de5710ad9613ff61dd9b02bdd2f615f1a7052304b79cc8fa2eb4e336d2d \ - --hash=sha256:5baab5455c7a538ac7e8bf1feec4278a66436197592a9bed538160a2e7d11e36 \ - --hash=sha256:5c7d5b5005f177764e96bd584d7bf28d6e26e96f2a541fdddb934c486e36fd59 \ - --hash=sha256:60b7607753ba62cf0739177913b858140f11b8af72f22860c28eabb2f0a61937 \ - --hash=sha256:615a0a4bff11c45eb3c1996ceed5bdaa2f7b432425253a7c2eed33bb86d80abc \ - --hash=sha256:61ea96a78378e3bd5a0be99b0e5ed00057b71f66115f5404d0dae4819f495093 \ - --hash=sha256:652c1988019752138b974c28f43751528116bcceadad85f33a258869e641d753 \ - --hash=sha256:6637560562134b0e17de333d18e69e312e0458ee4455bdad12c37100b7cad706 \ - --hash=sha256:678265f7b14e138d9a541ddabbe033012a2953315739f8cfa6d754cc8063e8ca \ - --hash=sha256:699156034181e2ce106c89ddb4b6504c30db8caa86e0c30de47b3e0654543260 \ - --hash=sha256:6b9ff467ffbab9110e80e8c8de3bcfce8e8b0fd5661ac44a09ae5901668ba997 \ - --hash=sha256:6c327e9cd849b564b234da821236e6bcbe4f359a42ee05050dc79d8ed2a91588 \ - --hash=sha256:6d30226dfc816dd0fdf120cae611dd2215117e4f9b124af8c60ab9093b6e8e71 \ - --hash=sha256:6e227c40c02fd873c2a73a98c1280c10315cbebe26734c196ef4514776120aeb \ - --hash=sha256:6e4d090e73e0725b2904fdbdd8d73b8802ddd691ef9254577b708d413bf3006e \ - --hash=sha256:70f4b4851dbb500129681d04cc955be2a90b2248d69273a787dda120d5cf1f69 \ - --hash=sha256:70f947628e074bb2526ba1b151cee10e4c3b9670af4dbb4d73bc8a89445916b5 \ - --hash=sha256:774de879d212db5ce02dfbf5b0da9a0ea386aeba12b0b95674a4ce0593df3d07 \ - --hash=sha256:77fa384d8e118b3077cccfcaf91bf83c31fe4dc850b5e6ee3dc14dc3d61bdba1 \ - --hash=sha256:79e0a2cdbdc7af3f4aee3210b1172ab53d7ddb6a2d8c24119b5706e622b346d0 \ - --hash=sha256:7e88f5696153dc516ba6e79f82cc4747e87027205f0e02390c21f7cb3bd8abfd \ - --hash=sha256:7f8210297b04e53bc3da35db08b7302a6a1f4889c79173af69b72ec9754796b8 \ - --hash=sha256:81982d78a45d1e5396819bbb4ece1fadfe5f079335dd28c4ab3427cd95389944 \ - --hash=sha256:823fcc638f67035137a5cd3f1584a4542d35a951c3cc68c6ead1df7dac825c26 \ - --hash=sha256:853a2295c00f1d4429db4c0fb9475958543ee80cfd310814b5c0ef502de24dda \ - --hash=sha256:88e74ab0cdd84ad0614e2750f903bb0d610cc8af2cc17f72c28163acfcf372a4 \ - --hash=sha256:8aa1768c151cf562a9992462239dfc356b3d1037cc5a3ac829bb7f3bda7cc1f9 \ - --hash=sha256:8c8a8812fe6f43a3a5b054af6ac2d7b8605c7bcab2804a8a7d68b53f3cd86e00 \ - --hash=sha256:95b15e855ae44f0c6341ceb74df61b606e11f1087e87dcb7482377374aac6abe \ - --hash=sha256:96581cfefa9123accc465a5fd0cc833ac4d75d55cc30b633b402e00e7ced00a6 \ - --hash=sha256:9bd18fee0923ca10f9a3ff67d4851c9d3e22b7bc63d1eddc12f439f436f2aada \ - --hash=sha256:a33324437018bf6ba1bb0f921788788641439e0ed654b233285b9c69704c27b4 \ - --hash=sha256:a6a16f4a527aae4f49c875da3cdc9508ac7eef26e7977952608610104244e1b7 \ - --hash=sha256:a717aef6971208f0851a2420b075338e33083111d92041157bbe0e2713b37325 \ - --hash=sha256:a71891847f0a73b1b9eb86d089baee301477abef45f7eaf303495cd1473613e4 \ - --hash=sha256:aae7ea3a1c5bb40c93cad361b3e869b180ac174656120c42b9fadebf685d121b \ - --hash=sha256:ab1cdb0f14dc161ebc268c09db04d2c9e6f70027f3b42446fa11c153521c0e88 \ - --hash=sha256:ab4ea451082e684198636565224bbb179575efc1658c48281b2c866bfd4ddf04 \ - --hash=sha256:abf058be9517dc877227ec3223f0300034bd0e9f53aebd63cf4456c8cb1e0863 \ - --hash=sha256:af36f36538418f3806048f3b242a1777e2540ff9efaa667c27da63d2749dbce0 \ - --hash=sha256:b53e9ad053cd064f7e473a5f29b37fc4cc9dc6d35f341e6afc0155ea257fc911 \ - --hash=sha256:b7851992faf25eac90bfcb7bfd19e1f5ffa00afd57daec8a0042e63c74a4551b \ - --hash=sha256:b9b759b77f5337b4ea024f03abc6464c9f35d9718de01cfe6bae9f2e139c397e \ - --hash=sha256:ba39688799094c75ea8a16a6b544eb57b5b0f3328697084f3f2790892510d144 \ - --hash=sha256:ba6b6b3846cfc10fdb4c971980a954e49d447cd215ed5a77ec8190bc93dd7bc5 \ - --hash=sha256:bb4c2eda937a5e74c38a41b33d8c77220380a388d689bcdb9b187cf6224c9720 \ - --hash=sha256:c0b97ec434041827935044bbbe52b03d6018c2897349670ff8fe11ed24d1d4ab \ - --hash=sha256:c1452a1acdf914d194159439eb21e56b89aa903f2e1c65c60b9d874f9b950e5d \ - --hash=sha256:c2027d05c8aebe61d898d4cffd774840a9cb82ed356ba47a90d99ad768f39789 \ - --hash=sha256:c2adbe22ab4babbca99c75c5d07aaf74f43c3195384ec07ccbd2f9e3bddaecec \ - --hash=sha256:c2d97e906b4ff36eb464d52a3bc7d720bd6261f64bc4bcdbcd2c557c02081ed2 \ - --hash=sha256:c339dabd8ee15f8259ee0f202679b6324926e5bc9e9a40bf981ce77c038553db \ - --hash=sha256:c6eae413494a1c3f89055da7a5515f32e05ebc1a234c27674a6956755fb2236f \ - --hash=sha256:c949f04ecad823f81b1ba94e7d189d9dfb81edbb94ed3f8acfce41e682e48cef \ - --hash=sha256:c97bee68898f3f4344eb02fec316db93d9700fb1e6a5b760ffa20d71d9a46ce3 \ - --hash=sha256:ca61d858e4107ce5e1330a74724fe757fc7135190eb5ce5c9d0191729f033209 \ - --hash=sha256:cb4679d4c2b089e5ef89756bc73e1926745e995d76e11925e3e96a76d5fa51fc \ - --hash=sha256:cb774298da62aea5c80a89bd58c40205ab4c2abf4834453b5de207d59d2e1651 \ - --hash=sha256:ccd4d5702bb90b84df13bd491be8d900b92016c5a455b7e14630ad7449eb03f8 \ - --hash=sha256:cf9d3fe53b1ee360e2421be95e62ca9b3296bf3f2fb2d3b83ca49ad3f925835e \ - --hash=sha256:d2ae91f50ccc5810b2f1b6b858257c9ad2e08da70bf890dee02de1775a387c66 \ - --hash=sha256:d37f8ec982ead9ba0a22a996129594938138a1503237b87318392a48882d50b7 \ - --hash=sha256:d81e6987b27bc7d101c8597e1cd2bcaa2fee5e8e0f356735c7ed34368c471550 \ - --hash=sha256:dcf4e6d85614f7a4956c2de5a56531f44efb973d2fe4a444d7251df5d5c4dcfd \ - --hash=sha256:de790a3b5aa2124b8b78ae5faa033937a72da8efe74b9231698b5a1dd9be3405 \ - --hash=sha256:e47e9a08bcc04d20975b6434cc50bf82665fbc751bcce739d04a3120428f3e27 \ - --hash=sha256:e60f112ac88db9261ad3a52032ea46388378034f3279c643499edb982536a093 \ - --hash=sha256:e87fc540c6cac7f29ede02e0f989d4233f88ad439c5cdee56f693cc9c1c78077 \ - --hash=sha256:eac5c82fc632c599f4639a5886f96867ffced74458c7db61bc9a66ccb8ee3113 \ - --hash=sha256:ebb4e035e28f49b6f1a7032920bb9a0c064aedbbabe52c543343d39341a5b2a3 \ - --hash=sha256:ec1e72d6412f7126eb7b2e3bfca42b15e6e389e1bc88ea0069d0cc1742f477c6 \ - --hash=sha256:ef98ca7d5995a82f43ec0ab39c4caf6a9b994cb0b53648ff61716370eadc43cf \ - --hash=sha256:f0cbc7fff06a90bbd875cc201f94ef0ee3929dfbd5c55a06674b60857b8b85ed \ - --hash=sha256:f4791cf0f8c3104ac668797d8c514afb3431bc3305f5638add0ba1a5a37e0d88 \ - --hash=sha256:f5e412d717366e0677ef767eac93566582518fe8be923361a5c204c1a62eaafe \ - --hash=sha256:fb2ed8b3fe4bf4506d6dab3b93b83bbc22237e230cba03866d561c3577517d18 \ - --hash=sha256:fe0a5a1025eb797752136ac8b4fa21aa891e3d74fd340f864ff982d649691867 +pydantic-core==2.14.6 \ + --hash=sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556 \ + --hash=sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e \ + --hash=sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411 \ + --hash=sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245 \ + --hash=sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c \ + --hash=sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66 \ + --hash=sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd \ + --hash=sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d \ + --hash=sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b \ + --hash=sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06 \ + --hash=sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948 \ + --hash=sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341 \ + --hash=sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0 \ + --hash=sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f \ + --hash=sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a \ + --hash=sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2 \ + --hash=sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51 \ + --hash=sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80 \ + --hash=sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8 \ + --hash=sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d \ + --hash=sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8 \ + --hash=sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb \ + --hash=sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590 \ + --hash=sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87 \ + --hash=sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534 \ + --hash=sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b \ + --hash=sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145 \ + --hash=sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba \ + --hash=sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b \ + --hash=sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2 \ + --hash=sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e \ + --hash=sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052 \ + --hash=sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622 \ + --hash=sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab \ + --hash=sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b \ + --hash=sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66 \ + --hash=sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e \ + --hash=sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4 \ + --hash=sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e \ + --hash=sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec \ + --hash=sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c \ + --hash=sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed \ + --hash=sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937 \ + --hash=sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f \ + --hash=sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9 \ + --hash=sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4 \ + --hash=sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96 \ + --hash=sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277 \ + --hash=sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23 \ + --hash=sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7 \ + --hash=sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b \ + --hash=sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91 \ + --hash=sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d \ + --hash=sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e \ + --hash=sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1 \ + --hash=sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2 \ + --hash=sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160 \ + --hash=sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9 \ + --hash=sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670 \ + --hash=sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7 \ + --hash=sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c \ + --hash=sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb \ + --hash=sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42 \ + --hash=sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d \ + --hash=sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8 \ + --hash=sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1 \ + --hash=sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6 \ + --hash=sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8 \ + --hash=sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf \ + --hash=sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e \ + --hash=sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a \ + --hash=sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9 \ + --hash=sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1 \ + --hash=sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40 \ + --hash=sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2 \ + --hash=sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d \ + --hash=sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f \ + --hash=sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f \ + --hash=sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af \ + --hash=sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7 \ + --hash=sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda \ + --hash=sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a \ + --hash=sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95 \ + --hash=sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0 \ + --hash=sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60 \ + --hash=sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149 \ + --hash=sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975 \ + --hash=sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4 \ + --hash=sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe \ + --hash=sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94 \ + --hash=sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03 \ + --hash=sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c \ + --hash=sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b \ + --hash=sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a \ + --hash=sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24 \ + --hash=sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391 \ + --hash=sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c \ + --hash=sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab \ + --hash=sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd \ + --hash=sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786 \ + --hash=sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08 \ + --hash=sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8 \ + --hash=sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6 \ + --hash=sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0 \ + --hash=sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421 # via pydantic pygments==2.17.2 \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 798d8b80fad..8de2041a21e 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -494,116 +494,116 @@ pycparser==2.21 \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 # via cffi -pydantic==2.5.2 \ - --hash=sha256:80c50fb8e3dcecfddae1adbcc00ec5822918490c99ab31f6cf6140ca1c1429f0 \ - --hash=sha256:ff177ba64c6faf73d7afa2e8cad38fd456c0dbe01c9954e71038001cd15a6edd +pydantic==2.5.3 \ + --hash=sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a \ + --hash=sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4 # via aws-sam-translator -pydantic-core==2.14.5 \ - --hash=sha256:038c9f763e650712b899f983076ce783175397c848da04985658e7628cbe873b \ - --hash=sha256:074f3d86f081ce61414d2dc44901f4f83617329c6f3ab49d2bc6c96948b2c26b \ - --hash=sha256:079206491c435b60778cf2b0ee5fd645e61ffd6e70c47806c9ed51fc75af078d \ - --hash=sha256:09b0e985fbaf13e6b06a56d21694d12ebca6ce5414b9211edf6f17738d82b0f8 \ - --hash=sha256:0f6116a558fd06d1b7c2902d1c4cf64a5bd49d67c3540e61eccca93f41418124 \ - --hash=sha256:103ef8d5b58596a731b690112819501ba1db7a36f4ee99f7892c40da02c3e189 \ - --hash=sha256:16e29bad40bcf97aac682a58861249ca9dcc57c3f6be22f506501833ddb8939c \ - --hash=sha256:206ed23aecd67c71daf5c02c3cd19c0501b01ef3cbf7782db9e4e051426b3d0d \ - --hash=sha256:2248485b0322c75aee7565d95ad0e16f1c67403a470d02f94da7344184be770f \ - --hash=sha256:27548e16c79702f1e03f5628589c6057c9ae17c95b4c449de3c66b589ead0520 \ - --hash=sha256:2d0ae0d8670164e10accbeb31d5ad45adb71292032d0fdb9079912907f0085f4 \ - --hash=sha256:3128e0bbc8c091ec4375a1828d6118bc20404883169ac95ffa8d983b293611e6 \ - --hash=sha256:3387277f1bf659caf1724e1afe8ee7dbc9952a82d90f858ebb931880216ea955 \ - --hash=sha256:34708cc82c330e303f4ce87758828ef6e457681b58ce0e921b6e97937dd1e2a3 \ - --hash=sha256:35613015f0ba7e14c29ac6c2483a657ec740e5ac5758d993fdd5870b07a61d8b \ - --hash=sha256:3ad873900297bb36e4b6b3f7029d88ff9829ecdc15d5cf20161775ce12306f8a \ - --hash=sha256:40180930807ce806aa71eda5a5a5447abb6b6a3c0b4b3b1b1962651906484d68 \ - --hash=sha256:439c9afe34638ace43a49bf72d201e0ffc1a800295bed8420c2a9ca8d5e3dbb3 \ - --hash=sha256:45e95333b8418ded64745f14574aa9bfc212cb4fbeed7a687b0c6e53b5e188cd \ - --hash=sha256:4641e8ad4efb697f38a9b64ca0523b557c7931c5f84e0fd377a9a3b05121f0de \ - --hash=sha256:49b08aae5013640a3bfa25a8eebbd95638ec3f4b2eaf6ed82cf0c7047133f03b \ - --hash=sha256:4bc536201426451f06f044dfbf341c09f540b4ebdb9fd8d2c6164d733de5e634 \ - --hash=sha256:4ce601907e99ea5b4adb807ded3570ea62186b17f88e271569144e8cca4409c7 \ - --hash=sha256:4e40f2bd0d57dac3feb3a3aed50f17d83436c9e6b09b16af271b6230a2915459 \ - --hash=sha256:4e47a76848f92529879ecfc417ff88a2806438f57be4a6a8bf2961e8f9ca9ec7 \ - --hash=sha256:513b07e99c0a267b1d954243845d8a833758a6726a3b5d8948306e3fe14675e3 \ - --hash=sha256:531f4b4252fac6ca476fbe0e6f60f16f5b65d3e6b583bc4d87645e4e5ddde331 \ - --hash=sha256:57d52fa717ff445cb0a5ab5237db502e6be50809b43a596fb569630c665abddf \ - --hash=sha256:59986de5710ad9613ff61dd9b02bdd2f615f1a7052304b79cc8fa2eb4e336d2d \ - --hash=sha256:5baab5455c7a538ac7e8bf1feec4278a66436197592a9bed538160a2e7d11e36 \ - --hash=sha256:5c7d5b5005f177764e96bd584d7bf28d6e26e96f2a541fdddb934c486e36fd59 \ - --hash=sha256:60b7607753ba62cf0739177913b858140f11b8af72f22860c28eabb2f0a61937 \ - --hash=sha256:615a0a4bff11c45eb3c1996ceed5bdaa2f7b432425253a7c2eed33bb86d80abc \ - --hash=sha256:61ea96a78378e3bd5a0be99b0e5ed00057b71f66115f5404d0dae4819f495093 \ - --hash=sha256:652c1988019752138b974c28f43751528116bcceadad85f33a258869e641d753 \ - --hash=sha256:6637560562134b0e17de333d18e69e312e0458ee4455bdad12c37100b7cad706 \ - --hash=sha256:678265f7b14e138d9a541ddabbe033012a2953315739f8cfa6d754cc8063e8ca \ - --hash=sha256:699156034181e2ce106c89ddb4b6504c30db8caa86e0c30de47b3e0654543260 \ - --hash=sha256:6b9ff467ffbab9110e80e8c8de3bcfce8e8b0fd5661ac44a09ae5901668ba997 \ - --hash=sha256:6c327e9cd849b564b234da821236e6bcbe4f359a42ee05050dc79d8ed2a91588 \ - --hash=sha256:6d30226dfc816dd0fdf120cae611dd2215117e4f9b124af8c60ab9093b6e8e71 \ - --hash=sha256:6e227c40c02fd873c2a73a98c1280c10315cbebe26734c196ef4514776120aeb \ - --hash=sha256:6e4d090e73e0725b2904fdbdd8d73b8802ddd691ef9254577b708d413bf3006e \ - --hash=sha256:70f4b4851dbb500129681d04cc955be2a90b2248d69273a787dda120d5cf1f69 \ - --hash=sha256:70f947628e074bb2526ba1b151cee10e4c3b9670af4dbb4d73bc8a89445916b5 \ - --hash=sha256:774de879d212db5ce02dfbf5b0da9a0ea386aeba12b0b95674a4ce0593df3d07 \ - --hash=sha256:77fa384d8e118b3077cccfcaf91bf83c31fe4dc850b5e6ee3dc14dc3d61bdba1 \ - --hash=sha256:79e0a2cdbdc7af3f4aee3210b1172ab53d7ddb6a2d8c24119b5706e622b346d0 \ - --hash=sha256:7e88f5696153dc516ba6e79f82cc4747e87027205f0e02390c21f7cb3bd8abfd \ - --hash=sha256:7f8210297b04e53bc3da35db08b7302a6a1f4889c79173af69b72ec9754796b8 \ - --hash=sha256:81982d78a45d1e5396819bbb4ece1fadfe5f079335dd28c4ab3427cd95389944 \ - --hash=sha256:823fcc638f67035137a5cd3f1584a4542d35a951c3cc68c6ead1df7dac825c26 \ - --hash=sha256:853a2295c00f1d4429db4c0fb9475958543ee80cfd310814b5c0ef502de24dda \ - --hash=sha256:88e74ab0cdd84ad0614e2750f903bb0d610cc8af2cc17f72c28163acfcf372a4 \ - --hash=sha256:8aa1768c151cf562a9992462239dfc356b3d1037cc5a3ac829bb7f3bda7cc1f9 \ - --hash=sha256:8c8a8812fe6f43a3a5b054af6ac2d7b8605c7bcab2804a8a7d68b53f3cd86e00 \ - --hash=sha256:95b15e855ae44f0c6341ceb74df61b606e11f1087e87dcb7482377374aac6abe \ - --hash=sha256:96581cfefa9123accc465a5fd0cc833ac4d75d55cc30b633b402e00e7ced00a6 \ - --hash=sha256:9bd18fee0923ca10f9a3ff67d4851c9d3e22b7bc63d1eddc12f439f436f2aada \ - --hash=sha256:a33324437018bf6ba1bb0f921788788641439e0ed654b233285b9c69704c27b4 \ - --hash=sha256:a6a16f4a527aae4f49c875da3cdc9508ac7eef26e7977952608610104244e1b7 \ - --hash=sha256:a717aef6971208f0851a2420b075338e33083111d92041157bbe0e2713b37325 \ - --hash=sha256:a71891847f0a73b1b9eb86d089baee301477abef45f7eaf303495cd1473613e4 \ - --hash=sha256:aae7ea3a1c5bb40c93cad361b3e869b180ac174656120c42b9fadebf685d121b \ - --hash=sha256:ab1cdb0f14dc161ebc268c09db04d2c9e6f70027f3b42446fa11c153521c0e88 \ - --hash=sha256:ab4ea451082e684198636565224bbb179575efc1658c48281b2c866bfd4ddf04 \ - --hash=sha256:abf058be9517dc877227ec3223f0300034bd0e9f53aebd63cf4456c8cb1e0863 \ - --hash=sha256:af36f36538418f3806048f3b242a1777e2540ff9efaa667c27da63d2749dbce0 \ - --hash=sha256:b53e9ad053cd064f7e473a5f29b37fc4cc9dc6d35f341e6afc0155ea257fc911 \ - --hash=sha256:b7851992faf25eac90bfcb7bfd19e1f5ffa00afd57daec8a0042e63c74a4551b \ - --hash=sha256:b9b759b77f5337b4ea024f03abc6464c9f35d9718de01cfe6bae9f2e139c397e \ - --hash=sha256:ba39688799094c75ea8a16a6b544eb57b5b0f3328697084f3f2790892510d144 \ - --hash=sha256:ba6b6b3846cfc10fdb4c971980a954e49d447cd215ed5a77ec8190bc93dd7bc5 \ - --hash=sha256:bb4c2eda937a5e74c38a41b33d8c77220380a388d689bcdb9b187cf6224c9720 \ - --hash=sha256:c0b97ec434041827935044bbbe52b03d6018c2897349670ff8fe11ed24d1d4ab \ - --hash=sha256:c1452a1acdf914d194159439eb21e56b89aa903f2e1c65c60b9d874f9b950e5d \ - --hash=sha256:c2027d05c8aebe61d898d4cffd774840a9cb82ed356ba47a90d99ad768f39789 \ - --hash=sha256:c2adbe22ab4babbca99c75c5d07aaf74f43c3195384ec07ccbd2f9e3bddaecec \ - --hash=sha256:c2d97e906b4ff36eb464d52a3bc7d720bd6261f64bc4bcdbcd2c557c02081ed2 \ - --hash=sha256:c339dabd8ee15f8259ee0f202679b6324926e5bc9e9a40bf981ce77c038553db \ - --hash=sha256:c6eae413494a1c3f89055da7a5515f32e05ebc1a234c27674a6956755fb2236f \ - --hash=sha256:c949f04ecad823f81b1ba94e7d189d9dfb81edbb94ed3f8acfce41e682e48cef \ - --hash=sha256:c97bee68898f3f4344eb02fec316db93d9700fb1e6a5b760ffa20d71d9a46ce3 \ - --hash=sha256:ca61d858e4107ce5e1330a74724fe757fc7135190eb5ce5c9d0191729f033209 \ - --hash=sha256:cb4679d4c2b089e5ef89756bc73e1926745e995d76e11925e3e96a76d5fa51fc \ - --hash=sha256:cb774298da62aea5c80a89bd58c40205ab4c2abf4834453b5de207d59d2e1651 \ - --hash=sha256:ccd4d5702bb90b84df13bd491be8d900b92016c5a455b7e14630ad7449eb03f8 \ - --hash=sha256:cf9d3fe53b1ee360e2421be95e62ca9b3296bf3f2fb2d3b83ca49ad3f925835e \ - --hash=sha256:d2ae91f50ccc5810b2f1b6b858257c9ad2e08da70bf890dee02de1775a387c66 \ - --hash=sha256:d37f8ec982ead9ba0a22a996129594938138a1503237b87318392a48882d50b7 \ - --hash=sha256:d81e6987b27bc7d101c8597e1cd2bcaa2fee5e8e0f356735c7ed34368c471550 \ - --hash=sha256:dcf4e6d85614f7a4956c2de5a56531f44efb973d2fe4a444d7251df5d5c4dcfd \ - --hash=sha256:de790a3b5aa2124b8b78ae5faa033937a72da8efe74b9231698b5a1dd9be3405 \ - --hash=sha256:e47e9a08bcc04d20975b6434cc50bf82665fbc751bcce739d04a3120428f3e27 \ - --hash=sha256:e60f112ac88db9261ad3a52032ea46388378034f3279c643499edb982536a093 \ - --hash=sha256:e87fc540c6cac7f29ede02e0f989d4233f88ad439c5cdee56f693cc9c1c78077 \ - --hash=sha256:eac5c82fc632c599f4639a5886f96867ffced74458c7db61bc9a66ccb8ee3113 \ - --hash=sha256:ebb4e035e28f49b6f1a7032920bb9a0c064aedbbabe52c543343d39341a5b2a3 \ - --hash=sha256:ec1e72d6412f7126eb7b2e3bfca42b15e6e389e1bc88ea0069d0cc1742f477c6 \ - --hash=sha256:ef98ca7d5995a82f43ec0ab39c4caf6a9b994cb0b53648ff61716370eadc43cf \ - --hash=sha256:f0cbc7fff06a90bbd875cc201f94ef0ee3929dfbd5c55a06674b60857b8b85ed \ - --hash=sha256:f4791cf0f8c3104ac668797d8c514afb3431bc3305f5638add0ba1a5a37e0d88 \ - --hash=sha256:f5e412d717366e0677ef767eac93566582518fe8be923361a5c204c1a62eaafe \ - --hash=sha256:fb2ed8b3fe4bf4506d6dab3b93b83bbc22237e230cba03866d561c3577517d18 \ - --hash=sha256:fe0a5a1025eb797752136ac8b4fa21aa891e3d74fd340f864ff982d649691867 +pydantic-core==2.14.6 \ + --hash=sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556 \ + --hash=sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e \ + --hash=sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411 \ + --hash=sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245 \ + --hash=sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c \ + --hash=sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66 \ + --hash=sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd \ + --hash=sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d \ + --hash=sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b \ + --hash=sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06 \ + --hash=sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948 \ + --hash=sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341 \ + --hash=sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0 \ + --hash=sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f \ + --hash=sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a \ + --hash=sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2 \ + --hash=sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51 \ + --hash=sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80 \ + --hash=sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8 \ + --hash=sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d \ + --hash=sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8 \ + --hash=sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb \ + --hash=sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590 \ + --hash=sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87 \ + --hash=sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534 \ + --hash=sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b \ + --hash=sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145 \ + --hash=sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba \ + --hash=sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b \ + --hash=sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2 \ + --hash=sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e \ + --hash=sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052 \ + --hash=sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622 \ + --hash=sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab \ + --hash=sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b \ + --hash=sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66 \ + --hash=sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e \ + --hash=sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4 \ + --hash=sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e \ + --hash=sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec \ + --hash=sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c \ + --hash=sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed \ + --hash=sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937 \ + --hash=sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f \ + --hash=sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9 \ + --hash=sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4 \ + --hash=sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96 \ + --hash=sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277 \ + --hash=sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23 \ + --hash=sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7 \ + --hash=sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b \ + --hash=sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91 \ + --hash=sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d \ + --hash=sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e \ + --hash=sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1 \ + --hash=sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2 \ + --hash=sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160 \ + --hash=sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9 \ + --hash=sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670 \ + --hash=sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7 \ + --hash=sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c \ + --hash=sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb \ + --hash=sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42 \ + --hash=sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d \ + --hash=sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8 \ + --hash=sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1 \ + --hash=sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6 \ + --hash=sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8 \ + --hash=sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf \ + --hash=sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e \ + --hash=sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a \ + --hash=sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9 \ + --hash=sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1 \ + --hash=sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40 \ + --hash=sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2 \ + --hash=sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d \ + --hash=sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f \ + --hash=sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f \ + --hash=sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af \ + --hash=sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7 \ + --hash=sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda \ + --hash=sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a \ + --hash=sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95 \ + --hash=sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0 \ + --hash=sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60 \ + --hash=sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149 \ + --hash=sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975 \ + --hash=sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4 \ + --hash=sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe \ + --hash=sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94 \ + --hash=sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03 \ + --hash=sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c \ + --hash=sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b \ + --hash=sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a \ + --hash=sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24 \ + --hash=sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391 \ + --hash=sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c \ + --hash=sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab \ + --hash=sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd \ + --hash=sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786 \ + --hash=sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08 \ + --hash=sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8 \ + --hash=sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6 \ + --hash=sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0 \ + --hash=sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421 # via pydantic pygments==2.17.2 \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index e7b02e990cb..1d48014f2f6 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -466,116 +466,116 @@ pycparser==2.21 \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 # via cffi -pydantic==2.5.2 \ - --hash=sha256:80c50fb8e3dcecfddae1adbcc00ec5822918490c99ab31f6cf6140ca1c1429f0 \ - --hash=sha256:ff177ba64c6faf73d7afa2e8cad38fd456c0dbe01c9954e71038001cd15a6edd +pydantic==2.5.3 \ + --hash=sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a \ + --hash=sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4 # via aws-sam-translator -pydantic-core==2.14.5 \ - --hash=sha256:038c9f763e650712b899f983076ce783175397c848da04985658e7628cbe873b \ - --hash=sha256:074f3d86f081ce61414d2dc44901f4f83617329c6f3ab49d2bc6c96948b2c26b \ - --hash=sha256:079206491c435b60778cf2b0ee5fd645e61ffd6e70c47806c9ed51fc75af078d \ - --hash=sha256:09b0e985fbaf13e6b06a56d21694d12ebca6ce5414b9211edf6f17738d82b0f8 \ - --hash=sha256:0f6116a558fd06d1b7c2902d1c4cf64a5bd49d67c3540e61eccca93f41418124 \ - --hash=sha256:103ef8d5b58596a731b690112819501ba1db7a36f4ee99f7892c40da02c3e189 \ - --hash=sha256:16e29bad40bcf97aac682a58861249ca9dcc57c3f6be22f506501833ddb8939c \ - --hash=sha256:206ed23aecd67c71daf5c02c3cd19c0501b01ef3cbf7782db9e4e051426b3d0d \ - --hash=sha256:2248485b0322c75aee7565d95ad0e16f1c67403a470d02f94da7344184be770f \ - --hash=sha256:27548e16c79702f1e03f5628589c6057c9ae17c95b4c449de3c66b589ead0520 \ - --hash=sha256:2d0ae0d8670164e10accbeb31d5ad45adb71292032d0fdb9079912907f0085f4 \ - --hash=sha256:3128e0bbc8c091ec4375a1828d6118bc20404883169ac95ffa8d983b293611e6 \ - --hash=sha256:3387277f1bf659caf1724e1afe8ee7dbc9952a82d90f858ebb931880216ea955 \ - --hash=sha256:34708cc82c330e303f4ce87758828ef6e457681b58ce0e921b6e97937dd1e2a3 \ - --hash=sha256:35613015f0ba7e14c29ac6c2483a657ec740e5ac5758d993fdd5870b07a61d8b \ - --hash=sha256:3ad873900297bb36e4b6b3f7029d88ff9829ecdc15d5cf20161775ce12306f8a \ - --hash=sha256:40180930807ce806aa71eda5a5a5447abb6b6a3c0b4b3b1b1962651906484d68 \ - --hash=sha256:439c9afe34638ace43a49bf72d201e0ffc1a800295bed8420c2a9ca8d5e3dbb3 \ - --hash=sha256:45e95333b8418ded64745f14574aa9bfc212cb4fbeed7a687b0c6e53b5e188cd \ - --hash=sha256:4641e8ad4efb697f38a9b64ca0523b557c7931c5f84e0fd377a9a3b05121f0de \ - --hash=sha256:49b08aae5013640a3bfa25a8eebbd95638ec3f4b2eaf6ed82cf0c7047133f03b \ - --hash=sha256:4bc536201426451f06f044dfbf341c09f540b4ebdb9fd8d2c6164d733de5e634 \ - --hash=sha256:4ce601907e99ea5b4adb807ded3570ea62186b17f88e271569144e8cca4409c7 \ - --hash=sha256:4e40f2bd0d57dac3feb3a3aed50f17d83436c9e6b09b16af271b6230a2915459 \ - --hash=sha256:4e47a76848f92529879ecfc417ff88a2806438f57be4a6a8bf2961e8f9ca9ec7 \ - --hash=sha256:513b07e99c0a267b1d954243845d8a833758a6726a3b5d8948306e3fe14675e3 \ - --hash=sha256:531f4b4252fac6ca476fbe0e6f60f16f5b65d3e6b583bc4d87645e4e5ddde331 \ - --hash=sha256:57d52fa717ff445cb0a5ab5237db502e6be50809b43a596fb569630c665abddf \ - --hash=sha256:59986de5710ad9613ff61dd9b02bdd2f615f1a7052304b79cc8fa2eb4e336d2d \ - --hash=sha256:5baab5455c7a538ac7e8bf1feec4278a66436197592a9bed538160a2e7d11e36 \ - --hash=sha256:5c7d5b5005f177764e96bd584d7bf28d6e26e96f2a541fdddb934c486e36fd59 \ - --hash=sha256:60b7607753ba62cf0739177913b858140f11b8af72f22860c28eabb2f0a61937 \ - --hash=sha256:615a0a4bff11c45eb3c1996ceed5bdaa2f7b432425253a7c2eed33bb86d80abc \ - --hash=sha256:61ea96a78378e3bd5a0be99b0e5ed00057b71f66115f5404d0dae4819f495093 \ - --hash=sha256:652c1988019752138b974c28f43751528116bcceadad85f33a258869e641d753 \ - --hash=sha256:6637560562134b0e17de333d18e69e312e0458ee4455bdad12c37100b7cad706 \ - --hash=sha256:678265f7b14e138d9a541ddabbe033012a2953315739f8cfa6d754cc8063e8ca \ - --hash=sha256:699156034181e2ce106c89ddb4b6504c30db8caa86e0c30de47b3e0654543260 \ - --hash=sha256:6b9ff467ffbab9110e80e8c8de3bcfce8e8b0fd5661ac44a09ae5901668ba997 \ - --hash=sha256:6c327e9cd849b564b234da821236e6bcbe4f359a42ee05050dc79d8ed2a91588 \ - --hash=sha256:6d30226dfc816dd0fdf120cae611dd2215117e4f9b124af8c60ab9093b6e8e71 \ - --hash=sha256:6e227c40c02fd873c2a73a98c1280c10315cbebe26734c196ef4514776120aeb \ - --hash=sha256:6e4d090e73e0725b2904fdbdd8d73b8802ddd691ef9254577b708d413bf3006e \ - --hash=sha256:70f4b4851dbb500129681d04cc955be2a90b2248d69273a787dda120d5cf1f69 \ - --hash=sha256:70f947628e074bb2526ba1b151cee10e4c3b9670af4dbb4d73bc8a89445916b5 \ - --hash=sha256:774de879d212db5ce02dfbf5b0da9a0ea386aeba12b0b95674a4ce0593df3d07 \ - --hash=sha256:77fa384d8e118b3077cccfcaf91bf83c31fe4dc850b5e6ee3dc14dc3d61bdba1 \ - --hash=sha256:79e0a2cdbdc7af3f4aee3210b1172ab53d7ddb6a2d8c24119b5706e622b346d0 \ - --hash=sha256:7e88f5696153dc516ba6e79f82cc4747e87027205f0e02390c21f7cb3bd8abfd \ - --hash=sha256:7f8210297b04e53bc3da35db08b7302a6a1f4889c79173af69b72ec9754796b8 \ - --hash=sha256:81982d78a45d1e5396819bbb4ece1fadfe5f079335dd28c4ab3427cd95389944 \ - --hash=sha256:823fcc638f67035137a5cd3f1584a4542d35a951c3cc68c6ead1df7dac825c26 \ - --hash=sha256:853a2295c00f1d4429db4c0fb9475958543ee80cfd310814b5c0ef502de24dda \ - --hash=sha256:88e74ab0cdd84ad0614e2750f903bb0d610cc8af2cc17f72c28163acfcf372a4 \ - --hash=sha256:8aa1768c151cf562a9992462239dfc356b3d1037cc5a3ac829bb7f3bda7cc1f9 \ - --hash=sha256:8c8a8812fe6f43a3a5b054af6ac2d7b8605c7bcab2804a8a7d68b53f3cd86e00 \ - --hash=sha256:95b15e855ae44f0c6341ceb74df61b606e11f1087e87dcb7482377374aac6abe \ - --hash=sha256:96581cfefa9123accc465a5fd0cc833ac4d75d55cc30b633b402e00e7ced00a6 \ - --hash=sha256:9bd18fee0923ca10f9a3ff67d4851c9d3e22b7bc63d1eddc12f439f436f2aada \ - --hash=sha256:a33324437018bf6ba1bb0f921788788641439e0ed654b233285b9c69704c27b4 \ - --hash=sha256:a6a16f4a527aae4f49c875da3cdc9508ac7eef26e7977952608610104244e1b7 \ - --hash=sha256:a717aef6971208f0851a2420b075338e33083111d92041157bbe0e2713b37325 \ - --hash=sha256:a71891847f0a73b1b9eb86d089baee301477abef45f7eaf303495cd1473613e4 \ - --hash=sha256:aae7ea3a1c5bb40c93cad361b3e869b180ac174656120c42b9fadebf685d121b \ - --hash=sha256:ab1cdb0f14dc161ebc268c09db04d2c9e6f70027f3b42446fa11c153521c0e88 \ - --hash=sha256:ab4ea451082e684198636565224bbb179575efc1658c48281b2c866bfd4ddf04 \ - --hash=sha256:abf058be9517dc877227ec3223f0300034bd0e9f53aebd63cf4456c8cb1e0863 \ - --hash=sha256:af36f36538418f3806048f3b242a1777e2540ff9efaa667c27da63d2749dbce0 \ - --hash=sha256:b53e9ad053cd064f7e473a5f29b37fc4cc9dc6d35f341e6afc0155ea257fc911 \ - --hash=sha256:b7851992faf25eac90bfcb7bfd19e1f5ffa00afd57daec8a0042e63c74a4551b \ - --hash=sha256:b9b759b77f5337b4ea024f03abc6464c9f35d9718de01cfe6bae9f2e139c397e \ - --hash=sha256:ba39688799094c75ea8a16a6b544eb57b5b0f3328697084f3f2790892510d144 \ - --hash=sha256:ba6b6b3846cfc10fdb4c971980a954e49d447cd215ed5a77ec8190bc93dd7bc5 \ - --hash=sha256:bb4c2eda937a5e74c38a41b33d8c77220380a388d689bcdb9b187cf6224c9720 \ - --hash=sha256:c0b97ec434041827935044bbbe52b03d6018c2897349670ff8fe11ed24d1d4ab \ - --hash=sha256:c1452a1acdf914d194159439eb21e56b89aa903f2e1c65c60b9d874f9b950e5d \ - --hash=sha256:c2027d05c8aebe61d898d4cffd774840a9cb82ed356ba47a90d99ad768f39789 \ - --hash=sha256:c2adbe22ab4babbca99c75c5d07aaf74f43c3195384ec07ccbd2f9e3bddaecec \ - --hash=sha256:c2d97e906b4ff36eb464d52a3bc7d720bd6261f64bc4bcdbcd2c557c02081ed2 \ - --hash=sha256:c339dabd8ee15f8259ee0f202679b6324926e5bc9e9a40bf981ce77c038553db \ - --hash=sha256:c6eae413494a1c3f89055da7a5515f32e05ebc1a234c27674a6956755fb2236f \ - --hash=sha256:c949f04ecad823f81b1ba94e7d189d9dfb81edbb94ed3f8acfce41e682e48cef \ - --hash=sha256:c97bee68898f3f4344eb02fec316db93d9700fb1e6a5b760ffa20d71d9a46ce3 \ - --hash=sha256:ca61d858e4107ce5e1330a74724fe757fc7135190eb5ce5c9d0191729f033209 \ - --hash=sha256:cb4679d4c2b089e5ef89756bc73e1926745e995d76e11925e3e96a76d5fa51fc \ - --hash=sha256:cb774298da62aea5c80a89bd58c40205ab4c2abf4834453b5de207d59d2e1651 \ - --hash=sha256:ccd4d5702bb90b84df13bd491be8d900b92016c5a455b7e14630ad7449eb03f8 \ - --hash=sha256:cf9d3fe53b1ee360e2421be95e62ca9b3296bf3f2fb2d3b83ca49ad3f925835e \ - --hash=sha256:d2ae91f50ccc5810b2f1b6b858257c9ad2e08da70bf890dee02de1775a387c66 \ - --hash=sha256:d37f8ec982ead9ba0a22a996129594938138a1503237b87318392a48882d50b7 \ - --hash=sha256:d81e6987b27bc7d101c8597e1cd2bcaa2fee5e8e0f356735c7ed34368c471550 \ - --hash=sha256:dcf4e6d85614f7a4956c2de5a56531f44efb973d2fe4a444d7251df5d5c4dcfd \ - --hash=sha256:de790a3b5aa2124b8b78ae5faa033937a72da8efe74b9231698b5a1dd9be3405 \ - --hash=sha256:e47e9a08bcc04d20975b6434cc50bf82665fbc751bcce739d04a3120428f3e27 \ - --hash=sha256:e60f112ac88db9261ad3a52032ea46388378034f3279c643499edb982536a093 \ - --hash=sha256:e87fc540c6cac7f29ede02e0f989d4233f88ad439c5cdee56f693cc9c1c78077 \ - --hash=sha256:eac5c82fc632c599f4639a5886f96867ffced74458c7db61bc9a66ccb8ee3113 \ - --hash=sha256:ebb4e035e28f49b6f1a7032920bb9a0c064aedbbabe52c543343d39341a5b2a3 \ - --hash=sha256:ec1e72d6412f7126eb7b2e3bfca42b15e6e389e1bc88ea0069d0cc1742f477c6 \ - --hash=sha256:ef98ca7d5995a82f43ec0ab39c4caf6a9b994cb0b53648ff61716370eadc43cf \ - --hash=sha256:f0cbc7fff06a90bbd875cc201f94ef0ee3929dfbd5c55a06674b60857b8b85ed \ - --hash=sha256:f4791cf0f8c3104ac668797d8c514afb3431bc3305f5638add0ba1a5a37e0d88 \ - --hash=sha256:f5e412d717366e0677ef767eac93566582518fe8be923361a5c204c1a62eaafe \ - --hash=sha256:fb2ed8b3fe4bf4506d6dab3b93b83bbc22237e230cba03866d561c3577517d18 \ - --hash=sha256:fe0a5a1025eb797752136ac8b4fa21aa891e3d74fd340f864ff982d649691867 +pydantic-core==2.14.6 \ + --hash=sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556 \ + --hash=sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e \ + --hash=sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411 \ + --hash=sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245 \ + --hash=sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c \ + --hash=sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66 \ + --hash=sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd \ + --hash=sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d \ + --hash=sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b \ + --hash=sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06 \ + --hash=sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948 \ + --hash=sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341 \ + --hash=sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0 \ + --hash=sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f \ + --hash=sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a \ + --hash=sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2 \ + --hash=sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51 \ + --hash=sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80 \ + --hash=sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8 \ + --hash=sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d \ + --hash=sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8 \ + --hash=sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb \ + --hash=sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590 \ + --hash=sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87 \ + --hash=sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534 \ + --hash=sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b \ + --hash=sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145 \ + --hash=sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba \ + --hash=sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b \ + --hash=sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2 \ + --hash=sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e \ + --hash=sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052 \ + --hash=sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622 \ + --hash=sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab \ + --hash=sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b \ + --hash=sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66 \ + --hash=sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e \ + --hash=sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4 \ + --hash=sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e \ + --hash=sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec \ + --hash=sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c \ + --hash=sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed \ + --hash=sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937 \ + --hash=sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f \ + --hash=sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9 \ + --hash=sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4 \ + --hash=sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96 \ + --hash=sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277 \ + --hash=sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23 \ + --hash=sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7 \ + --hash=sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b \ + --hash=sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91 \ + --hash=sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d \ + --hash=sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e \ + --hash=sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1 \ + --hash=sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2 \ + --hash=sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160 \ + --hash=sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9 \ + --hash=sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670 \ + --hash=sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7 \ + --hash=sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c \ + --hash=sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb \ + --hash=sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42 \ + --hash=sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d \ + --hash=sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8 \ + --hash=sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1 \ + --hash=sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6 \ + --hash=sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8 \ + --hash=sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf \ + --hash=sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e \ + --hash=sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a \ + --hash=sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9 \ + --hash=sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1 \ + --hash=sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40 \ + --hash=sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2 \ + --hash=sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d \ + --hash=sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f \ + --hash=sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f \ + --hash=sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af \ + --hash=sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7 \ + --hash=sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda \ + --hash=sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a \ + --hash=sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95 \ + --hash=sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0 \ + --hash=sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60 \ + --hash=sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149 \ + --hash=sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975 \ + --hash=sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4 \ + --hash=sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe \ + --hash=sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94 \ + --hash=sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03 \ + --hash=sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c \ + --hash=sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b \ + --hash=sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a \ + --hash=sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24 \ + --hash=sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391 \ + --hash=sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c \ + --hash=sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab \ + --hash=sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd \ + --hash=sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786 \ + --hash=sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08 \ + --hash=sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8 \ + --hash=sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6 \ + --hash=sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0 \ + --hash=sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421 # via pydantic pygments==2.17.2 \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ From 012963dbc3286147823f25905f2cfa549414d3c6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Jan 2024 10:47:25 -0800 Subject: [PATCH 048/100] chore(deps): bump attrs from 23.1.0 to 23.2.0 in /requirements (#6528) Bumps [attrs](https://github.com/sponsors/hynek) from 23.1.0 to 23.2.0. - [Commits](https://github.com/sponsors/hynek/commits) --- updated-dependencies: - dependency-name: attrs dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com> --- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 59afd9d9f9e..ccd22277fd2 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -12,9 +12,9 @@ arrow==1.3.0 \ --hash=sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80 \ --hash=sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85 # via cookiecutter -attrs==23.1.0 \ - --hash=sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04 \ - --hash=sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015 +attrs==23.2.0 \ + --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ + --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 # via # jschema-to-python # jsonschema diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 8de2041a21e..286c32205b4 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -12,9 +12,9 @@ arrow==1.3.0 \ --hash=sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80 \ --hash=sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85 # via cookiecutter -attrs==23.1.0 \ - --hash=sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04 \ - --hash=sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015 +attrs==23.2.0 \ + --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ + --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 # via # jschema-to-python # jsonschema diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 1d48014f2f6..c279465afea 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -12,9 +12,9 @@ arrow==1.3.0 \ --hash=sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80 \ --hash=sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85 # via cookiecutter -attrs==23.1.0 \ - --hash=sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04 \ - --hash=sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015 +attrs==23.2.0 \ + --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ + --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 # via # jschema-to-python # jsonschema From a75dc36b09e605c7696637c6293c455ca36d3bef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Jan 2024 18:47:59 +0000 Subject: [PATCH 049/100] chore(deps): bump importlib-metadata in /requirements (#6529) Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 6.8.0 to 7.0.1. - [Release notes](https://github.com/python/importlib_metadata/releases) - [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst) - [Commits](https://github.com/python/importlib_metadata/compare/v6.8.0...v7.0.1) --- updated-dependencies: - dependency-name: importlib-metadata dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com> --- requirements/reproducible-mac.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 286c32205b4..6ac7b039c4b 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -292,9 +292,9 @@ idna==3.6 \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f # via requests -importlib-metadata==6.8.0 \ - --hash=sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb \ - --hash=sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743 +importlib-metadata==7.0.1 \ + --hash=sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e \ + --hash=sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc # via flask importlib-resources==6.1.1 \ --hash=sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a \ From 40ec321282b87712b703d0c870d92a8edcc9f1ad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Jan 2024 18:48:47 +0000 Subject: [PATCH 050/100] chore(deps): bump referencing from 0.32.0 to 0.32.1 in /requirements (#6535) Bumps [referencing](https://github.com/python-jsonschema/referencing) from 0.32.0 to 0.32.1. - [Release notes](https://github.com/python-jsonschema/referencing/releases) - [Changelog](https://github.com/python-jsonschema/referencing/blob/main/docs/changes.rst) - [Commits](https://github.com/python-jsonschema/referencing/compare/v0.32.0...v0.32.1) --- updated-dependencies: - dependency-name: referencing dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index ccd22277fd2..6110f0c3331 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -641,9 +641,9 @@ pyyaml==6.0.1 \ # aws-sam-cli (setup.py) # cfn-lint # cookiecutter -referencing==0.32.0 \ - --hash=sha256:689e64fe121843dcfd57b71933318ef1f91188ffb45367332700a86ac8fd6161 \ - --hash=sha256:bdcd3efb936f82ff86f993093f6da7435c7de69a3b3a5a06678a6050184bee99 +referencing==0.32.1 \ + --hash=sha256:3c57da0513e9563eb7e203ebe9bb3a1b509b042016433bd1e45a2853466c3dd3 \ + --hash=sha256:7e4dc12271d8e15612bfe35792f5ea1c40970dadf8624602e33db2758f7ee554 # via # jsonschema # jsonschema-specifications diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 6ac7b039c4b..88b9ec25ac0 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -673,9 +673,9 @@ pyyaml==6.0.1 \ # aws-sam-cli (setup.py) # cfn-lint # cookiecutter -referencing==0.32.0 \ - --hash=sha256:689e64fe121843dcfd57b71933318ef1f91188ffb45367332700a86ac8fd6161 \ - --hash=sha256:bdcd3efb936f82ff86f993093f6da7435c7de69a3b3a5a06678a6050184bee99 +referencing==0.32.1 \ + --hash=sha256:3c57da0513e9563eb7e203ebe9bb3a1b509b042016433bd1e45a2853466c3dd3 \ + --hash=sha256:7e4dc12271d8e15612bfe35792f5ea1c40970dadf8624602e33db2758f7ee554 # via # jsonschema # jsonschema-specifications diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index c279465afea..52f775e5be2 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -661,9 +661,9 @@ pyyaml==6.0.1 \ # aws-sam-cli (setup.py) # cfn-lint # cookiecutter -referencing==0.32.0 \ - --hash=sha256:689e64fe121843dcfd57b71933318ef1f91188ffb45367332700a86ac8fd6161 \ - --hash=sha256:bdcd3efb936f82ff86f993093f6da7435c7de69a3b3a5a06678a6050184bee99 +referencing==0.32.1 \ + --hash=sha256:3c57da0513e9563eb7e203ebe9bb3a1b509b042016433bd1e45a2853466c3dd3 \ + --hash=sha256:7e4dc12271d8e15612bfe35792f5ea1c40970dadf8624602e33db2758f7ee554 # via # jsonschema # jsonschema-specifications From 8fee57131bcead43eb17d24d23986c30b5943504 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Jan 2024 18:49:09 +0000 Subject: [PATCH 051/100] chore(deps): bump cfn-lint from 0.83.7 to 0.83.8 in /requirements (#6539) Bumps [cfn-lint](https://github.com/aws-cloudformation/cfn-python-lint) from 0.83.7 to 0.83.8. - [Release notes](https://github.com/aws-cloudformation/cfn-python-lint/releases) - [Changelog](https://github.com/aws-cloudformation/cfn-lint/blob/main/CHANGELOG.md) - [Commits](https://github.com/aws-cloudformation/cfn-python-lint/compare/v0.83.7...v0.83.8) --- updated-dependencies: - dependency-name: cfn-lint dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/base.txt | 2 +- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index a8f8ebb8450..88931f519a7 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -28,7 +28,7 @@ regex!=2021.10.8 tzlocal==5.2 #Adding cfn-lint dependency for SAM validate -cfn-lint~=0.83.7 +cfn-lint~=0.83.8 # Type checking boto3 objects boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.12 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 6110f0c3331..749620de28f 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -118,9 +118,9 @@ cffi==1.16.0 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 # via cryptography -cfn-lint==0.83.7 \ - --hash=sha256:9c335de744d4a4dd0b26f797dfd06a50214ba9f4f4bd149a59e31b22ac2e23fc \ - --hash=sha256:a6456de27b4fa6927fc5505b1efacc7c6d03676be14b2add4803c73dd97692ae +cfn-lint==0.83.8 \ + --hash=sha256:e53b81095e21f0be76de9dc303ddc0290a5eb1ef78173cf3cbc1b6cce9b2dd22 \ + --hash=sha256:fbbe31925d78cb9373b160d944ba30cafc085dcd256a3c30139004ef96482154 # via aws-sam-cli (setup.py) chardet==5.2.0 \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 88b9ec25ac0..9fb6d7ba4f7 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -136,9 +136,9 @@ cffi==1.16.0 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 # via cryptography -cfn-lint==0.83.7 \ - --hash=sha256:9c335de744d4a4dd0b26f797dfd06a50214ba9f4f4bd149a59e31b22ac2e23fc \ - --hash=sha256:a6456de27b4fa6927fc5505b1efacc7c6d03676be14b2add4803c73dd97692ae +cfn-lint==0.83.8 \ + --hash=sha256:e53b81095e21f0be76de9dc303ddc0290a5eb1ef78173cf3cbc1b6cce9b2dd22 \ + --hash=sha256:fbbe31925d78cb9373b160d944ba30cafc085dcd256a3c30139004ef96482154 # via aws-sam-cli (setup.py) chardet==5.2.0 \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 52f775e5be2..c3e616e715d 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -118,9 +118,9 @@ cffi==1.16.0 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 # via cryptography -cfn-lint==0.83.7 \ - --hash=sha256:9c335de744d4a4dd0b26f797dfd06a50214ba9f4f4bd149a59e31b22ac2e23fc \ - --hash=sha256:a6456de27b4fa6927fc5505b1efacc7c6d03676be14b2add4803c73dd97692ae +cfn-lint==0.83.8 \ + --hash=sha256:e53b81095e21f0be76de9dc303ddc0290a5eb1ef78173cf3cbc1b6cce9b2dd22 \ + --hash=sha256:fbbe31925d78cb9373b160d944ba30cafc085dcd256a3c30139004ef96482154 # via aws-sam-cli (setup.py) chardet==5.2.0 \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ From d57319220b711df8fa91747841c7e5c00356f101 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Jan 2024 18:51:04 +0000 Subject: [PATCH 052/100] chore(deps): bump jinja2 from 3.1.2 to 3.1.3 in /requirements (#6547) Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.2 to 3.1.3. - [Release notes](https://github.com/pallets/jinja/releases) - [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst) - [Commits](https://github.com/pallets/jinja/compare/3.1.2...3.1.3) --- updated-dependencies: - dependency-name: jinja2 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 749620de28f..f7b03b6f41f 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -278,9 +278,9 @@ itsdangerous==2.1.2 \ --hash=sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44 \ --hash=sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a # via flask -jinja2==3.1.2 \ - --hash=sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852 \ - --hash=sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61 +jinja2==3.1.3 \ + --hash=sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa \ + --hash=sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90 # via # cookiecutter # flask diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 9fb6d7ba4f7..b121c247af9 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -306,9 +306,9 @@ itsdangerous==2.1.2 \ --hash=sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44 \ --hash=sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a # via flask -jinja2==3.1.2 \ - --hash=sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852 \ - --hash=sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61 +jinja2==3.1.3 \ + --hash=sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa \ + --hash=sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90 # via # cookiecutter # flask diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index c3e616e715d..23ea6ae8aa6 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -282,9 +282,9 @@ itsdangerous==2.1.2 \ --hash=sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44 \ --hash=sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a # via flask -jinja2==3.1.2 \ - --hash=sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852 \ - --hash=sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61 +jinja2==3.1.3 \ + --hash=sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa \ + --hash=sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90 # via # cookiecutter # flask From a79a138580fa2adc30125040e25c979d85aaa2a0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Jan 2024 18:52:30 +0000 Subject: [PATCH 053/100] chore(deps): bump the boto group in /requirements with 6 updates (#6548) Bumps the boto group in /requirements with 6 updates: | Package | From | To | | --- | --- | --- | | [boto3](https://github.com/boto/boto3) | `1.34.12` | `1.34.17` | | [boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]](https://github.com/youtype/mypy_boto3_builder) | `1.34.12` | `1.34.17` | | [botocore](https://github.com/boto/botocore) | `1.34.12` | `1.34.17` | | [botocore-stubs](https://github.com/youtype/botocore-stubs) | `1.34.12` | `1.34.17` | | [mypy-boto3-s3](https://github.com/youtype/mypy_boto3_builder) | `1.34.0` | `1.34.14` | | [mypy-boto3-secretsmanager](https://github.com/youtype/mypy_boto3_builder) | `1.34.7` | `1.34.17` | Updates `boto3` from 1.34.12 to 1.34.17 - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.34.12...1.34.17) Updates `boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]` from 1.34.12 to 1.34.17 - [Release notes](https://github.com/youtype/mypy_boto3_builder/releases) - [Commits](https://github.com/youtype/mypy_boto3_builder/commits) Updates `botocore` from 1.34.12 to 1.34.17 - [Changelog](https://github.com/boto/botocore/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/botocore/compare/1.34.12...1.34.17) Updates `botocore-stubs` from 1.34.12 to 1.34.17 - [Release notes](https://github.com/youtype/botocore-stubs/releases) - [Commits](https://github.com/youtype/botocore-stubs/commits) Updates `mypy-boto3-s3` from 1.34.0 to 1.34.14 - [Release notes](https://github.com/youtype/mypy_boto3_builder/releases) - [Commits](https://github.com/youtype/mypy_boto3_builder/commits) Updates `mypy-boto3-secretsmanager` from 1.34.7 to 1.34.17 - [Release notes](https://github.com/youtype/mypy_boto3_builder/releases) - [Commits](https://github.com/youtype/mypy_boto3_builder/commits) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray] dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: botocore dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: botocore-stubs dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: mypy-boto3-s3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: mypy-boto3-secretsmanager dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/base.txt | 2 +- requirements/reproducible-linux.txt | 36 ++++++++++++++--------------- requirements/reproducible-mac.txt | 36 ++++++++++++++--------------- requirements/reproducible-win.txt | 36 ++++++++++++++--------------- 4 files changed, 55 insertions(+), 55 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 88931f519a7..ac916995c81 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -31,4 +31,4 @@ tzlocal==5.2 cfn-lint~=0.83.8 # Type checking boto3 objects -boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.12 +boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.17 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index f7b03b6f41f..f59433fa8a4 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -38,27 +38,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.12 \ - --hash=sha256:67b763669f9eff10a55fe199875d6e66fda8051647af49f8b9b8fced674d75d7 \ - --hash=sha256:7d7eac86a2cbdfb8074927119da61884bfa29f3c504717d455371fc0a07c99d8 +boto3==1.34.17 \ + --hash=sha256:1efc02be786884034d503d59c018cf7650d0cff9fcb37cd2eb49b802a6fe6111 \ + --hash=sha256:8ca248cc84e7e859e4e276eb9c4309fa01a3e58473bf48d6c33448be870c2bb8 # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.12 \ - --hash=sha256:f0ed25e31eab1ee9b0e8e8e1226160243b15be5b65129f0947cbe10915971a8a \ - --hash=sha256:f0f9ea058624e22359f4060a5aece334eaabb4173581b7b1e2fc41056d44f938 +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.17 \ + --hash=sha256:33d0ad07aa7e3aefd4213c51fb6272f086ad4b94a66e6d131dd3ebd006fcb74c \ + --hash=sha256:4b3af2263a5503920760223c5db16e475a02fc6fcbe951f4a45e7c64cb065034 # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.12 \ - --hash=sha256:346b0788f3bf4c68928db909170e4c7300119a22f9a2176bf5f764d3542997e8 \ - --hash=sha256:53dfc19d63f2b70821e9804b7ecfc5e50fc84d9bd6818359b27db629ef43ec59 +botocore==1.34.17 \ + --hash=sha256:7272c39032c6f1d62781e4c8445d9a1d9140c2bf52ba7ee66bf6db559c4b2427 \ + --hash=sha256:e48a662f3a6919219276b55085e8f73c3347966675f55e9d448be30cf79678ee # via # boto3 # s3transfer -botocore-stubs==1.34.12 \ - --hash=sha256:6f2414ea5c2aba7d67c8a6ab8d8090eb3cdaa58eec23c4c4949c512d01b7907a \ - --hash=sha256:bc0caf41c0e05464ea74a8c502d8e5e16761a2f9975ff598483b87c4c1d7f253 +botocore-stubs==1.34.17 \ + --hash=sha256:cac1cbbd0d5dcc427a5f91be09be9a0a18d1a87c29e779ae717b424bd7436eb1 \ + --hash=sha256:f49b143427d15e9bda51f3c99de7dd7ccf58519a3f33e10b9d41053c41567a43 # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ @@ -412,17 +412,17 @@ mypy-boto3-lambda==1.34.0 \ --hash=sha256:109a7e126e84d6da6cacf8ab5c7c6f2be022417fe7bfb7f9b019767d7034f73b \ --hash=sha256:e74c0ce548da747a8c6e643c39dad8aa54d67e057f57740ec780a7e565590627 # via boto3-stubs -mypy-boto3-s3==1.34.0 \ - --hash=sha256:633876d2a96dbb924f9667084316c1759bff40c19a9a38313d5a4e825c5fc641 \ - --hash=sha256:7644a00e096ebb1c3292551059f64ff8329625dacd40827ced9481b14d64c733 +mypy-boto3-s3==1.34.14 \ + --hash=sha256:71c39ab0623cdb442d225b71c1783f6a513cff4c4a13505a2efbb2e3aff2e965 \ + --hash=sha256:f9669ecd182d5bf3532f5f2dcc5e5237776afe157ad5a0b37b26d6bec5fcc432 # via boto3-stubs mypy-boto3-schemas==1.34.0 \ --hash=sha256:28c016609dcffc606bd8425ee92894c46e943ab77033e1ae46481f00c39b7f75 \ --hash=sha256:3b25a71944192b0980c3bb5132deb7c06ee9b88580ed63f257fad97cf3bf2927 # via boto3-stubs -mypy-boto3-secretsmanager==1.34.7 \ - --hash=sha256:06a3e34d1d3aea4944688bdf677dfe928c9831165989c192b8d9498d9ceb8781 \ - --hash=sha256:0dcd72d7e6d2657838819b078447adc13199e35d8dee960e7fbe6c0e5d383b6b +mypy-boto3-secretsmanager==1.34.17 \ + --hash=sha256:0dbd1cdbe7992324c3414cccf0256e3905827bbf1f6a8d58c255635f6a2b4bfb \ + --hash=sha256:a547932d99c3f711b27b9ea1c38fc063050910c0bf6c8eb346abd96ace61668e # via boto3-stubs mypy-boto3-signer==1.34.0 \ --hash=sha256:c11ed943ccd38ee54fc0ca90ed347ef770d695df49535eab96dd97fb3dbdc592 \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index b121c247af9..cb5230681ad 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -56,27 +56,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.12 \ - --hash=sha256:67b763669f9eff10a55fe199875d6e66fda8051647af49f8b9b8fced674d75d7 \ - --hash=sha256:7d7eac86a2cbdfb8074927119da61884bfa29f3c504717d455371fc0a07c99d8 +boto3==1.34.17 \ + --hash=sha256:1efc02be786884034d503d59c018cf7650d0cff9fcb37cd2eb49b802a6fe6111 \ + --hash=sha256:8ca248cc84e7e859e4e276eb9c4309fa01a3e58473bf48d6c33448be870c2bb8 # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.12 \ - --hash=sha256:f0ed25e31eab1ee9b0e8e8e1226160243b15be5b65129f0947cbe10915971a8a \ - --hash=sha256:f0f9ea058624e22359f4060a5aece334eaabb4173581b7b1e2fc41056d44f938 +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.17 \ + --hash=sha256:33d0ad07aa7e3aefd4213c51fb6272f086ad4b94a66e6d131dd3ebd006fcb74c \ + --hash=sha256:4b3af2263a5503920760223c5db16e475a02fc6fcbe951f4a45e7c64cb065034 # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.12 \ - --hash=sha256:346b0788f3bf4c68928db909170e4c7300119a22f9a2176bf5f764d3542997e8 \ - --hash=sha256:53dfc19d63f2b70821e9804b7ecfc5e50fc84d9bd6818359b27db629ef43ec59 +botocore==1.34.17 \ + --hash=sha256:7272c39032c6f1d62781e4c8445d9a1d9140c2bf52ba7ee66bf6db559c4b2427 \ + --hash=sha256:e48a662f3a6919219276b55085e8f73c3347966675f55e9d448be30cf79678ee # via # boto3 # s3transfer -botocore-stubs==1.34.12 \ - --hash=sha256:6f2414ea5c2aba7d67c8a6ab8d8090eb3cdaa58eec23c4c4949c512d01b7907a \ - --hash=sha256:bc0caf41c0e05464ea74a8c502d8e5e16761a2f9975ff598483b87c4c1d7f253 +botocore-stubs==1.34.17 \ + --hash=sha256:cac1cbbd0d5dcc427a5f91be09be9a0a18d1a87c29e779ae717b424bd7436eb1 \ + --hash=sha256:f49b143427d15e9bda51f3c99de7dd7ccf58519a3f33e10b9d41053c41567a43 # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ @@ -440,17 +440,17 @@ mypy-boto3-lambda==1.34.0 \ --hash=sha256:109a7e126e84d6da6cacf8ab5c7c6f2be022417fe7bfb7f9b019767d7034f73b \ --hash=sha256:e74c0ce548da747a8c6e643c39dad8aa54d67e057f57740ec780a7e565590627 # via boto3-stubs -mypy-boto3-s3==1.34.0 \ - --hash=sha256:633876d2a96dbb924f9667084316c1759bff40c19a9a38313d5a4e825c5fc641 \ - --hash=sha256:7644a00e096ebb1c3292551059f64ff8329625dacd40827ced9481b14d64c733 +mypy-boto3-s3==1.34.14 \ + --hash=sha256:71c39ab0623cdb442d225b71c1783f6a513cff4c4a13505a2efbb2e3aff2e965 \ + --hash=sha256:f9669ecd182d5bf3532f5f2dcc5e5237776afe157ad5a0b37b26d6bec5fcc432 # via boto3-stubs mypy-boto3-schemas==1.34.0 \ --hash=sha256:28c016609dcffc606bd8425ee92894c46e943ab77033e1ae46481f00c39b7f75 \ --hash=sha256:3b25a71944192b0980c3bb5132deb7c06ee9b88580ed63f257fad97cf3bf2927 # via boto3-stubs -mypy-boto3-secretsmanager==1.34.7 \ - --hash=sha256:06a3e34d1d3aea4944688bdf677dfe928c9831165989c192b8d9498d9ceb8781 \ - --hash=sha256:0dcd72d7e6d2657838819b078447adc13199e35d8dee960e7fbe6c0e5d383b6b +mypy-boto3-secretsmanager==1.34.17 \ + --hash=sha256:0dbd1cdbe7992324c3414cccf0256e3905827bbf1f6a8d58c255635f6a2b4bfb \ + --hash=sha256:a547932d99c3f711b27b9ea1c38fc063050910c0bf6c8eb346abd96ace61668e # via boto3-stubs mypy-boto3-signer==1.34.0 \ --hash=sha256:c11ed943ccd38ee54fc0ca90ed347ef770d695df49535eab96dd97fb3dbdc592 \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 23ea6ae8aa6..db779b6872c 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -38,27 +38,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.12 \ - --hash=sha256:67b763669f9eff10a55fe199875d6e66fda8051647af49f8b9b8fced674d75d7 \ - --hash=sha256:7d7eac86a2cbdfb8074927119da61884bfa29f3c504717d455371fc0a07c99d8 +boto3==1.34.17 \ + --hash=sha256:1efc02be786884034d503d59c018cf7650d0cff9fcb37cd2eb49b802a6fe6111 \ + --hash=sha256:8ca248cc84e7e859e4e276eb9c4309fa01a3e58473bf48d6c33448be870c2bb8 # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.12 \ - --hash=sha256:f0ed25e31eab1ee9b0e8e8e1226160243b15be5b65129f0947cbe10915971a8a \ - --hash=sha256:f0f9ea058624e22359f4060a5aece334eaabb4173581b7b1e2fc41056d44f938 +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.17 \ + --hash=sha256:33d0ad07aa7e3aefd4213c51fb6272f086ad4b94a66e6d131dd3ebd006fcb74c \ + --hash=sha256:4b3af2263a5503920760223c5db16e475a02fc6fcbe951f4a45e7c64cb065034 # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.12 \ - --hash=sha256:346b0788f3bf4c68928db909170e4c7300119a22f9a2176bf5f764d3542997e8 \ - --hash=sha256:53dfc19d63f2b70821e9804b7ecfc5e50fc84d9bd6818359b27db629ef43ec59 +botocore==1.34.17 \ + --hash=sha256:7272c39032c6f1d62781e4c8445d9a1d9140c2bf52ba7ee66bf6db559c4b2427 \ + --hash=sha256:e48a662f3a6919219276b55085e8f73c3347966675f55e9d448be30cf79678ee # via # boto3 # s3transfer -botocore-stubs==1.34.12 \ - --hash=sha256:6f2414ea5c2aba7d67c8a6ab8d8090eb3cdaa58eec23c4c4949c512d01b7907a \ - --hash=sha256:bc0caf41c0e05464ea74a8c502d8e5e16761a2f9975ff598483b87c4c1d7f253 +botocore-stubs==1.34.17 \ + --hash=sha256:cac1cbbd0d5dcc427a5f91be09be9a0a18d1a87c29e779ae717b424bd7436eb1 \ + --hash=sha256:f49b143427d15e9bda51f3c99de7dd7ccf58519a3f33e10b9d41053c41567a43 # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ @@ -416,17 +416,17 @@ mypy-boto3-lambda==1.34.0 \ --hash=sha256:109a7e126e84d6da6cacf8ab5c7c6f2be022417fe7bfb7f9b019767d7034f73b \ --hash=sha256:e74c0ce548da747a8c6e643c39dad8aa54d67e057f57740ec780a7e565590627 # via boto3-stubs -mypy-boto3-s3==1.34.0 \ - --hash=sha256:633876d2a96dbb924f9667084316c1759bff40c19a9a38313d5a4e825c5fc641 \ - --hash=sha256:7644a00e096ebb1c3292551059f64ff8329625dacd40827ced9481b14d64c733 +mypy-boto3-s3==1.34.14 \ + --hash=sha256:71c39ab0623cdb442d225b71c1783f6a513cff4c4a13505a2efbb2e3aff2e965 \ + --hash=sha256:f9669ecd182d5bf3532f5f2dcc5e5237776afe157ad5a0b37b26d6bec5fcc432 # via boto3-stubs mypy-boto3-schemas==1.34.0 \ --hash=sha256:28c016609dcffc606bd8425ee92894c46e943ab77033e1ae46481f00c39b7f75 \ --hash=sha256:3b25a71944192b0980c3bb5132deb7c06ee9b88580ed63f257fad97cf3bf2927 # via boto3-stubs -mypy-boto3-secretsmanager==1.34.7 \ - --hash=sha256:06a3e34d1d3aea4944688bdf677dfe928c9831165989c192b8d9498d9ceb8781 \ - --hash=sha256:0dcd72d7e6d2657838819b078447adc13199e35d8dee960e7fbe6c0e5d383b6b +mypy-boto3-secretsmanager==1.34.17 \ + --hash=sha256:0dbd1cdbe7992324c3414cccf0256e3905827bbf1f6a8d58c255635f6a2b4bfb \ + --hash=sha256:a547932d99c3f711b27b9ea1c38fc063050910c0bf6c8eb346abd96ace61668e # via boto3-stubs mypy-boto3-signer==1.34.0 \ --hash=sha256:c11ed943ccd38ee54fc0ca90ed347ef770d695df49535eab96dd97fb3dbdc592 \ From 8cb45e36a2580a1c9530cf3836fac367595be7b5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Jan 2024 22:25:29 +0000 Subject: [PATCH 054/100] chore(deps): bump the types group in /requirements with 11 updates (#6534) Bumps the types group in /requirements with 11 updates: | Package | From | To | | --- | --- | --- | | [types-python-dateutil](https://github.com/python/typeshed) | `2.8.19.14` | `2.8.19.20240106` | | [types-pywin32](https://github.com/python/typeshed) | `306.0.0.8` | `306.0.0.20240106` | | [types-chevron](https://github.com/python/typeshed) | `0.14.2.5` | `0.14.2.20240106` | | [types-psutil](https://github.com/python/typeshed) | `5.9.5.17` | `5.9.5.20240106` | | [types-setuptools](https://github.com/python/typeshed) | `69.0.0.0` | `69.0.0.20240106` | | [types-pygments](https://github.com/python/typeshed) | `2.17.0.0` | `2.17.0.20240106` | | [types-colorama](https://github.com/python/typeshed) | `0.4.15.12` | `0.4.15.20240106` | | [types-dateparser](https://github.com/python/typeshed) | `1.1.4.10` | `1.1.4.20240106` | | [types-docutils](https://github.com/python/typeshed) | `0.20.0.3` | `0.20.0.20240106` | | [types-jsonschema](https://github.com/python/typeshed) | `4.20.0.0` | `4.20.0.20240105` | | [types-pyopenssl](https://github.com/python/typeshed) | `23.3.0.0` | `23.3.0.20240106` | Updates `types-python-dateutil` from 2.8.19.14 to 2.8.19.20240106 - [Commits](https://github.com/python/typeshed/commits) Updates `types-pywin32` from 306.0.0.8 to 306.0.0.20240106 - [Commits](https://github.com/python/typeshed/commits) Updates `types-chevron` from 0.14.2.5 to 0.14.2.20240106 - [Commits](https://github.com/python/typeshed/commits) Updates `types-psutil` from 5.9.5.17 to 5.9.5.20240106 - [Commits](https://github.com/python/typeshed/commits) Updates `types-setuptools` from 69.0.0.0 to 69.0.0.20240106 - [Commits](https://github.com/python/typeshed/commits) Updates `types-pygments` from 2.17.0.0 to 2.17.0.20240106 - [Commits](https://github.com/python/typeshed/commits) Updates `types-colorama` from 0.4.15.12 to 0.4.15.20240106 - [Commits](https://github.com/python/typeshed/commits) Updates `types-dateparser` from 1.1.4.10 to 1.1.4.20240106 - [Commits](https://github.com/python/typeshed/commits) Updates `types-docutils` from 0.20.0.3 to 0.20.0.20240106 - [Commits](https://github.com/python/typeshed/commits) Updates `types-jsonschema` from 4.20.0.0 to 4.20.0.20240105 - [Commits](https://github.com/python/typeshed/commits) Updates `types-pyopenssl` from 23.3.0.0 to 23.3.0.20240106 - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-python-dateutil dependency-type: direct:production update-type: version-update:semver-patch dependency-group: types - dependency-name: types-pywin32 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: types - dependency-name: types-chevron dependency-type: direct:development update-type: version-update:semver-patch dependency-group: types - dependency-name: types-psutil dependency-type: direct:development update-type: version-update:semver-patch dependency-group: types - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-patch dependency-group: types - dependency-name: types-pygments dependency-type: direct:development update-type: version-update:semver-patch dependency-group: types - dependency-name: types-colorama dependency-type: direct:development update-type: version-update:semver-patch dependency-group: types - dependency-name: types-dateparser dependency-type: direct:development update-type: version-update:semver-patch dependency-group: types - dependency-name: types-docutils dependency-type: direct:development update-type: version-update:semver-patch dependency-group: types - dependency-name: types-jsonschema dependency-type: direct:development update-type: version-update:semver-patch dependency-group: types - dependency-name: types-pyopenssl dependency-type: direct:development update-type: version-update:semver-patch dependency-group: types ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Lucas <12496191+lucashuy@users.noreply.github.com> --- requirements/dev.txt | 20 ++++++++++---------- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index d37ee0d2608..9a9cbadb884 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -8,17 +8,17 @@ pytest-cov==4.1.0 # mypy adds new rules in new minor versions, which could cause our PR check to fail # here we fix its version and upgrade it manually in the future mypy==1.8.0 -types-pywin32==306.0.0.8 +types-pywin32==306.0.0.20240106 types-PyYAML==6.0.12.12 -types-chevron==0.14.2.5 -types-psutil==5.9.5.17 -types-setuptools==69.0.0.0 -types-Pygments==2.17.0.0 -types-colorama==0.4.15.12 -types-dateparser==1.1.4.10 -types-docutils==0.20.0.3 -types-jsonschema==4.20.0.0 -types-pyOpenSSL==23.3.0.0 +types-chevron==0.14.2.20240106 +types-psutil==5.9.5.20240106 +types-setuptools==69.0.0.20240106 +types-Pygments==2.17.0.20240106 +types-colorama==0.4.15.20240106 +types-dateparser==1.1.4.20240106 +types-docutils==0.20.0.20240106 +types-jsonschema==4.20.0.20240105 +types-pyOpenSSL==23.3.0.20240106 # as of types-requests>=2.31.0.7, this now requires `urllib3>2`, pin we are able to upgrade types-requests==2.31.0.6 types-urllib3==1.26.25.14 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index f59433fa8a4..1f8064456b2 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -947,9 +947,9 @@ types-awscrt==0.20.0 \ --hash=sha256:99778c952e1eae10cc7a53468413001177026c9434345bf00120bb2ea5b79109 \ --hash=sha256:e872b65d041687ec7fb49fb4dcb871ff10ade5efeca02722e037a03bff81db7e # via botocore-stubs -types-python-dateutil==2.8.19.14 \ - --hash=sha256:1f4f10ac98bb8b16ade9dbee3518d9ace017821d94b057a425b069f834737f4b \ - --hash=sha256:f977b8de27787639986b4e28963263fd0e5158942b3ecef91b9335c130cb1ce9 +types-python-dateutil==2.8.19.20240106 \ + --hash=sha256:1f8db221c3b98e6ca02ea83a58371b22c374f42ae5bbdf186db9c9a76581459f \ + --hash=sha256:efbbdc54590d0f16152fa103c9879c7d4a00e82078f6e2cf01769042165acaa2 # via arrow types-s3transfer==0.10.0 \ --hash=sha256:35e4998c25df7f8985ad69dedc8e4860e8af3b43b7615e940d53c00d413bdc69 \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index cb5230681ad..d3bef98f631 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -979,9 +979,9 @@ types-awscrt==0.20.0 \ --hash=sha256:99778c952e1eae10cc7a53468413001177026c9434345bf00120bb2ea5b79109 \ --hash=sha256:e872b65d041687ec7fb49fb4dcb871ff10ade5efeca02722e037a03bff81db7e # via botocore-stubs -types-python-dateutil==2.8.19.14 \ - --hash=sha256:1f4f10ac98bb8b16ade9dbee3518d9ace017821d94b057a425b069f834737f4b \ - --hash=sha256:f977b8de27787639986b4e28963263fd0e5158942b3ecef91b9335c130cb1ce9 +types-python-dateutil==2.8.19.20240106 \ + --hash=sha256:1f8db221c3b98e6ca02ea83a58371b22c374f42ae5bbdf186db9c9a76581459f \ + --hash=sha256:efbbdc54590d0f16152fa103c9879c7d4a00e82078f6e2cf01769042165acaa2 # via arrow types-s3transfer==0.10.0 \ --hash=sha256:35e4998c25df7f8985ad69dedc8e4860e8af3b43b7615e940d53c00d413bdc69 \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index db779b6872c..1666867dcdf 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -967,9 +967,9 @@ types-awscrt==0.20.0 \ --hash=sha256:99778c952e1eae10cc7a53468413001177026c9434345bf00120bb2ea5b79109 \ --hash=sha256:e872b65d041687ec7fb49fb4dcb871ff10ade5efeca02722e037a03bff81db7e # via botocore-stubs -types-python-dateutil==2.8.19.14 \ - --hash=sha256:1f4f10ac98bb8b16ade9dbee3518d9ace017821d94b057a425b069f834737f4b \ - --hash=sha256:f977b8de27787639986b4e28963263fd0e5158942b3ecef91b9335c130cb1ce9 +types-python-dateutil==2.8.19.20240106 \ + --hash=sha256:1f8db221c3b98e6ca02ea83a58371b22c374f42ae5bbdf186db9c9a76581459f \ + --hash=sha256:efbbdc54590d0f16152fa103c9879c7d4a00e82078f6e2cf01769042165acaa2 # via arrow types-s3transfer==0.10.0 \ --hash=sha256:35e4998c25df7f8985ad69dedc8e4860e8af3b43b7615e940d53c00d413bdc69 \ From 8dfccdc4d4ff4a81923c9bc9027ba0a1cc1ca418 Mon Sep 17 00:00:00 2001 From: Lucas <12496191+lucashuy@users.noreply.github.com> Date: Mon, 15 Jan 2024 12:36:49 -0800 Subject: [PATCH 055/100] fix: Added missing add_host parameter to start-api entry methods (#6551) * Fixed merge issue where --add-host was not merged correctly * Add host to test class base --- samcli/commands/local/start_api/cli.py | 2 ++ tests/unit/commands/local/start_api/test_cli.py | 3 +++ 2 files changed, 5 insertions(+) diff --git a/samcli/commands/local/start_api/cli.py b/samcli/commands/local/start_api/cli.py index 0ef1ef5c52b..cba1ebe7eaa 100644 --- a/samcli/commands/local/start_api/cli.py +++ b/samcli/commands/local/start_api/cli.py @@ -203,6 +203,7 @@ def do_cli( # pylint: disable=R0914 debug_function, container_host, container_host_interface, + add_host, invoke_image, hook_name, ssl_cert_file, @@ -251,6 +252,7 @@ def do_cli( # pylint: disable=R0914 container_host=container_host, container_host_interface=container_host_interface, invoke_images=processed_invoke_images, + add_host=add_host, ) as invoke_context: ssl_context = (ssl_cert_file, ssl_key_file) if ssl_cert_file else None service = LocalApiService( diff --git a/tests/unit/commands/local/start_api/test_cli.py b/tests/unit/commands/local/start_api/test_cli.py index f19dbeff767..1860dd66c09 100644 --- a/tests/unit/commands/local/start_api/test_cli.py +++ b/tests/unit/commands/local/start_api/test_cli.py @@ -51,6 +51,7 @@ def setUp(self): self.ssl_cert_file = None self.ssl_key_file = None self.static_dir = "staticdir" + self.add_host = [] self.container_host = "localhost" self.container_host_interface = "127.0.0.1" @@ -94,6 +95,7 @@ def test_cli_must_setup_context_and_start_service(self, local_api_service_mock, shutdown=self.shutdown, container_host=self.container_host, container_host_interface=self.container_host_interface, + add_host=self.add_host, invoke_images={}, ) @@ -225,4 +227,5 @@ def call_cli(self): ssl_cert_file=self.ssl_cert_file, ssl_key_file=self.ssl_key_file, disable_authorizer=self.disable_authorizer, + add_host=self.add_host, ) From f67a8f4ee00a9103c934fb82ab0bb34c06994760 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jan 2024 14:36:50 -0800 Subject: [PATCH 056/100] chore(deps): bump the boto group in /requirements with 4 updates (#6554) Bumps the boto group in /requirements with 4 updates: [boto3](https://github.com/boto/boto3), [boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]](https://github.com/youtype/mypy_boto3_builder), [botocore](https://github.com/boto/botocore) and [botocore-stubs](https://github.com/youtype/botocore-stubs). Updates `boto3` from 1.34.17 to 1.34.19 - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.34.17...1.34.19) Updates `boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]` from 1.34.17 to 1.34.19 - [Release notes](https://github.com/youtype/mypy_boto3_builder/releases) - [Commits](https://github.com/youtype/mypy_boto3_builder/commits) Updates `botocore` from 1.34.17 to 1.34.19 - [Changelog](https://github.com/boto/botocore/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/botocore/compare/1.34.17...1.34.19) Updates `botocore-stubs` from 1.34.17 to 1.34.19 - [Release notes](https://github.com/youtype/botocore-stubs/releases) - [Commits](https://github.com/youtype/botocore-stubs/commits) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray] dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: botocore dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: botocore-stubs dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/base.txt | 2 +- requirements/reproducible-linux.txt | 24 ++++++++++++------------ requirements/reproducible-mac.txt | 24 ++++++++++++------------ requirements/reproducible-win.txt | 24 ++++++++++++------------ 4 files changed, 37 insertions(+), 37 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index ac916995c81..9252bf374e3 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -31,4 +31,4 @@ tzlocal==5.2 cfn-lint~=0.83.8 # Type checking boto3 objects -boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.17 +boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.19 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 1f8064456b2..96e4906c0da 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -38,27 +38,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.17 \ - --hash=sha256:1efc02be786884034d503d59c018cf7650d0cff9fcb37cd2eb49b802a6fe6111 \ - --hash=sha256:8ca248cc84e7e859e4e276eb9c4309fa01a3e58473bf48d6c33448be870c2bb8 +boto3==1.34.19 \ + --hash=sha256:4c76ef92af7dbdcea21b196a2699671e82e8814d4cfe570c48eda477dd1aeb19 \ + --hash=sha256:95d2c2bde86a0934d4c461020c50fc1344b444f167654e215f1de549bc77fc0f # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.17 \ - --hash=sha256:33d0ad07aa7e3aefd4213c51fb6272f086ad4b94a66e6d131dd3ebd006fcb74c \ - --hash=sha256:4b3af2263a5503920760223c5db16e475a02fc6fcbe951f4a45e7c64cb065034 +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.19 \ + --hash=sha256:6651e6ddd0c5cdd77393432e517301096b646aeeea3ade5c305960817dc46aa1 \ + --hash=sha256:67fe5a2fb1d1b2c534fa31c543b773edbc01ce9528010d9cc0ef9c5044aa218a # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.17 \ - --hash=sha256:7272c39032c6f1d62781e4c8445d9a1d9140c2bf52ba7ee66bf6db559c4b2427 \ - --hash=sha256:e48a662f3a6919219276b55085e8f73c3347966675f55e9d448be30cf79678ee +botocore==1.34.19 \ + --hash=sha256:64352b2f05de5c6ab025c1d5232880c22775356dcc5a53d798a6f65db847e826 \ + --hash=sha256:a4a39c7092960f5da2439efc5f6220730dab634aaff4c1444bbd1dfa43bc28cc # via # boto3 # s3transfer -botocore-stubs==1.34.17 \ - --hash=sha256:cac1cbbd0d5dcc427a5f91be09be9a0a18d1a87c29e779ae717b424bd7436eb1 \ - --hash=sha256:f49b143427d15e9bda51f3c99de7dd7ccf58519a3f33e10b9d41053c41567a43 +botocore-stubs==1.34.19 \ + --hash=sha256:141b6727a7258fc16826f21c7369ca7d38a83848a03ae13fe50c4d1e677a7545 \ + --hash=sha256:dd1bff75bfe0a64e6704a8d74e80f94a1978d58cb2810f7549fa1c83ac8e458c # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index d3bef98f631..968e83c2b8b 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -56,27 +56,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.17 \ - --hash=sha256:1efc02be786884034d503d59c018cf7650d0cff9fcb37cd2eb49b802a6fe6111 \ - --hash=sha256:8ca248cc84e7e859e4e276eb9c4309fa01a3e58473bf48d6c33448be870c2bb8 +boto3==1.34.19 \ + --hash=sha256:4c76ef92af7dbdcea21b196a2699671e82e8814d4cfe570c48eda477dd1aeb19 \ + --hash=sha256:95d2c2bde86a0934d4c461020c50fc1344b444f167654e215f1de549bc77fc0f # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.17 \ - --hash=sha256:33d0ad07aa7e3aefd4213c51fb6272f086ad4b94a66e6d131dd3ebd006fcb74c \ - --hash=sha256:4b3af2263a5503920760223c5db16e475a02fc6fcbe951f4a45e7c64cb065034 +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.19 \ + --hash=sha256:6651e6ddd0c5cdd77393432e517301096b646aeeea3ade5c305960817dc46aa1 \ + --hash=sha256:67fe5a2fb1d1b2c534fa31c543b773edbc01ce9528010d9cc0ef9c5044aa218a # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.17 \ - --hash=sha256:7272c39032c6f1d62781e4c8445d9a1d9140c2bf52ba7ee66bf6db559c4b2427 \ - --hash=sha256:e48a662f3a6919219276b55085e8f73c3347966675f55e9d448be30cf79678ee +botocore==1.34.19 \ + --hash=sha256:64352b2f05de5c6ab025c1d5232880c22775356dcc5a53d798a6f65db847e826 \ + --hash=sha256:a4a39c7092960f5da2439efc5f6220730dab634aaff4c1444bbd1dfa43bc28cc # via # boto3 # s3transfer -botocore-stubs==1.34.17 \ - --hash=sha256:cac1cbbd0d5dcc427a5f91be09be9a0a18d1a87c29e779ae717b424bd7436eb1 \ - --hash=sha256:f49b143427d15e9bda51f3c99de7dd7ccf58519a3f33e10b9d41053c41567a43 +botocore-stubs==1.34.19 \ + --hash=sha256:141b6727a7258fc16826f21c7369ca7d38a83848a03ae13fe50c4d1e677a7545 \ + --hash=sha256:dd1bff75bfe0a64e6704a8d74e80f94a1978d58cb2810f7549fa1c83ac8e458c # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 1666867dcdf..e2175d4e535 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -38,27 +38,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.17 \ - --hash=sha256:1efc02be786884034d503d59c018cf7650d0cff9fcb37cd2eb49b802a6fe6111 \ - --hash=sha256:8ca248cc84e7e859e4e276eb9c4309fa01a3e58473bf48d6c33448be870c2bb8 +boto3==1.34.19 \ + --hash=sha256:4c76ef92af7dbdcea21b196a2699671e82e8814d4cfe570c48eda477dd1aeb19 \ + --hash=sha256:95d2c2bde86a0934d4c461020c50fc1344b444f167654e215f1de549bc77fc0f # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.17 \ - --hash=sha256:33d0ad07aa7e3aefd4213c51fb6272f086ad4b94a66e6d131dd3ebd006fcb74c \ - --hash=sha256:4b3af2263a5503920760223c5db16e475a02fc6fcbe951f4a45e7c64cb065034 +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.19 \ + --hash=sha256:6651e6ddd0c5cdd77393432e517301096b646aeeea3ade5c305960817dc46aa1 \ + --hash=sha256:67fe5a2fb1d1b2c534fa31c543b773edbc01ce9528010d9cc0ef9c5044aa218a # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.17 \ - --hash=sha256:7272c39032c6f1d62781e4c8445d9a1d9140c2bf52ba7ee66bf6db559c4b2427 \ - --hash=sha256:e48a662f3a6919219276b55085e8f73c3347966675f55e9d448be30cf79678ee +botocore==1.34.19 \ + --hash=sha256:64352b2f05de5c6ab025c1d5232880c22775356dcc5a53d798a6f65db847e826 \ + --hash=sha256:a4a39c7092960f5da2439efc5f6220730dab634aaff4c1444bbd1dfa43bc28cc # via # boto3 # s3transfer -botocore-stubs==1.34.17 \ - --hash=sha256:cac1cbbd0d5dcc427a5f91be09be9a0a18d1a87c29e779ae717b424bd7436eb1 \ - --hash=sha256:f49b143427d15e9bda51f3c99de7dd7ccf58519a3f33e10b9d41053c41567a43 +botocore-stubs==1.34.19 \ + --hash=sha256:141b6727a7258fc16826f21c7369ca7d38a83848a03ae13fe50c4d1e677a7545 \ + --hash=sha256:dd1bff75bfe0a64e6704a8d74e80f94a1978d58cb2810f7549fa1c83ac8e458c # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ From e8f0d71e2304bdb20c79ee90ee1a9a03fbba2091 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jan 2024 23:50:21 +0000 Subject: [PATCH 057/100] chore(deps-dev): bump the types group in /requirements with 1 update (#6555) Bumps the types group in /requirements with 1 update: [types-setuptools](https://github.com/python/typeshed). Updates `types-setuptools` from 69.0.0.20240106 to 69.0.0.20240115 - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-patch dependency-group: types ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index 9a9cbadb884..bce71c7e073 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -12,7 +12,7 @@ types-pywin32==306.0.0.20240106 types-PyYAML==6.0.12.12 types-chevron==0.14.2.20240106 types-psutil==5.9.5.20240106 -types-setuptools==69.0.0.20240106 +types-setuptools==69.0.0.20240115 types-Pygments==2.17.0.20240106 types-colorama==0.4.15.20240106 types-dateparser==1.1.4.20240106 From e782745e2cbc13b4562ad5430ce75ec0cc8e5221 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Jan 2024 10:20:32 -0800 Subject: [PATCH 058/100] chore(deps-dev): bump ruff from 0.1.11 to 0.1.13 in /requirements (#6557) Bumps [ruff](https://github.com/astral-sh/ruff) from 0.1.11 to 0.1.13. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/v0.1.11...v0.1.13) --- updated-dependencies: - dependency-name: ruff dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Lucas <12496191+lucashuy@users.noreply.github.com> Co-authored-by: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> --- requirements/pre-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/pre-dev.txt b/requirements/pre-dev.txt index 2f569f7fcc1..9918295202f 100644 --- a/requirements/pre-dev.txt +++ b/requirements/pre-dev.txt @@ -1 +1 @@ -ruff==0.1.11 +ruff==0.1.13 From 7a6698f6defb065616742f7e069391f27a877369 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Jan 2024 18:54:54 +0000 Subject: [PATCH 059/100] chore(deps): bump rpds-py from 0.16.2 to 0.17.1 in /requirements (#6556) Bumps [rpds-py](https://github.com/crate-py/rpds) from 0.16.2 to 0.17.1. - [Release notes](https://github.com/crate-py/rpds/releases) - [Commits](https://github.com/crate-py/rpds/compare/v0.16.2...v0.17.1) --- updated-dependencies: - dependency-name: rpds-py dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> --- requirements/reproducible-linux.txt | 200 ++++++++++++++-------------- requirements/reproducible-mac.txt | 200 ++++++++++++++-------------- requirements/reproducible-win.txt | 200 ++++++++++++++-------------- 3 files changed, 300 insertions(+), 300 deletions(-) diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 96e4906c0da..91ff374bd1c 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -758,106 +758,106 @@ rich==13.7.0 \ # via # aws-sam-cli (setup.py) # cookiecutter -rpds-py==0.16.2 \ - --hash=sha256:0474df4ade9a3b4af96c3d36eb81856cb9462e4c6657d4caecfd840d2a13f3c9 \ - --hash=sha256:071980663c273bf3d388fe5c794c547e6f35ba3335477072c713a3176bf14a60 \ - --hash=sha256:07aab64e2808c3ebac2a44f67e9dc0543812b715126dfd6fe4264df527556cb6 \ - --hash=sha256:088396c7c70e59872f67462fcac3ecbded5233385797021976a09ebd55961dfe \ - --hash=sha256:162d7cd9cd311c1b0ff1c55a024b8f38bd8aad1876b648821da08adc40e95734 \ - --hash=sha256:19f00f57fdd38db4bb5ad09f9ead1b535332dbf624200e9029a45f1f35527ebb \ - --hash=sha256:1bdbc5fcb04a7309074de6b67fa9bc4b418ab3fc435fec1f2779a0eced688d04 \ - --hash=sha256:1be2f033df1b8be8c3167ba3c29d5dca425592ee31e35eac52050623afba5772 \ - --hash=sha256:24f7a2eb3866a9e91f4599851e0c8d39878a470044875c49bd528d2b9b88361c \ - --hash=sha256:290a81cfbe4673285cdf140ec5cd1658ffbf63ab359f2b352ebe172e7cfa5bf0 \ - --hash=sha256:2946b120718eba9af2b4dd103affc1164a87b9e9ebff8c3e4c05d7b7a7e274e2 \ - --hash=sha256:2bd82db36cd70b3628c0c57d81d2438e8dd4b7b32a6a9f25f24ab0e657cb6c4e \ - --hash=sha256:2ddef620e70eaffebed5932ce754d539c0930f676aae6212f8e16cd9743dd365 \ - --hash=sha256:2e53b9b25cac9065328901713a7e9e3b12e4f57ef4280b370fbbf6fef2052eef \ - --hash=sha256:302bd4983bbd47063e452c38be66153760112f6d3635c7eeefc094299fa400a9 \ - --hash=sha256:349cb40897fd529ca15317c22c0eab67f5ac5178b5bd2c6adc86172045210acc \ - --hash=sha256:358dafc89ce3894c7f486c615ba914609f38277ef67f566abc4c854d23b997fa \ - --hash=sha256:35953f4f2b3216421af86fd236b7c0c65935936a94ea83ddbd4904ba60757773 \ - --hash=sha256:35ae5ece284cf36464eb160880018cf6088a9ac5ddc72292a6092b6ef3f4da53 \ - --hash=sha256:3b811d182ad17ea294f2ec63c0621e7be92a1141e1012383461872cead87468f \ - --hash=sha256:3da5a4c56953bdbf6d04447c3410309616c54433146ccdb4a277b9cb499bc10e \ - --hash=sha256:3dc6a7620ba7639a3db6213da61312cb4aa9ac0ca6e00dc1cbbdc21c2aa6eb57 \ - --hash=sha256:3f91df8e6dbb7360e176d1affd5fb0246d2b88d16aa5ebc7db94fd66b68b61da \ - --hash=sha256:4022b9dc620e14f30201a8a73898a873c8e910cb642bcd2f3411123bc527f6ac \ - --hash=sha256:413b9c17388bbd0d87a329d8e30c1a4c6e44e2bb25457f43725a8e6fe4161e9e \ - --hash=sha256:43d4dd5fb16eb3825742bad8339d454054261ab59fed2fbac84e1d84d5aae7ba \ - --hash=sha256:44627b6ca7308680a70766454db5249105fa6344853af6762eaad4158a2feebe \ - --hash=sha256:44a54e99a2b9693a37ebf245937fd6e9228b4cbd64b9cc961e1f3391ec6c7391 \ - --hash=sha256:47713dc4fce213f5c74ca8a1f6a59b622fc1b90868deb8e8e4d993e421b4b39d \ - --hash=sha256:495a14b72bbe217f2695dcd9b5ab14d4f8066a00f5d209ed94f0aca307f85f6e \ - --hash=sha256:4c46ad6356e1561f2a54f08367d1d2e70a0a1bb2db2282d2c1972c1d38eafc3b \ - --hash=sha256:4d6a9f052e72d493efd92a77f861e45bab2f6be63e37fa8ecf0c6fd1a58fedb0 \ - --hash=sha256:509b617ac787cd1149600e731db9274ebbef094503ca25158e6f23edaba1ca8f \ - --hash=sha256:5552f328eaef1a75ff129d4d0c437bf44e43f9436d3996e8eab623ea0f5fcf73 \ - --hash=sha256:5a80e2f83391ad0808b4646732af2a7b67550b98f0cae056cb3b40622a83dbb3 \ - --hash=sha256:5cf6af100ffb5c195beec11ffaa8cf8523057f123afa2944e6571d54da84cdc9 \ - --hash=sha256:5e6caa3809e50690bd92fa490f5c38caa86082c8c3315aa438bce43786d5e90d \ - --hash=sha256:5ef00873303d678aaf8b0627e111fd434925ca01c657dbb2641410f1cdaef261 \ - --hash=sha256:69ac7ea9897ec201ce68b48582f3eb34a3f9924488a5432a93f177bf76a82a7e \ - --hash=sha256:6a61226465bda9283686db8f17d02569a98e4b13c637be5a26d44aa1f1e361c2 \ - --hash=sha256:6d904c5693e08bad240f16d79305edba78276be87061c872a4a15e2c301fa2c0 \ - --hash=sha256:6dace7b26a13353e24613417ce2239491b40a6ad44e5776a18eaff7733488b44 \ - --hash=sha256:6df15846ee3fb2e6397fe25d7ca6624af9f89587f3f259d177b556fed6bebe2c \ - --hash=sha256:703d95c75a72e902544fda08e965885525e297578317989fd15a6ce58414b41d \ - --hash=sha256:726ac36e8a3bb8daef2fd482534cabc5e17334052447008405daca7ca04a3108 \ - --hash=sha256:781ef8bfc091b19960fc0142a23aedadafa826bc32b433fdfe6fd7f964d7ef44 \ - --hash=sha256:80443fe2f7b3ea3934c5d75fb0e04a5dbb4a8e943e5ff2de0dec059202b70a8b \ - --hash=sha256:83640a5d7cd3bff694747d50436b8b541b5b9b9782b0c8c1688931d6ee1a1f2d \ - --hash=sha256:84c5a4d1f9dd7e2d2c44097fb09fffe728629bad31eb56caf97719e55575aa82 \ - --hash=sha256:882ce6e25e585949c3d9f9abd29202367175e0aab3aba0c58c9abbb37d4982ff \ - --hash=sha256:888a97002e986eca10d8546e3c8b97da1d47ad8b69726dcfeb3e56348ebb28a3 \ - --hash=sha256:8aad80645a011abae487d356e0ceb359f4938dfb6f7bcc410027ed7ae4f7bb8b \ - --hash=sha256:8cb6fe8ecdfffa0e711a75c931fb39f4ba382b4b3ccedeca43f18693864fe850 \ - --hash=sha256:8d6b6937ae9eac6d6c0ca3c42774d89fa311f55adff3970fb364b34abde6ed3d \ - --hash=sha256:90123853fc8b1747f80b0d354be3d122b4365a93e50fc3aacc9fb4c2488845d6 \ - --hash=sha256:96f957d6ab25a78b9e7fc9749d754b98eac825a112b4e666525ce89afcbd9ed5 \ - --hash=sha256:981d135c7cdaf6cd8eadae1c950de43b976de8f09d8e800feed307140d3d6d00 \ - --hash=sha256:9b32f742ce5b57201305f19c2ef7a184b52f6f9ba6871cc042c2a61f0d6b49b8 \ - --hash=sha256:9f0350ef2fba5f34eb0c9000ea328e51b9572b403d2f7f3b19f24085f6f598e8 \ - --hash=sha256:a297a4d08cc67c7466c873c78039d87840fb50d05473db0ec1b7b03d179bf322 \ - --hash=sha256:a3d7e2ea25d3517c6d7e5a1cc3702cffa6bd18d9ef8d08d9af6717fc1c700eed \ - --hash=sha256:a4b682c5775d6a3d21e314c10124599976809455ee67020e8e72df1769b87bc3 \ - --hash=sha256:a4ebb8b20bd09c5ce7884c8f0388801100f5e75e7f733b1b6613c713371feefc \ - --hash=sha256:a61f659665a39a4d17d699ab3593d7116d66e1e2e3f03ef3fb8f484e91908808 \ - --hash=sha256:a9880b4656efe36ccad41edc66789e191e5ee19a1ea8811e0aed6f69851a82f4 \ - --hash=sha256:ac08472f41ea77cd6a5dae36ae7d4ed3951d6602833af87532b556c1b4601d63 \ - --hash=sha256:adc0c3d6fc6ae35fee3e4917628983f6ce630d513cbaad575b4517d47e81b4bb \ - --hash=sha256:af27423662f32d7501a00c5e7342f7dbd1e4a718aea7a239781357d15d437133 \ - --hash=sha256:b2e75e17bd0bb66ee34a707da677e47c14ee51ccef78ed6a263a4cc965a072a1 \ - --hash=sha256:b634c5ec0103c5cbebc24ebac4872b045cccb9456fc59efdcf6fe39775365bd2 \ - --hash=sha256:b6f5549d6ed1da9bfe3631ca9483ae906f21410be2445b73443fa9f017601c6f \ - --hash=sha256:bd4b677d929cf1f6bac07ad76e0f2d5de367e6373351c01a9c0a39f6b21b4a8b \ - --hash=sha256:bf721ede3eb7b829e4a9b8142bd55db0bdc82902720548a703f7e601ee13bdc3 \ - --hash=sha256:c647ca87fc0ebe808a41de912e9a1bfef9acb85257e5d63691364ac16b81c1f0 \ - --hash=sha256:ca57468da2d9a660bcf8961637c85f2fbb2aa64d9bc3f9484e30c3f9f67b1dd7 \ - --hash=sha256:cad0f59ee3dc35526039f4bc23642d52d5f6616b5f687d846bfc6d0d6d486db0 \ - --hash=sha256:cc97f0640e91d7776530f06e6836c546c1c752a52de158720c4224c9e8053cad \ - --hash=sha256:ccd4e400309e1f34a5095bf9249d371f0fd60f8a3a5c4a791cad7b99ce1fd38d \ - --hash=sha256:cffa76b385dfe1e38527662a302b19ffb0e7f5cf7dd5e89186d2c94a22dd9d0c \ - --hash=sha256:d0dd7ed2f16df2e129496e7fbe59a34bc2d7fc8db443a606644d069eb69cbd45 \ - --hash=sha256:d452817e0d9c749c431a1121d56a777bd7099b720b3d1c820f1725cb40928f58 \ - --hash=sha256:d8dda2a806dfa4a9b795950c4f5cc56d6d6159f7d68080aedaff3bdc9b5032f5 \ - --hash=sha256:dcbe1f8dd179e4d69b70b1f1d9bb6fd1e7e1bdc9c9aad345cdeb332e29d40748 \ - --hash=sha256:e0441fb4fdd39a230477b2ca9be90868af64425bfe7b122b57e61e45737a653b \ - --hash=sha256:e04e56b4ca7a770593633556e8e9e46579d66ec2ada846b401252a2bdcf70a6d \ - --hash=sha256:e061de3b745fe611e23cd7318aec2c8b0e4153939c25c9202a5811ca911fd733 \ - --hash=sha256:e93ec1b300acf89730cf27975ef574396bc04edecc358e9bd116fb387a123239 \ - --hash=sha256:e9e557db6a177470316c82f023e5d571811c9a4422b5ea084c85da9aa3c035fc \ - --hash=sha256:eab36eae3f3e8e24b05748ec9acc66286662f5d25c52ad70cadab544e034536b \ - --hash=sha256:ec23fcad480e77ede06cf4127a25fc440f7489922e17fc058f426b5256ee0edb \ - --hash=sha256:ec2e1cf025b2c0f48ec17ff3e642661da7ee332d326f2e6619366ce8e221f018 \ - --hash=sha256:ed99b4f7179d2111702020fd7d156e88acd533f5a7d3971353e568b6051d5c97 \ - --hash=sha256:ee94cb58c0ba2c62ee108c2b7c9131b2c66a29e82746e8fa3aa1a1effbd3dcf1 \ - --hash=sha256:f19afcfc0dd0dca35694df441e9b0f95bc231b512f51bded3c3d8ca32153ec19 \ - --hash=sha256:f1b9d9260e06ea017feb7172976ab261e011c1dc2f8883c7c274f6b2aabfe01a \ - --hash=sha256:f28ac0e8e7242d140f99402a903a2c596ab71550272ae9247ad78f9a932b5698 \ - --hash=sha256:f42e25c016927e2a6b1ce748112c3ab134261fc2ddc867e92d02006103e1b1b7 \ - --hash=sha256:f4bd4578e44f26997e9e56c96dedc5f1af43cc9d16c4daa29c771a00b2a26851 \ - --hash=sha256:f811771019f063bbd0aa7bb72c8a934bc13ebacb4672d712fc1639cfd314cccc +rpds-py==0.17.1 \ + --hash=sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147 \ + --hash=sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7 \ + --hash=sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2 \ + --hash=sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68 \ + --hash=sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1 \ + --hash=sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382 \ + --hash=sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d \ + --hash=sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921 \ + --hash=sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38 \ + --hash=sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4 \ + --hash=sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a \ + --hash=sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d \ + --hash=sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518 \ + --hash=sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e \ + --hash=sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d \ + --hash=sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf \ + --hash=sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5 \ + --hash=sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba \ + --hash=sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6 \ + --hash=sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59 \ + --hash=sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253 \ + --hash=sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6 \ + --hash=sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f \ + --hash=sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3 \ + --hash=sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea \ + --hash=sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1 \ + --hash=sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76 \ + --hash=sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93 \ + --hash=sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad \ + --hash=sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad \ + --hash=sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc \ + --hash=sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049 \ + --hash=sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d \ + --hash=sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90 \ + --hash=sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d \ + --hash=sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd \ + --hash=sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25 \ + --hash=sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2 \ + --hash=sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f \ + --hash=sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6 \ + --hash=sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4 \ + --hash=sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c \ + --hash=sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8 \ + --hash=sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d \ + --hash=sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b \ + --hash=sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19 \ + --hash=sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453 \ + --hash=sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9 \ + --hash=sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde \ + --hash=sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296 \ + --hash=sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58 \ + --hash=sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec \ + --hash=sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99 \ + --hash=sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a \ + --hash=sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb \ + --hash=sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383 \ + --hash=sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d \ + --hash=sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896 \ + --hash=sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc \ + --hash=sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6 \ + --hash=sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b \ + --hash=sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7 \ + --hash=sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22 \ + --hash=sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf \ + --hash=sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394 \ + --hash=sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0 \ + --hash=sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57 \ + --hash=sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74 \ + --hash=sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83 \ + --hash=sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29 \ + --hash=sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9 \ + --hash=sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f \ + --hash=sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745 \ + --hash=sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb \ + --hash=sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811 \ + --hash=sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55 \ + --hash=sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342 \ + --hash=sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23 \ + --hash=sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82 \ + --hash=sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041 \ + --hash=sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb \ + --hash=sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066 \ + --hash=sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55 \ + --hash=sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6 \ + --hash=sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a \ + --hash=sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140 \ + --hash=sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b \ + --hash=sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9 \ + --hash=sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256 \ + --hash=sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c \ + --hash=sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772 \ + --hash=sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4 \ + --hash=sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae \ + --hash=sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920 \ + --hash=sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a \ + --hash=sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b \ + --hash=sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361 \ + --hash=sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8 \ + --hash=sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a # via # jsonschema # referencing diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 968e83c2b8b..065fffe0c54 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -790,106 +790,106 @@ rich==13.7.0 \ # via # aws-sam-cli (setup.py) # cookiecutter -rpds-py==0.16.2 \ - --hash=sha256:0474df4ade9a3b4af96c3d36eb81856cb9462e4c6657d4caecfd840d2a13f3c9 \ - --hash=sha256:071980663c273bf3d388fe5c794c547e6f35ba3335477072c713a3176bf14a60 \ - --hash=sha256:07aab64e2808c3ebac2a44f67e9dc0543812b715126dfd6fe4264df527556cb6 \ - --hash=sha256:088396c7c70e59872f67462fcac3ecbded5233385797021976a09ebd55961dfe \ - --hash=sha256:162d7cd9cd311c1b0ff1c55a024b8f38bd8aad1876b648821da08adc40e95734 \ - --hash=sha256:19f00f57fdd38db4bb5ad09f9ead1b535332dbf624200e9029a45f1f35527ebb \ - --hash=sha256:1bdbc5fcb04a7309074de6b67fa9bc4b418ab3fc435fec1f2779a0eced688d04 \ - --hash=sha256:1be2f033df1b8be8c3167ba3c29d5dca425592ee31e35eac52050623afba5772 \ - --hash=sha256:24f7a2eb3866a9e91f4599851e0c8d39878a470044875c49bd528d2b9b88361c \ - --hash=sha256:290a81cfbe4673285cdf140ec5cd1658ffbf63ab359f2b352ebe172e7cfa5bf0 \ - --hash=sha256:2946b120718eba9af2b4dd103affc1164a87b9e9ebff8c3e4c05d7b7a7e274e2 \ - --hash=sha256:2bd82db36cd70b3628c0c57d81d2438e8dd4b7b32a6a9f25f24ab0e657cb6c4e \ - --hash=sha256:2ddef620e70eaffebed5932ce754d539c0930f676aae6212f8e16cd9743dd365 \ - --hash=sha256:2e53b9b25cac9065328901713a7e9e3b12e4f57ef4280b370fbbf6fef2052eef \ - --hash=sha256:302bd4983bbd47063e452c38be66153760112f6d3635c7eeefc094299fa400a9 \ - --hash=sha256:349cb40897fd529ca15317c22c0eab67f5ac5178b5bd2c6adc86172045210acc \ - --hash=sha256:358dafc89ce3894c7f486c615ba914609f38277ef67f566abc4c854d23b997fa \ - --hash=sha256:35953f4f2b3216421af86fd236b7c0c65935936a94ea83ddbd4904ba60757773 \ - --hash=sha256:35ae5ece284cf36464eb160880018cf6088a9ac5ddc72292a6092b6ef3f4da53 \ - --hash=sha256:3b811d182ad17ea294f2ec63c0621e7be92a1141e1012383461872cead87468f \ - --hash=sha256:3da5a4c56953bdbf6d04447c3410309616c54433146ccdb4a277b9cb499bc10e \ - --hash=sha256:3dc6a7620ba7639a3db6213da61312cb4aa9ac0ca6e00dc1cbbdc21c2aa6eb57 \ - --hash=sha256:3f91df8e6dbb7360e176d1affd5fb0246d2b88d16aa5ebc7db94fd66b68b61da \ - --hash=sha256:4022b9dc620e14f30201a8a73898a873c8e910cb642bcd2f3411123bc527f6ac \ - --hash=sha256:413b9c17388bbd0d87a329d8e30c1a4c6e44e2bb25457f43725a8e6fe4161e9e \ - --hash=sha256:43d4dd5fb16eb3825742bad8339d454054261ab59fed2fbac84e1d84d5aae7ba \ - --hash=sha256:44627b6ca7308680a70766454db5249105fa6344853af6762eaad4158a2feebe \ - --hash=sha256:44a54e99a2b9693a37ebf245937fd6e9228b4cbd64b9cc961e1f3391ec6c7391 \ - --hash=sha256:47713dc4fce213f5c74ca8a1f6a59b622fc1b90868deb8e8e4d993e421b4b39d \ - --hash=sha256:495a14b72bbe217f2695dcd9b5ab14d4f8066a00f5d209ed94f0aca307f85f6e \ - --hash=sha256:4c46ad6356e1561f2a54f08367d1d2e70a0a1bb2db2282d2c1972c1d38eafc3b \ - --hash=sha256:4d6a9f052e72d493efd92a77f861e45bab2f6be63e37fa8ecf0c6fd1a58fedb0 \ - --hash=sha256:509b617ac787cd1149600e731db9274ebbef094503ca25158e6f23edaba1ca8f \ - --hash=sha256:5552f328eaef1a75ff129d4d0c437bf44e43f9436d3996e8eab623ea0f5fcf73 \ - --hash=sha256:5a80e2f83391ad0808b4646732af2a7b67550b98f0cae056cb3b40622a83dbb3 \ - --hash=sha256:5cf6af100ffb5c195beec11ffaa8cf8523057f123afa2944e6571d54da84cdc9 \ - --hash=sha256:5e6caa3809e50690bd92fa490f5c38caa86082c8c3315aa438bce43786d5e90d \ - --hash=sha256:5ef00873303d678aaf8b0627e111fd434925ca01c657dbb2641410f1cdaef261 \ - --hash=sha256:69ac7ea9897ec201ce68b48582f3eb34a3f9924488a5432a93f177bf76a82a7e \ - --hash=sha256:6a61226465bda9283686db8f17d02569a98e4b13c637be5a26d44aa1f1e361c2 \ - --hash=sha256:6d904c5693e08bad240f16d79305edba78276be87061c872a4a15e2c301fa2c0 \ - --hash=sha256:6dace7b26a13353e24613417ce2239491b40a6ad44e5776a18eaff7733488b44 \ - --hash=sha256:6df15846ee3fb2e6397fe25d7ca6624af9f89587f3f259d177b556fed6bebe2c \ - --hash=sha256:703d95c75a72e902544fda08e965885525e297578317989fd15a6ce58414b41d \ - --hash=sha256:726ac36e8a3bb8daef2fd482534cabc5e17334052447008405daca7ca04a3108 \ - --hash=sha256:781ef8bfc091b19960fc0142a23aedadafa826bc32b433fdfe6fd7f964d7ef44 \ - --hash=sha256:80443fe2f7b3ea3934c5d75fb0e04a5dbb4a8e943e5ff2de0dec059202b70a8b \ - --hash=sha256:83640a5d7cd3bff694747d50436b8b541b5b9b9782b0c8c1688931d6ee1a1f2d \ - --hash=sha256:84c5a4d1f9dd7e2d2c44097fb09fffe728629bad31eb56caf97719e55575aa82 \ - --hash=sha256:882ce6e25e585949c3d9f9abd29202367175e0aab3aba0c58c9abbb37d4982ff \ - --hash=sha256:888a97002e986eca10d8546e3c8b97da1d47ad8b69726dcfeb3e56348ebb28a3 \ - --hash=sha256:8aad80645a011abae487d356e0ceb359f4938dfb6f7bcc410027ed7ae4f7bb8b \ - --hash=sha256:8cb6fe8ecdfffa0e711a75c931fb39f4ba382b4b3ccedeca43f18693864fe850 \ - --hash=sha256:8d6b6937ae9eac6d6c0ca3c42774d89fa311f55adff3970fb364b34abde6ed3d \ - --hash=sha256:90123853fc8b1747f80b0d354be3d122b4365a93e50fc3aacc9fb4c2488845d6 \ - --hash=sha256:96f957d6ab25a78b9e7fc9749d754b98eac825a112b4e666525ce89afcbd9ed5 \ - --hash=sha256:981d135c7cdaf6cd8eadae1c950de43b976de8f09d8e800feed307140d3d6d00 \ - --hash=sha256:9b32f742ce5b57201305f19c2ef7a184b52f6f9ba6871cc042c2a61f0d6b49b8 \ - --hash=sha256:9f0350ef2fba5f34eb0c9000ea328e51b9572b403d2f7f3b19f24085f6f598e8 \ - --hash=sha256:a297a4d08cc67c7466c873c78039d87840fb50d05473db0ec1b7b03d179bf322 \ - --hash=sha256:a3d7e2ea25d3517c6d7e5a1cc3702cffa6bd18d9ef8d08d9af6717fc1c700eed \ - --hash=sha256:a4b682c5775d6a3d21e314c10124599976809455ee67020e8e72df1769b87bc3 \ - --hash=sha256:a4ebb8b20bd09c5ce7884c8f0388801100f5e75e7f733b1b6613c713371feefc \ - --hash=sha256:a61f659665a39a4d17d699ab3593d7116d66e1e2e3f03ef3fb8f484e91908808 \ - --hash=sha256:a9880b4656efe36ccad41edc66789e191e5ee19a1ea8811e0aed6f69851a82f4 \ - --hash=sha256:ac08472f41ea77cd6a5dae36ae7d4ed3951d6602833af87532b556c1b4601d63 \ - --hash=sha256:adc0c3d6fc6ae35fee3e4917628983f6ce630d513cbaad575b4517d47e81b4bb \ - --hash=sha256:af27423662f32d7501a00c5e7342f7dbd1e4a718aea7a239781357d15d437133 \ - --hash=sha256:b2e75e17bd0bb66ee34a707da677e47c14ee51ccef78ed6a263a4cc965a072a1 \ - --hash=sha256:b634c5ec0103c5cbebc24ebac4872b045cccb9456fc59efdcf6fe39775365bd2 \ - --hash=sha256:b6f5549d6ed1da9bfe3631ca9483ae906f21410be2445b73443fa9f017601c6f \ - --hash=sha256:bd4b677d929cf1f6bac07ad76e0f2d5de367e6373351c01a9c0a39f6b21b4a8b \ - --hash=sha256:bf721ede3eb7b829e4a9b8142bd55db0bdc82902720548a703f7e601ee13bdc3 \ - --hash=sha256:c647ca87fc0ebe808a41de912e9a1bfef9acb85257e5d63691364ac16b81c1f0 \ - --hash=sha256:ca57468da2d9a660bcf8961637c85f2fbb2aa64d9bc3f9484e30c3f9f67b1dd7 \ - --hash=sha256:cad0f59ee3dc35526039f4bc23642d52d5f6616b5f687d846bfc6d0d6d486db0 \ - --hash=sha256:cc97f0640e91d7776530f06e6836c546c1c752a52de158720c4224c9e8053cad \ - --hash=sha256:ccd4e400309e1f34a5095bf9249d371f0fd60f8a3a5c4a791cad7b99ce1fd38d \ - --hash=sha256:cffa76b385dfe1e38527662a302b19ffb0e7f5cf7dd5e89186d2c94a22dd9d0c \ - --hash=sha256:d0dd7ed2f16df2e129496e7fbe59a34bc2d7fc8db443a606644d069eb69cbd45 \ - --hash=sha256:d452817e0d9c749c431a1121d56a777bd7099b720b3d1c820f1725cb40928f58 \ - --hash=sha256:d8dda2a806dfa4a9b795950c4f5cc56d6d6159f7d68080aedaff3bdc9b5032f5 \ - --hash=sha256:dcbe1f8dd179e4d69b70b1f1d9bb6fd1e7e1bdc9c9aad345cdeb332e29d40748 \ - --hash=sha256:e0441fb4fdd39a230477b2ca9be90868af64425bfe7b122b57e61e45737a653b \ - --hash=sha256:e04e56b4ca7a770593633556e8e9e46579d66ec2ada846b401252a2bdcf70a6d \ - --hash=sha256:e061de3b745fe611e23cd7318aec2c8b0e4153939c25c9202a5811ca911fd733 \ - --hash=sha256:e93ec1b300acf89730cf27975ef574396bc04edecc358e9bd116fb387a123239 \ - --hash=sha256:e9e557db6a177470316c82f023e5d571811c9a4422b5ea084c85da9aa3c035fc \ - --hash=sha256:eab36eae3f3e8e24b05748ec9acc66286662f5d25c52ad70cadab544e034536b \ - --hash=sha256:ec23fcad480e77ede06cf4127a25fc440f7489922e17fc058f426b5256ee0edb \ - --hash=sha256:ec2e1cf025b2c0f48ec17ff3e642661da7ee332d326f2e6619366ce8e221f018 \ - --hash=sha256:ed99b4f7179d2111702020fd7d156e88acd533f5a7d3971353e568b6051d5c97 \ - --hash=sha256:ee94cb58c0ba2c62ee108c2b7c9131b2c66a29e82746e8fa3aa1a1effbd3dcf1 \ - --hash=sha256:f19afcfc0dd0dca35694df441e9b0f95bc231b512f51bded3c3d8ca32153ec19 \ - --hash=sha256:f1b9d9260e06ea017feb7172976ab261e011c1dc2f8883c7c274f6b2aabfe01a \ - --hash=sha256:f28ac0e8e7242d140f99402a903a2c596ab71550272ae9247ad78f9a932b5698 \ - --hash=sha256:f42e25c016927e2a6b1ce748112c3ab134261fc2ddc867e92d02006103e1b1b7 \ - --hash=sha256:f4bd4578e44f26997e9e56c96dedc5f1af43cc9d16c4daa29c771a00b2a26851 \ - --hash=sha256:f811771019f063bbd0aa7bb72c8a934bc13ebacb4672d712fc1639cfd314cccc +rpds-py==0.17.1 \ + --hash=sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147 \ + --hash=sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7 \ + --hash=sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2 \ + --hash=sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68 \ + --hash=sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1 \ + --hash=sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382 \ + --hash=sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d \ + --hash=sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921 \ + --hash=sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38 \ + --hash=sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4 \ + --hash=sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a \ + --hash=sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d \ + --hash=sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518 \ + --hash=sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e \ + --hash=sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d \ + --hash=sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf \ + --hash=sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5 \ + --hash=sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba \ + --hash=sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6 \ + --hash=sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59 \ + --hash=sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253 \ + --hash=sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6 \ + --hash=sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f \ + --hash=sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3 \ + --hash=sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea \ + --hash=sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1 \ + --hash=sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76 \ + --hash=sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93 \ + --hash=sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad \ + --hash=sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad \ + --hash=sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc \ + --hash=sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049 \ + --hash=sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d \ + --hash=sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90 \ + --hash=sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d \ + --hash=sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd \ + --hash=sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25 \ + --hash=sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2 \ + --hash=sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f \ + --hash=sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6 \ + --hash=sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4 \ + --hash=sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c \ + --hash=sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8 \ + --hash=sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d \ + --hash=sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b \ + --hash=sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19 \ + --hash=sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453 \ + --hash=sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9 \ + --hash=sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde \ + --hash=sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296 \ + --hash=sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58 \ + --hash=sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec \ + --hash=sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99 \ + --hash=sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a \ + --hash=sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb \ + --hash=sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383 \ + --hash=sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d \ + --hash=sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896 \ + --hash=sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc \ + --hash=sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6 \ + --hash=sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b \ + --hash=sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7 \ + --hash=sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22 \ + --hash=sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf \ + --hash=sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394 \ + --hash=sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0 \ + --hash=sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57 \ + --hash=sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74 \ + --hash=sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83 \ + --hash=sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29 \ + --hash=sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9 \ + --hash=sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f \ + --hash=sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745 \ + --hash=sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb \ + --hash=sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811 \ + --hash=sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55 \ + --hash=sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342 \ + --hash=sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23 \ + --hash=sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82 \ + --hash=sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041 \ + --hash=sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb \ + --hash=sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066 \ + --hash=sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55 \ + --hash=sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6 \ + --hash=sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a \ + --hash=sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140 \ + --hash=sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b \ + --hash=sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9 \ + --hash=sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256 \ + --hash=sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c \ + --hash=sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772 \ + --hash=sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4 \ + --hash=sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae \ + --hash=sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920 \ + --hash=sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a \ + --hash=sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b \ + --hash=sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361 \ + --hash=sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8 \ + --hash=sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a # via # jsonschema # referencing diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index e2175d4e535..5ec6a1e211f 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -778,106 +778,106 @@ rich==13.7.0 \ # via # aws-sam-cli (setup.py) # cookiecutter -rpds-py==0.16.2 \ - --hash=sha256:0474df4ade9a3b4af96c3d36eb81856cb9462e4c6657d4caecfd840d2a13f3c9 \ - --hash=sha256:071980663c273bf3d388fe5c794c547e6f35ba3335477072c713a3176bf14a60 \ - --hash=sha256:07aab64e2808c3ebac2a44f67e9dc0543812b715126dfd6fe4264df527556cb6 \ - --hash=sha256:088396c7c70e59872f67462fcac3ecbded5233385797021976a09ebd55961dfe \ - --hash=sha256:162d7cd9cd311c1b0ff1c55a024b8f38bd8aad1876b648821da08adc40e95734 \ - --hash=sha256:19f00f57fdd38db4bb5ad09f9ead1b535332dbf624200e9029a45f1f35527ebb \ - --hash=sha256:1bdbc5fcb04a7309074de6b67fa9bc4b418ab3fc435fec1f2779a0eced688d04 \ - --hash=sha256:1be2f033df1b8be8c3167ba3c29d5dca425592ee31e35eac52050623afba5772 \ - --hash=sha256:24f7a2eb3866a9e91f4599851e0c8d39878a470044875c49bd528d2b9b88361c \ - --hash=sha256:290a81cfbe4673285cdf140ec5cd1658ffbf63ab359f2b352ebe172e7cfa5bf0 \ - --hash=sha256:2946b120718eba9af2b4dd103affc1164a87b9e9ebff8c3e4c05d7b7a7e274e2 \ - --hash=sha256:2bd82db36cd70b3628c0c57d81d2438e8dd4b7b32a6a9f25f24ab0e657cb6c4e \ - --hash=sha256:2ddef620e70eaffebed5932ce754d539c0930f676aae6212f8e16cd9743dd365 \ - --hash=sha256:2e53b9b25cac9065328901713a7e9e3b12e4f57ef4280b370fbbf6fef2052eef \ - --hash=sha256:302bd4983bbd47063e452c38be66153760112f6d3635c7eeefc094299fa400a9 \ - --hash=sha256:349cb40897fd529ca15317c22c0eab67f5ac5178b5bd2c6adc86172045210acc \ - --hash=sha256:358dafc89ce3894c7f486c615ba914609f38277ef67f566abc4c854d23b997fa \ - --hash=sha256:35953f4f2b3216421af86fd236b7c0c65935936a94ea83ddbd4904ba60757773 \ - --hash=sha256:35ae5ece284cf36464eb160880018cf6088a9ac5ddc72292a6092b6ef3f4da53 \ - --hash=sha256:3b811d182ad17ea294f2ec63c0621e7be92a1141e1012383461872cead87468f \ - --hash=sha256:3da5a4c56953bdbf6d04447c3410309616c54433146ccdb4a277b9cb499bc10e \ - --hash=sha256:3dc6a7620ba7639a3db6213da61312cb4aa9ac0ca6e00dc1cbbdc21c2aa6eb57 \ - --hash=sha256:3f91df8e6dbb7360e176d1affd5fb0246d2b88d16aa5ebc7db94fd66b68b61da \ - --hash=sha256:4022b9dc620e14f30201a8a73898a873c8e910cb642bcd2f3411123bc527f6ac \ - --hash=sha256:413b9c17388bbd0d87a329d8e30c1a4c6e44e2bb25457f43725a8e6fe4161e9e \ - --hash=sha256:43d4dd5fb16eb3825742bad8339d454054261ab59fed2fbac84e1d84d5aae7ba \ - --hash=sha256:44627b6ca7308680a70766454db5249105fa6344853af6762eaad4158a2feebe \ - --hash=sha256:44a54e99a2b9693a37ebf245937fd6e9228b4cbd64b9cc961e1f3391ec6c7391 \ - --hash=sha256:47713dc4fce213f5c74ca8a1f6a59b622fc1b90868deb8e8e4d993e421b4b39d \ - --hash=sha256:495a14b72bbe217f2695dcd9b5ab14d4f8066a00f5d209ed94f0aca307f85f6e \ - --hash=sha256:4c46ad6356e1561f2a54f08367d1d2e70a0a1bb2db2282d2c1972c1d38eafc3b \ - --hash=sha256:4d6a9f052e72d493efd92a77f861e45bab2f6be63e37fa8ecf0c6fd1a58fedb0 \ - --hash=sha256:509b617ac787cd1149600e731db9274ebbef094503ca25158e6f23edaba1ca8f \ - --hash=sha256:5552f328eaef1a75ff129d4d0c437bf44e43f9436d3996e8eab623ea0f5fcf73 \ - --hash=sha256:5a80e2f83391ad0808b4646732af2a7b67550b98f0cae056cb3b40622a83dbb3 \ - --hash=sha256:5cf6af100ffb5c195beec11ffaa8cf8523057f123afa2944e6571d54da84cdc9 \ - --hash=sha256:5e6caa3809e50690bd92fa490f5c38caa86082c8c3315aa438bce43786d5e90d \ - --hash=sha256:5ef00873303d678aaf8b0627e111fd434925ca01c657dbb2641410f1cdaef261 \ - --hash=sha256:69ac7ea9897ec201ce68b48582f3eb34a3f9924488a5432a93f177bf76a82a7e \ - --hash=sha256:6a61226465bda9283686db8f17d02569a98e4b13c637be5a26d44aa1f1e361c2 \ - --hash=sha256:6d904c5693e08bad240f16d79305edba78276be87061c872a4a15e2c301fa2c0 \ - --hash=sha256:6dace7b26a13353e24613417ce2239491b40a6ad44e5776a18eaff7733488b44 \ - --hash=sha256:6df15846ee3fb2e6397fe25d7ca6624af9f89587f3f259d177b556fed6bebe2c \ - --hash=sha256:703d95c75a72e902544fda08e965885525e297578317989fd15a6ce58414b41d \ - --hash=sha256:726ac36e8a3bb8daef2fd482534cabc5e17334052447008405daca7ca04a3108 \ - --hash=sha256:781ef8bfc091b19960fc0142a23aedadafa826bc32b433fdfe6fd7f964d7ef44 \ - --hash=sha256:80443fe2f7b3ea3934c5d75fb0e04a5dbb4a8e943e5ff2de0dec059202b70a8b \ - --hash=sha256:83640a5d7cd3bff694747d50436b8b541b5b9b9782b0c8c1688931d6ee1a1f2d \ - --hash=sha256:84c5a4d1f9dd7e2d2c44097fb09fffe728629bad31eb56caf97719e55575aa82 \ - --hash=sha256:882ce6e25e585949c3d9f9abd29202367175e0aab3aba0c58c9abbb37d4982ff \ - --hash=sha256:888a97002e986eca10d8546e3c8b97da1d47ad8b69726dcfeb3e56348ebb28a3 \ - --hash=sha256:8aad80645a011abae487d356e0ceb359f4938dfb6f7bcc410027ed7ae4f7bb8b \ - --hash=sha256:8cb6fe8ecdfffa0e711a75c931fb39f4ba382b4b3ccedeca43f18693864fe850 \ - --hash=sha256:8d6b6937ae9eac6d6c0ca3c42774d89fa311f55adff3970fb364b34abde6ed3d \ - --hash=sha256:90123853fc8b1747f80b0d354be3d122b4365a93e50fc3aacc9fb4c2488845d6 \ - --hash=sha256:96f957d6ab25a78b9e7fc9749d754b98eac825a112b4e666525ce89afcbd9ed5 \ - --hash=sha256:981d135c7cdaf6cd8eadae1c950de43b976de8f09d8e800feed307140d3d6d00 \ - --hash=sha256:9b32f742ce5b57201305f19c2ef7a184b52f6f9ba6871cc042c2a61f0d6b49b8 \ - --hash=sha256:9f0350ef2fba5f34eb0c9000ea328e51b9572b403d2f7f3b19f24085f6f598e8 \ - --hash=sha256:a297a4d08cc67c7466c873c78039d87840fb50d05473db0ec1b7b03d179bf322 \ - --hash=sha256:a3d7e2ea25d3517c6d7e5a1cc3702cffa6bd18d9ef8d08d9af6717fc1c700eed \ - --hash=sha256:a4b682c5775d6a3d21e314c10124599976809455ee67020e8e72df1769b87bc3 \ - --hash=sha256:a4ebb8b20bd09c5ce7884c8f0388801100f5e75e7f733b1b6613c713371feefc \ - --hash=sha256:a61f659665a39a4d17d699ab3593d7116d66e1e2e3f03ef3fb8f484e91908808 \ - --hash=sha256:a9880b4656efe36ccad41edc66789e191e5ee19a1ea8811e0aed6f69851a82f4 \ - --hash=sha256:ac08472f41ea77cd6a5dae36ae7d4ed3951d6602833af87532b556c1b4601d63 \ - --hash=sha256:adc0c3d6fc6ae35fee3e4917628983f6ce630d513cbaad575b4517d47e81b4bb \ - --hash=sha256:af27423662f32d7501a00c5e7342f7dbd1e4a718aea7a239781357d15d437133 \ - --hash=sha256:b2e75e17bd0bb66ee34a707da677e47c14ee51ccef78ed6a263a4cc965a072a1 \ - --hash=sha256:b634c5ec0103c5cbebc24ebac4872b045cccb9456fc59efdcf6fe39775365bd2 \ - --hash=sha256:b6f5549d6ed1da9bfe3631ca9483ae906f21410be2445b73443fa9f017601c6f \ - --hash=sha256:bd4b677d929cf1f6bac07ad76e0f2d5de367e6373351c01a9c0a39f6b21b4a8b \ - --hash=sha256:bf721ede3eb7b829e4a9b8142bd55db0bdc82902720548a703f7e601ee13bdc3 \ - --hash=sha256:c647ca87fc0ebe808a41de912e9a1bfef9acb85257e5d63691364ac16b81c1f0 \ - --hash=sha256:ca57468da2d9a660bcf8961637c85f2fbb2aa64d9bc3f9484e30c3f9f67b1dd7 \ - --hash=sha256:cad0f59ee3dc35526039f4bc23642d52d5f6616b5f687d846bfc6d0d6d486db0 \ - --hash=sha256:cc97f0640e91d7776530f06e6836c546c1c752a52de158720c4224c9e8053cad \ - --hash=sha256:ccd4e400309e1f34a5095bf9249d371f0fd60f8a3a5c4a791cad7b99ce1fd38d \ - --hash=sha256:cffa76b385dfe1e38527662a302b19ffb0e7f5cf7dd5e89186d2c94a22dd9d0c \ - --hash=sha256:d0dd7ed2f16df2e129496e7fbe59a34bc2d7fc8db443a606644d069eb69cbd45 \ - --hash=sha256:d452817e0d9c749c431a1121d56a777bd7099b720b3d1c820f1725cb40928f58 \ - --hash=sha256:d8dda2a806dfa4a9b795950c4f5cc56d6d6159f7d68080aedaff3bdc9b5032f5 \ - --hash=sha256:dcbe1f8dd179e4d69b70b1f1d9bb6fd1e7e1bdc9c9aad345cdeb332e29d40748 \ - --hash=sha256:e0441fb4fdd39a230477b2ca9be90868af64425bfe7b122b57e61e45737a653b \ - --hash=sha256:e04e56b4ca7a770593633556e8e9e46579d66ec2ada846b401252a2bdcf70a6d \ - --hash=sha256:e061de3b745fe611e23cd7318aec2c8b0e4153939c25c9202a5811ca911fd733 \ - --hash=sha256:e93ec1b300acf89730cf27975ef574396bc04edecc358e9bd116fb387a123239 \ - --hash=sha256:e9e557db6a177470316c82f023e5d571811c9a4422b5ea084c85da9aa3c035fc \ - --hash=sha256:eab36eae3f3e8e24b05748ec9acc66286662f5d25c52ad70cadab544e034536b \ - --hash=sha256:ec23fcad480e77ede06cf4127a25fc440f7489922e17fc058f426b5256ee0edb \ - --hash=sha256:ec2e1cf025b2c0f48ec17ff3e642661da7ee332d326f2e6619366ce8e221f018 \ - --hash=sha256:ed99b4f7179d2111702020fd7d156e88acd533f5a7d3971353e568b6051d5c97 \ - --hash=sha256:ee94cb58c0ba2c62ee108c2b7c9131b2c66a29e82746e8fa3aa1a1effbd3dcf1 \ - --hash=sha256:f19afcfc0dd0dca35694df441e9b0f95bc231b512f51bded3c3d8ca32153ec19 \ - --hash=sha256:f1b9d9260e06ea017feb7172976ab261e011c1dc2f8883c7c274f6b2aabfe01a \ - --hash=sha256:f28ac0e8e7242d140f99402a903a2c596ab71550272ae9247ad78f9a932b5698 \ - --hash=sha256:f42e25c016927e2a6b1ce748112c3ab134261fc2ddc867e92d02006103e1b1b7 \ - --hash=sha256:f4bd4578e44f26997e9e56c96dedc5f1af43cc9d16c4daa29c771a00b2a26851 \ - --hash=sha256:f811771019f063bbd0aa7bb72c8a934bc13ebacb4672d712fc1639cfd314cccc +rpds-py==0.17.1 \ + --hash=sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147 \ + --hash=sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7 \ + --hash=sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2 \ + --hash=sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68 \ + --hash=sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1 \ + --hash=sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382 \ + --hash=sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d \ + --hash=sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921 \ + --hash=sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38 \ + --hash=sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4 \ + --hash=sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a \ + --hash=sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d \ + --hash=sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518 \ + --hash=sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e \ + --hash=sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d \ + --hash=sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf \ + --hash=sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5 \ + --hash=sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba \ + --hash=sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6 \ + --hash=sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59 \ + --hash=sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253 \ + --hash=sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6 \ + --hash=sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f \ + --hash=sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3 \ + --hash=sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea \ + --hash=sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1 \ + --hash=sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76 \ + --hash=sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93 \ + --hash=sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad \ + --hash=sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad \ + --hash=sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc \ + --hash=sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049 \ + --hash=sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d \ + --hash=sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90 \ + --hash=sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d \ + --hash=sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd \ + --hash=sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25 \ + --hash=sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2 \ + --hash=sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f \ + --hash=sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6 \ + --hash=sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4 \ + --hash=sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c \ + --hash=sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8 \ + --hash=sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d \ + --hash=sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b \ + --hash=sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19 \ + --hash=sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453 \ + --hash=sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9 \ + --hash=sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde \ + --hash=sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296 \ + --hash=sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58 \ + --hash=sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec \ + --hash=sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99 \ + --hash=sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a \ + --hash=sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb \ + --hash=sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383 \ + --hash=sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d \ + --hash=sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896 \ + --hash=sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc \ + --hash=sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6 \ + --hash=sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b \ + --hash=sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7 \ + --hash=sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22 \ + --hash=sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf \ + --hash=sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394 \ + --hash=sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0 \ + --hash=sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57 \ + --hash=sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74 \ + --hash=sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83 \ + --hash=sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29 \ + --hash=sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9 \ + --hash=sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f \ + --hash=sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745 \ + --hash=sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb \ + --hash=sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811 \ + --hash=sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55 \ + --hash=sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342 \ + --hash=sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23 \ + --hash=sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82 \ + --hash=sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041 \ + --hash=sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb \ + --hash=sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066 \ + --hash=sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55 \ + --hash=sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6 \ + --hash=sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a \ + --hash=sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140 \ + --hash=sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b \ + --hash=sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9 \ + --hash=sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256 \ + --hash=sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c \ + --hash=sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772 \ + --hash=sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4 \ + --hash=sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae \ + --hash=sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920 \ + --hash=sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a \ + --hash=sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b \ + --hash=sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361 \ + --hash=sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8 \ + --hash=sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a # via # jsonschema # referencing From bf783cf349ee019fccebcc2849d842d4d1dbe688 Mon Sep 17 00:00:00 2001 From: Jared Bentvelsen Date: Tue, 16 Jan 2024 13:52:09 -0800 Subject: [PATCH 060/100] Add --debug to flaky test to get more information (#6560) * Add --debug to flaky test * Formatting --------- Co-authored-by: Jared Bentvelsen --- tests/end_to_end/test_runtimes_e2e.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/end_to_end/test_runtimes_e2e.py b/tests/end_to_end/test_runtimes_e2e.py index b5d73461611..23be10e3923 100644 --- a/tests/end_to_end/test_runtimes_e2e.py +++ b/tests/end_to_end/test_runtimes_e2e.py @@ -123,7 +123,7 @@ def test_hello_world_workflow(self): package_command_list = self._get_package_command( s3_prefix="end-to-end-package-test", use_json=True, output_template_file="packaged_template.json" ) - local_command_list = self._get_local_command(function_name) + local_command_list = self._get_local_command(function_name) + ["--debug"] stages = [ DefaultInitStage(InitValidator(e2e_context), e2e_context, init_command_list, self.app_name), EndToEndBaseStage(BuildValidator(e2e_context), e2e_context, build_command_list), From 7ba03d6d1f5a718cbb851ae878bff90e04d4d31f Mon Sep 17 00:00:00 2001 From: sidhujus <105385029+sidhujus@users.noreply.github.com> Date: Wed, 17 Jan 2024 09:12:17 -0800 Subject: [PATCH 061/100] Fix: sam invoke local throw error 'utf-8' codec can't decode byte 0xff (#6559) * Revert "Revert "Fix: sam invoke local throw error 'utf-8' codec can't decode byte 0xff (#6509)" (#6543)" This reverts commit 335e529d819d0f8b938a491b1c69e232daa22ce8. * change python version in test --------- Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com> --- samcli/lib/utils/stream_writer.py | 31 +++++++- .../apigw/authorizers/lambda_authorizer.py | 10 +-- samcli/local/apigw/local_apigw_service.py | 8 +- samcli/local/docker/container.py | 13 +++- .../local_lambda_invoke_service.py | 9 ++- samcli/local/services/base_local_service.py | 15 +++- .../local/invoke/test_integrations_cli.py | 35 +++++++++ .../testdata/invoke/image-for-lambda.png | Bin 0 -> 110984 bytes tests/integration/testdata/invoke/main.py | 7 ++ .../invoke/template-return-image.yaml | 12 +++ tests/unit/lib/utils/test_stream_writer.py | 33 ++++++++- tests/unit/local/docker/test_container.py | 69 ++++++++++++++++-- .../test_local_lambda_invoke_service.py | 2 +- 13 files changed, 213 insertions(+), 31 deletions(-) create mode 100644 tests/integration/testdata/invoke/image-for-lambda.png create mode 100644 tests/integration/testdata/invoke/template-return-image.yaml diff --git a/samcli/lib/utils/stream_writer.py b/samcli/lib/utils/stream_writer.py index 78bae0d8ffc..dc2c2b9b5ca 100644 --- a/samcli/lib/utils/stream_writer.py +++ b/samcli/lib/utils/stream_writer.py @@ -1,11 +1,12 @@ """ This class acts like a wrapper around output streams to provide any flexibility with output we need """ -from typing import TextIO +from io import BytesIO, TextIOWrapper +from typing import Optional, TextIO, Union class StreamWriter: - def __init__(self, stream: TextIO, auto_flush: bool = False): + def __init__(self, stream: TextIO, stream_bytes: Optional[Union[TextIO, BytesIO]] = None, auto_flush: bool = False): """ Instatiates new StreamWriter to the specified stream @@ -13,16 +14,40 @@ def __init__(self, stream: TextIO, auto_flush: bool = False): ---------- stream io.RawIOBase Stream to wrap + stream_bytes io.TextIO | io.BytesIO + Stream to wrap if bytes are being written auto_flush bool Whether to autoflush the stream upon writing """ self._stream = stream + self._stream_bytes = stream if isinstance(stream, TextIOWrapper) else stream_bytes self._auto_flush = auto_flush @property def stream(self) -> TextIO: return self._stream + def write_bytes(self, output: bytes): + """ + Writes specified text to the underlying stream + Parameters + ---------- + output bytes-like object + Bytes to write into buffer + """ + # all these ifs are to satisfy the linting/type checking + if not self._stream_bytes: + return + if isinstance(self._stream_bytes, TextIOWrapper): + self._stream_bytes.buffer.write(output) + if self._auto_flush: + self._stream_bytes.flush() + + elif isinstance(self._stream_bytes, BytesIO): + self._stream_bytes.write(output) + if self._auto_flush: + self._stream_bytes.flush() + def write_str(self, output: str): """ Writes specified text to the underlying stream @@ -39,3 +64,5 @@ def write_str(self, output: str): def flush(self): self._stream.flush() + if self._stream_bytes: + self._stream_bytes.flush() diff --git a/samcli/local/apigw/authorizers/lambda_authorizer.py b/samcli/local/apigw/authorizers/lambda_authorizer.py index ed3483eee5f..8b7b92c6ea7 100644 --- a/samcli/local/apigw/authorizers/lambda_authorizer.py +++ b/samcli/local/apigw/authorizers/lambda_authorizer.py @@ -5,7 +5,7 @@ from abc import ABC, abstractmethod from dataclasses import dataclass from json import JSONDecodeError, loads -from typing import Any, Dict, List, Optional, Tuple, Type, cast +from typing import Any, Dict, List, Optional, Tuple, Type, Union, cast from urllib.parse import parse_qsl from samcli.commands.local.lib.validators.identity_source_validator import IdentitySourceValidator @@ -321,13 +321,13 @@ def _parse_identity_sources(self, identity_sources: List[str]) -> None: break - def is_valid_response(self, response: str, method_arn: str) -> bool: + def is_valid_response(self, response: Union[str, bytes], method_arn: str) -> bool: """ Validates whether a Lambda authorizer request is authenticated or not. Parameters ---------- - response: str + response: Union[str, bytes] JSON string containing the output from a Lambda authorizer method_arn: str The method ARN of the route that invoked the Lambda authorizer @@ -418,13 +418,13 @@ def _validate_simple_response(self, response: dict) -> bool: return cast(bool, is_authorized) - def get_context(self, response: str) -> Dict[str, Any]: + def get_context(self, response: Union[str, bytes]) -> Dict[str, Any]: """ Returns the context (if set) from the authorizer response and appends the principalId to it. Parameters ---------- - response: str + response: Union[str, bytes] Output from Lambda authorizer Returns diff --git a/samcli/local/apigw/local_apigw_service.py b/samcli/local/apigw/local_apigw_service.py index df82b68ae4c..1e0f871fcda 100644 --- a/samcli/local/apigw/local_apigw_service.py +++ b/samcli/local/apigw/local_apigw_service.py @@ -6,7 +6,7 @@ from datetime import datetime from io import StringIO from time import time -from typing import Any, Dict, List, Optional, Tuple +from typing import Any, Dict, List, Optional, Tuple, Union from flask import Flask, Request, request from werkzeug.datastructures import Headers @@ -594,7 +594,7 @@ def _valid_identity_sources(self, request: Request, route: Route) -> bool: return True - def _invoke_lambda_function(self, lambda_function_name: str, event: dict) -> str: + def _invoke_lambda_function(self, lambda_function_name: str, event: dict) -> Union[str, bytes]: """ Helper method to invoke a function and setup stdout+stderr @@ -607,8 +607,8 @@ def _invoke_lambda_function(self, lambda_function_name: str, event: dict) -> str Returns ------- - str - A string containing the output from the Lambda function + Union[str, bytes] + A string or bytes containing the output from the Lambda function """ with StringIO() as stdout: event_str = json.dumps(event, sort_keys=True) diff --git a/samcli/local/docker/container.py b/samcli/local/docker/container.py index b1777279b07..239c92fcea8 100644 --- a/samcli/local/docker/container.py +++ b/samcli/local/docker/container.py @@ -369,7 +369,7 @@ def start(self, input_data=None): raise ex @retry(exc=requests.exceptions.RequestException, exc_raise=ContainerResponseException) - def wait_for_http_response(self, name, event, stdout) -> Union[str, bytes]: + def wait_for_http_response(self, name, event, stdout) -> Tuple[Union[str, bytes], bool]: # TODO(sriram-mv): `aws-lambda-rie` is in a mode where the function_name is always "function" # NOTE(sriram-mv): There is a connection timeout set on the http call to `aws-lambda-rie`, however there is not # a read time out for the response received from the server. @@ -380,10 +380,13 @@ def wait_for_http_response(self, name, event, stdout) -> Union[str, bytes]: timeout=(self.RAPID_CONNECTION_TIMEOUT, None), ) try: - return json.dumps(json.loads(resp.content), ensure_ascii=False) + # if response is an image then json.loads/dumps will throw a UnicodeDecodeError so return raw content + if "image" in resp.headers["Content-Type"]: + return resp.content, True + return json.dumps(json.loads(resp.content), ensure_ascii=False), False except json.JSONDecodeError: LOG.debug("Failed to deserialize response from RIE, returning the raw response as is") - return resp.content + return resp.content, False def wait_for_result(self, full_path, event, stdout, stderr, start_timer=None): # NOTE(sriram-mv): Let logging happen in its own thread, so that a http request can be sent. @@ -406,13 +409,15 @@ def wait_for_result(self, full_path, event, stdout, stderr, start_timer=None): # start the timer for function timeout right before executing the function, as waiting for the socket # can take some time timer = start_timer() if start_timer else None - response = self.wait_for_http_response(full_path, event, stdout) + response, is_image = self.wait_for_http_response(full_path, event, stdout) if timer: timer.cancel() self._logs_thread_event.wait(timeout=1) if isinstance(response, str): stdout.write_str(response) + elif isinstance(response, bytes) and is_image: + stdout.write_bytes(response) elif isinstance(response, bytes): stdout.write_str(response.decode("utf-8")) stdout.flush() diff --git a/samcli/local/lambda_service/local_lambda_invoke_service.py b/samcli/local/lambda_service/local_lambda_invoke_service.py index 1e46a105076..a847802b3c4 100644 --- a/samcli/local/lambda_service/local_lambda_invoke_service.py +++ b/samcli/local/lambda_service/local_lambda_invoke_service.py @@ -165,8 +165,9 @@ def _invoke_request_handler(self, function_name): request_data = request_data.decode("utf-8") - stdout_stream = io.StringIO() - stdout_stream_writer = StreamWriter(stdout_stream, auto_flush=True) + stdout_stream_string = io.StringIO() + stdout_stream_bytes = io.BytesIO() + stdout_stream_writer = StreamWriter(stdout_stream_string, stdout_stream_bytes, auto_flush=True) try: self.lambda_runner.invoke(function_name, request_data, stdout=stdout_stream_writer, stderr=self.stderr) @@ -178,7 +179,9 @@ def _invoke_request_handler(self, function_name): "Inline code is not supported for sam local commands. Please write your code in a separate file." ) - lambda_response, is_lambda_user_error_response = LambdaOutputParser.get_lambda_output(stdout_stream) + lambda_response, is_lambda_user_error_response = LambdaOutputParser.get_lambda_output( + stdout_stream_string, stdout_stream_bytes + ) if is_lambda_user_error_response: return self.service_response( diff --git a/samcli/local/services/base_local_service.py b/samcli/local/services/base_local_service.py index 5de5beb7dd5..573c24b445b 100644 --- a/samcli/local/services/base_local_service.py +++ b/samcli/local/services/base_local_service.py @@ -2,7 +2,7 @@ import io import json import logging -from typing import Tuple +from typing import Optional, Tuple, Union from flask import Response @@ -85,7 +85,9 @@ def service_response(body, headers, status_code): class LambdaOutputParser: @staticmethod - def get_lambda_output(stdout_stream: io.StringIO) -> Tuple[str, bool]: + def get_lambda_output( + stdout_stream_str: io.StringIO, stdout_stream_bytes: Optional[io.BytesIO] = None + ) -> Tuple[Union[str, bytes], bool]: """ This method will extract read the given stream and return the response from Lambda function separated out from any log statements it might have outputted. Logs end up in the stdout stream if the Lambda function @@ -93,9 +95,12 @@ def get_lambda_output(stdout_stream: io.StringIO) -> Tuple[str, bool]: Parameters ---------- - stdout_stream : io.BaseIO + stdout_stream_str : io.BaseIO Stream to fetch data from + stdout_stream_bytes : Optional[io.BytesIO], optional + Stream to fetch raw bytes data from + Returns ------- str @@ -103,7 +108,9 @@ def get_lambda_output(stdout_stream: io.StringIO) -> Tuple[str, bool]: bool If the response is an error/exception from the container """ - lambda_response = stdout_stream.getvalue() + lambda_response: Union[str, bytes] = stdout_stream_str.getvalue() + if stdout_stream_bytes and not lambda_response: + lambda_response = stdout_stream_bytes.getvalue() # When the Lambda Function returns an Error/Exception, the output is added to the stdout of the container. From # our perspective, the container returned some value, which is not always true. Since the output is the only diff --git a/tests/integration/local/invoke/test_integrations_cli.py b/tests/integration/local/invoke/test_integrations_cli.py index c1a114b5d49..3c33a25cead 100644 --- a/tests/integration/local/invoke/test_integrations_cli.py +++ b/tests/integration/local/invoke/test_integrations_cli.py @@ -1197,6 +1197,41 @@ def test_invoke_inline_code_function(self): self.assertEqual(process.returncode, 1) +class TestInvokeFunctionWithImageBytesAsReturn(InvokeIntegBase): + template = Path("template-return-image.yaml") + + @pytest.mark.flaky(reruns=3) + def test_invoke_returncode_is_zero(self): + command_list = InvokeIntegBase.get_command_list( + "GetImageFunction", template_path=self.template_path, event_path=self.event_path + ) + + process = Popen(command_list, stdout=PIPE) + try: + process.communicate(timeout=TIMEOUT) + except TimeoutExpired: + process.kill() + raise + + self.assertEqual(process.returncode, 0) + + @pytest.mark.flaky(reruns=3) + def test_invoke_image_is_returned(self): + command_list = InvokeIntegBase.get_command_list( + "GetImageFunction", template_path=self.template_path, event_path=self.event_path + ) + + process = Popen(command_list, stdout=PIPE) + try: + stdout, _ = process.communicate(timeout=TIMEOUT) + except TimeoutExpired: + process.kill() + raise + + # The first byte of a png image file is \x89 so we can check that to verify that it returned an image + self.assertEqual(stdout[0:1], b"\x89") + + class TestInvokeFunctionWithError(InvokeIntegBase): template = Path("template.yml") diff --git a/tests/integration/testdata/invoke/image-for-lambda.png b/tests/integration/testdata/invoke/image-for-lambda.png new file mode 100644 index 0000000000000000000000000000000000000000..56a3af614bf81d70f280cb36c576aa82b684b8f8 GIT binary patch literal 110984 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 M07*qoM6N<$f|_ Date: Fri, 19 Jan 2024 09:06:39 -0800 Subject: [PATCH 062/100] fix: sam delete not picking up global parameters from samconfig.yaml (#6541) * use decorator * fix tests * remove unused variables * fix error * fix tests --- samcli/commands/delete/command.py | 37 ++---------- samcli/commands/delete/delete_context.py | 32 ---------- .../integration/delete/test_delete_command.py | 23 ++++--- tests/unit/commands/delete/test_command.py | 4 -- .../commands/delete/test_delete_context.py | 60 +------------------ 5 files changed, 18 insertions(+), 138 deletions(-) diff --git a/samcli/commands/delete/command.py b/samcli/commands/delete/command.py index 0088ba6647d..b4a29320732 100644 --- a/samcli/commands/delete/command.py +++ b/samcli/commands/delete/command.py @@ -7,9 +7,10 @@ import click -from samcli.cli.cli_config_file import save_params_option +from samcli.cli.cli_config_file import ConfigProvider, configuration_option, save_params_option from samcli.cli.main import aws_creds_options, common_options, pass_context, print_cmdline_args from samcli.commands._utils.command_exception_handler import command_exception_handler +from samcli.commands.delete.delete_context import CONFIG_COMMAND, CONFIG_SECTION from samcli.lib.telemetry.metric import track_command from samcli.lib.utils.version_checker import check_newer_version @@ -33,34 +34,12 @@ context_settings={"ignore_unknown_options": False, "allow_interspersed_args": True, "allow_extra_args": True}, help=HELP_TEXT, ) +@configuration_option(provider=ConfigProvider(CONFIG_SECTION, [CONFIG_COMMAND])) @click.option( "--stack-name", required=False, help="The name of the AWS CloudFormation stack you want to delete. ", ) -@click.option( - "--config-file", - help=( - "The path and file name of the configuration file containing default parameter values to use. " - "Its default value is 'samconfig.toml' in project directory. For more information about configuration files, " - "see: " - "https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-config.html." - ), - type=click.STRING, - default="samconfig.toml", - show_default=True, -) -@click.option( - "--config-env", - help=( - "The environment name specifying the default parameter values in the configuration file to use. " - "Its default value is 'default'. For more information about configuration files, see: " - "https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-config.html." - ), - type=click.STRING, - default="default", - show_default=True, -) @click.option( "--no-prompts", help=("Specify this flag to allow SAM CLI to skip through the guided prompts."), @@ -92,11 +71,11 @@ def cli( ctx, stack_name: str, - config_file: str, - config_env: str, no_prompts: bool, s3_bucket: str, s3_prefix: str, + config_env: str, + config_file: str, save_params: bool, ): """ @@ -107,8 +86,6 @@ def cli( do_cli( stack_name=stack_name, region=ctx.region, - config_file=config_file, - config_env=config_env, profile=ctx.profile, no_prompts=no_prompts, s3_bucket=s3_bucket, @@ -119,8 +96,6 @@ def cli( def do_cli( stack_name: str, region: str, - config_file: str, - config_env: str, profile: str, no_prompts: bool, s3_bucket: Optional[str], @@ -135,8 +110,6 @@ def do_cli( stack_name=stack_name, region=region, profile=profile, - config_file=config_file, - config_env=config_env, no_prompts=no_prompts, s3_bucket=s3_bucket, s3_prefix=s3_prefix, diff --git a/samcli/commands/delete/delete_context.py b/samcli/commands/delete/delete_context.py index 2de317d46e0..427d7fdd3fa 100644 --- a/samcli/commands/delete/delete_context.py +++ b/samcli/commands/delete/delete_context.py @@ -8,7 +8,6 @@ from botocore.exceptions import NoCredentialsError, NoRegionError from click import confirm, prompt -from samcli.cli.cli_config_file import ConfigProvider from samcli.commands.delete.exceptions import CfDeleteFailedStatusError from samcli.commands.exceptions import AWSServiceClientError, RegionError from samcli.lib.bootstrap.companion_stack.companion_stack_builder import CompanionStack @@ -34,8 +33,6 @@ def __init__( stack_name: str, region: str, profile: str, - config_file: str, - config_env: str, no_prompts: bool, s3_bucket: Optional[str], s3_prefix: Optional[str], @@ -43,8 +40,6 @@ def __init__( self.stack_name = stack_name self.region = region self.profile = profile - self.config_file = config_file - self.config_env = config_env self.no_prompts = no_prompts self.s3_bucket = s3_bucket self.s3_prefix = s3_prefix @@ -58,7 +53,6 @@ def __init__( self.companion_stack_name = None def __enter__(self): - self.parse_config_file() if not self.stack_name: LOG.debug("No stack-name input found") if not self.no_prompts: @@ -77,32 +71,6 @@ def __enter__(self): def __exit__(self, *args): pass - def parse_config_file(self): - """ - Read the provided config file if it exists and assign the options values. - """ - config_provider = ConfigProvider(CONFIG_SECTION, [CONFIG_COMMAND]) - config_options = config_provider( - config_path=self.config_file, config_env=self.config_env, cmd_names=[CONFIG_COMMAND] - ) - if not config_options: - return - - if not self.stack_name: - self.stack_name = config_options.get("stack_name", None) - # If the stack_name is same as the one present in samconfig file, - # get the information about parameters if not specified by user. - if self.stack_name and self.stack_name == config_options.get("stack_name", None): - LOG.debug("Local config present and using the defined options") - if not self.region: - self.region = config_options.get("region", None) - if not self.profile: - self.profile = config_options.get("profile", None) - if not self.s3_bucket: - self.s3_bucket = config_options.get("s3_bucket", None) - if not self.s3_prefix: - self.s3_prefix = config_options.get("s3_prefix", None) - def init_clients(self): """ Initialize all the clients being used by sam delete. diff --git a/tests/integration/delete/test_delete_command.py b/tests/integration/delete/test_delete_command.py index b0a35c12b11..71150983f3a 100644 --- a/tests/integration/delete/test_delete_command.py +++ b/tests/integration/delete/test_delete_command.py @@ -6,6 +6,7 @@ import docker from botocore.exceptions import ClientError from parameterized import parameterized +from samcli.lib.config.samconfig import DEFAULT_CONFIG_FILE_NAME from tests.integration.delete.delete_integ_base import DeleteIntegBase from tests.testing_utils import RUNNING_ON_CI, RUNNING_TEST_FOR_MASTER_ON_CI, RUN_BY_CANARY, CommandResult @@ -126,15 +127,13 @@ def test_delete_no_prompts_with_s3_prefix_present_zip(self, template_file): stack_name = self._method_to_stack_name(self.id()) - config_file_name = stack_name + ".toml" - deploy_command_list = self.get_deploy_command_list( - template_file=template_path, guided=True, config_file=config_file_name - ) + config_file_name = DEFAULT_CONFIG_FILE_NAME + deploy_command_list = self.get_deploy_command_list(template_file=template_path, guided=True) _ = run_command_with_input(deploy_command_list, "{}\n\n\n\n\n\n\n\n\n".format(stack_name).encode()) config_file_path = self.test_data_path.joinpath(config_file_name) delete_command_list = self.get_delete_command_list( - stack_name=stack_name, config_file=config_file_path, region=self._session.region_name, no_prompts=True + stack_name=stack_name, region=self._session.region_name, no_prompts=True ) delete_process_execute = run_command(delete_command_list) @@ -155,9 +154,9 @@ def test_delete_no_prompts_with_s3_prefix_present_image(self, template_file): stack_name = self._method_to_stack_name(self.id()) - config_file_name = stack_name + ".toml" + config_file_name = DEFAULT_CONFIG_FILE_NAME deploy_command_list = self.get_deploy_command_list( - template_file=template_path, guided=True, config_file=config_file_name, image_repository=self.ecr_repo_name + template_file=template_path, guided=True, image_repository=self.ecr_repo_name ) _ = run_command_with_input( deploy_command_list, f"{stack_name}\n\n{self.ecr_repo_name}\n\n\ny\n\n\n\n\n\n".encode() @@ -165,7 +164,7 @@ def test_delete_no_prompts_with_s3_prefix_present_image(self, template_file): config_file_path = self.test_data_path.joinpath(config_file_name) delete_command_list = self.get_delete_command_list( - stack_name=stack_name, config_file=config_file_path, region=self._session.region_name, no_prompts=True + stack_name=stack_name, region=self._session.region_name, no_prompts=True ) delete_process_execute = run_command(delete_command_list) @@ -186,14 +185,12 @@ def test_delete_guided_config_file_present(self, template_file): stack_name = self._method_to_stack_name(self.id()) - config_file_name = stack_name + ".toml" - deploy_command_list = self.get_deploy_command_list( - template_file=template_path, guided=True, config_file=config_file_name - ) + config_file_name = DEFAULT_CONFIG_FILE_NAME + deploy_command_list = self.get_deploy_command_list(template_file=template_path, guided=True) _ = run_command_with_input(deploy_command_list, "{}\n\n\n\n\n\n\n\n\n".format(stack_name).encode()) config_file_path = self.test_data_path.joinpath(config_file_name) - delete_command_list = self.get_delete_command_list(stack_name=stack_name, config_file=config_file_path) + delete_command_list = self.get_delete_command_list(stack_name=stack_name) delete_process_execute = run_command_with_input(delete_command_list, "y\nn\ny\n".encode()) self.validate_delete_process(delete_process_execute) diff --git a/tests/unit/commands/delete/test_command.py b/tests/unit/commands/delete/test_command.py index 7a3ddeb37ed..46447596f47 100644 --- a/tests/unit/commands/delete/test_command.py +++ b/tests/unit/commands/delete/test_command.py @@ -25,8 +25,6 @@ def test_all_args(self, mock_delete_context, mock_delete_click): do_cli( stack_name=self.stack_name, region=self.region, - config_file=self.config_file, - config_env=self.config_env, profile=self.profile, no_prompts=self.no_prompts, s3_bucket=self.s3_bucket, @@ -37,8 +35,6 @@ def test_all_args(self, mock_delete_context, mock_delete_click): stack_name=self.stack_name, region=self.region, profile=self.profile, - config_file=self.config_file, - config_env=self.config_env, no_prompts=self.no_prompts, s3_bucket=self.s3_bucket, s3_prefix=self.s3_prefix, diff --git a/tests/unit/commands/delete/test_delete_context.py b/tests/unit/commands/delete/test_delete_context.py index d710f30ad5c..fce647808f7 100644 --- a/tests/unit/commands/delete/test_delete_context.py +++ b/tests/unit/commands/delete/test_delete_context.py @@ -28,8 +28,6 @@ def test_delete_context_stack_does_not_exist( with DeleteContext( stack_name="test", region="us-east-1", - config_file="samconfig.toml", - config_env="default", profile="test", no_prompts=True, s3_bucket=None, @@ -41,21 +39,17 @@ def test_delete_context_stack_does_not_exist( ] self.assertEqual(expected_click_echo_calls, patched_click_echo.call_args_list) - @patch.object(DeleteContext, "parse_config_file", MagicMock()) @patch.object(DeleteContext, "init_clients", MagicMock()) @patch("samcli.commands.delete.delete_context.get_boto_client_provider_with_config") def test_delete_context_enter(self, get_boto_client_provider_mock): with DeleteContext( stack_name="test", region="us-east-1", - config_file="samconfig.toml", - config_env="default", profile="test", no_prompts=True, s3_bucket=None, s3_prefix=None, ) as delete_context: - self.assertEqual(delete_context.parse_config_file.call_count, 1) self.assertEqual(delete_context.init_clients.call_count, 1) @patch.object( @@ -73,26 +67,6 @@ def test_delete_context_enter(self, get_boto_client_provider_mock): ) ), ) - @patch("samcli.commands.delete.delete_context.click.get_current_context") - @patch("samcli.commands.delete.delete_context.get_boto_client_provider_with_config") - def test_delete_context_parse_config_file(self, get_boto_client_provider_mock, patched_click_get_current_context): - patched_click_get_current_context = MagicMock() - with DeleteContext( - stack_name=None, - region=None, - config_file="samconfig.toml", - config_env="default", - profile=None, - no_prompts=True, - s3_bucket=None, - s3_prefix=None, - ) as delete_context: - self.assertEqual(delete_context.stack_name, "test") - self.assertEqual(delete_context.region, "us-east-1") - self.assertEqual(delete_context.profile, "developer") - self.assertEqual(delete_context.s3_bucket, "s3-bucket") - self.assertEqual(delete_context.s3_prefix, "s3-prefix") - @patch("samcli.commands.delete.delete_context.prompt") @patch("samcli.commands.delete.delete_context.confirm") @patch("samcli.commands.delete.delete_context.click.get_current_context") @@ -105,8 +79,6 @@ def test_delete_no_user_input( with DeleteContext( stack_name=None, region=None, - config_file=None, - config_env=None, profile=None, no_prompts=None, s3_bucket=None, @@ -149,14 +121,12 @@ def test_delete_no_user_input( def test_delete_context_valid_execute_run(self, get_boto_client_provider_mock, patched_click_get_current_context): patched_click_get_current_context = MagicMock() with DeleteContext( - stack_name=None, + stack_name="test", region=None, - config_file="samconfig.toml", - config_env="default", profile=None, no_prompts=True, - s3_bucket=None, - s3_prefix=None, + s3_bucket="test", + s3_prefix="test", ) as delete_context: delete_context.run() @@ -181,8 +151,6 @@ def test_delete_context_no_s3_bucket( with DeleteContext( stack_name="test", region="us-east-1", - config_file="samconfig.toml", - config_env="default", profile="test", no_prompts=True, s3_bucket=None, @@ -226,8 +194,6 @@ def test_guided_prompts_s3_bucket_prefix_present_execute_run( with DeleteContext( stack_name="test", region="us-east-1", - config_file="samconfig.toml", - config_env="default", profile="test", no_prompts=None, s3_bucket=None, @@ -289,8 +255,6 @@ def test_guided_prompts_s3_bucket_present_no_prefix_execute_run( with DeleteContext( stack_name="test", region="us-east-1", - config_file="samconfig.toml", - config_env="default", profile="test", no_prompts=None, s3_bucket=None, @@ -344,8 +308,6 @@ def test_guided_prompts_ecr_companion_stack_present_execute_run( with DeleteContext( stack_name="test", region="us-east-1", - config_file="samconfig.toml", - config_env="default", profile="test", no_prompts=None, s3_bucket=None, @@ -428,8 +390,6 @@ def test_no_prompts_input_is_ecr_companion_stack_present_execute_run( with DeleteContext( stack_name="Companion-Stack-Name", region="us-east-1", - config_file="samconfig.toml", - config_env="default", profile="test", no_prompts=True, s3_bucket=None, @@ -473,8 +433,6 @@ def test_retain_resources_delete_stack( with DeleteContext( stack_name="test", region="us-east-1", - config_file="samconfig.toml", - config_env="default", profile="test", no_prompts=True, s3_bucket=None, @@ -490,14 +448,11 @@ def test_retain_resources_delete_stack( self.assertEqual(CfnUtils.delete_stack.call_count, 4) self.assertEqual(CfnUtils.wait_for_delete.call_count, 4) - @patch.object(DeleteContext, "parse_config_file", MagicMock()) @patch.object(DeleteContext, "init_clients", MagicMock()) def test_s3_option_flag(self): with DeleteContext( stack_name="test", region="us-east-1", - config_file="samconfig.toml", - config_env="default", profile="test", no_prompts=True, s3_bucket="s3_bucket", @@ -521,15 +476,12 @@ def test_s3_option_flag(self): ) ), ) - @patch.object(DeleteContext, "parse_config_file", MagicMock()) @patch.object(DeleteContext, "init_clients", MagicMock()) @patch("samcli.commands.delete.delete_context.get_boto_client_provider_with_config") def test_s3_option_flag_overrides_config(self, get_boto_client_provider_mock): with DeleteContext( stack_name="test", region="us-east-1", - config_file="samconfig.toml", - config_env="default", profile="test", no_prompts=True, s3_bucket="s3_bucket_override", @@ -538,7 +490,6 @@ def test_s3_option_flag_overrides_config(self, get_boto_client_provider_mock): self.assertEqual(delete_context.s3_bucket, "s3_bucket_override") self.assertEqual(delete_context.s3_prefix, "s3_prefix_override") - @patch.object(DeleteContext, "parse_config_file", MagicMock()) @patch("samcli.commands.delete.delete_context.click.get_current_context") @patch("samcli.commands.delete.delete_context.get_boto_client_provider_with_config") def test_must_throw_error_if_boto3_cannot_resolve_credentials( @@ -550,8 +501,6 @@ def test_must_throw_error_if_boto3_cannot_resolve_credentials( with DeleteContext( stack_name="test", region=None, - config_file=None, - config_env=None, profile="profile_without_creds", no_prompts=True, s3_bucket=None, @@ -560,7 +509,6 @@ def test_must_throw_error_if_boto3_cannot_resolve_credentials( get_boto_client_provider_mock.assert_called_once_with(region=None, profile="profile_without_creds") self.assertIn("Unable to resolve credentials for the AWS SDK for Python client", ex) - @patch.object(DeleteContext, "parse_config_file", MagicMock()) @patch("samcli.commands.delete.delete_context.click.get_current_context") @patch("samcli.commands.delete.delete_context.get_boto_client_provider_with_config") def test_must_throw_error_if_boto3_cannot_resolve_region( @@ -572,8 +520,6 @@ def test_must_throw_error_if_boto3_cannot_resolve_region( with DeleteContext( stack_name="test", region=None, - config_file=None, - config_env=None, profile="profile_without_region", no_prompts=True, s3_bucket=None, From 9a0ee9297a87788753b0dcbc8517dcb85736265a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Jan 2024 19:42:55 +0000 Subject: [PATCH 063/100] chore(deps): bump cfn-lint from 0.83.8 to 0.84.0 in /requirements (#6573) Bumps [cfn-lint](https://github.com/aws-cloudformation/cfn-python-lint) from 0.83.8 to 0.84.0. - [Release notes](https://github.com/aws-cloudformation/cfn-python-lint/releases) - [Changelog](https://github.com/aws-cloudformation/cfn-lint/blob/main/CHANGELOG.md) - [Commits](https://github.com/aws-cloudformation/cfn-python-lint/compare/v0.83.8...v0.84.0) --- updated-dependencies: - dependency-name: cfn-lint dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> --- requirements/base.txt | 2 +- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 9252bf374e3..ce1457ae45e 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -28,7 +28,7 @@ regex!=2021.10.8 tzlocal==5.2 #Adding cfn-lint dependency for SAM validate -cfn-lint~=0.83.8 +cfn-lint~=0.84.0 # Type checking boto3 objects boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.19 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 91ff374bd1c..2be91d077ef 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -118,9 +118,9 @@ cffi==1.16.0 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 # via cryptography -cfn-lint==0.83.8 \ - --hash=sha256:e53b81095e21f0be76de9dc303ddc0290a5eb1ef78173cf3cbc1b6cce9b2dd22 \ - --hash=sha256:fbbe31925d78cb9373b160d944ba30cafc085dcd256a3c30139004ef96482154 +cfn-lint==0.84.0 \ + --hash=sha256:1bf18bca82c6666fd204a265a203bd307816e8d31fe476301b105c5370e306e5 \ + --hash=sha256:7a819ffa48ab23f775037ddb0d9330ba206d547439f69bc72f76f1183d8bc124 # via aws-sam-cli (setup.py) chardet==5.2.0 \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 065fffe0c54..becc5898849 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -136,9 +136,9 @@ cffi==1.16.0 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 # via cryptography -cfn-lint==0.83.8 \ - --hash=sha256:e53b81095e21f0be76de9dc303ddc0290a5eb1ef78173cf3cbc1b6cce9b2dd22 \ - --hash=sha256:fbbe31925d78cb9373b160d944ba30cafc085dcd256a3c30139004ef96482154 +cfn-lint==0.84.0 \ + --hash=sha256:1bf18bca82c6666fd204a265a203bd307816e8d31fe476301b105c5370e306e5 \ + --hash=sha256:7a819ffa48ab23f775037ddb0d9330ba206d547439f69bc72f76f1183d8bc124 # via aws-sam-cli (setup.py) chardet==5.2.0 \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 5ec6a1e211f..b04e8aff0df 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -118,9 +118,9 @@ cffi==1.16.0 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 # via cryptography -cfn-lint==0.83.8 \ - --hash=sha256:e53b81095e21f0be76de9dc303ddc0290a5eb1ef78173cf3cbc1b6cce9b2dd22 \ - --hash=sha256:fbbe31925d78cb9373b160d944ba30cafc085dcd256a3c30139004ef96482154 +cfn-lint==0.84.0 \ + --hash=sha256:1bf18bca82c6666fd204a265a203bd307816e8d31fe476301b105c5370e306e5 \ + --hash=sha256:7a819ffa48ab23f775037ddb0d9330ba206d547439f69bc72f76f1183d8bc124 # via aws-sam-cli (setup.py) chardet==5.2.0 \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ From 7b851cd6546e8cdbde4b3366662649623f4b94a4 Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Fri, 19 Jan 2024 12:55:29 -0800 Subject: [PATCH 064/100] fix: Add check for resolving symlinks when host_dir does not exist (#6580) * Add check when host_dir does not exist * Remove unused code in unit test --- samcli/local/docker/container.py | 6 +++++- tests/unit/local/docker/test_container.py | 13 +++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/samcli/local/docker/container.py b/samcli/local/docker/container.py index 239c92fcea8..1497475f18a 100644 --- a/samcli/local/docker/container.py +++ b/samcli/local/docker/container.py @@ -251,7 +251,11 @@ def _create_mapped_symlink_files(self) -> Dict[str, Dict[str, str]]: on the container """ mount_mode = "ro,delegated" - additional_volumes = {} + additional_volumes: Dict[str, Dict[str, str]] = {} + + if not pathlib.Path(self._host_dir).exists(): + LOG.debug("Host directory not found, skip resolving symlinks") + return additional_volumes with os.scandir(self._host_dir) as directory_iterator: for file in directory_iterator: diff --git a/tests/unit/local/docker/test_container.py b/tests/unit/local/docker/test_container.py index ddf02f91e32..84003e9e0b9 100644 --- a/tests/unit/local/docker/test_container.py +++ b/tests/unit/local/docker/test_container.py @@ -1045,7 +1045,7 @@ def test_real_container_is_running_return_true(self): class TestContainer_create_mapped_symlink_files(TestCase): def setUp(self): - self.container = Container(Mock(), Mock(), Mock(), Mock(), docker_client=Mock()) + self.container = Container(Mock(), Mock(), Mock(), "host_dir", docker_client=Mock()) self.mock_symlinked_file = MagicMock() self.mock_symlinked_file.is_symlink.return_value = True @@ -1053,12 +1053,21 @@ def setUp(self): self.mock_regular_file = MagicMock() self.mock_regular_file.is_symlink.return_value = False + @patch("samcli.local.docker.container.pathlib.Path.exists") @patch("samcli.local.docker.container.os.scandir") - def test_no_symlinks_returns_empty(self, mock_scandir): + def test_no_symlinks_returns_empty(self, mock_scandir, mock_exists): mock_context = MagicMock() mock_context.__enter__ = Mock(return_value=[self.mock_regular_file]) mock_scandir.return_value = mock_context + mock_exists.return_value = True + + volumes = self.container._create_mapped_symlink_files() + self.assertEqual(volumes, {}) + + @patch("samcli.local.docker.container.pathlib.Path.exists") + def test_host_dir_does_not_exist_returns_empty_symlinks(self, mock_exists): + mock_exists.return_value = False volumes = self.container._create_mapped_symlink_files() self.assertEqual(volumes, {}) From 90497b27cde75afc23a70c1104863208c6630153 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Jan 2024 22:33:12 +0000 Subject: [PATCH 065/100] chore(deps): bump the boto group in /requirements with 4 updates (#6578) Bumps the boto group in /requirements with 4 updates: [boto3](https://github.com/boto/boto3), [boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]](https://github.com/youtype/mypy_boto3_builder), [botocore](https://github.com/boto/botocore) and [botocore-stubs](https://github.com/youtype/botocore-stubs). Updates `boto3` from 1.34.19 to 1.34.22 - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.34.19...1.34.22) Updates `boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]` from 1.34.19 to 1.34.22 - [Release notes](https://github.com/youtype/mypy_boto3_builder/releases) - [Commits](https://github.com/youtype/mypy_boto3_builder/commits) Updates `botocore` from 1.34.19 to 1.34.22 - [Changelog](https://github.com/boto/botocore/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/botocore/compare/1.34.19...1.34.22) Updates `botocore-stubs` from 1.34.19 to 1.34.22 - [Release notes](https://github.com/youtype/botocore-stubs/releases) - [Commits](https://github.com/youtype/botocore-stubs/commits) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray] dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: botocore dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: botocore-stubs dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> --- requirements/base.txt | 2 +- requirements/reproducible-linux.txt | 24 ++++++++++++------------ requirements/reproducible-mac.txt | 24 ++++++++++++------------ requirements/reproducible-win.txt | 24 ++++++++++++------------ 4 files changed, 37 insertions(+), 37 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index ce1457ae45e..c1d33beca38 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -31,4 +31,4 @@ tzlocal==5.2 cfn-lint~=0.84.0 # Type checking boto3 objects -boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.19 +boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.22 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 2be91d077ef..53c8acc4c1c 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -38,27 +38,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.19 \ - --hash=sha256:4c76ef92af7dbdcea21b196a2699671e82e8814d4cfe570c48eda477dd1aeb19 \ - --hash=sha256:95d2c2bde86a0934d4c461020c50fc1344b444f167654e215f1de549bc77fc0f +boto3==1.34.22 \ + --hash=sha256:5909cd1393143576265c692e908a9ae495492c04a0ffd4bae8578adc2e44729e \ + --hash=sha256:a98c0b86f6044ff8314cc2361e1ef574d674318313ab5606ccb4a6651c7a3f8c # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.19 \ - --hash=sha256:6651e6ddd0c5cdd77393432e517301096b646aeeea3ade5c305960817dc46aa1 \ - --hash=sha256:67fe5a2fb1d1b2c534fa31c543b773edbc01ce9528010d9cc0ef9c5044aa218a +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.22 \ + --hash=sha256:1ec434a9daac3b6a4a053fb2991118db0c3bd7057e1d81d81d9192703c501570 \ + --hash=sha256:9a43ed735f6552d07d7ef2a4d50a6057fa5b62d35a1781656251c2778d7f6d58 # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.19 \ - --hash=sha256:64352b2f05de5c6ab025c1d5232880c22775356dcc5a53d798a6f65db847e826 \ - --hash=sha256:a4a39c7092960f5da2439efc5f6220730dab634aaff4c1444bbd1dfa43bc28cc +botocore==1.34.22 \ + --hash=sha256:c47ba4286c576150d1b6ca6df69a87b5deff3d23bd84da8bcf8431ebac3c40ba \ + --hash=sha256:e5f7775975b9213507fbcf846a96b7a2aec2a44fc12a44585197b014a4ab0889 # via # boto3 # s3transfer -botocore-stubs==1.34.19 \ - --hash=sha256:141b6727a7258fc16826f21c7369ca7d38a83848a03ae13fe50c4d1e677a7545 \ - --hash=sha256:dd1bff75bfe0a64e6704a8d74e80f94a1978d58cb2810f7549fa1c83ac8e458c +botocore-stubs==1.34.22 \ + --hash=sha256:d6c05d3906e6d291ccd7d8c5feb427f971b71d489072c62a3b8191533bdc4d03 \ + --hash=sha256:e696cbdcf40cf89fb21a21e00f37a58c20dbe1422b8b7f745291a48686439d1f # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index becc5898849..f4c322beeb9 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -56,27 +56,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.19 \ - --hash=sha256:4c76ef92af7dbdcea21b196a2699671e82e8814d4cfe570c48eda477dd1aeb19 \ - --hash=sha256:95d2c2bde86a0934d4c461020c50fc1344b444f167654e215f1de549bc77fc0f +boto3==1.34.22 \ + --hash=sha256:5909cd1393143576265c692e908a9ae495492c04a0ffd4bae8578adc2e44729e \ + --hash=sha256:a98c0b86f6044ff8314cc2361e1ef574d674318313ab5606ccb4a6651c7a3f8c # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.19 \ - --hash=sha256:6651e6ddd0c5cdd77393432e517301096b646aeeea3ade5c305960817dc46aa1 \ - --hash=sha256:67fe5a2fb1d1b2c534fa31c543b773edbc01ce9528010d9cc0ef9c5044aa218a +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.22 \ + --hash=sha256:1ec434a9daac3b6a4a053fb2991118db0c3bd7057e1d81d81d9192703c501570 \ + --hash=sha256:9a43ed735f6552d07d7ef2a4d50a6057fa5b62d35a1781656251c2778d7f6d58 # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.19 \ - --hash=sha256:64352b2f05de5c6ab025c1d5232880c22775356dcc5a53d798a6f65db847e826 \ - --hash=sha256:a4a39c7092960f5da2439efc5f6220730dab634aaff4c1444bbd1dfa43bc28cc +botocore==1.34.22 \ + --hash=sha256:c47ba4286c576150d1b6ca6df69a87b5deff3d23bd84da8bcf8431ebac3c40ba \ + --hash=sha256:e5f7775975b9213507fbcf846a96b7a2aec2a44fc12a44585197b014a4ab0889 # via # boto3 # s3transfer -botocore-stubs==1.34.19 \ - --hash=sha256:141b6727a7258fc16826f21c7369ca7d38a83848a03ae13fe50c4d1e677a7545 \ - --hash=sha256:dd1bff75bfe0a64e6704a8d74e80f94a1978d58cb2810f7549fa1c83ac8e458c +botocore-stubs==1.34.22 \ + --hash=sha256:d6c05d3906e6d291ccd7d8c5feb427f971b71d489072c62a3b8191533bdc4d03 \ + --hash=sha256:e696cbdcf40cf89fb21a21e00f37a58c20dbe1422b8b7f745291a48686439d1f # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index b04e8aff0df..5932633a5a9 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -38,27 +38,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.19 \ - --hash=sha256:4c76ef92af7dbdcea21b196a2699671e82e8814d4cfe570c48eda477dd1aeb19 \ - --hash=sha256:95d2c2bde86a0934d4c461020c50fc1344b444f167654e215f1de549bc77fc0f +boto3==1.34.22 \ + --hash=sha256:5909cd1393143576265c692e908a9ae495492c04a0ffd4bae8578adc2e44729e \ + --hash=sha256:a98c0b86f6044ff8314cc2361e1ef574d674318313ab5606ccb4a6651c7a3f8c # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.19 \ - --hash=sha256:6651e6ddd0c5cdd77393432e517301096b646aeeea3ade5c305960817dc46aa1 \ - --hash=sha256:67fe5a2fb1d1b2c534fa31c543b773edbc01ce9528010d9cc0ef9c5044aa218a +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.22 \ + --hash=sha256:1ec434a9daac3b6a4a053fb2991118db0c3bd7057e1d81d81d9192703c501570 \ + --hash=sha256:9a43ed735f6552d07d7ef2a4d50a6057fa5b62d35a1781656251c2778d7f6d58 # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.19 \ - --hash=sha256:64352b2f05de5c6ab025c1d5232880c22775356dcc5a53d798a6f65db847e826 \ - --hash=sha256:a4a39c7092960f5da2439efc5f6220730dab634aaff4c1444bbd1dfa43bc28cc +botocore==1.34.22 \ + --hash=sha256:c47ba4286c576150d1b6ca6df69a87b5deff3d23bd84da8bcf8431ebac3c40ba \ + --hash=sha256:e5f7775975b9213507fbcf846a96b7a2aec2a44fc12a44585197b014a4ab0889 # via # boto3 # s3transfer -botocore-stubs==1.34.19 \ - --hash=sha256:141b6727a7258fc16826f21c7369ca7d38a83848a03ae13fe50c4d1e677a7545 \ - --hash=sha256:dd1bff75bfe0a64e6704a8d74e80f94a1978d58cb2810f7549fa1c83ac8e458c +botocore-stubs==1.34.22 \ + --hash=sha256:d6c05d3906e6d291ccd7d8c5feb427f971b71d489072c62a3b8191533bdc4d03 \ + --hash=sha256:e696cbdcf40cf89fb21a21e00f37a58c20dbe1422b8b7f745291a48686439d1f # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ From f999c53f71412e7f6be7632646ba0cd8024faf4a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Jan 2024 22:33:14 +0000 Subject: [PATCH 066/100] chore(deps-dev): bump the types group in /requirements with 1 update (#6571) Bumps the types group in /requirements with 1 update: [types-jsonschema](https://github.com/python/typeshed). Updates `types-jsonschema` from 4.20.0.20240105 to 4.21.0.20240118 - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-jsonschema dependency-type: direct:development update-type: version-update:semver-minor dependency-group: types ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> --- requirements/dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index bce71c7e073..44c68255eb4 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -17,7 +17,7 @@ types-Pygments==2.17.0.20240106 types-colorama==0.4.15.20240106 types-dateparser==1.1.4.20240106 types-docutils==0.20.0.20240106 -types-jsonschema==4.20.0.20240105 +types-jsonschema==4.21.0.20240118 types-pyOpenSSL==23.3.0.20240106 # as of types-requests>=2.31.0.7, this now requires `urllib3>2`, pin we are able to upgrade types-requests==2.31.0.6 From b5b5852cceebac8d66849e6afdfa33e7cb57e7dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Jan 2024 22:37:40 +0000 Subject: [PATCH 067/100] chore(deps): bump jsonschema from 4.20.0 to 4.21.0 in /requirements (#6565) Bumps [jsonschema](https://github.com/python-jsonschema/jsonschema) from 4.20.0 to 4.21.0. - [Release notes](https://github.com/python-jsonschema/jsonschema/releases) - [Changelog](https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst) - [Commits](https://github.com/python-jsonschema/jsonschema/compare/v4.20.0...v4.21.0) --- updated-dependencies: - dependency-name: jsonschema dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> --- requirements/base.txt | 2 +- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index c1d33beca38..e1c92a159de 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -17,7 +17,7 @@ watchdog==3.0.0 rich~=13.7.0 pyopenssl~=23.3.0 # Pin to <4.18 to until SAM-T no longer uses RefResolver -jsonschema<4.21 +jsonschema<4.22 # Needed for supporting Protocol in Python 3.7, Protocol class became public with python3.8 typing_extensions>=4.4.0,<5 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 53c8acc4c1c..d797307f237 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -307,9 +307,9 @@ jsonpointer==2.4 \ --hash=sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a \ --hash=sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88 # via jsonpatch -jsonschema==4.20.0 \ - --hash=sha256:4f614fd46d8d61258610998997743ec5492a648b33cf478c1ddc23ed4598a5fa \ - --hash=sha256:ed6231f0429ecf966f5bc8dfef245998220549cbbcf140f913b7464c52c3b6b3 +jsonschema==4.21.0 \ + --hash=sha256:3ba18e27f7491ea4a1b22edce00fb820eec968d397feb3f9cb61d5894bb38167 \ + --hash=sha256:70a09719d375c0a2874571b363c8a24be7df8071b80c9aa76bc4551e7297c63c # via # aws-sam-cli (setup.py) # aws-sam-translator diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index f4c322beeb9..abab4229734 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -335,9 +335,9 @@ jsonpointer==2.4 \ --hash=sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a \ --hash=sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88 # via jsonpatch -jsonschema==4.20.0 \ - --hash=sha256:4f614fd46d8d61258610998997743ec5492a648b33cf478c1ddc23ed4598a5fa \ - --hash=sha256:ed6231f0429ecf966f5bc8dfef245998220549cbbcf140f913b7464c52c3b6b3 +jsonschema==4.21.0 \ + --hash=sha256:3ba18e27f7491ea4a1b22edce00fb820eec968d397feb3f9cb61d5894bb38167 \ + --hash=sha256:70a09719d375c0a2874571b363c8a24be7df8071b80c9aa76bc4551e7297c63c # via # aws-sam-cli (setup.py) # aws-sam-translator diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 5932633a5a9..dff161ffe29 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -311,9 +311,9 @@ jsonpointer==2.4 \ --hash=sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a \ --hash=sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88 # via jsonpatch -jsonschema==4.20.0 \ - --hash=sha256:4f614fd46d8d61258610998997743ec5492a648b33cf478c1ddc23ed4598a5fa \ - --hash=sha256:ed6231f0429ecf966f5bc8dfef245998220549cbbcf140f913b7464c52c3b6b3 +jsonschema==4.21.0 \ + --hash=sha256:3ba18e27f7491ea4a1b22edce00fb820eec968d397feb3f9cb61d5894bb38167 \ + --hash=sha256:70a09719d375c0a2874571b363c8a24be7df8071b80c9aa76bc4551e7297c63c # via # aws-sam-cli (setup.py) # aws-sam-translator From ed6afbe2168a3b17f2b00c2d24b48a318c94f87d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 23 Jan 2024 09:34:01 -0800 Subject: [PATCH 068/100] feat: updating app templates repo hash with (1771a829b73a160b921801361f6a309f4a873dcb) (#6594) Co-authored-by: GitHub Action --- samcli/runtime_config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samcli/runtime_config.json b/samcli/runtime_config.json index ebabaea046c..6f85bec2cc3 100644 --- a/samcli/runtime_config.json +++ b/samcli/runtime_config.json @@ -1,3 +1,3 @@ { - "app_template_repo_commit": "7f9ce9837a548980ad3420c693c486a5f96c4039" + "app_template_repo_commit": "1771a829b73a160b921801361f6a309f4a873dcb" } From 75862c906bc1d18e1d75ca323be6a17e28576e8f Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Tue, 23 Jan 2024 09:34:27 -0800 Subject: [PATCH 069/100] chore: bump version to 1.108 (#6598) --- samcli/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samcli/__init__.py b/samcli/__init__.py index 387b323a8e3..3fefdee9863 100644 --- a/samcli/__init__.py +++ b/samcli/__init__.py @@ -2,4 +2,4 @@ SAM CLI version """ -__version__ = "1.107.0" +__version__ = "1.108.0" From 5dedfbb2af6a7de96c9ef10b98f1b9a167379832 Mon Sep 17 00:00:00 2001 From: Jared Bentvelsen Date: Thu, 25 Jan 2024 15:31:32 -0800 Subject: [PATCH 070/100] Add logging for files pulled from S3 + enable RIE debug for flaky test (#6604) * Add logging for files pulled from S3 + enable RIE debug for this test only * Formatting * Fix location of RIE debug env variable to correct test * Minor fixes * Formatting --------- Co-authored-by: Jared Bentvelsen --- tests/end_to_end/test_runtimes_e2e.py | 2 ++ tests/end_to_end/test_stages.py | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/tests/end_to_end/test_runtimes_e2e.py b/tests/end_to_end/test_runtimes_e2e.py index 23be10e3923..84670913b5a 100644 --- a/tests/end_to_end/test_runtimes_e2e.py +++ b/tests/end_to_end/test_runtimes_e2e.py @@ -115,6 +115,7 @@ class TestHelloWorldZipPackagePermissionsEndToEnd(EndToEndBase): app_template = "hello-world" def test_hello_world_workflow(self): + os.environ["SAM_CLI_RIE_DEV"] = "1" function_name = "HelloWorldFunction" with EndToEndTestContext(self.app_name) as e2e_context: self.template_path = e2e_context.template_path @@ -133,6 +134,7 @@ def test_hello_world_workflow(self): EndToEndBaseStage(LocalInvokeValidator(e2e_context), e2e_context, local_command_list), ] self._run_tests(stages) + os.environ.pop("SAM_CLI_RIE_DEV", None) @skipIf(SKIP_E2E_TESTS, "Skip E2E tests in CI/CD only") diff --git a/tests/end_to_end/test_stages.py b/tests/end_to_end/test_stages.py index f4056063311..c24af1826aa 100644 --- a/tests/end_to_end/test_stages.py +++ b/tests/end_to_end/test_stages.py @@ -2,6 +2,7 @@ from unittest import TestCase +import logging import boto3 import zipfile import json @@ -16,6 +17,8 @@ from tests.end_to_end.end_to_end_context import EndToEndTestContext from tests.testing_utils import CommandResult, run_command, run_command_with_input +LOG = logging.getLogger(__name__) + class BaseValidator(TestCase): def __init__(self, test_context: EndToEndTestContext): @@ -109,6 +112,12 @@ def _download_packaged_file(self): with zipfile.ZipFile(zip_file_path, "r") as zip_refzip: zip_refzip.extractall(path=built_function_path) + file_list = zip_refzip.namelist() + + for extracted_file in file_list: + permission_mask = oct(os.stat(os.path.join(built_function_path, extracted_file)).st_mode)[-3:] + LOG.info("Extracted file %s, with permission mask %s", extracted_file, permission_mask) + class DefaultSyncStage(EndToEndBaseStage): def run_stage(self) -> CommandResult: From f2c7fccb4d1eb85e0152d39917a2152516a9abcb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 19:14:34 +0000 Subject: [PATCH 071/100] chore(deps-dev): bump ruff from 0.1.13 to 0.1.14 in /requirements (#6590) Bumps [ruff](https://github.com/astral-sh/ruff) from 0.1.13 to 0.1.14. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/v0.1.13...v0.1.14) --- updated-dependencies: - dependency-name: ruff dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com> Co-authored-by: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> --- requirements/pre-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/pre-dev.txt b/requirements/pre-dev.txt index 9918295202f..d6cc8ef5512 100644 --- a/requirements/pre-dev.txt +++ b/requirements/pre-dev.txt @@ -1 +1 @@ -ruff==0.1.13 +ruff==0.1.14 From b442b1123213417243d25c160368bf28c57c3529 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 19:15:39 +0000 Subject: [PATCH 072/100] chore(deps): bump markupsafe from 2.1.3 to 2.1.4 in /requirements (#6588) Bumps [markupsafe](https://github.com/pallets/markupsafe) from 2.1.3 to 2.1.4. - [Release notes](https://github.com/pallets/markupsafe/releases) - [Changelog](https://github.com/pallets/markupsafe/blob/main/CHANGES.rst) - [Commits](https://github.com/pallets/markupsafe/compare/2.1.3...2.1.4) --- updated-dependencies: - dependency-name: markupsafe dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> --- requirements/reproducible-linux.txt | 112 +++++++++++++++------------- requirements/reproducible-mac.txt | 112 +++++++++++++++------------- requirements/reproducible-win.txt | 112 +++++++++++++++------------- 3 files changed, 183 insertions(+), 153 deletions(-) diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index d797307f237..7ffcd53ba47 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -326,57 +326,67 @@ markdown-it-py==3.0.0 \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb # via rich -markupsafe==2.1.3 \ - --hash=sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e \ - --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ - --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ - --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \ - --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \ - --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \ - --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \ - --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \ - --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \ - --hash=sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9 \ - --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \ - --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \ - --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \ - --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \ - --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \ - --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \ - --hash=sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac \ - --hash=sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52 \ - --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \ - --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \ - --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \ - --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \ - --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \ - --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \ - --hash=sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0 \ - --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \ - --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \ - --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \ - --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \ - --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \ - --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \ - --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \ - --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \ - --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \ - --hash=sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad \ - --hash=sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee \ - --hash=sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc \ - --hash=sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2 \ - --hash=sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48 \ - --hash=sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7 \ - --hash=sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e \ - --hash=sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b \ - --hash=sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa \ - --hash=sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5 \ - --hash=sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e \ - --hash=sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb \ - --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \ - --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ - --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ - --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 +markupsafe==2.1.4 \ + --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ + --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ + --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ + --hash=sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec \ + --hash=sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5 \ + --hash=sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411 \ + --hash=sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3 \ + --hash=sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74 \ + --hash=sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0 \ + --hash=sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949 \ + --hash=sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d \ + --hash=sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279 \ + --hash=sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f \ + --hash=sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6 \ + --hash=sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc \ + --hash=sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e \ + --hash=sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954 \ + --hash=sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656 \ + --hash=sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc \ + --hash=sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518 \ + --hash=sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56 \ + --hash=sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc \ + --hash=sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa \ + --hash=sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565 \ + --hash=sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4 \ + --hash=sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb \ + --hash=sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250 \ + --hash=sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4 \ + --hash=sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959 \ + --hash=sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc \ + --hash=sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474 \ + --hash=sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863 \ + --hash=sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8 \ + --hash=sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f \ + --hash=sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2 \ + --hash=sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e \ + --hash=sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e \ + --hash=sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb \ + --hash=sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f \ + --hash=sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a \ + --hash=sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26 \ + --hash=sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d \ + --hash=sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2 \ + --hash=sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131 \ + --hash=sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789 \ + --hash=sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6 \ + --hash=sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a \ + --hash=sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858 \ + --hash=sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e \ + --hash=sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb \ + --hash=sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e \ + --hash=sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84 \ + --hash=sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7 \ + --hash=sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea \ + --hash=sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b \ + --hash=sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6 \ + --hash=sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475 \ + --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ + --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ + --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 # via # jinja2 # werkzeug diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index abab4229734..cbec1a2c9b2 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -354,57 +354,67 @@ markdown-it-py==3.0.0 \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb # via rich -markupsafe==2.1.3 \ - --hash=sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e \ - --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ - --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ - --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \ - --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \ - --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \ - --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \ - --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \ - --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \ - --hash=sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9 \ - --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \ - --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \ - --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \ - --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \ - --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \ - --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \ - --hash=sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac \ - --hash=sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52 \ - --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \ - --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \ - --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \ - --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \ - --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \ - --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \ - --hash=sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0 \ - --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \ - --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \ - --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \ - --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \ - --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \ - --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \ - --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \ - --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \ - --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \ - --hash=sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad \ - --hash=sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee \ - --hash=sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc \ - --hash=sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2 \ - --hash=sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48 \ - --hash=sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7 \ - --hash=sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e \ - --hash=sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b \ - --hash=sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa \ - --hash=sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5 \ - --hash=sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e \ - --hash=sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb \ - --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \ - --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ - --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ - --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 +markupsafe==2.1.4 \ + --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ + --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ + --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ + --hash=sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec \ + --hash=sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5 \ + --hash=sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411 \ + --hash=sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3 \ + --hash=sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74 \ + --hash=sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0 \ + --hash=sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949 \ + --hash=sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d \ + --hash=sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279 \ + --hash=sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f \ + --hash=sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6 \ + --hash=sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc \ + --hash=sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e \ + --hash=sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954 \ + --hash=sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656 \ + --hash=sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc \ + --hash=sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518 \ + --hash=sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56 \ + --hash=sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc \ + --hash=sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa \ + --hash=sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565 \ + --hash=sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4 \ + --hash=sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb \ + --hash=sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250 \ + --hash=sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4 \ + --hash=sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959 \ + --hash=sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc \ + --hash=sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474 \ + --hash=sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863 \ + --hash=sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8 \ + --hash=sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f \ + --hash=sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2 \ + --hash=sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e \ + --hash=sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e \ + --hash=sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb \ + --hash=sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f \ + --hash=sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a \ + --hash=sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26 \ + --hash=sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d \ + --hash=sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2 \ + --hash=sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131 \ + --hash=sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789 \ + --hash=sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6 \ + --hash=sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a \ + --hash=sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858 \ + --hash=sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e \ + --hash=sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb \ + --hash=sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e \ + --hash=sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84 \ + --hash=sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7 \ + --hash=sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea \ + --hash=sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b \ + --hash=sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6 \ + --hash=sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475 \ + --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ + --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ + --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 # via # jinja2 # werkzeug diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index dff161ffe29..a59415a45a6 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -330,57 +330,67 @@ markdown-it-py==3.0.0 \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb # via rich -markupsafe==2.1.3 \ - --hash=sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e \ - --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ - --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ - --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \ - --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \ - --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \ - --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \ - --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \ - --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \ - --hash=sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9 \ - --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \ - --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \ - --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \ - --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \ - --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \ - --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \ - --hash=sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac \ - --hash=sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52 \ - --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \ - --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \ - --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \ - --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \ - --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \ - --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \ - --hash=sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0 \ - --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \ - --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \ - --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \ - --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \ - --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \ - --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \ - --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \ - --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \ - --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \ - --hash=sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad \ - --hash=sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee \ - --hash=sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc \ - --hash=sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2 \ - --hash=sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48 \ - --hash=sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7 \ - --hash=sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e \ - --hash=sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b \ - --hash=sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa \ - --hash=sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5 \ - --hash=sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e \ - --hash=sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb \ - --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \ - --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ - --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ - --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 +markupsafe==2.1.4 \ + --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ + --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ + --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ + --hash=sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec \ + --hash=sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5 \ + --hash=sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411 \ + --hash=sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3 \ + --hash=sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74 \ + --hash=sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0 \ + --hash=sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949 \ + --hash=sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d \ + --hash=sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279 \ + --hash=sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f \ + --hash=sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6 \ + --hash=sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc \ + --hash=sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e \ + --hash=sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954 \ + --hash=sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656 \ + --hash=sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc \ + --hash=sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518 \ + --hash=sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56 \ + --hash=sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc \ + --hash=sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa \ + --hash=sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565 \ + --hash=sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4 \ + --hash=sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb \ + --hash=sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250 \ + --hash=sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4 \ + --hash=sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959 \ + --hash=sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc \ + --hash=sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474 \ + --hash=sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863 \ + --hash=sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8 \ + --hash=sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f \ + --hash=sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2 \ + --hash=sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e \ + --hash=sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e \ + --hash=sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb \ + --hash=sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f \ + --hash=sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a \ + --hash=sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26 \ + --hash=sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d \ + --hash=sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2 \ + --hash=sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131 \ + --hash=sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789 \ + --hash=sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6 \ + --hash=sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a \ + --hash=sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858 \ + --hash=sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e \ + --hash=sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb \ + --hash=sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e \ + --hash=sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84 \ + --hash=sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7 \ + --hash=sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea \ + --hash=sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b \ + --hash=sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6 \ + --hash=sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475 \ + --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ + --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ + --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 # via # jinja2 # werkzeug From c145cb5948fbb638d52743a156a9d2fb31d65c6f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 19:31:57 +0000 Subject: [PATCH 073/100] chore(deps): bump the boto group in /requirements with 4 updates (#6609) Bumps the boto group in /requirements with 4 updates: [boto3](https://github.com/boto/boto3), [boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]](https://github.com/youtype/mypy_boto3_builder), [botocore](https://github.com/boto/botocore) and [botocore-stubs](https://github.com/youtype/botocore-stubs). Updates `boto3` from 1.34.22 to 1.34.29 - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.34.22...1.34.29) Updates `boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]` from 1.34.22 to 1.34.29 - [Release notes](https://github.com/youtype/mypy_boto3_builder/releases) - [Commits](https://github.com/youtype/mypy_boto3_builder/commits) Updates `botocore` from 1.34.22 to 1.34.29 - [Changelog](https://github.com/boto/botocore/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/botocore/compare/1.34.22...1.34.29) Updates `botocore-stubs` from 1.34.22 to 1.34.29 - [Release notes](https://github.com/youtype/botocore-stubs/releases) - [Commits](https://github.com/youtype/botocore-stubs/commits) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray] dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: botocore dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: botocore-stubs dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/base.txt | 2 +- requirements/reproducible-linux.txt | 24 ++++++++++++------------ requirements/reproducible-mac.txt | 24 ++++++++++++------------ requirements/reproducible-win.txt | 24 ++++++++++++------------ 4 files changed, 37 insertions(+), 37 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index e1c92a159de..874ee7f3493 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -31,4 +31,4 @@ tzlocal==5.2 cfn-lint~=0.84.0 # Type checking boto3 objects -boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.22 +boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.29 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 7ffcd53ba47..9ccefe48e6f 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -38,27 +38,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.22 \ - --hash=sha256:5909cd1393143576265c692e908a9ae495492c04a0ffd4bae8578adc2e44729e \ - --hash=sha256:a98c0b86f6044ff8314cc2361e1ef574d674318313ab5606ccb4a6651c7a3f8c +boto3==1.34.29 \ + --hash=sha256:34b2b404bd2bec869ec2fc6aeeeeb884c72a9b895e2c7716b95381ab8deb9069 \ + --hash=sha256:50776db195a73533f4f2c9d000c69f9d0e9fb9810f9f81584adc283e9516ad0d # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.22 \ - --hash=sha256:1ec434a9daac3b6a4a053fb2991118db0c3bd7057e1d81d81d9192703c501570 \ - --hash=sha256:9a43ed735f6552d07d7ef2a4d50a6057fa5b62d35a1781656251c2778d7f6d58 +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.29 \ + --hash=sha256:4a4bc5d239c0cb04f4065410abbcf87a7caa973c46bddc1e8c947c9a72860a2b \ + --hash=sha256:e3c68cd0f01c17d5090aafcf1c7bb2d7b94aee4e3a9cd45af8bf9dd882ef644c # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.22 \ - --hash=sha256:c47ba4286c576150d1b6ca6df69a87b5deff3d23bd84da8bcf8431ebac3c40ba \ - --hash=sha256:e5f7775975b9213507fbcf846a96b7a2aec2a44fc12a44585197b014a4ab0889 +botocore==1.34.29 \ + --hash=sha256:34223fdb8ebd47d1fce5724bb1bcb164e81853ea9ca532b50639c749fc347458 \ + --hash=sha256:44d918b91a1c1085d99266f8bf6ecc087c8a73a8efbb8e829f0c2dcd1ddf9963 # via # boto3 # s3transfer -botocore-stubs==1.34.22 \ - --hash=sha256:d6c05d3906e6d291ccd7d8c5feb427f971b71d489072c62a3b8191533bdc4d03 \ - --hash=sha256:e696cbdcf40cf89fb21a21e00f37a58c20dbe1422b8b7f745291a48686439d1f +botocore-stubs==1.34.29 \ + --hash=sha256:3cc8db71b7d8aec8c6d13bc84cecec18d64cb142311e1bd060d673cb556d913b \ + --hash=sha256:9a1ff594b59a426df02bc2c9916e17c7cb600c78c77500a5635d67851492aeb5 # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index cbec1a2c9b2..6f4668f2ec7 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -56,27 +56,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.22 \ - --hash=sha256:5909cd1393143576265c692e908a9ae495492c04a0ffd4bae8578adc2e44729e \ - --hash=sha256:a98c0b86f6044ff8314cc2361e1ef574d674318313ab5606ccb4a6651c7a3f8c +boto3==1.34.29 \ + --hash=sha256:34b2b404bd2bec869ec2fc6aeeeeb884c72a9b895e2c7716b95381ab8deb9069 \ + --hash=sha256:50776db195a73533f4f2c9d000c69f9d0e9fb9810f9f81584adc283e9516ad0d # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.22 \ - --hash=sha256:1ec434a9daac3b6a4a053fb2991118db0c3bd7057e1d81d81d9192703c501570 \ - --hash=sha256:9a43ed735f6552d07d7ef2a4d50a6057fa5b62d35a1781656251c2778d7f6d58 +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.29 \ + --hash=sha256:4a4bc5d239c0cb04f4065410abbcf87a7caa973c46bddc1e8c947c9a72860a2b \ + --hash=sha256:e3c68cd0f01c17d5090aafcf1c7bb2d7b94aee4e3a9cd45af8bf9dd882ef644c # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.22 \ - --hash=sha256:c47ba4286c576150d1b6ca6df69a87b5deff3d23bd84da8bcf8431ebac3c40ba \ - --hash=sha256:e5f7775975b9213507fbcf846a96b7a2aec2a44fc12a44585197b014a4ab0889 +botocore==1.34.29 \ + --hash=sha256:34223fdb8ebd47d1fce5724bb1bcb164e81853ea9ca532b50639c749fc347458 \ + --hash=sha256:44d918b91a1c1085d99266f8bf6ecc087c8a73a8efbb8e829f0c2dcd1ddf9963 # via # boto3 # s3transfer -botocore-stubs==1.34.22 \ - --hash=sha256:d6c05d3906e6d291ccd7d8c5feb427f971b71d489072c62a3b8191533bdc4d03 \ - --hash=sha256:e696cbdcf40cf89fb21a21e00f37a58c20dbe1422b8b7f745291a48686439d1f +botocore-stubs==1.34.29 \ + --hash=sha256:3cc8db71b7d8aec8c6d13bc84cecec18d64cb142311e1bd060d673cb556d913b \ + --hash=sha256:9a1ff594b59a426df02bc2c9916e17c7cb600c78c77500a5635d67851492aeb5 # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index a59415a45a6..dd22628f4e3 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -38,27 +38,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.22 \ - --hash=sha256:5909cd1393143576265c692e908a9ae495492c04a0ffd4bae8578adc2e44729e \ - --hash=sha256:a98c0b86f6044ff8314cc2361e1ef574d674318313ab5606ccb4a6651c7a3f8c +boto3==1.34.29 \ + --hash=sha256:34b2b404bd2bec869ec2fc6aeeeeb884c72a9b895e2c7716b95381ab8deb9069 \ + --hash=sha256:50776db195a73533f4f2c9d000c69f9d0e9fb9810f9f81584adc283e9516ad0d # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.22 \ - --hash=sha256:1ec434a9daac3b6a4a053fb2991118db0c3bd7057e1d81d81d9192703c501570 \ - --hash=sha256:9a43ed735f6552d07d7ef2a4d50a6057fa5b62d35a1781656251c2778d7f6d58 +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.29 \ + --hash=sha256:4a4bc5d239c0cb04f4065410abbcf87a7caa973c46bddc1e8c947c9a72860a2b \ + --hash=sha256:e3c68cd0f01c17d5090aafcf1c7bb2d7b94aee4e3a9cd45af8bf9dd882ef644c # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.22 \ - --hash=sha256:c47ba4286c576150d1b6ca6df69a87b5deff3d23bd84da8bcf8431ebac3c40ba \ - --hash=sha256:e5f7775975b9213507fbcf846a96b7a2aec2a44fc12a44585197b014a4ab0889 +botocore==1.34.29 \ + --hash=sha256:34223fdb8ebd47d1fce5724bb1bcb164e81853ea9ca532b50639c749fc347458 \ + --hash=sha256:44d918b91a1c1085d99266f8bf6ecc087c8a73a8efbb8e829f0c2dcd1ddf9963 # via # boto3 # s3transfer -botocore-stubs==1.34.22 \ - --hash=sha256:d6c05d3906e6d291ccd7d8c5feb427f971b71d489072c62a3b8191533bdc4d03 \ - --hash=sha256:e696cbdcf40cf89fb21a21e00f37a58c20dbe1422b8b7f745291a48686439d1f +botocore-stubs==1.34.29 \ + --hash=sha256:3cc8db71b7d8aec8c6d13bc84cecec18d64cb142311e1bd060d673cb556d913b \ + --hash=sha256:9a1ff594b59a426df02bc2c9916e17c7cb600c78c77500a5635d67851492aeb5 # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ From 759e7a0179a1541a1e793dca5fecd8eb800db034 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 19:32:12 +0000 Subject: [PATCH 074/100] chore(deps): bump the types group in /requirements with 4 updates (#6608) Bumps the types group in /requirements with 4 updates: [types-awscrt](https://github.com/youtype/types-awscrt), [types-pywin32](https://github.com/python/typeshed), [types-setuptools](https://github.com/python/typeshed) and [types-docutils](https://github.com/python/typeshed). Updates `types-awscrt` from 0.20.0 to 0.20.3 - [Release notes](https://github.com/youtype/types-awscrt/releases) - [Commits](https://github.com/youtype/types-awscrt/commits) Updates `types-pywin32` from 306.0.0.20240106 to 306.0.0.20240128 - [Commits](https://github.com/python/typeshed/commits) Updates `types-setuptools` from 69.0.0.20240115 to 69.0.0.20240125 - [Commits](https://github.com/python/typeshed/commits) Updates `types-docutils` from 0.20.0.20240106 to 0.20.0.20240126 - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-awscrt dependency-type: direct:production update-type: version-update:semver-patch dependency-group: types - dependency-name: types-pywin32 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: types - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-patch dependency-group: types - dependency-name: types-docutils dependency-type: direct:development update-type: version-update:semver-patch dependency-group: types ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/dev.txt | 6 +++--- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index 44c68255eb4..e5da8d7a02d 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -8,15 +8,15 @@ pytest-cov==4.1.0 # mypy adds new rules in new minor versions, which could cause our PR check to fail # here we fix its version and upgrade it manually in the future mypy==1.8.0 -types-pywin32==306.0.0.20240106 +types-pywin32==306.0.0.20240128 types-PyYAML==6.0.12.12 types-chevron==0.14.2.20240106 types-psutil==5.9.5.20240106 -types-setuptools==69.0.0.20240115 +types-setuptools==69.0.0.20240125 types-Pygments==2.17.0.20240106 types-colorama==0.4.15.20240106 types-dateparser==1.1.4.20240106 -types-docutils==0.20.0.20240106 +types-docutils==0.20.0.20240126 types-jsonschema==4.21.0.20240118 types-pyOpenSSL==23.3.0.20240106 # as of types-requests>=2.31.0.7, this now requires `urllib3>2`, pin we are able to upgrade diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 9ccefe48e6f..7e1e993d8ed 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -953,9 +953,9 @@ tomlkit==0.12.3 \ --hash=sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4 \ --hash=sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba # via aws-sam-cli (setup.py) -types-awscrt==0.20.0 \ - --hash=sha256:99778c952e1eae10cc7a53468413001177026c9434345bf00120bb2ea5b79109 \ - --hash=sha256:e872b65d041687ec7fb49fb4dcb871ff10ade5efeca02722e037a03bff81db7e +types-awscrt==0.20.3 \ + --hash=sha256:06a859189a329ca8e66d56ceeef2391488e39b878fbd2141f115eab4d416fe22 \ + --hash=sha256:f61a120d3e98ee1387bc5ca4b93437f258cc5c2af1f55f8634ec4cee5729f178 # via botocore-stubs types-python-dateutil==2.8.19.20240106 \ --hash=sha256:1f8db221c3b98e6ca02ea83a58371b22c374f42ae5bbdf186db9c9a76581459f \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 6f4668f2ec7..c44e558a716 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -985,9 +985,9 @@ tomlkit==0.12.3 \ --hash=sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4 \ --hash=sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba # via aws-sam-cli (setup.py) -types-awscrt==0.20.0 \ - --hash=sha256:99778c952e1eae10cc7a53468413001177026c9434345bf00120bb2ea5b79109 \ - --hash=sha256:e872b65d041687ec7fb49fb4dcb871ff10ade5efeca02722e037a03bff81db7e +types-awscrt==0.20.3 \ + --hash=sha256:06a859189a329ca8e66d56ceeef2391488e39b878fbd2141f115eab4d416fe22 \ + --hash=sha256:f61a120d3e98ee1387bc5ca4b93437f258cc5c2af1f55f8634ec4cee5729f178 # via botocore-stubs types-python-dateutil==2.8.19.20240106 \ --hash=sha256:1f8db221c3b98e6ca02ea83a58371b22c374f42ae5bbdf186db9c9a76581459f \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index dd22628f4e3..d61c9993b8e 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -973,9 +973,9 @@ tomlkit==0.12.3 \ --hash=sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4 \ --hash=sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba # via aws-sam-cli (setup.py) -types-awscrt==0.20.0 \ - --hash=sha256:99778c952e1eae10cc7a53468413001177026c9434345bf00120bb2ea5b79109 \ - --hash=sha256:e872b65d041687ec7fb49fb4dcb871ff10ade5efeca02722e037a03bff81db7e +types-awscrt==0.20.3 \ + --hash=sha256:06a859189a329ca8e66d56ceeef2391488e39b878fbd2141f115eab4d416fe22 \ + --hash=sha256:f61a120d3e98ee1387bc5ca4b93437f258cc5c2af1f55f8634ec4cee5729f178 # via botocore-stubs types-python-dateutil==2.8.19.20240106 \ --hash=sha256:1f8db221c3b98e6ca02ea83a58371b22c374f42ae5bbdf186db9c9a76581459f \ From da6eddacf993e9dbc300ec57e0f2ed2b13e49133 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 19:39:16 +0000 Subject: [PATCH 075/100] chore(deps): bump flask from 3.0.0 to 3.0.1 in /requirements (#6577) Bumps [flask](https://github.com/pallets/flask) from 3.0.0 to 3.0.1. - [Release notes](https://github.com/pallets/flask/releases) - [Changelog](https://github.com/pallets/flask/blob/main/CHANGES.rst) - [Commits](https://github.com/pallets/flask/compare/3.0.0...3.0.1) --- updated-dependencies: - dependency-name: flask dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> --- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 7e1e993d8ed..a5d2ff3ce58 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -266,9 +266,9 @@ docker==7.0.0 \ --hash=sha256:12ba681f2777a0ad28ffbcc846a69c31b4dfd9752b47eb425a274ee269c5e14b \ --hash=sha256:323736fb92cd9418fc5e7133bc953e11a9da04f4483f828b527db553f1e7e5a3 # via aws-sam-cli (setup.py) -flask==3.0.0 \ - --hash=sha256:21128f47e4e3b9d597a3e8521a329bf56909b690fcc3fa3e477725aa81367638 \ - --hash=sha256:cfadcdb638b609361d29ec22360d6070a77d7463dcb3ab08d2c2f2f168845f58 +flask==3.0.1 \ + --hash=sha256:6489f51bb3666def6f314e15f19d50a1869a19ae0e8c9a3641ffe66c77d42403 \ + --hash=sha256:ca631a507f6dfe6c278ae20112cea3ff54ff2216390bf8880f6b035a5354af13 # via aws-sam-cli (setup.py) idna==3.6 \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index c44e558a716..5ee685a9a90 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -284,9 +284,9 @@ docker==7.0.0 \ --hash=sha256:12ba681f2777a0ad28ffbcc846a69c31b4dfd9752b47eb425a274ee269c5e14b \ --hash=sha256:323736fb92cd9418fc5e7133bc953e11a9da04f4483f828b527db553f1e7e5a3 # via aws-sam-cli (setup.py) -flask==3.0.0 \ - --hash=sha256:21128f47e4e3b9d597a3e8521a329bf56909b690fcc3fa3e477725aa81367638 \ - --hash=sha256:cfadcdb638b609361d29ec22360d6070a77d7463dcb3ab08d2c2f2f168845f58 +flask==3.0.1 \ + --hash=sha256:6489f51bb3666def6f314e15f19d50a1869a19ae0e8c9a3641ffe66c77d42403 \ + --hash=sha256:ca631a507f6dfe6c278ae20112cea3ff54ff2216390bf8880f6b035a5354af13 # via aws-sam-cli (setup.py) idna==3.6 \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index d61c9993b8e..e3872aa401d 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -270,9 +270,9 @@ docker==7.0.0 \ --hash=sha256:12ba681f2777a0ad28ffbcc846a69c31b4dfd9752b47eb425a274ee269c5e14b \ --hash=sha256:323736fb92cd9418fc5e7133bc953e11a9da04f4483f828b527db553f1e7e5a3 # via aws-sam-cli (setup.py) -flask==3.0.0 \ - --hash=sha256:21128f47e4e3b9d597a3e8521a329bf56909b690fcc3fa3e477725aa81367638 \ - --hash=sha256:cfadcdb638b609361d29ec22360d6070a77d7463dcb3ab08d2c2f2f168845f58 +flask==3.0.1 \ + --hash=sha256:6489f51bb3666def6f314e15f19d50a1869a19ae0e8c9a3641ffe66c77d42403 \ + --hash=sha256:ca631a507f6dfe6c278ae20112cea3ff54ff2216390bf8880f6b035a5354af13 # via aws-sam-cli (setup.py) idna==3.6 \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ From 163ea90cd96fbb2271cdc168fb9a74095b66a013 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 23:08:37 +0000 Subject: [PATCH 076/100] chore(deps-dev): bump psutil from 5.9.7 to 5.9.8 in /requirements (#6589) Bumps [psutil](https://github.com/giampaolo/psutil) from 5.9.7 to 5.9.8. - [Changelog](https://github.com/giampaolo/psutil/blob/master/HISTORY.rst) - [Commits](https://github.com/giampaolo/psutil/compare/release-5.9.7...release-5.9.8) --- updated-dependencies: - dependency-name: psutil dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Co-authored-by: Lucas <12496191+lucashuy@users.noreply.github.com> --- requirements/dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index e5da8d7a02d..1cb5ccffbf8 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -37,4 +37,4 @@ filelock==3.13.1 # formatter black==23.12.1 -psutil==5.9.7 +psutil==5.9.8 From c8e47a1da8c1e7f4d9442098ac6f7318155f8cee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jan 2024 01:40:13 +0000 Subject: [PATCH 077/100] chore(deps): bump pyopenssl from 23.3.0 to 24.0.0 in /requirements (#6596) Bumps [pyopenssl](https://github.com/pyca/pyopenssl) from 23.3.0 to 24.0.0. - [Changelog](https://github.com/pyca/pyopenssl/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pyca/pyopenssl/compare/23.3.0...24.0.0) --- updated-dependencies: - dependency-name: pyopenssl dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Lucas <12496191+lucashuy@users.noreply.github.com> --- requirements/base.txt | 2 +- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 874ee7f3493..8eb7900c0a8 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -15,7 +15,7 @@ aws_lambda_builders==1.45.0 tomlkit==0.12.3 watchdog==3.0.0 rich~=13.7.0 -pyopenssl~=23.3.0 +pyopenssl~=24.0.0 # Pin to <4.18 to until SAM-T no longer uses RefResolver jsonschema<4.22 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index a5d2ff3ce58..6fac40cb601 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -587,9 +587,9 @@ pygments==2.17.2 \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ --hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367 # via rich -pyopenssl==23.3.0 \ - --hash=sha256:6756834481d9ed5470f4a9393455154bc92fe7a64b7bc6ee2c804e78c52099b2 \ - --hash=sha256:6b2cba5cc46e822750ec3e5a81ee12819850b11303630d575e98108a079c2b12 +pyopenssl==24.0.0 \ + --hash=sha256:6aa33039a93fffa4563e655b61d11364d01264be8ccb49906101e02a334530bf \ + --hash=sha256:ba07553fb6fd6a7a2259adb9b84e12302a9a8a75c44046e8bb5d3e5ee887e3c3 # via aws-sam-cli (setup.py) python-dateutil==2.8.2 \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 5ee685a9a90..ed838e076ba 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -619,9 +619,9 @@ pygments==2.17.2 \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ --hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367 # via rich -pyopenssl==23.3.0 \ - --hash=sha256:6756834481d9ed5470f4a9393455154bc92fe7a64b7bc6ee2c804e78c52099b2 \ - --hash=sha256:6b2cba5cc46e822750ec3e5a81ee12819850b11303630d575e98108a079c2b12 +pyopenssl==24.0.0 \ + --hash=sha256:6aa33039a93fffa4563e655b61d11364d01264be8ccb49906101e02a334530bf \ + --hash=sha256:ba07553fb6fd6a7a2259adb9b84e12302a9a8a75c44046e8bb5d3e5ee887e3c3 # via aws-sam-cli (setup.py) python-dateutil==2.8.2 \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index e3872aa401d..6d7396940b3 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -591,9 +591,9 @@ pygments==2.17.2 \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ --hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367 # via rich -pyopenssl==23.3.0 \ - --hash=sha256:6756834481d9ed5470f4a9393455154bc92fe7a64b7bc6ee2c804e78c52099b2 \ - --hash=sha256:6b2cba5cc46e822750ec3e5a81ee12819850b11303630d575e98108a079c2b12 +pyopenssl==24.0.0 \ + --hash=sha256:6aa33039a93fffa4563e655b61d11364d01264be8ccb49906101e02a334530bf \ + --hash=sha256:ba07553fb6fd6a7a2259adb9b84e12302a9a8a75c44046e8bb5d3e5ee887e3c3 # via aws-sam-cli (setup.py) python-dateutil==2.8.2 \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ From ba3ec1869998d159b343e9562521ace18fa9c51d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jan 2024 11:56:02 -0800 Subject: [PATCH 078/100] chore(deps): bump pytz from 2023.3.post1 to 2023.4 in /requirements (#6619) Bumps [pytz](https://github.com/stub42/pytz) from 2023.3.post1 to 2023.4. - [Commits](https://github.com/stub42/pytz/compare/release_2023.3.post1...release_2023.4) --- updated-dependencies: - dependency-name: pytz dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 6fac40cb601..0116a3125d9 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -602,9 +602,9 @@ python-slugify==8.0.1 \ --hash=sha256:70ca6ea68fe63ecc8fa4fcf00ae651fc8a5d02d93dcd12ae6d4fc7ca46c4d395 \ --hash=sha256:ce0d46ddb668b3be82f4ed5e503dbc33dd815d83e2eb6824211310d3fb172a27 # via cookiecutter -pytz==2023.3.post1 \ - --hash=sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b \ - --hash=sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7 +pytz==2023.4 \ + --hash=sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40 \ + --hash=sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a # via dateparser pyyaml==6.0.1 \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index ed838e076ba..5792536c514 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -634,9 +634,9 @@ python-slugify==8.0.1 \ --hash=sha256:70ca6ea68fe63ecc8fa4fcf00ae651fc8a5d02d93dcd12ae6d4fc7ca46c4d395 \ --hash=sha256:ce0d46ddb668b3be82f4ed5e503dbc33dd815d83e2eb6824211310d3fb172a27 # via cookiecutter -pytz==2023.3.post1 \ - --hash=sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b \ - --hash=sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7 +pytz==2023.4 \ + --hash=sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40 \ + --hash=sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a # via dateparser pyyaml==6.0.1 \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 6d7396940b3..60d5e7263e1 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -606,9 +606,9 @@ python-slugify==8.0.1 \ --hash=sha256:70ca6ea68fe63ecc8fa4fcf00ae651fc8a5d02d93dcd12ae6d4fc7ca46c4d395 \ --hash=sha256:ce0d46ddb668b3be82f4ed5e503dbc33dd815d83e2eb6824211310d3fb172a27 # via cookiecutter -pytz==2023.3.post1 \ - --hash=sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b \ - --hash=sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7 +pytz==2023.4 \ + --hash=sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40 \ + --hash=sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a # via dateparser pywin32==306 \ --hash=sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d \ From 95226d517325a7286da95368dcbf441996a0c4ce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jan 2024 11:56:33 -0800 Subject: [PATCH 079/100] chore(deps-dev): bump coverage from 7.4.0 to 7.4.1 in /requirements (#6617) Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.4.0 to 7.4.1. - [Release notes](https://github.com/nedbat/coveragepy/releases) - [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst) - [Commits](https://github.com/nedbat/coveragepy/compare/7.4.0...7.4.1) --- updated-dependencies: - dependency-name: coverage dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index 1cb5ccffbf8..d852315e9b5 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,6 +1,6 @@ -r pre-dev.txt -coverage==7.4.0 +coverage==7.4.1 pytest-cov==4.1.0 From db165ff4c06b9abe6d74e539252b6c1d8835d306 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jan 2024 19:56:38 +0000 Subject: [PATCH 080/100] chore(deps): bump cfn-lint from 0.84.0 to 0.85.0 in /requirements (#6616) Bumps [cfn-lint](https://github.com/aws-cloudformation/cfn-python-lint) from 0.84.0 to 0.85.0. - [Release notes](https://github.com/aws-cloudformation/cfn-python-lint/releases) - [Changelog](https://github.com/aws-cloudformation/cfn-lint/blob/main/CHANGELOG.md) - [Commits](https://github.com/aws-cloudformation/cfn-python-lint/compare/v0.84.0...v0.85.0) --- updated-dependencies: - dependency-name: cfn-lint dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/base.txt | 2 +- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 8eb7900c0a8..df59c744b8f 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -28,7 +28,7 @@ regex!=2021.10.8 tzlocal==5.2 #Adding cfn-lint dependency for SAM validate -cfn-lint~=0.84.0 +cfn-lint~=0.85.0 # Type checking boto3 objects boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.29 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 0116a3125d9..ae0c6c9cac5 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -118,9 +118,9 @@ cffi==1.16.0 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 # via cryptography -cfn-lint==0.84.0 \ - --hash=sha256:1bf18bca82c6666fd204a265a203bd307816e8d31fe476301b105c5370e306e5 \ - --hash=sha256:7a819ffa48ab23f775037ddb0d9330ba206d547439f69bc72f76f1183d8bc124 +cfn-lint==0.85.0 \ + --hash=sha256:64d6e8d85cdc573b61add78f9ff95a142a1834edb4793d1291551f6d953f73fe \ + --hash=sha256:e4849e1779bd1a9f4543617372708a20519b6d7cad5f980e20c6deaa227361a2 # via aws-sam-cli (setup.py) chardet==5.2.0 \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 5792536c514..158967f6944 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -136,9 +136,9 @@ cffi==1.16.0 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 # via cryptography -cfn-lint==0.84.0 \ - --hash=sha256:1bf18bca82c6666fd204a265a203bd307816e8d31fe476301b105c5370e306e5 \ - --hash=sha256:7a819ffa48ab23f775037ddb0d9330ba206d547439f69bc72f76f1183d8bc124 +cfn-lint==0.85.0 \ + --hash=sha256:64d6e8d85cdc573b61add78f9ff95a142a1834edb4793d1291551f6d953f73fe \ + --hash=sha256:e4849e1779bd1a9f4543617372708a20519b6d7cad5f980e20c6deaa227361a2 # via aws-sam-cli (setup.py) chardet==5.2.0 \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 60d5e7263e1..b581e96217b 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -118,9 +118,9 @@ cffi==1.16.0 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 # via cryptography -cfn-lint==0.84.0 \ - --hash=sha256:1bf18bca82c6666fd204a265a203bd307816e8d31fe476301b105c5370e306e5 \ - --hash=sha256:7a819ffa48ab23f775037ddb0d9330ba206d547439f69bc72f76f1183d8bc124 +cfn-lint==0.85.0 \ + --hash=sha256:64d6e8d85cdc573b61add78f9ff95a142a1834edb4793d1291551f6d953f73fe \ + --hash=sha256:e4849e1779bd1a9f4543617372708a20519b6d7cad5f980e20c6deaa227361a2 # via aws-sam-cli (setup.py) chardet==5.2.0 \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ From 7c90f6234f18d87a1e3579b9d52c4a206312bbfa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jan 2024 19:56:41 +0000 Subject: [PATCH 081/100] chore(deps): bump python-slugify from 8.0.1 to 8.0.2 in /requirements (#6615) Bumps [python-slugify](https://github.com/un33k/python-slugify) from 8.0.1 to 8.0.2. - [Changelog](https://github.com/un33k/python-slugify/blob/master/CHANGELOG.md) - [Commits](https://github.com/un33k/python-slugify/compare/v8.0.1...v8.0.2) --- updated-dependencies: - dependency-name: python-slugify dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index ae0c6c9cac5..267ee020187 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -598,9 +598,9 @@ python-dateutil==2.8.2 \ # arrow # botocore # dateparser -python-slugify==8.0.1 \ - --hash=sha256:70ca6ea68fe63ecc8fa4fcf00ae651fc8a5d02d93dcd12ae6d4fc7ca46c4d395 \ - --hash=sha256:ce0d46ddb668b3be82f4ed5e503dbc33dd815d83e2eb6824211310d3fb172a27 +python-slugify==8.0.2 \ + --hash=sha256:428ea9b00c977b8f6c097724398f190b2c18e2a6011094d1001285875ccacdbf \ + --hash=sha256:a1a02b127a95c124fd84f8f88be730e557fd823774bf19b1cd5e8704e2ae0e5e # via cookiecutter pytz==2023.4 \ --hash=sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40 \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 158967f6944..cefaf5f8459 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -630,9 +630,9 @@ python-dateutil==2.8.2 \ # arrow # botocore # dateparser -python-slugify==8.0.1 \ - --hash=sha256:70ca6ea68fe63ecc8fa4fcf00ae651fc8a5d02d93dcd12ae6d4fc7ca46c4d395 \ - --hash=sha256:ce0d46ddb668b3be82f4ed5e503dbc33dd815d83e2eb6824211310d3fb172a27 +python-slugify==8.0.2 \ + --hash=sha256:428ea9b00c977b8f6c097724398f190b2c18e2a6011094d1001285875ccacdbf \ + --hash=sha256:a1a02b127a95c124fd84f8f88be730e557fd823774bf19b1cd5e8704e2ae0e5e # via cookiecutter pytz==2023.4 \ --hash=sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40 \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index b581e96217b..abbd1e1768b 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -602,9 +602,9 @@ python-dateutil==2.8.2 \ # arrow # botocore # dateparser -python-slugify==8.0.1 \ - --hash=sha256:70ca6ea68fe63ecc8fa4fcf00ae651fc8a5d02d93dcd12ae6d4fc7ca46c4d395 \ - --hash=sha256:ce0d46ddb668b3be82f4ed5e503dbc33dd815d83e2eb6824211310d3fb172a27 +python-slugify==8.0.2 \ + --hash=sha256:428ea9b00c977b8f6c097724398f190b2c18e2a6011094d1001285875ccacdbf \ + --hash=sha256:a1a02b127a95c124fd84f8f88be730e557fd823774bf19b1cd5e8704e2ae0e5e # via cookiecutter pytz==2023.4 \ --hash=sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40 \ From 560fdcad4a0eddfb59de08c21f7d176fadaf57ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jan 2024 19:56:48 +0000 Subject: [PATCH 082/100] chore(deps-dev): bump the types group in /requirements with 2 updates (#6612) Bumps the types group in /requirements with 2 updates: [types-pywin32](https://github.com/python/typeshed) and [types-pyopenssl](https://github.com/python/typeshed). Updates `types-pywin32` from 306.0.0.20240128 to 306.0.0.20240130 - [Commits](https://github.com/python/typeshed/commits) Updates `types-pyopenssl` from 23.3.0.20240106 to 24.0.0.20240130 - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-pywin32 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: types - dependency-name: types-pyopenssl dependency-type: direct:development update-type: version-update:semver-major dependency-group: types ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/dev.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index d852315e9b5..010d495e48e 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -8,7 +8,7 @@ pytest-cov==4.1.0 # mypy adds new rules in new minor versions, which could cause our PR check to fail # here we fix its version and upgrade it manually in the future mypy==1.8.0 -types-pywin32==306.0.0.20240128 +types-pywin32==306.0.0.20240130 types-PyYAML==6.0.12.12 types-chevron==0.14.2.20240106 types-psutil==5.9.5.20240106 @@ -18,7 +18,7 @@ types-colorama==0.4.15.20240106 types-dateparser==1.1.4.20240106 types-docutils==0.20.0.20240126 types-jsonschema==4.21.0.20240118 -types-pyOpenSSL==23.3.0.20240106 +types-pyOpenSSL==24.0.0.20240130 # as of types-requests>=2.31.0.7, this now requires `urllib3>2`, pin we are able to upgrade types-requests==2.31.0.6 types-urllib3==1.26.25.14 From 7711b6b6b6e0f2dd3ef75b8a2d78772998794671 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jan 2024 17:30:02 -0800 Subject: [PATCH 083/100] chore(deps-dev): bump ruff from 0.1.14 to 0.1.15 in /requirements (#6613) Bumps [ruff](https://github.com/astral-sh/ruff) from 0.1.14 to 0.1.15. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/v0.1.14...v0.1.15) --- updated-dependencies: - dependency-name: ruff dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/pre-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/pre-dev.txt b/requirements/pre-dev.txt index d6cc8ef5512..43172de7382 100644 --- a/requirements/pre-dev.txt +++ b/requirements/pre-dev.txt @@ -1 +1 @@ -ruff==0.1.14 +ruff==0.1.15 From 88b04f25409b4c499a8fbbbef7c387d0ed9b6d5f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jan 2024 17:30:07 -0800 Subject: [PATCH 084/100] chore(deps): bump jsonschema from 4.21.0 to 4.21.1 in /requirements (#6591) Bumps [jsonschema](https://github.com/python-jsonschema/jsonschema) from 4.21.0 to 4.21.1. - [Release notes](https://github.com/python-jsonschema/jsonschema/releases) - [Changelog](https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst) - [Commits](https://github.com/python-jsonschema/jsonschema/compare/v4.21.0...v4.21.1) --- updated-dependencies: - dependency-name: jsonschema dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 267ee020187..2583b445095 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -307,9 +307,9 @@ jsonpointer==2.4 \ --hash=sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a \ --hash=sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88 # via jsonpatch -jsonschema==4.21.0 \ - --hash=sha256:3ba18e27f7491ea4a1b22edce00fb820eec968d397feb3f9cb61d5894bb38167 \ - --hash=sha256:70a09719d375c0a2874571b363c8a24be7df8071b80c9aa76bc4551e7297c63c +jsonschema==4.21.1 \ + --hash=sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f \ + --hash=sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5 # via # aws-sam-cli (setup.py) # aws-sam-translator diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index cefaf5f8459..fa059ea3af9 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -335,9 +335,9 @@ jsonpointer==2.4 \ --hash=sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a \ --hash=sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88 # via jsonpatch -jsonschema==4.21.0 \ - --hash=sha256:3ba18e27f7491ea4a1b22edce00fb820eec968d397feb3f9cb61d5894bb38167 \ - --hash=sha256:70a09719d375c0a2874571b363c8a24be7df8071b80c9aa76bc4551e7297c63c +jsonschema==4.21.1 \ + --hash=sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f \ + --hash=sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5 # via # aws-sam-cli (setup.py) # aws-sam-translator diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index abbd1e1768b..e14da8ed9b9 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -311,9 +311,9 @@ jsonpointer==2.4 \ --hash=sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a \ --hash=sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88 # via jsonpatch -jsonschema==4.21.0 \ - --hash=sha256:3ba18e27f7491ea4a1b22edce00fb820eec968d397feb3f9cb61d5894bb38167 \ - --hash=sha256:70a09719d375c0a2874571b363c8a24be7df8071b80c9aa76bc4551e7297c63c +jsonschema==4.21.1 \ + --hash=sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f \ + --hash=sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5 # via # aws-sam-cli (setup.py) # aws-sam-translator From 31f2e38217ec5063844bc33388ac062a215dc946 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Feb 2024 11:53:10 -0800 Subject: [PATCH 085/100] chore(deps): bump python-slugify from 8.0.2 to 8.0.3 in /requirements (#6634) Bumps [python-slugify](https://github.com/un33k/python-slugify) from 8.0.2 to 8.0.3. - [Changelog](https://github.com/un33k/python-slugify/blob/master/CHANGELOG.md) - [Commits](https://github.com/un33k/python-slugify/compare/v8.0.2...v8.0.3) --- updated-dependencies: - dependency-name: python-slugify dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 2583b445095..9f7a935d445 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -598,9 +598,9 @@ python-dateutil==2.8.2 \ # arrow # botocore # dateparser -python-slugify==8.0.2 \ - --hash=sha256:428ea9b00c977b8f6c097724398f190b2c18e2a6011094d1001285875ccacdbf \ - --hash=sha256:a1a02b127a95c124fd84f8f88be730e557fd823774bf19b1cd5e8704e2ae0e5e +python-slugify==8.0.3 \ + --hash=sha256:c71189c161e8c671f1b141034d9a56308a8a5978cd13d40446c879569212fdd1 \ + --hash=sha256:e04cba5f1c562502a1175c84a8bc23890c54cdaf23fccaaf0bf78511508cabed # via cookiecutter pytz==2023.4 \ --hash=sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40 \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index fa059ea3af9..cc27341a599 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -630,9 +630,9 @@ python-dateutil==2.8.2 \ # arrow # botocore # dateparser -python-slugify==8.0.2 \ - --hash=sha256:428ea9b00c977b8f6c097724398f190b2c18e2a6011094d1001285875ccacdbf \ - --hash=sha256:a1a02b127a95c124fd84f8f88be730e557fd823774bf19b1cd5e8704e2ae0e5e +python-slugify==8.0.3 \ + --hash=sha256:c71189c161e8c671f1b141034d9a56308a8a5978cd13d40446c879569212fdd1 \ + --hash=sha256:e04cba5f1c562502a1175c84a8bc23890c54cdaf23fccaaf0bf78511508cabed # via cookiecutter pytz==2023.4 \ --hash=sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40 \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index e14da8ed9b9..1ad0056c862 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -602,9 +602,9 @@ python-dateutil==2.8.2 \ # arrow # botocore # dateparser -python-slugify==8.0.2 \ - --hash=sha256:428ea9b00c977b8f6c097724398f190b2c18e2a6011094d1001285875ccacdbf \ - --hash=sha256:a1a02b127a95c124fd84f8f88be730e557fd823774bf19b1cd5e8704e2ae0e5e +python-slugify==8.0.3 \ + --hash=sha256:c71189c161e8c671f1b141034d9a56308a8a5978cd13d40446c879569212fdd1 \ + --hash=sha256:e04cba5f1c562502a1175c84a8bc23890c54cdaf23fccaaf0bf78511508cabed # via cookiecutter pytz==2023.4 \ --hash=sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40 \ From 5ac89d1a23fdce511a595137df23ff037a2348de Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Feb 2024 11:53:31 -0800 Subject: [PATCH 086/100] chore(deps): bump the boto group in /requirements with 5 updates (#6633) Bumps the boto group in /requirements with 5 updates: | Package | From | To | | --- | --- | --- | | [boto3](https://github.com/boto/boto3) | `1.34.29` | `1.34.32` | | [boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]](https://github.com/youtype/mypy_boto3_builder) | `1.34.29` | `1.34.32` | | [botocore](https://github.com/boto/botocore) | `1.34.29` | `1.34.32` | | [botocore-stubs](https://github.com/youtype/botocore-stubs) | `1.34.29` | `1.34.32` | | [mypy-boto3-cloudformation](https://github.com/youtype/mypy_boto3_builder) | `1.34.0` | `1.34.32` | Updates `boto3` from 1.34.29 to 1.34.32 - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.34.29...1.34.32) Updates `boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]` from 1.34.29 to 1.34.32 - [Release notes](https://github.com/youtype/mypy_boto3_builder/releases) - [Commits](https://github.com/youtype/mypy_boto3_builder/commits) Updates `botocore` from 1.34.29 to 1.34.32 - [Changelog](https://github.com/boto/botocore/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/botocore/compare/1.34.29...1.34.32) Updates `botocore-stubs` from 1.34.29 to 1.34.32 - [Release notes](https://github.com/youtype/botocore-stubs/releases) - [Commits](https://github.com/youtype/botocore-stubs/commits) Updates `mypy-boto3-cloudformation` from 1.34.0 to 1.34.32 - [Release notes](https://github.com/youtype/mypy_boto3_builder/releases) - [Commits](https://github.com/youtype/mypy_boto3_builder/commits) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray] dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: botocore dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: botocore-stubs dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto - dependency-name: mypy-boto3-cloudformation dependency-type: direct:production update-type: version-update:semver-patch dependency-group: boto ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/base.txt | 2 +- requirements/reproducible-linux.txt | 30 ++++++++++++++--------------- requirements/reproducible-mac.txt | 30 ++++++++++++++--------------- requirements/reproducible-win.txt | 30 ++++++++++++++--------------- 4 files changed, 46 insertions(+), 46 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index df59c744b8f..0c03e917c7b 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -31,4 +31,4 @@ tzlocal==5.2 cfn-lint~=0.85.0 # Type checking boto3 objects -boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.29 +boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.32 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 9f7a935d445..d2965ff772b 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -38,27 +38,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.29 \ - --hash=sha256:34b2b404bd2bec869ec2fc6aeeeeb884c72a9b895e2c7716b95381ab8deb9069 \ - --hash=sha256:50776db195a73533f4f2c9d000c69f9d0e9fb9810f9f81584adc283e9516ad0d +boto3==1.34.32 \ + --hash=sha256:7bf924c942426839efd7fa5c2c4fe85dba208258393e8017a5ad327c30e5948d \ + --hash=sha256:9e62f42de2873baab96eb822386d6a3b1d77f6715cb9033d7b4e6e9ebb0cdbe7 # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.29 \ - --hash=sha256:4a4bc5d239c0cb04f4065410abbcf87a7caa973c46bddc1e8c947c9a72860a2b \ - --hash=sha256:e3c68cd0f01c17d5090aafcf1c7bb2d7b94aee4e3a9cd45af8bf9dd882ef644c +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.32 \ + --hash=sha256:077f13b0856862bedafb92b8499b960624d06f684595be701fade51a8e9615ed \ + --hash=sha256:27fc3b5b69379f0557d881d3f27c201c257eabff535d343ed5fd4a162a5fb389 # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.29 \ - --hash=sha256:34223fdb8ebd47d1fce5724bb1bcb164e81853ea9ca532b50639c749fc347458 \ - --hash=sha256:44d918b91a1c1085d99266f8bf6ecc087c8a73a8efbb8e829f0c2dcd1ddf9963 +botocore==1.34.32 \ + --hash=sha256:466aee158bd0429dbd567c4e2bdf7be9a0a5a74409f8b295c30f34d84c497f9c \ + --hash=sha256:aa26a74df83eed3db9542c1cf9108138794c344918b36a506c0723717f1acaab # via # boto3 # s3transfer -botocore-stubs==1.34.29 \ - --hash=sha256:3cc8db71b7d8aec8c6d13bc84cecec18d64cb142311e1bd060d673cb556d913b \ - --hash=sha256:9a1ff594b59a426df02bc2c9916e17c7cb600c78c77500a5635d67851492aeb5 +botocore-stubs==1.34.32 \ + --hash=sha256:978c97b8c02b5ffa3726a5052e5715aecc52c640a75a8088b3a58453c2b054b2 \ + --hash=sha256:e5b04b8ab81e736088470b7be244de072ac2f986caf0f51b7e2087400778dc9f # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ @@ -402,9 +402,9 @@ mypy-boto3-apigateway==1.34.0 \ --hash=sha256:372ca74ede1442cb7d171a7cc0b64d92900cda258790f07b9cd9b92886ef92ef \ --hash=sha256:3c724120971c74fb65a94eb7e4b92a3a4b28df6c70ca04a007072e6c73f6eda7 # via boto3-stubs -mypy-boto3-cloudformation==1.34.0 \ - --hash=sha256:4e63a2bca1882971881d65983acd774c2fc636bbc5dc8c3e1f4a41c539cf3c90 \ - --hash=sha256:9b25df9ef15d9dc8e4e892cc07aa9343f15f2ed5eb7d33eb5eb65adfa63f538f +mypy-boto3-cloudformation==1.34.32 \ + --hash=sha256:49d04c090dae3fd8289738ae592cac9d6faa5169684de40c2730b425bba2a32d \ + --hash=sha256:bfe5ec405eae6dae31dc9874729eef5e668e634eae8972032f00400d17bd2c7d # via boto3-stubs mypy-boto3-ecr==1.34.0 \ --hash=sha256:3346c02c22b16068c9acc67d990e32060bf7cdaea5f3d43c50e44308fbbc3439 \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index cc27341a599..34fc913a13b 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -56,27 +56,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.29 \ - --hash=sha256:34b2b404bd2bec869ec2fc6aeeeeb884c72a9b895e2c7716b95381ab8deb9069 \ - --hash=sha256:50776db195a73533f4f2c9d000c69f9d0e9fb9810f9f81584adc283e9516ad0d +boto3==1.34.32 \ + --hash=sha256:7bf924c942426839efd7fa5c2c4fe85dba208258393e8017a5ad327c30e5948d \ + --hash=sha256:9e62f42de2873baab96eb822386d6a3b1d77f6715cb9033d7b4e6e9ebb0cdbe7 # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.29 \ - --hash=sha256:4a4bc5d239c0cb04f4065410abbcf87a7caa973c46bddc1e8c947c9a72860a2b \ - --hash=sha256:e3c68cd0f01c17d5090aafcf1c7bb2d7b94aee4e3a9cd45af8bf9dd882ef644c +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.32 \ + --hash=sha256:077f13b0856862bedafb92b8499b960624d06f684595be701fade51a8e9615ed \ + --hash=sha256:27fc3b5b69379f0557d881d3f27c201c257eabff535d343ed5fd4a162a5fb389 # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.29 \ - --hash=sha256:34223fdb8ebd47d1fce5724bb1bcb164e81853ea9ca532b50639c749fc347458 \ - --hash=sha256:44d918b91a1c1085d99266f8bf6ecc087c8a73a8efbb8e829f0c2dcd1ddf9963 +botocore==1.34.32 \ + --hash=sha256:466aee158bd0429dbd567c4e2bdf7be9a0a5a74409f8b295c30f34d84c497f9c \ + --hash=sha256:aa26a74df83eed3db9542c1cf9108138794c344918b36a506c0723717f1acaab # via # boto3 # s3transfer -botocore-stubs==1.34.29 \ - --hash=sha256:3cc8db71b7d8aec8c6d13bc84cecec18d64cb142311e1bd060d673cb556d913b \ - --hash=sha256:9a1ff594b59a426df02bc2c9916e17c7cb600c78c77500a5635d67851492aeb5 +botocore-stubs==1.34.32 \ + --hash=sha256:978c97b8c02b5ffa3726a5052e5715aecc52c640a75a8088b3a58453c2b054b2 \ + --hash=sha256:e5b04b8ab81e736088470b7be244de072ac2f986caf0f51b7e2087400778dc9f # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ @@ -430,9 +430,9 @@ mypy-boto3-apigateway==1.34.0 \ --hash=sha256:372ca74ede1442cb7d171a7cc0b64d92900cda258790f07b9cd9b92886ef92ef \ --hash=sha256:3c724120971c74fb65a94eb7e4b92a3a4b28df6c70ca04a007072e6c73f6eda7 # via boto3-stubs -mypy-boto3-cloudformation==1.34.0 \ - --hash=sha256:4e63a2bca1882971881d65983acd774c2fc636bbc5dc8c3e1f4a41c539cf3c90 \ - --hash=sha256:9b25df9ef15d9dc8e4e892cc07aa9343f15f2ed5eb7d33eb5eb65adfa63f538f +mypy-boto3-cloudformation==1.34.32 \ + --hash=sha256:49d04c090dae3fd8289738ae592cac9d6faa5169684de40c2730b425bba2a32d \ + --hash=sha256:bfe5ec405eae6dae31dc9874729eef5e668e634eae8972032f00400d17bd2c7d # via boto3-stubs mypy-boto3-ecr==1.34.0 \ --hash=sha256:3346c02c22b16068c9acc67d990e32060bf7cdaea5f3d43c50e44308fbbc3439 \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 1ad0056c862..4415f571011 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -38,27 +38,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.34.29 \ - --hash=sha256:34b2b404bd2bec869ec2fc6aeeeeb884c72a9b895e2c7716b95381ab8deb9069 \ - --hash=sha256:50776db195a73533f4f2c9d000c69f9d0e9fb9810f9f81584adc283e9516ad0d +boto3==1.34.32 \ + --hash=sha256:7bf924c942426839efd7fa5c2c4fe85dba208258393e8017a5ad327c30e5948d \ + --hash=sha256:9e62f42de2873baab96eb822386d6a3b1d77f6715cb9033d7b4e6e9ebb0cdbe7 # via # aws-sam-cli (setup.py) # aws-sam-translator -boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.29 \ - --hash=sha256:4a4bc5d239c0cb04f4065410abbcf87a7caa973c46bddc1e8c947c9a72860a2b \ - --hash=sha256:e3c68cd0f01c17d5090aafcf1c7bb2d7b94aee4e3a9cd45af8bf9dd882ef644c +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.32 \ + --hash=sha256:077f13b0856862bedafb92b8499b960624d06f684595be701fade51a8e9615ed \ + --hash=sha256:27fc3b5b69379f0557d881d3f27c201c257eabff535d343ed5fd4a162a5fb389 # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.34.29 \ - --hash=sha256:34223fdb8ebd47d1fce5724bb1bcb164e81853ea9ca532b50639c749fc347458 \ - --hash=sha256:44d918b91a1c1085d99266f8bf6ecc087c8a73a8efbb8e829f0c2dcd1ddf9963 +botocore==1.34.32 \ + --hash=sha256:466aee158bd0429dbd567c4e2bdf7be9a0a5a74409f8b295c30f34d84c497f9c \ + --hash=sha256:aa26a74df83eed3db9542c1cf9108138794c344918b36a506c0723717f1acaab # via # boto3 # s3transfer -botocore-stubs==1.34.29 \ - --hash=sha256:3cc8db71b7d8aec8c6d13bc84cecec18d64cb142311e1bd060d673cb556d913b \ - --hash=sha256:9a1ff594b59a426df02bc2c9916e17c7cb600c78c77500a5635d67851492aeb5 +botocore-stubs==1.34.32 \ + --hash=sha256:978c97b8c02b5ffa3726a5052e5715aecc52c640a75a8088b3a58453c2b054b2 \ + --hash=sha256:e5b04b8ab81e736088470b7be244de072ac2f986caf0f51b7e2087400778dc9f # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ @@ -406,9 +406,9 @@ mypy-boto3-apigateway==1.34.0 \ --hash=sha256:372ca74ede1442cb7d171a7cc0b64d92900cda258790f07b9cd9b92886ef92ef \ --hash=sha256:3c724120971c74fb65a94eb7e4b92a3a4b28df6c70ca04a007072e6c73f6eda7 # via boto3-stubs -mypy-boto3-cloudformation==1.34.0 \ - --hash=sha256:4e63a2bca1882971881d65983acd774c2fc636bbc5dc8c3e1f4a41c539cf3c90 \ - --hash=sha256:9b25df9ef15d9dc8e4e892cc07aa9343f15f2ed5eb7d33eb5eb65adfa63f538f +mypy-boto3-cloudformation==1.34.32 \ + --hash=sha256:49d04c090dae3fd8289738ae592cac9d6faa5169684de40c2730b425bba2a32d \ + --hash=sha256:bfe5ec405eae6dae31dc9874729eef5e668e634eae8972032f00400d17bd2c7d # via boto3-stubs mypy-boto3-ecr==1.34.0 \ --hash=sha256:3346c02c22b16068c9acc67d990e32060bf7cdaea5f3d43c50e44308fbbc3439 \ From 18ebda39bc813b86e0bac191fcd1e2780ada3780 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Feb 2024 19:53:49 +0000 Subject: [PATCH 087/100] chore(deps-dev): bump the types group in /requirements with 1 update (#6632) Bumps the types group in /requirements with 1 update: [types-docutils](https://github.com/python/typeshed). Updates `types-docutils` from 0.20.0.20240126 to 0.20.0.20240201 - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-docutils dependency-type: direct:development update-type: version-update:semver-patch dependency-group: types ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index 010d495e48e..7b92363b670 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -16,7 +16,7 @@ types-setuptools==69.0.0.20240125 types-Pygments==2.17.0.20240106 types-colorama==0.4.15.20240106 types-dateparser==1.1.4.20240106 -types-docutils==0.20.0.20240126 +types-docutils==0.20.0.20240201 types-jsonschema==4.21.0.20240118 types-pyOpenSSL==24.0.0.20240130 # as of types-requests>=2.31.0.7, this now requires `urllib3>2`, pin we are able to upgrade From 882d6e0a279d7f9e9ff0ed9b24c6194db1e09b91 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Feb 2024 19:55:26 +0000 Subject: [PATCH 088/100] chore(deps): bump referencing from 0.32.1 to 0.33.0 in /requirements (#6625) Bumps [referencing](https://github.com/python-jsonschema/referencing) from 0.32.1 to 0.33.0. - [Release notes](https://github.com/python-jsonschema/referencing/releases) - [Changelog](https://github.com/python-jsonschema/referencing/blob/main/docs/changes.rst) - [Commits](https://github.com/python-jsonschema/referencing/compare/v0.32.1...v0.33.0) --- updated-dependencies: - dependency-name: referencing dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index d2965ff772b..0642f0c670b 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -651,9 +651,9 @@ pyyaml==6.0.1 \ # aws-sam-cli (setup.py) # cfn-lint # cookiecutter -referencing==0.32.1 \ - --hash=sha256:3c57da0513e9563eb7e203ebe9bb3a1b509b042016433bd1e45a2853466c3dd3 \ - --hash=sha256:7e4dc12271d8e15612bfe35792f5ea1c40970dadf8624602e33db2758f7ee554 +referencing==0.33.0 \ + --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ + --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 # via # jsonschema # jsonschema-specifications diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 34fc913a13b..e6e10c7e3fb 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -683,9 +683,9 @@ pyyaml==6.0.1 \ # aws-sam-cli (setup.py) # cfn-lint # cookiecutter -referencing==0.32.1 \ - --hash=sha256:3c57da0513e9563eb7e203ebe9bb3a1b509b042016433bd1e45a2853466c3dd3 \ - --hash=sha256:7e4dc12271d8e15612bfe35792f5ea1c40970dadf8624602e33db2758f7ee554 +referencing==0.33.0 \ + --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ + --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 # via # jsonschema # jsonschema-specifications diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 4415f571011..36bf2093041 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -671,9 +671,9 @@ pyyaml==6.0.1 \ # aws-sam-cli (setup.py) # cfn-lint # cookiecutter -referencing==0.32.1 \ - --hash=sha256:3c57da0513e9563eb7e203ebe9bb3a1b509b042016433bd1e45a2853466c3dd3 \ - --hash=sha256:7e4dc12271d8e15612bfe35792f5ea1c40970dadf8624602e33db2758f7ee554 +referencing==0.33.0 \ + --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ + --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 # via # jsonschema # jsonschema-specifications From ca4afb687d1fb52e44a9f15ece5824c6e5c52410 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Feb 2024 19:55:58 +0000 Subject: [PATCH 089/100] chore(deps): bump cryptography from 41.0.7 to 42.0.2 in /requirements (#6620) Bumps [cryptography](https://github.com/pyca/cryptography) from 41.0.7 to 42.0.2. - [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pyca/cryptography/compare/41.0.7...42.0.2) --- updated-dependencies: - dependency-name: cryptography dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/reproducible-linux.txt | 57 +++++++++++++++++------------ requirements/reproducible-mac.txt | 57 +++++++++++++++++------------ requirements/reproducible-win.txt | 57 +++++++++++++++++------------ 3 files changed, 99 insertions(+), 72 deletions(-) diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 0642f0c670b..d56a944740f 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -233,30 +233,39 @@ cookiecutter==2.5.0 \ --hash=sha256:8aa2f12ed11bc05628651e9dc4353a10571dd9908aaaaeec959a2b9ea465a5d2 \ --hash=sha256:e61e9034748e3f41b8bd2c11f00d030784b48711c4d5c42363c50989a65331ec # via aws-sam-cli (setup.py) -cryptography==41.0.7 \ - --hash=sha256:079b85658ea2f59c4f43b70f8119a52414cdb7be34da5d019a77bf96d473b960 \ - --hash=sha256:09616eeaef406f99046553b8a40fbf8b1e70795a91885ba4c96a70793de5504a \ - --hash=sha256:13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc \ - --hash=sha256:37a138589b12069efb424220bf78eac59ca68b95696fc622b6ccc1c0a197204a \ - --hash=sha256:3c78451b78313fa81607fa1b3f1ae0a5ddd8014c38a02d9db0616133987b9cdf \ - --hash=sha256:43f2552a2378b44869fe8827aa19e69512e3245a219104438692385b0ee119d1 \ - --hash=sha256:48a0476626da912a44cc078f9893f292f0b3e4c739caf289268168d8f4702a39 \ - --hash=sha256:49f0805fc0b2ac8d4882dd52f4a3b935b210935d500b6b805f321addc8177406 \ - --hash=sha256:5429ec739a29df2e29e15d082f1d9ad683701f0ec7709ca479b3ff2708dae65a \ - --hash=sha256:5a1b41bc97f1ad230a41657d9155113c7521953869ae57ac39ac7f1bb471469a \ - --hash=sha256:68a2dec79deebc5d26d617bfdf6e8aab065a4f34934b22d3b5010df3ba36612c \ - --hash=sha256:7a698cb1dac82c35fcf8fe3417a3aaba97de16a01ac914b89a0889d364d2f6be \ - --hash=sha256:841df4caa01008bad253bce2a6f7b47f86dc9f08df4b433c404def869f590a15 \ - --hash=sha256:90452ba79b8788fa380dfb587cca692976ef4e757b194b093d845e8d99f612f2 \ - --hash=sha256:928258ba5d6f8ae644e764d0f996d61a8777559f72dfeb2eea7e2fe0ad6e782d \ - --hash=sha256:af03b32695b24d85a75d40e1ba39ffe7db7ffcb099fe507b39fd41a565f1b157 \ - --hash=sha256:b640981bf64a3e978a56167594a0e97db71c89a479da8e175d8bb5be5178c003 \ - --hash=sha256:c5ca78485a255e03c32b513f8c2bc39fedb7f5c5f8535545bdc223a03b24f248 \ - --hash=sha256:c7f3201ec47d5207841402594f1d7950879ef890c0c495052fa62f58283fde1a \ - --hash=sha256:d5ec85080cce7b0513cfd233914eb8b7bbd0633f1d1703aa28d1dd5a72f678ec \ - --hash=sha256:d6c391c021ab1f7a82da5d8d0b3cee2f4b2c455ec86c8aebbc84837a631ff309 \ - --hash=sha256:e3114da6d7f95d2dee7d3f4eec16dacff819740bbab931aff8648cb13c5ff5e7 \ - --hash=sha256:f983596065a18a2183e7f79ab3fd4c475205b839e02cbc0efbbf9666c4b3083d +cryptography==42.0.2 \ + --hash=sha256:087887e55e0b9c8724cf05361357875adb5c20dec27e5816b653492980d20380 \ + --hash=sha256:09a77e5b2e8ca732a19a90c5bca2d124621a1edb5438c5daa2d2738bfeb02589 \ + --hash=sha256:130c0f77022b2b9c99d8cebcdd834d81705f61c68e91ddd614ce74c657f8b3ea \ + --hash=sha256:141e2aa5ba100d3788c0ad7919b288f89d1fe015878b9659b307c9ef867d3a65 \ + --hash=sha256:28cb2c41f131a5758d6ba6a0504150d644054fd9f3203a1e8e8d7ac3aea7f73a \ + --hash=sha256:2f9f14185962e6a04ab32d1abe34eae8a9001569ee4edb64d2304bf0d65c53f3 \ + --hash=sha256:320948ab49883557a256eab46149df79435a22d2fefd6a66fe6946f1b9d9d008 \ + --hash=sha256:36d4b7c4be6411f58f60d9ce555a73df8406d484ba12a63549c88bd64f7967f1 \ + --hash=sha256:3b15c678f27d66d247132cbf13df2f75255627bcc9b6a570f7d2fd08e8c081d2 \ + --hash=sha256:3dbd37e14ce795b4af61b89b037d4bc157f2cb23e676fa16932185a04dfbf635 \ + --hash=sha256:4383b47f45b14459cab66048d384614019965ba6c1a1a141f11b5a551cace1b2 \ + --hash=sha256:44c95c0e96b3cb628e8452ec060413a49002a247b2b9938989e23a2c8291fc90 \ + --hash=sha256:4b063d3413f853e056161eb0c7724822a9740ad3caa24b8424d776cebf98e7ee \ + --hash=sha256:52ed9ebf8ac602385126c9a2fe951db36f2cb0c2538d22971487f89d0de4065a \ + --hash=sha256:55d1580e2d7e17f45d19d3b12098e352f3a37fe86d380bf45846ef257054b242 \ + --hash=sha256:5ef9bc3d046ce83c4bbf4c25e1e0547b9c441c01d30922d812e887dc5f125c12 \ + --hash=sha256:5fa82a26f92871eca593b53359c12ad7949772462f887c35edaf36f87953c0e2 \ + --hash=sha256:61321672b3ac7aade25c40449ccedbc6db72c7f5f0fdf34def5e2f8b51ca530d \ + --hash=sha256:701171f825dcab90969596ce2af253143b93b08f1a716d4b2a9d2db5084ef7be \ + --hash=sha256:841ec8af7a8491ac76ec5a9522226e287187a3107e12b7d686ad354bb78facee \ + --hash=sha256:8a06641fb07d4e8f6c7dda4fc3f8871d327803ab6542e33831c7ccfdcb4d0ad6 \ + --hash=sha256:8e88bb9eafbf6a4014d55fb222e7360eef53e613215085e65a13290577394529 \ + --hash=sha256:a00aee5d1b6c20620161984f8ab2ab69134466c51f58c052c11b076715e72929 \ + --hash=sha256:a047682d324ba56e61b7ea7c7299d51e61fd3bca7dad2ccc39b72bd0118d60a1 \ + --hash=sha256:a7ef8dd0bf2e1d0a27042b231a3baac6883cdd5557036f5e8df7139255feaac6 \ + --hash=sha256:ad28cff53f60d99a928dfcf1e861e0b2ceb2bc1f08a074fdd601b314e1cc9e0a \ + --hash=sha256:b9097a208875fc7bbeb1286d0125d90bdfed961f61f214d3f5be62cd4ed8a446 \ + --hash=sha256:b97fe7d7991c25e6a31e5d5e795986b18fbbb3107b873d5f3ae6dc9a103278e9 \ + --hash=sha256:e0ec52ba3c7f1b7d813cd52649a5b3ef1fc0d433219dc8c93827c57eab6cf888 \ + --hash=sha256:ea2c3ffb662fec8bbbfce5602e2c159ff097a4631d96235fcf0fb00e59e3ece4 \ + --hash=sha256:fa3dec4ba8fb6e662770b74f62f1a0c7d4e37e25b58b2bf2c1be4c95372b4a33 \ + --hash=sha256:fbeb725c9dc799a574518109336acccaf1303c30d45c075c665c0793c2f79a7f # via pyopenssl dateparser==1.2.0 \ --hash=sha256:0b21ad96534e562920a0083e97fd45fa959882d4162acc358705144520a35830 \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index e6e10c7e3fb..c256ebcdae0 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -251,30 +251,39 @@ cookiecutter==2.5.0 \ --hash=sha256:8aa2f12ed11bc05628651e9dc4353a10571dd9908aaaaeec959a2b9ea465a5d2 \ --hash=sha256:e61e9034748e3f41b8bd2c11f00d030784b48711c4d5c42363c50989a65331ec # via aws-sam-cli (setup.py) -cryptography==41.0.7 \ - --hash=sha256:079b85658ea2f59c4f43b70f8119a52414cdb7be34da5d019a77bf96d473b960 \ - --hash=sha256:09616eeaef406f99046553b8a40fbf8b1e70795a91885ba4c96a70793de5504a \ - --hash=sha256:13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc \ - --hash=sha256:37a138589b12069efb424220bf78eac59ca68b95696fc622b6ccc1c0a197204a \ - --hash=sha256:3c78451b78313fa81607fa1b3f1ae0a5ddd8014c38a02d9db0616133987b9cdf \ - --hash=sha256:43f2552a2378b44869fe8827aa19e69512e3245a219104438692385b0ee119d1 \ - --hash=sha256:48a0476626da912a44cc078f9893f292f0b3e4c739caf289268168d8f4702a39 \ - --hash=sha256:49f0805fc0b2ac8d4882dd52f4a3b935b210935d500b6b805f321addc8177406 \ - --hash=sha256:5429ec739a29df2e29e15d082f1d9ad683701f0ec7709ca479b3ff2708dae65a \ - --hash=sha256:5a1b41bc97f1ad230a41657d9155113c7521953869ae57ac39ac7f1bb471469a \ - --hash=sha256:68a2dec79deebc5d26d617bfdf6e8aab065a4f34934b22d3b5010df3ba36612c \ - --hash=sha256:7a698cb1dac82c35fcf8fe3417a3aaba97de16a01ac914b89a0889d364d2f6be \ - --hash=sha256:841df4caa01008bad253bce2a6f7b47f86dc9f08df4b433c404def869f590a15 \ - --hash=sha256:90452ba79b8788fa380dfb587cca692976ef4e757b194b093d845e8d99f612f2 \ - --hash=sha256:928258ba5d6f8ae644e764d0f996d61a8777559f72dfeb2eea7e2fe0ad6e782d \ - --hash=sha256:af03b32695b24d85a75d40e1ba39ffe7db7ffcb099fe507b39fd41a565f1b157 \ - --hash=sha256:b640981bf64a3e978a56167594a0e97db71c89a479da8e175d8bb5be5178c003 \ - --hash=sha256:c5ca78485a255e03c32b513f8c2bc39fedb7f5c5f8535545bdc223a03b24f248 \ - --hash=sha256:c7f3201ec47d5207841402594f1d7950879ef890c0c495052fa62f58283fde1a \ - --hash=sha256:d5ec85080cce7b0513cfd233914eb8b7bbd0633f1d1703aa28d1dd5a72f678ec \ - --hash=sha256:d6c391c021ab1f7a82da5d8d0b3cee2f4b2c455ec86c8aebbc84837a631ff309 \ - --hash=sha256:e3114da6d7f95d2dee7d3f4eec16dacff819740bbab931aff8648cb13c5ff5e7 \ - --hash=sha256:f983596065a18a2183e7f79ab3fd4c475205b839e02cbc0efbbf9666c4b3083d +cryptography==42.0.2 \ + --hash=sha256:087887e55e0b9c8724cf05361357875adb5c20dec27e5816b653492980d20380 \ + --hash=sha256:09a77e5b2e8ca732a19a90c5bca2d124621a1edb5438c5daa2d2738bfeb02589 \ + --hash=sha256:130c0f77022b2b9c99d8cebcdd834d81705f61c68e91ddd614ce74c657f8b3ea \ + --hash=sha256:141e2aa5ba100d3788c0ad7919b288f89d1fe015878b9659b307c9ef867d3a65 \ + --hash=sha256:28cb2c41f131a5758d6ba6a0504150d644054fd9f3203a1e8e8d7ac3aea7f73a \ + --hash=sha256:2f9f14185962e6a04ab32d1abe34eae8a9001569ee4edb64d2304bf0d65c53f3 \ + --hash=sha256:320948ab49883557a256eab46149df79435a22d2fefd6a66fe6946f1b9d9d008 \ + --hash=sha256:36d4b7c4be6411f58f60d9ce555a73df8406d484ba12a63549c88bd64f7967f1 \ + --hash=sha256:3b15c678f27d66d247132cbf13df2f75255627bcc9b6a570f7d2fd08e8c081d2 \ + --hash=sha256:3dbd37e14ce795b4af61b89b037d4bc157f2cb23e676fa16932185a04dfbf635 \ + --hash=sha256:4383b47f45b14459cab66048d384614019965ba6c1a1a141f11b5a551cace1b2 \ + --hash=sha256:44c95c0e96b3cb628e8452ec060413a49002a247b2b9938989e23a2c8291fc90 \ + --hash=sha256:4b063d3413f853e056161eb0c7724822a9740ad3caa24b8424d776cebf98e7ee \ + --hash=sha256:52ed9ebf8ac602385126c9a2fe951db36f2cb0c2538d22971487f89d0de4065a \ + --hash=sha256:55d1580e2d7e17f45d19d3b12098e352f3a37fe86d380bf45846ef257054b242 \ + --hash=sha256:5ef9bc3d046ce83c4bbf4c25e1e0547b9c441c01d30922d812e887dc5f125c12 \ + --hash=sha256:5fa82a26f92871eca593b53359c12ad7949772462f887c35edaf36f87953c0e2 \ + --hash=sha256:61321672b3ac7aade25c40449ccedbc6db72c7f5f0fdf34def5e2f8b51ca530d \ + --hash=sha256:701171f825dcab90969596ce2af253143b93b08f1a716d4b2a9d2db5084ef7be \ + --hash=sha256:841ec8af7a8491ac76ec5a9522226e287187a3107e12b7d686ad354bb78facee \ + --hash=sha256:8a06641fb07d4e8f6c7dda4fc3f8871d327803ab6542e33831c7ccfdcb4d0ad6 \ + --hash=sha256:8e88bb9eafbf6a4014d55fb222e7360eef53e613215085e65a13290577394529 \ + --hash=sha256:a00aee5d1b6c20620161984f8ab2ab69134466c51f58c052c11b076715e72929 \ + --hash=sha256:a047682d324ba56e61b7ea7c7299d51e61fd3bca7dad2ccc39b72bd0118d60a1 \ + --hash=sha256:a7ef8dd0bf2e1d0a27042b231a3baac6883cdd5557036f5e8df7139255feaac6 \ + --hash=sha256:ad28cff53f60d99a928dfcf1e861e0b2ceb2bc1f08a074fdd601b314e1cc9e0a \ + --hash=sha256:b9097a208875fc7bbeb1286d0125d90bdfed961f61f214d3f5be62cd4ed8a446 \ + --hash=sha256:b97fe7d7991c25e6a31e5d5e795986b18fbbb3107b873d5f3ae6dc9a103278e9 \ + --hash=sha256:e0ec52ba3c7f1b7d813cd52649a5b3ef1fc0d433219dc8c93827c57eab6cf888 \ + --hash=sha256:ea2c3ffb662fec8bbbfce5602e2c159ff097a4631d96235fcf0fb00e59e3ece4 \ + --hash=sha256:fa3dec4ba8fb6e662770b74f62f1a0c7d4e37e25b58b2bf2c1be4c95372b4a33 \ + --hash=sha256:fbeb725c9dc799a574518109336acccaf1303c30d45c075c665c0793c2f79a7f # via pyopenssl dateparser==1.2.0 \ --hash=sha256:0b21ad96534e562920a0083e97fd45fa959882d4162acc358705144520a35830 \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 36bf2093041..33c4adad834 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -237,30 +237,39 @@ cookiecutter==2.5.0 \ --hash=sha256:8aa2f12ed11bc05628651e9dc4353a10571dd9908aaaaeec959a2b9ea465a5d2 \ --hash=sha256:e61e9034748e3f41b8bd2c11f00d030784b48711c4d5c42363c50989a65331ec # via aws-sam-cli (setup.py) -cryptography==41.0.7 \ - --hash=sha256:079b85658ea2f59c4f43b70f8119a52414cdb7be34da5d019a77bf96d473b960 \ - --hash=sha256:09616eeaef406f99046553b8a40fbf8b1e70795a91885ba4c96a70793de5504a \ - --hash=sha256:13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc \ - --hash=sha256:37a138589b12069efb424220bf78eac59ca68b95696fc622b6ccc1c0a197204a \ - --hash=sha256:3c78451b78313fa81607fa1b3f1ae0a5ddd8014c38a02d9db0616133987b9cdf \ - --hash=sha256:43f2552a2378b44869fe8827aa19e69512e3245a219104438692385b0ee119d1 \ - --hash=sha256:48a0476626da912a44cc078f9893f292f0b3e4c739caf289268168d8f4702a39 \ - --hash=sha256:49f0805fc0b2ac8d4882dd52f4a3b935b210935d500b6b805f321addc8177406 \ - --hash=sha256:5429ec739a29df2e29e15d082f1d9ad683701f0ec7709ca479b3ff2708dae65a \ - --hash=sha256:5a1b41bc97f1ad230a41657d9155113c7521953869ae57ac39ac7f1bb471469a \ - --hash=sha256:68a2dec79deebc5d26d617bfdf6e8aab065a4f34934b22d3b5010df3ba36612c \ - --hash=sha256:7a698cb1dac82c35fcf8fe3417a3aaba97de16a01ac914b89a0889d364d2f6be \ - --hash=sha256:841df4caa01008bad253bce2a6f7b47f86dc9f08df4b433c404def869f590a15 \ - --hash=sha256:90452ba79b8788fa380dfb587cca692976ef4e757b194b093d845e8d99f612f2 \ - --hash=sha256:928258ba5d6f8ae644e764d0f996d61a8777559f72dfeb2eea7e2fe0ad6e782d \ - --hash=sha256:af03b32695b24d85a75d40e1ba39ffe7db7ffcb099fe507b39fd41a565f1b157 \ - --hash=sha256:b640981bf64a3e978a56167594a0e97db71c89a479da8e175d8bb5be5178c003 \ - --hash=sha256:c5ca78485a255e03c32b513f8c2bc39fedb7f5c5f8535545bdc223a03b24f248 \ - --hash=sha256:c7f3201ec47d5207841402594f1d7950879ef890c0c495052fa62f58283fde1a \ - --hash=sha256:d5ec85080cce7b0513cfd233914eb8b7bbd0633f1d1703aa28d1dd5a72f678ec \ - --hash=sha256:d6c391c021ab1f7a82da5d8d0b3cee2f4b2c455ec86c8aebbc84837a631ff309 \ - --hash=sha256:e3114da6d7f95d2dee7d3f4eec16dacff819740bbab931aff8648cb13c5ff5e7 \ - --hash=sha256:f983596065a18a2183e7f79ab3fd4c475205b839e02cbc0efbbf9666c4b3083d +cryptography==42.0.2 \ + --hash=sha256:087887e55e0b9c8724cf05361357875adb5c20dec27e5816b653492980d20380 \ + --hash=sha256:09a77e5b2e8ca732a19a90c5bca2d124621a1edb5438c5daa2d2738bfeb02589 \ + --hash=sha256:130c0f77022b2b9c99d8cebcdd834d81705f61c68e91ddd614ce74c657f8b3ea \ + --hash=sha256:141e2aa5ba100d3788c0ad7919b288f89d1fe015878b9659b307c9ef867d3a65 \ + --hash=sha256:28cb2c41f131a5758d6ba6a0504150d644054fd9f3203a1e8e8d7ac3aea7f73a \ + --hash=sha256:2f9f14185962e6a04ab32d1abe34eae8a9001569ee4edb64d2304bf0d65c53f3 \ + --hash=sha256:320948ab49883557a256eab46149df79435a22d2fefd6a66fe6946f1b9d9d008 \ + --hash=sha256:36d4b7c4be6411f58f60d9ce555a73df8406d484ba12a63549c88bd64f7967f1 \ + --hash=sha256:3b15c678f27d66d247132cbf13df2f75255627bcc9b6a570f7d2fd08e8c081d2 \ + --hash=sha256:3dbd37e14ce795b4af61b89b037d4bc157f2cb23e676fa16932185a04dfbf635 \ + --hash=sha256:4383b47f45b14459cab66048d384614019965ba6c1a1a141f11b5a551cace1b2 \ + --hash=sha256:44c95c0e96b3cb628e8452ec060413a49002a247b2b9938989e23a2c8291fc90 \ + --hash=sha256:4b063d3413f853e056161eb0c7724822a9740ad3caa24b8424d776cebf98e7ee \ + --hash=sha256:52ed9ebf8ac602385126c9a2fe951db36f2cb0c2538d22971487f89d0de4065a \ + --hash=sha256:55d1580e2d7e17f45d19d3b12098e352f3a37fe86d380bf45846ef257054b242 \ + --hash=sha256:5ef9bc3d046ce83c4bbf4c25e1e0547b9c441c01d30922d812e887dc5f125c12 \ + --hash=sha256:5fa82a26f92871eca593b53359c12ad7949772462f887c35edaf36f87953c0e2 \ + --hash=sha256:61321672b3ac7aade25c40449ccedbc6db72c7f5f0fdf34def5e2f8b51ca530d \ + --hash=sha256:701171f825dcab90969596ce2af253143b93b08f1a716d4b2a9d2db5084ef7be \ + --hash=sha256:841ec8af7a8491ac76ec5a9522226e287187a3107e12b7d686ad354bb78facee \ + --hash=sha256:8a06641fb07d4e8f6c7dda4fc3f8871d327803ab6542e33831c7ccfdcb4d0ad6 \ + --hash=sha256:8e88bb9eafbf6a4014d55fb222e7360eef53e613215085e65a13290577394529 \ + --hash=sha256:a00aee5d1b6c20620161984f8ab2ab69134466c51f58c052c11b076715e72929 \ + --hash=sha256:a047682d324ba56e61b7ea7c7299d51e61fd3bca7dad2ccc39b72bd0118d60a1 \ + --hash=sha256:a7ef8dd0bf2e1d0a27042b231a3baac6883cdd5557036f5e8df7139255feaac6 \ + --hash=sha256:ad28cff53f60d99a928dfcf1e861e0b2ceb2bc1f08a074fdd601b314e1cc9e0a \ + --hash=sha256:b9097a208875fc7bbeb1286d0125d90bdfed961f61f214d3f5be62cd4ed8a446 \ + --hash=sha256:b97fe7d7991c25e6a31e5d5e795986b18fbbb3107b873d5f3ae6dc9a103278e9 \ + --hash=sha256:e0ec52ba3c7f1b7d813cd52649a5b3ef1fc0d433219dc8c93827c57eab6cf888 \ + --hash=sha256:ea2c3ffb662fec8bbbfce5602e2c159ff097a4631d96235fcf0fb00e59e3ece4 \ + --hash=sha256:fa3dec4ba8fb6e662770b74f62f1a0c7d4e37e25b58b2bf2c1be4c95372b4a33 \ + --hash=sha256:fbeb725c9dc799a574518109336acccaf1303c30d45c075c665c0793c2f79a7f # via pyopenssl dateparser==1.2.0 \ --hash=sha256:0b21ad96534e562920a0083e97fd45fa959882d4162acc358705144520a35830 \ From 2ad426795cc8b569a08baa4a3b4fb61cd80852c8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Feb 2024 16:51:27 -0800 Subject: [PATCH 090/100] chore(deps): bump pydantic from 2.5.3 to 2.6.0 in /requirements (#6627) * chore(deps): bump pydantic from 2.5.3 to 2.6.0 in /requirements Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.5.3 to 2.6.0. - [Release notes](https://github.com/pydantic/pydantic/releases) - [Changelog](https://github.com/pydantic/pydantic/blob/main/HISTORY.md) - [Commits](https://github.com/pydantic/pydantic/compare/v2.5.3...v2.6.0) --- updated-dependencies: - dependency-name: pydantic dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Update reproducibles: update-reproducible-linux-reqs * Update reproducibles: update-reproducible-mac-reqs * Update reproducibles: update-reproducible-win-reqs --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: GitHub Action --- requirements/reproducible-linux.txt | 192 ++++++++++++---------------- requirements/reproducible-mac.txt | 192 ++++++++++++---------------- requirements/reproducible-win.txt | 192 ++++++++++++---------------- 3 files changed, 249 insertions(+), 327 deletions(-) diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index d56a944740f..5c6eaae4652 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -481,116 +481,90 @@ pycparser==2.21 \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 # via cffi -pydantic==2.5.3 \ - --hash=sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a \ - --hash=sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4 +pydantic==2.6.0 \ + --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ + --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf # via aws-sam-translator -pydantic-core==2.14.6 \ - --hash=sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556 \ - --hash=sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e \ - --hash=sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411 \ - --hash=sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245 \ - --hash=sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c \ - --hash=sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66 \ - --hash=sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd \ - --hash=sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d \ - --hash=sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b \ - --hash=sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06 \ - --hash=sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948 \ - --hash=sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341 \ - --hash=sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0 \ - --hash=sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f \ - --hash=sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a \ - --hash=sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2 \ - --hash=sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51 \ - --hash=sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80 \ - --hash=sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8 \ - --hash=sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d \ - --hash=sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8 \ - --hash=sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb \ - --hash=sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590 \ - --hash=sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87 \ - --hash=sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534 \ - --hash=sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b \ - --hash=sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145 \ - --hash=sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba \ - --hash=sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b \ - --hash=sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2 \ - --hash=sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e \ - --hash=sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052 \ - --hash=sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622 \ - --hash=sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab \ - --hash=sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b \ - --hash=sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66 \ - --hash=sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e \ - --hash=sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4 \ - --hash=sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e \ - --hash=sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec \ - --hash=sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c \ - --hash=sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed \ - --hash=sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937 \ - --hash=sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f \ - --hash=sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9 \ - --hash=sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4 \ - --hash=sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96 \ - --hash=sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277 \ - --hash=sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23 \ - --hash=sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7 \ - --hash=sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b \ - --hash=sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91 \ - --hash=sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d \ - --hash=sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e \ - --hash=sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1 \ - --hash=sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2 \ - --hash=sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160 \ - --hash=sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9 \ - --hash=sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670 \ - --hash=sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7 \ - --hash=sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c \ - --hash=sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb \ - --hash=sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42 \ - --hash=sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d \ - --hash=sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8 \ - --hash=sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1 \ - --hash=sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6 \ - --hash=sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8 \ - --hash=sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf \ - --hash=sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e \ - --hash=sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a \ - --hash=sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9 \ - --hash=sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1 \ - --hash=sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40 \ - --hash=sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2 \ - --hash=sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d \ - --hash=sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f \ - --hash=sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f \ - --hash=sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af \ - --hash=sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7 \ - --hash=sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda \ - --hash=sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a \ - --hash=sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95 \ - --hash=sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0 \ - --hash=sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60 \ - --hash=sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149 \ - --hash=sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975 \ - --hash=sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4 \ - --hash=sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe \ - --hash=sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94 \ - --hash=sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03 \ - --hash=sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c \ - --hash=sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b \ - --hash=sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a \ - --hash=sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24 \ - --hash=sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391 \ - --hash=sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c \ - --hash=sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab \ - --hash=sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd \ - --hash=sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786 \ - --hash=sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08 \ - --hash=sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8 \ - --hash=sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6 \ - --hash=sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0 \ - --hash=sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421 +pydantic-core==2.16.1 \ + --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ + --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ + --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ + --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ + --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ + --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ + --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ + --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ + --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ + --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ + --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ + --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ + --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ + --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ + --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ + --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ + --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ + --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ + --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ + --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ + --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ + --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ + --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ + --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ + --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ + --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ + --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ + --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ + --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ + --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ + --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ + --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ + --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ + --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ + --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ + --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ + --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ + --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ + --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ + --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ + --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ + --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ + --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ + --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ + --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ + --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ + --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ + --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ + --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ + --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ + --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ + --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ + --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ + --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ + --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ + --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ + --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ + --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ + --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ + --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ + --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ + --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ + --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ + --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ + --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ + --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ + --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ + --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ + --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ + --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ + --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ + --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ + --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ + --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ + --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ + --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ + --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ + --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ + --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e # via pydantic pygments==2.17.2 \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index c256ebcdae0..79f5480eccc 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -513,116 +513,90 @@ pycparser==2.21 \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 # via cffi -pydantic==2.5.3 \ - --hash=sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a \ - --hash=sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4 +pydantic==2.6.0 \ + --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ + --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf # via aws-sam-translator -pydantic-core==2.14.6 \ - --hash=sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556 \ - --hash=sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e \ - --hash=sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411 \ - --hash=sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245 \ - --hash=sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c \ - --hash=sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66 \ - --hash=sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd \ - --hash=sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d \ - --hash=sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b \ - --hash=sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06 \ - --hash=sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948 \ - --hash=sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341 \ - --hash=sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0 \ - --hash=sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f \ - --hash=sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a \ - --hash=sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2 \ - --hash=sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51 \ - --hash=sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80 \ - --hash=sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8 \ - --hash=sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d \ - --hash=sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8 \ - --hash=sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb \ - --hash=sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590 \ - --hash=sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87 \ - --hash=sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534 \ - --hash=sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b \ - --hash=sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145 \ - --hash=sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba \ - --hash=sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b \ - --hash=sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2 \ - --hash=sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e \ - --hash=sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052 \ - --hash=sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622 \ - --hash=sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab \ - --hash=sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b \ - --hash=sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66 \ - --hash=sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e \ - --hash=sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4 \ - --hash=sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e \ - --hash=sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec \ - --hash=sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c \ - --hash=sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed \ - --hash=sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937 \ - --hash=sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f \ - --hash=sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9 \ - --hash=sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4 \ - --hash=sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96 \ - --hash=sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277 \ - --hash=sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23 \ - --hash=sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7 \ - --hash=sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b \ - --hash=sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91 \ - --hash=sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d \ - --hash=sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e \ - --hash=sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1 \ - --hash=sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2 \ - --hash=sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160 \ - --hash=sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9 \ - --hash=sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670 \ - --hash=sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7 \ - --hash=sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c \ - --hash=sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb \ - --hash=sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42 \ - --hash=sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d \ - --hash=sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8 \ - --hash=sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1 \ - --hash=sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6 \ - --hash=sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8 \ - --hash=sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf \ - --hash=sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e \ - --hash=sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a \ - --hash=sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9 \ - --hash=sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1 \ - --hash=sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40 \ - --hash=sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2 \ - --hash=sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d \ - --hash=sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f \ - --hash=sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f \ - --hash=sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af \ - --hash=sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7 \ - --hash=sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda \ - --hash=sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a \ - --hash=sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95 \ - --hash=sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0 \ - --hash=sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60 \ - --hash=sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149 \ - --hash=sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975 \ - --hash=sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4 \ - --hash=sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe \ - --hash=sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94 \ - --hash=sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03 \ - --hash=sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c \ - --hash=sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b \ - --hash=sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a \ - --hash=sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24 \ - --hash=sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391 \ - --hash=sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c \ - --hash=sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab \ - --hash=sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd \ - --hash=sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786 \ - --hash=sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08 \ - --hash=sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8 \ - --hash=sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6 \ - --hash=sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0 \ - --hash=sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421 +pydantic-core==2.16.1 \ + --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ + --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ + --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ + --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ + --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ + --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ + --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ + --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ + --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ + --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ + --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ + --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ + --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ + --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ + --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ + --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ + --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ + --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ + --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ + --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ + --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ + --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ + --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ + --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ + --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ + --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ + --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ + --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ + --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ + --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ + --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ + --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ + --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ + --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ + --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ + --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ + --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ + --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ + --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ + --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ + --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ + --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ + --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ + --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ + --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ + --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ + --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ + --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ + --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ + --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ + --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ + --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ + --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ + --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ + --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ + --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ + --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ + --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ + --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ + --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ + --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ + --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ + --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ + --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ + --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ + --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ + --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ + --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ + --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ + --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ + --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ + --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ + --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ + --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ + --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ + --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ + --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ + --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ + --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e # via pydantic pygments==2.17.2 \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 33c4adad834..f60951b0e99 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -485,116 +485,90 @@ pycparser==2.21 \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 # via cffi -pydantic==2.5.3 \ - --hash=sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a \ - --hash=sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4 +pydantic==2.6.0 \ + --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ + --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf # via aws-sam-translator -pydantic-core==2.14.6 \ - --hash=sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556 \ - --hash=sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e \ - --hash=sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411 \ - --hash=sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245 \ - --hash=sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c \ - --hash=sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66 \ - --hash=sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd \ - --hash=sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d \ - --hash=sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b \ - --hash=sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06 \ - --hash=sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948 \ - --hash=sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341 \ - --hash=sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0 \ - --hash=sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f \ - --hash=sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a \ - --hash=sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2 \ - --hash=sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51 \ - --hash=sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80 \ - --hash=sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8 \ - --hash=sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d \ - --hash=sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8 \ - --hash=sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb \ - --hash=sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590 \ - --hash=sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87 \ - --hash=sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534 \ - --hash=sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b \ - --hash=sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145 \ - --hash=sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba \ - --hash=sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b \ - --hash=sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2 \ - --hash=sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e \ - --hash=sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052 \ - --hash=sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622 \ - --hash=sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab \ - --hash=sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b \ - --hash=sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66 \ - --hash=sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e \ - --hash=sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4 \ - --hash=sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e \ - --hash=sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec \ - --hash=sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c \ - --hash=sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed \ - --hash=sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937 \ - --hash=sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f \ - --hash=sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9 \ - --hash=sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4 \ - --hash=sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96 \ - --hash=sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277 \ - --hash=sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23 \ - --hash=sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7 \ - --hash=sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b \ - --hash=sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91 \ - --hash=sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d \ - --hash=sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e \ - --hash=sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1 \ - --hash=sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2 \ - --hash=sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160 \ - --hash=sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9 \ - --hash=sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670 \ - --hash=sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7 \ - --hash=sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c \ - --hash=sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb \ - --hash=sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42 \ - --hash=sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d \ - --hash=sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8 \ - --hash=sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1 \ - --hash=sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6 \ - --hash=sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8 \ - --hash=sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf \ - --hash=sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e \ - --hash=sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a \ - --hash=sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9 \ - --hash=sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1 \ - --hash=sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40 \ - --hash=sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2 \ - --hash=sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d \ - --hash=sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f \ - --hash=sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f \ - --hash=sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af \ - --hash=sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7 \ - --hash=sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda \ - --hash=sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a \ - --hash=sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95 \ - --hash=sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0 \ - --hash=sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60 \ - --hash=sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149 \ - --hash=sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975 \ - --hash=sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4 \ - --hash=sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe \ - --hash=sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94 \ - --hash=sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03 \ - --hash=sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c \ - --hash=sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b \ - --hash=sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a \ - --hash=sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24 \ - --hash=sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391 \ - --hash=sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c \ - --hash=sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab \ - --hash=sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd \ - --hash=sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786 \ - --hash=sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08 \ - --hash=sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8 \ - --hash=sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6 \ - --hash=sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0 \ - --hash=sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421 +pydantic-core==2.16.1 \ + --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ + --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ + --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ + --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ + --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ + --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ + --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ + --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ + --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ + --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ + --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ + --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ + --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ + --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ + --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ + --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ + --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ + --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ + --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ + --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ + --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ + --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ + --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ + --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ + --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ + --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ + --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ + --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ + --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ + --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ + --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ + --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ + --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ + --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ + --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ + --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ + --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ + --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ + --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ + --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ + --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ + --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ + --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ + --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ + --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ + --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ + --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ + --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ + --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ + --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ + --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ + --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ + --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ + --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ + --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ + --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ + --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ + --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ + --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ + --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ + --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ + --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ + --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ + --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ + --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ + --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ + --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ + --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ + --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ + --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ + --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ + --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ + --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ + --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ + --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ + --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ + --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ + --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ + --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e # via pydantic pygments==2.17.2 \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ From 0b5714f335ba01635ef809bf9d6a15a881089f8f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 2 Feb 2024 01:28:43 +0000 Subject: [PATCH 091/100] feat: updating app templates repo hash with (8aa3d54040f6c970cf57bdc6292078e067c83a4e) (#6631) Co-authored-by: GitHub Action --- samcli/runtime_config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samcli/runtime_config.json b/samcli/runtime_config.json index 6f85bec2cc3..e80b128a36d 100644 --- a/samcli/runtime_config.json +++ b/samcli/runtime_config.json @@ -1,3 +1,3 @@ { - "app_template_repo_commit": "1771a829b73a160b921801361f6a309f4a873dcb" + "app_template_repo_commit": "8aa3d54040f6c970cf57bdc6292078e067c83a4e" } From 36e9495a0f1113aa394509cf37fceee43e93384c Mon Sep 17 00:00:00 2001 From: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com> Date: Fri, 2 Feb 2024 16:35:03 -0800 Subject: [PATCH 092/100] fix: lock invocation per function for not having concurrent requests (#6622) * fix: lock invocation per function for not having concurrent requests * update integration tests to run with both eager and lazy mode * formatting * Update tests/integration/local/start_api/test_start_api.py --- samcli/local/docker/container.py | 26 +++++++++++++++---- .../local/start_api/test_start_api.py | 14 +++++----- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/samcli/local/docker/container.py b/samcli/local/docker/container.py index 1497475f18a..a95d951c1a5 100644 --- a/samcli/local/docker/container.py +++ b/samcli/local/docker/container.py @@ -31,6 +31,11 @@ CONTAINER_CONNECTION_TIMEOUT = float(os.environ.get("SAM_CLI_CONTAINER_CONNECTION_TIMEOUT", 20)) DEFAULT_CONTAINER_HOST_INTERFACE = "127.0.0.1" +# Keep a lock instance to access the locks for individual containers (see dict below) +CONCURRENT_CALL_MANAGER_LOCK = threading.Lock() +# Keeps locks per container (aka per function) so that one function can be invoked one at a time +CONCURRENT_CALL_MANAGER: Dict[str, threading.Lock] = {} + class ContainerResponseException(Exception): """ @@ -378,11 +383,22 @@ def wait_for_http_response(self, name, event, stdout) -> Tuple[Union[str, bytes] # NOTE(sriram-mv): There is a connection timeout set on the http call to `aws-lambda-rie`, however there is not # a read time out for the response received from the server. - resp = requests.post( - self.URL.format(host=self._container_host, port=self.rapid_port_host, function_name="function"), - data=event.encode("utf-8"), - timeout=(self.RAPID_CONNECTION_TIMEOUT, None), - ) + # generate a lock key with host-port combination which is unique per function + lock_key = f"{self._container_host}-{self.rapid_port_host}" + LOG.debug("Getting lock for the key %s", lock_key) + with CONCURRENT_CALL_MANAGER_LOCK: + lock = CONCURRENT_CALL_MANAGER.get(lock_key) + if not lock: + lock = threading.Lock() + CONCURRENT_CALL_MANAGER[lock_key] = lock + LOG.debug("Waiting to retrieve the lock (%s) to start invocation", lock_key) + with lock: + resp = requests.post( + self.URL.format(host=self._container_host, port=self.rapid_port_host, function_name="function"), + data=event.encode("utf-8"), + timeout=(self.RAPID_CONNECTION_TIMEOUT, None), + ) + try: # if response is an image then json.loads/dumps will throw a UnicodeDecodeError so return raw content if "image" in resp.headers["Content-Type"]: diff --git a/tests/integration/local/start_api/test_start_api.py b/tests/integration/local/start_api/test_start_api.py index c0b5fb44e2b..984a4c639e2 100644 --- a/tests/integration/local/start_api/test_start_api.py +++ b/tests/integration/local/start_api/test_start_api.py @@ -149,10 +149,11 @@ def test_large_input_request_http10(self): @parameterized_class( - ("template_path",), + ("template_path", "container_mode"), [ - ("/testdata/start_api/template.yaml",), - ("/testdata/start_api/cdk/template_cdk.yaml",), + ("/testdata/start_api/template.yaml", "LAZY"), + ("/testdata/start_api/template.yaml", "EAGER"), + ("/testdata/start_api/cdk/template_cdk.yaml", "LAZY"), ], ) class TestParallelRequests(StartApiIntegBaseClass): @@ -179,16 +180,15 @@ def test_same_endpoint(self): for _ in range(0, number_of_requests) ] results = [r.result() for r in as_completed(futures)] - end_time = time() - self.assertEqual(len(results), 10) - self.assertGreater(end_time - start_time, 10) - for result in results: self.assertEqual(result.status_code, 200) self.assertEqual(result.json(), {"message": "HelloWorld! I just slept and waking up."}) self.assertEqual(result.raw.version, 11) # Checks if the response is HTTP/1.1 version + # after checking responses now check the time to complete + self.assertEqual(len(results), 10) + self.assertGreater(end_time - start_time, 10) @pytest.mark.flaky(reruns=3) @pytest.mark.timeout(timeout=600, method="thread") From c6b115541db189bcaaefbd5afe1ee6b4ee7a1801 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 21:21:19 +0000 Subject: [PATCH 093/100] chore(deps-dev): bump black from 23.12.1 to 24.1.1 in /requirements (#6626) * chore(deps-dev): bump black from 23.12.1 to 24.1.1 in /requirements Bumps [black](https://github.com/psf/black) from 23.12.1 to 24.1.1. - [Release notes](https://github.com/psf/black/releases) - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md) - [Commits](https://github.com/psf/black/compare/23.12.1...24.1.1) --- updated-dependencies: - dependency-name: black dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * formatting --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com> --- requirements/dev.txt | 2 +- samcli/cli/cli_config_file.py | 6 +-- samcli/cli/command.py | 1 + samcli/cli/core/command.py | 1 + samcli/cli/core/options.py | 1 + samcli/cli/formatters.py | 1 + samcli/cli/global_config.py | 10 ++--- samcli/cli/hidden_imports.py | 1 + samcli/cli/root/command_list.py | 1 + .../commands/_utils/cdk_support_decorators.py | 1 + samcli/commands/_utils/click_mutex.py | 1 + .../_utils/command_exception_handler.py | 1 + samcli/commands/_utils/constants.py | 1 + .../custom_options/replace_help_option.py | 1 + samcli/commands/_utils/experimental.py | 1 + .../commands/_utils/option_value_processor.py | 1 + samcli/commands/_utils/options.py | 14 ++++--- samcli/commands/_utils/table_print.py | 1 + samcli/commands/_utils/template.py | 1 + samcli/commands/bootstrap/command.py | 1 + samcli/commands/build/build_context.py | 1 + samcli/commands/build/click_container.py | 1 + samcli/commands/build/core/formatters.py | 1 + samcli/commands/build/core/options.py | 1 + samcli/commands/build/utils.py | 1 + samcli/commands/delete/delete_context.py | 1 + samcli/commands/delete/exceptions.py | 1 + samcli/commands/deploy/auth_utils.py | 1 + samcli/commands/deploy/command.py | 9 ++-- samcli/commands/deploy/core/options.py | 1 + samcli/commands/deploy/exceptions.py | 1 + samcli/commands/deploy/guided_config.py | 1 + samcli/commands/docs/command.py | 1 + samcli/commands/docs/core/command.py | 1 + samcli/commands/docs/core/formatter.py | 1 + samcli/commands/exceptions.py | 1 + samcli/commands/init/__init__.py | 1 + samcli/commands/init/command.py | 1 + samcli/commands/init/core/options.py | 1 + samcli/commands/init/init_flow_helpers.py | 1 + samcli/commands/init/init_templates.py | 1 + samcli/commands/init/interactive_init_flow.py | 1 + .../list/cli_common/list_common_context.py | 1 + .../list/endpoints/endpoints_context.py | 1 + samcli/commands/list/exceptions.py | 1 - samcli/commands/list/json_consumer.py | 1 + .../list/resources/resources_context.py | 1 + .../stack_outputs/stack_outputs_context.py | 1 + samcli/commands/list/table_consumer.py | 1 + .../local/cli_common/invoke_context.py | 1 + samcli/commands/local/cli_common/options.py | 1 + .../local/generate_event/core/command.py | 1 + samcli/commands/local/invoke/core/command.py | 1 + .../commands/local/invoke/core/formatters.py | 1 + samcli/commands/local/invoke/core/options.py | 1 + samcli/commands/local/lib/exceptions.py | 1 + .../local/lib/local_lambda_service.py | 1 + .../validators/identity_source_validator.py | 1 + .../local/lib/validators/lambda_auth_props.py | 1 + .../local/start_api/core/formatters.py | 1 + .../commands/local/start_api/core/options.py | 1 + .../local/start_lambda/core/formatters.py | 1 + .../local/start_lambda/core/options.py | 1 + samcli/commands/logs/core/options.py | 1 + samcli/commands/logs/puller_factory.py | 1 + .../logs/validation_and_exception_handlers.py | 1 + samcli/commands/package/command.py | 1 + samcli/commands/package/core/command.py | 1 + samcli/commands/package/core/options.py | 1 + samcli/commands/package/exceptions.py | 1 + samcli/commands/pipeline/bootstrap/cli.py | 1 + .../pipeline/bootstrap/guided_context.py | 41 ++++++++++++------- .../pipeline/bootstrap/oidc_config.py | 1 + .../bootstrap/pipeline_oidc_provider.py | 1 + samcli/commands/pipeline/external_links.py | 1 + samcli/commands/pipeline/init/cli.py | 1 + .../pipeline/init/interactive_init_flow.py | 1 + .../init/pipeline_templates_manifest.py | 1 + samcli/commands/remote/exceptions.py | 1 + samcli/commands/remote/invoke/cli.py | 1 + samcli/commands/remote/invoke/core/command.py | 1 + .../commands/remote/invoke/core/formatters.py | 1 + samcli/commands/remote/invoke/core/options.py | 1 + .../commands/remote/remote_invoke_context.py | 1 + .../remote/test_event/core/base_options.py | 1 + .../remote/test_event/core/formatters.py | 1 + .../remote/test_event/delete/core/command.py | 1 + .../remote/test_event/delete/core/options.py | 1 + samcli/commands/remote/test_event/get/cli.py | 1 + .../remote/test_event/get/core/command.py | 1 + .../remote/test_event/get/core/formatters.py | 1 + .../remote/test_event/get/core/options.py | 1 + .../remote/test_event/list/core/command.py | 1 + .../remote/test_event/list/core/formatters.py | 1 + .../remote/test_event/list/core/options.py | 1 + samcli/commands/remote/test_event/put/cli.py | 1 + .../remote/test_event/put/core/command.py | 1 + .../remote/test_event/put/core/formatters.py | 1 + .../remote/test_event/put/core/options.py | 1 + .../commands/remote/test_event/test_event.py | 1 + samcli/commands/sync/command.py | 1 + samcli/commands/sync/core/command.py | 1 + samcli/commands/sync/core/formatters.py | 1 + samcli/commands/sync/core/options.py | 1 + samcli/commands/sync/sync_context.py | 1 + samcli/commands/traces/command.py | 1 + .../commands/traces/traces_puller_factory.py | 1 + samcli/commands/validate/core/formatters.py | 1 + samcli/commands/validate/core/options.py | 1 + samcli/commands/validate/validate.py | 1 + samcli/hook_packages/terraform/__init__.py | 1 + .../terraform/hooks/prepare/constants.py | 1 + .../terraform/hooks/prepare/enrich.py | 1 + .../terraform/hooks/prepare/exceptions.py | 1 + .../terraform/hooks/prepare/hook.py | 1 + .../hooks/prepare/makefile_generator.py | 1 + .../hooks/prepare/property_builder.py | 1 + .../hooks/prepare/resource_linking.py | 19 +++++---- .../prepare/resources/code_resource_utils.py | 1 + .../hooks/prepare/resources/internal.py | 1 + .../prepare/resources/lambda_function.py | 1 + .../prepare/resources/resource_properties.py | 1 + .../terraform/hooks/prepare/translate.py | 1 + .../terraform/hooks/prepare/types.py | 1 + .../terraform/hooks/prepare/utilities.py | 1 + samcli/hook_packages/terraform/lib/utils.py | 1 + samcli/hook_packages/terraform/main.py | 1 + .../companion_stack_builder.py | 1 + .../companion_stack_manager.py | 1 + .../bootstrap/companion_stack/data_types.py | 1 + .../nested_stack/nested_stack_builder.py | 1 + .../nested_stack/nested_stack_manager.py | 1 + samcli/lib/bootstrap/stack_builder.py | 1 + samcli/lib/build/app_builder.py | 1 + samcli/lib/build/build_strategy.py | 1 + samcli/lib/build/bundler.py | 1 + samcli/lib/build/constants.py | 1 + samcli/lib/build/dependency_hash_generator.py | 1 + samcli/lib/build/exceptions.py | 1 - samcli/lib/build/utils.py | 1 + .../image_repository_validation.py | 1 + .../remote_invoke_options_validations.py | 1 + samcli/lib/config/exceptions.py | 1 - samcli/lib/config/file_manager.py | 1 - samcli/lib/cookiecutter/interactive_flow.py | 1 + .../cookiecutter/interactive_flow_creator.py | 1 + samcli/lib/cookiecutter/plugin.py | 1 + samcli/lib/cookiecutter/processor.py | 1 + samcli/lib/cookiecutter/question.py | 1 + samcli/lib/cookiecutter/template.py | 1 + samcli/lib/deploy/deployer.py | 6 +-- samcli/lib/docker/log_streamer.py | 1 + samcli/lib/docs/browser_configuration.py | 1 + samcli/lib/docs/documentation.py | 1 + samcli/lib/generated_sample_events/events.py | 1 - samcli/lib/hook/exceptions.py | 1 + samcli/lib/hook/hook_config.py | 1 + samcli/lib/hook/hook_wrapper.py | 1 + samcli/lib/iac/cdk/cdk_iac.py | 1 + samcli/lib/iac/cfn/cfn_iac.py | 1 + samcli/lib/iac/constants.py | 1 + samcli/lib/iac/exceptions.py | 1 + samcli/lib/iac/iac_factory.py | 1 + samcli/lib/init/__init__.py | 1 + samcli/lib/init/default_samconfig.py | 1 + .../application_insights_template_modifier.py | 1 + .../cli_template_modifier.py | 1 + .../structured_logging_template_modifier.py | 1 + .../xray_tracing_template_modifier.py | 1 + .../intrinsic_property_resolver.py | 1 + .../intrinsics_symbol_table.py | 1 + .../invalid_intrinsic_validation.py | 1 + samcli/lib/list/data_to_json_mapper.py | 1 + samcli/lib/list/endpoints/endpoints_def.py | 1 + .../lib/list/endpoints/endpoints_producer.py | 7 ++-- .../endpoints/endpoints_to_table_mapper.py | 1 + samcli/lib/list/list_interfaces.py | 1 + samcli/lib/list/mapper_consumer_container.py | 1 + samcli/lib/list/mapper_consumer_factory.py | 1 + .../resources/resource_mapping_producer.py | 1 + samcli/lib/list/resources/resources_def.py | 1 + .../resources/resources_to_table_mapper.py | 1 + .../stack_output_to_table_mapper.py | 1 + .../lib/list/stack_outputs/stack_outputs.py | 1 + .../stack_outputs/stack_outputs_producer.py | 1 + .../lib/observability/cw_logs/cw_log_event.py | 1 + .../cw_logs/cw_log_formatters.py | 1 + .../cw_logs/cw_log_group_provider.py | 1 + .../observability/cw_logs/cw_log_puller.py | 1 + .../observability_info_puller.py | 1 + samcli/lib/observability/util.py | 1 + .../xray_traces/xray_event_mappers.py | 1 + .../xray_traces/xray_event_puller.py | 1 + .../observability/xray_traces/xray_events.py | 1 + .../xray_service_graph_event_puller.py | 1 + samcli/lib/package/ecr_uploader.py | 1 + samcli/lib/package/ecr_utils.py | 1 + samcli/lib/package/image_utils.py | 1 + samcli/lib/package/local_files_utils.py | 1 + samcli/lib/package/packageable_resources.py | 1 + samcli/lib/package/permissions.py | 1 + samcli/lib/package/stream_cursor_utils.py | 1 + samcli/lib/package/utils.py | 1 + samcli/lib/pipeline/bootstrap/resource.py | 1 + samcli/lib/pipeline/bootstrap/stage.py | 17 +++++--- samcli/lib/providers/cfn_api_provider.py | 1 + samcli/lib/providers/cfn_base_api_provider.py | 1 + samcli/lib/providers/provider.py | 1 + samcli/lib/providers/sam_function_provider.py | 1 + samcli/lib/providers/sam_layer_provider.py | 1 + samcli/lib/providers/sam_stack_provider.py | 1 + .../remote_invoke/kinesis_invoke_executors.py | 1 + .../remote_invoke/lambda_invoke_executors.py | 1 + .../remote_invoke_executor_factory.py | 1 + .../remote_invoke/remote_invoke_executors.py | 1 + .../lib/remote_invoke/sqs_invoke_executors.py | 1 + .../stepfunctions_invoke_executors.py | 1 + .../lib/sync/continuous_sync_flow_executor.py | 1 + samcli/lib/sync/exceptions.py | 1 + .../lib/sync/flows/alias_version_sync_flow.py | 1 + .../flows/auto_dependency_layer_sync_flow.py | 1 + samcli/lib/sync/flows/function_sync_flow.py | 1 + .../lib/sync/flows/generic_api_sync_flow.py | 1 + .../sync/flows/image_function_sync_flow.py | 1 + samcli/lib/sync/flows/layer_sync_flow.py | 1 + samcli/lib/sync/flows/rest_api_sync_flow.py | 1 + .../lib/sync/flows/stepfunctions_sync_flow.py | 1 + .../lib/sync/flows/zip_function_sync_flow.py | 1 + samcli/lib/sync/infra_sync_executor.py | 7 ++-- samcli/lib/sync/sync_flow.py | 1 + samcli/lib/sync/sync_flow_executor.py | 1 + samcli/lib/sync/sync_flow_factory.py | 1 + samcli/lib/sync/watch_manager.py | 1 + samcli/lib/telemetry/metric.py | 1 + samcli/lib/telemetry/user_agent.py | 1 + .../lib/translate/sam_template_validator.py | 1 + samcli/lib/utils/architecture.py | 1 + samcli/lib/utils/arn_utils.py | 1 + samcli/lib/utils/async_utils.py | 1 + samcli/lib/utils/boto_utils.py | 10 ++--- samcli/lib/utils/cloudformation.py | 1 + samcli/lib/utils/code_trigger_factory.py | 1 + samcli/lib/utils/defaults.py | 1 + samcli/lib/utils/definition_validator.py | 1 + samcli/lib/utils/file_observer.py | 1 + samcli/lib/utils/hash.py | 1 + samcli/lib/utils/lock_distributor.py | 1 + .../lib/utils/managed_cloudformation_stack.py | 1 + samcli/lib/utils/osutils.py | 1 + samcli/lib/utils/path_observer.py | 1 + samcli/lib/utils/path_utils.py | 1 + samcli/lib/utils/preview_runtimes.py | 1 + samcli/lib/utils/profile.py | 1 + samcli/lib/utils/resource_trigger.py | 1 + .../lib/utils/resource_type_based_factory.py | 1 + samcli/lib/utils/retry.py | 1 + samcli/lib/utils/s3.py | 1 + samcli/lib/utils/sam_logging.py | 1 + samcli/lib/utils/stream_writer.py | 1 + samcli/lib/utils/subprocess_utils.py | 1 + samcli/lib/utils/version_checker.py | 1 + samcli/lib/warnings/sam_cli_warning.py | 1 + samcli/local/apigw/authorizers/authorizer.py | 1 + .../apigw/authorizers/lambda_authorizer.py | 1 + samcli/local/apigw/exceptions.py | 1 + samcli/local/apigw/route.py | 1 + samcli/local/docker/container.py | 1 + samcli/local/docker/container_analyzer.py | 1 + samcli/local/docker/effective_user.py | 1 + samcli/local/docker/exceptions.py | 1 + samcli/local/docker/lambda_container.py | 1 + samcli/local/docker/lambda_image.py | 1 + samcli/local/events/api_event.py | 7 ++-- samcli/local/lambdafn/config.py | 1 + samcli/local/lambdafn/runtime.py | 1 + samcli/local/services/base_local_service.py | 1 + samcli/yamlhelper.py | 6 +-- schema/make_schema.py | 1 - tests/get_testing_resources.py | 1 + tests/integration/buildcmd/test_build_cmd.py | 24 +++++++---- .../test_build_terraform_applications.py | 6 +-- .../validate/test_validate_command.py | 1 + tests/unit/commands/buildcmd/test_utils.py | 1 + .../commands/deploy/test_deploy_context.py | 1 + .../commands/deploy/test_guided_context.py | 6 +-- .../local/cli_common/test_invoke_context.py | 1 + .../commands/local/lib/swagger/test_parser.py | 1 + .../commands/local/lib/test_local_lambda.py | 1 + .../commands/package/test_package_context.py | 1 + tests/unit/commands/publish/test_command.py | 1 + .../terraform/hooks/prepare/prepare_base.py | 1 + .../terraform/hooks/prepare/test_enrich.py | 1 + .../terraform/hooks/prepare/test_hook.py | 1 + .../hooks/prepare/test_makefile_generator.py | 1 + .../hooks/prepare/test_property_builder.py | 1 + .../terraform/hooks/prepare/test_translate.py | 1 + .../terraform/hooks/prepare/test_types.py | 1 + .../hook_packages/terraform/lib/test_utils.py | 1 + .../test_remote_invoke_options_validations.py | 8 ++-- tests/unit/lib/hook/test_hook_config.py | 1 + tests/unit/lib/hook/test_hook_wrapper.py | 1 + tests/unit/lib/utils/test_path_utils.py | 1 + tests/unit/local/docker/test_container.py | 1 + .../unit/local/docker/test_effective_user.py | 1 + .../docker/test_lambda_build_container.py | 1 + .../local/docker/test_lambda_container.py | 1 + tests/unit/local/docker/test_manager.py | 1 + 307 files changed, 400 insertions(+), 94 deletions(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index 7b92363b670..f8b8ceebf42 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -36,5 +36,5 @@ pytest-json-report==1.5.0 filelock==3.13.1 # formatter -black==23.12.1 +black==24.1.1 psutil==5.9.8 diff --git a/samcli/cli/cli_config_file.py b/samcli/cli/cli_config_file.py index 5c26c93ee77..ee2a69e9d96 100644 --- a/samcli/cli/cli_config_file.py +++ b/samcli/cli/cli_config_file.py @@ -406,9 +406,9 @@ def hello(name): def decorator_configuration_setup(f): configuration_setup_params = () configuration_setup_attrs = {} - configuration_setup_attrs[ - "help" - ] = "This is a hidden click option whose callback function loads configuration parameters." + configuration_setup_attrs["help"] = ( + "This is a hidden click option whose callback function loads configuration parameters." + ) configuration_setup_attrs["is_eager"] = True configuration_setup_attrs["expose_value"] = False configuration_setup_attrs["hidden"] = True diff --git a/samcli/cli/command.py b/samcli/cli/command.py index df142669487..9a52bd08dc0 100644 --- a/samcli/cli/command.py +++ b/samcli/cli/command.py @@ -1,6 +1,7 @@ """ Base classes that implement the CLI framework """ + import importlib import logging from collections import OrderedDict diff --git a/samcli/cli/core/command.py b/samcli/cli/core/command.py index 27f239b31a3..7c45f71aa0d 100644 --- a/samcli/cli/core/command.py +++ b/samcli/cli/core/command.py @@ -4,6 +4,7 @@ Should be used by all commands for a consistent UI experience """ + from typing import Any, Dict, List, Optional from click import Command, Context, Parameter, style diff --git a/samcli/cli/core/options.py b/samcli/cli/core/options.py index 8d9132c8cf3..b1b56fcf05e 100644 --- a/samcli/cli/core/options.py +++ b/samcli/cli/core/options.py @@ -1,6 +1,7 @@ """ Base Command Options related Data Structures for formatting. """ + from typing import Dict, List # The ordering of the option lists matter, they are the order in which options will be displayed. diff --git a/samcli/cli/formatters.py b/samcli/cli/formatters.py index c6045ea2b53..6a907cec36f 100644 --- a/samcli/cli/formatters.py +++ b/samcli/cli/formatters.py @@ -1,6 +1,7 @@ """ Click Help Formatter Classes that are customized for the root command. """ + from contextlib import contextmanager from typing import Iterator, Optional, Sequence diff --git a/samcli/cli/global_config.py b/samcli/cli/global_config.py index 6b4b8c71b25..b4f587ce84d 100644 --- a/samcli/cli/global_config.py +++ b/samcli/cli/global_config.py @@ -1,6 +1,7 @@ """ Provides global configuration helpers. """ + import json import logging import os @@ -154,8 +155,7 @@ def get_value( value_type: Type[bool], is_flag: bool, reload_config: bool = False, - ) -> bool: - ... + ) -> bool: ... # Overload for case where type is specified @overload @@ -166,8 +166,7 @@ def get_value( value_type: Type[T] = T, # type: ignore is_flag: bool = False, reload_config: bool = False, - ) -> Optional[T]: - ... + ) -> Optional[T]: ... # Overload for case where type is not specified and default to object @overload @@ -178,8 +177,7 @@ def get_value( value_type: object = object, is_flag: bool = False, reload_config: bool = False, - ) -> Any: - ... + ) -> Any: ... def get_value( self, diff --git a/samcli/cli/hidden_imports.py b/samcli/cli/hidden_imports.py index 99d21820a9d..c6c30b071a4 100644 --- a/samcli/cli/hidden_imports.py +++ b/samcli/cli/hidden_imports.py @@ -1,6 +1,7 @@ """ Keeps list of hidden/dynamic imports that is being used in SAM CLI, so that pyinstaller can include these packages """ + import pkgutil from types import ModuleType diff --git a/samcli/cli/root/command_list.py b/samcli/cli/root/command_list.py index cfa70007390..dc5316b5caa 100644 --- a/samcli/cli/root/command_list.py +++ b/samcli/cli/root/command_list.py @@ -1,6 +1,7 @@ """ Data structure to host the root command name and short help text to speed up load time. """ + SAM_CLI_COMMANDS = { "init": "Initialize an AWS SAM application.", "validate": "Validate an AWS SAM template.", diff --git a/samcli/commands/_utils/cdk_support_decorators.py b/samcli/commands/_utils/cdk_support_decorators.py index 4e9ccbb39b5..ddfdc8b487e 100644 --- a/samcli/commands/_utils/cdk_support_decorators.py +++ b/samcli/commands/_utils/cdk_support_decorators.py @@ -1,4 +1,5 @@ """CDK Support""" + import logging import click diff --git a/samcli/commands/_utils/click_mutex.py b/samcli/commands/_utils/click_mutex.py index 397e43acba5..1691bd2ce6e 100644 --- a/samcli/commands/_utils/click_mutex.py +++ b/samcli/commands/_utils/click_mutex.py @@ -1,6 +1,7 @@ """ Module to check mutually exclusive cli parameters """ + from typing import Any, List, Mapping, Tuple, cast import click diff --git a/samcli/commands/_utils/command_exception_handler.py b/samcli/commands/_utils/command_exception_handler.py index e9dc5a862a9..e84bdf41cc2 100644 --- a/samcli/commands/_utils/command_exception_handler.py +++ b/samcli/commands/_utils/command_exception_handler.py @@ -2,6 +2,7 @@ Contains method decorator which can be used to convert common exceptions into click exceptions which will end execution gracefully """ + from functools import wraps from typing import Any, Callable, Dict, Optional diff --git a/samcli/commands/_utils/constants.py b/samcli/commands/_utils/constants.py index 7f0f8bb0e3b..e411142ad7f 100644 --- a/samcli/commands/_utils/constants.py +++ b/samcli/commands/_utils/constants.py @@ -1,6 +1,7 @@ """ SAM CLI Default Build constants """ + import os DEFAULT_STACK_NAME = "sam-app" diff --git a/samcli/commands/_utils/custom_options/replace_help_option.py b/samcli/commands/_utils/custom_options/replace_help_option.py index ff538c7a25d..cfce8eee60f 100644 --- a/samcli/commands/_utils/custom_options/replace_help_option.py +++ b/samcli/commands/_utils/custom_options/replace_help_option.py @@ -1,6 +1,7 @@ """ Click option for replacing help text option name. """ + import click diff --git a/samcli/commands/_utils/experimental.py b/samcli/commands/_utils/experimental.py index b8b75570c1c..23622ec0a9b 100644 --- a/samcli/commands/_utils/experimental.py +++ b/samcli/commands/_utils/experimental.py @@ -1,4 +1,5 @@ """Experimental flag""" + import logging import sys from dataclasses import dataclass diff --git a/samcli/commands/_utils/option_value_processor.py b/samcli/commands/_utils/option_value_processor.py index f117d95eb04..6625637df97 100644 --- a/samcli/commands/_utils/option_value_processor.py +++ b/samcli/commands/_utils/option_value_processor.py @@ -1,6 +1,7 @@ """ Parsing utilities commonly used to process information for commands """ + import logging from typing import Dict, Optional, Tuple diff --git a/samcli/commands/_utils/options.py b/samcli/commands/_utils/options.py index 777058216b4..e2a599979af 100644 --- a/samcli/commands/_utils/options.py +++ b/samcli/commands/_utils/options.py @@ -332,9 +332,11 @@ def template_click_option(include_build=True): callback=partial(get_or_default_template_file_name, include_build=include_build), show_default=True, is_eager=True, - help="AWS SAM template which references built artifacts for resources in the template. (if applicable)" - if include_build - else "AWS SAM template file.", + help=( + "AWS SAM template which references built artifacts for resources in the template. (if applicable)" + if include_build + else "AWS SAM template file." + ), ) @@ -767,9 +769,9 @@ def hook_name_setup(f): def hook_name_processer_wrapper(f): configuration_setup_params = () configuration_setup_attrs = {} - configuration_setup_attrs[ - "help" - ] = "This is a hidden click option whose callback function to run the provided hook package." + configuration_setup_attrs["help"] = ( + "This is a hidden click option whose callback function to run the provided hook package." + ) configuration_setup_attrs["is_eager"] = True configuration_setup_attrs["expose_value"] = False configuration_setup_attrs["hidden"] = True diff --git a/samcli/commands/_utils/table_print.py b/samcli/commands/_utils/table_print.py index edb686ee6f9..0e22378e982 100644 --- a/samcli/commands/_utils/table_print.py +++ b/samcli/commands/_utils/table_print.py @@ -1,6 +1,7 @@ """ Utilities for table pretty printing using click """ + import shutil import textwrap from functools import wraps diff --git a/samcli/commands/_utils/template.py b/samcli/commands/_utils/template.py index 8a45c2e0d30..622900d7e52 100644 --- a/samcli/commands/_utils/template.py +++ b/samcli/commands/_utils/template.py @@ -1,6 +1,7 @@ """ Utilities to manipulate template """ + import itertools import os import pathlib diff --git a/samcli/commands/bootstrap/command.py b/samcli/commands/bootstrap/command.py index 64c18cf8bd2..4a6a4e2a27b 100644 --- a/samcli/commands/bootstrap/command.py +++ b/samcli/commands/bootstrap/command.py @@ -1,6 +1,7 @@ """ CLI command for "bootstrap", which sets up a SAM development environment """ + import click from samcli.cli.main import aws_creds_options, common_options, pass_context diff --git a/samcli/commands/build/build_context.py b/samcli/commands/build/build_context.py index 7e2450a1552..c976f13532a 100644 --- a/samcli/commands/build/build_context.py +++ b/samcli/commands/build/build_context.py @@ -1,6 +1,7 @@ """ Context object used by build command """ + import logging import os import pathlib diff --git a/samcli/commands/build/click_container.py b/samcli/commands/build/click_container.py index 2b6273036b6..8e6ad43d4b0 100644 --- a/samcli/commands/build/click_container.py +++ b/samcli/commands/build/click_container.py @@ -1,6 +1,7 @@ """ Module to check container based cli parameters """ + import click diff --git a/samcli/commands/build/core/formatters.py b/samcli/commands/build/core/formatters.py index f8e2502de1d..6444732a21c 100644 --- a/samcli/commands/build/core/formatters.py +++ b/samcli/commands/build/core/formatters.py @@ -1,6 +1,7 @@ """ Build Command Formatter. """ + from samcli.cli.formatters import RootCommandHelpTextFormatter from samcli.cli.row_modifiers import BaseLineRowModifier from samcli.commands.build.core.options import ALL_OPTIONS diff --git a/samcli/commands/build/core/options.py b/samcli/commands/build/core/options.py index 80f3b06ebbf..2da97d83ed9 100644 --- a/samcli/commands/build/core/options.py +++ b/samcli/commands/build/core/options.py @@ -1,6 +1,7 @@ """ Build Command Options related Datastructures for formatting. """ + from typing import Dict, List from samcli.cli.row_modifiers import RowDefinition diff --git a/samcli/commands/build/utils.py b/samcli/commands/build/utils.py index ad84b047d46..7f5668efbf3 100644 --- a/samcli/commands/build/utils.py +++ b/samcli/commands/build/utils.py @@ -1,6 +1,7 @@ """ Utilities for sam build command """ + import pathlib from enum import Enum from typing import List diff --git a/samcli/commands/delete/delete_context.py b/samcli/commands/delete/delete_context.py index 427d7fdd3fa..e944eaeb8bb 100644 --- a/samcli/commands/delete/delete_context.py +++ b/samcli/commands/delete/delete_context.py @@ -1,6 +1,7 @@ """ Delete a SAM stack """ + import logging from typing import Optional diff --git a/samcli/commands/delete/exceptions.py b/samcli/commands/delete/exceptions.py index 1b6a21f8bc3..af034c18490 100644 --- a/samcli/commands/delete/exceptions.py +++ b/samcli/commands/delete/exceptions.py @@ -1,6 +1,7 @@ """ Exceptions that are raised by sam delete """ + from samcli.commands.exceptions import UserException diff --git a/samcli/commands/deploy/auth_utils.py b/samcli/commands/deploy/auth_utils.py index cd12c19cd6d..fca6c4f4784 100644 --- a/samcli/commands/deploy/auth_utils.py +++ b/samcli/commands/deploy/auth_utils.py @@ -1,6 +1,7 @@ """ Utilities for checking authorization of certain resource types """ + import logging from typing import List, Tuple diff --git a/samcli/commands/deploy/command.py b/samcli/commands/deploy/command.py index 20b9743cadd..09a30ce553f 100644 --- a/samcli/commands/deploy/command.py +++ b/samcli/commands/deploy/command.py @@ -1,6 +1,7 @@ """ CLI command for "deploy" command """ + import logging import os @@ -347,9 +348,11 @@ def do_cli( no_progressbar=no_progressbar, s3_prefix=guided_context.guided_s3_prefix if guided else s3_prefix, kms_key_id=kms_key_id, - parameter_overrides=sanitize_parameter_overrides(guided_context.guided_parameter_overrides) - if guided - else parameter_overrides, + parameter_overrides=( + sanitize_parameter_overrides(guided_context.guided_parameter_overrides) + if guided + else parameter_overrides + ), capabilities=guided_context.guided_capabilities if guided else capabilities, no_execute_changeset=no_execute_changeset, role_arn=role_arn, diff --git a/samcli/commands/deploy/core/options.py b/samcli/commands/deploy/core/options.py index 6c4bbdb0a01..f7e943367bc 100644 --- a/samcli/commands/deploy/core/options.py +++ b/samcli/commands/deploy/core/options.py @@ -1,6 +1,7 @@ """ Deploy Command Options related Datastructures for formatting. """ + from typing import Dict, List from samcli.cli.core.options import ALL_COMMON_OPTIONS, SAVE_PARAMS_OPTIONS, add_common_options_info diff --git a/samcli/commands/deploy/exceptions.py b/samcli/commands/deploy/exceptions.py index a3b915259eb..2cbbcd5b42e 100644 --- a/samcli/commands/deploy/exceptions.py +++ b/samcli/commands/deploy/exceptions.py @@ -1,6 +1,7 @@ """ Exceptions that are raised by sam deploy """ + from samcli.commands.exceptions import UserException diff --git a/samcli/commands/deploy/guided_config.py b/samcli/commands/deploy/guided_config.py index 78866944cdc..b1eacea8273 100644 --- a/samcli/commands/deploy/guided_config.py +++ b/samcli/commands/deploy/guided_config.py @@ -1,6 +1,7 @@ """ Set of Utilities to deal with reading/writing to configuration file during sam deploy """ + from typing import Any import click diff --git a/samcli/commands/docs/command.py b/samcli/commands/docs/command.py index e42bef44488..303dd09fd87 100644 --- a/samcli/commands/docs/command.py +++ b/samcli/commands/docs/command.py @@ -1,6 +1,7 @@ """ CLI command for "docs" command """ + from typing import Type from click import Command, command diff --git a/samcli/commands/docs/core/command.py b/samcli/commands/docs/core/command.py index a22b98e42e6..4cb362330c1 100644 --- a/samcli/commands/docs/core/command.py +++ b/samcli/commands/docs/core/command.py @@ -1,6 +1,7 @@ """ Module contains classes for creating the docs command from click """ + import os from typing import List, Optional diff --git a/samcli/commands/docs/core/formatter.py b/samcli/commands/docs/core/formatter.py index e11a168defe..99f3c6a9207 100644 --- a/samcli/commands/docs/core/formatter.py +++ b/samcli/commands/docs/core/formatter.py @@ -1,6 +1,7 @@ """ Base formatter for the docs command help text """ + from samcli.cli.formatters import RootCommandHelpTextFormatter from samcli.cli.row_modifiers import BaseLineRowModifier diff --git a/samcli/commands/exceptions.py b/samcli/commands/exceptions.py index b5e8e516eb4..d8708c92722 100644 --- a/samcli/commands/exceptions.py +++ b/samcli/commands/exceptions.py @@ -1,6 +1,7 @@ """ Class containing error conditions that are exposed to the user. """ + import traceback from typing import IO, Optional from urllib.parse import quote diff --git a/samcli/commands/init/__init__.py b/samcli/commands/init/__init__.py index 6a88e92de21..7f72e7f7fd4 100644 --- a/samcli/commands/init/__init__.py +++ b/samcli/commands/init/__init__.py @@ -1,4 +1,5 @@ """ Expose top level cli command for `init` """ + from .command import cli diff --git a/samcli/commands/init/command.py b/samcli/commands/init/command.py index 6f60ca1d868..e1d1c717b74 100644 --- a/samcli/commands/init/command.py +++ b/samcli/commands/init/command.py @@ -1,6 +1,7 @@ """ Init command to scaffold a project app from a template """ + import json import logging from json import JSONDecodeError diff --git a/samcli/commands/init/core/options.py b/samcli/commands/init/core/options.py index 586c919ba57..291c2801a39 100644 --- a/samcli/commands/init/core/options.py +++ b/samcli/commands/init/core/options.py @@ -1,6 +1,7 @@ """ Init Command Options related Datastructures for formatting. """ + from typing import Dict, List from samcli.cli.core.options import ALL_COMMON_OPTIONS, SAVE_PARAMS_OPTIONS, add_common_options_info diff --git a/samcli/commands/init/init_flow_helpers.py b/samcli/commands/init/init_flow_helpers.py index 6ca7352b1b8..fe8d41b623b 100644 --- a/samcli/commands/init/init_flow_helpers.py +++ b/samcli/commands/init/init_flow_helpers.py @@ -1,6 +1,7 @@ """ Init flow based helper functions """ + import functools import logging import re diff --git a/samcli/commands/init/init_templates.py b/samcli/commands/init/init_templates.py index f2744c8da6b..b1d1d55a01f 100644 --- a/samcli/commands/init/init_templates.py +++ b/samcli/commands/init/init_templates.py @@ -1,6 +1,7 @@ """ Manages the set of application templates. """ + import itertools import json import logging diff --git a/samcli/commands/init/interactive_init_flow.py b/samcli/commands/init/interactive_init_flow.py index 8f724dbed11..57a1c1f64b8 100644 --- a/samcli/commands/init/interactive_init_flow.py +++ b/samcli/commands/init/interactive_init_flow.py @@ -1,6 +1,7 @@ """ Isolates interactive init prompt flow. Expected to call generator logic at end of flow. """ + import logging import pathlib import tempfile diff --git a/samcli/commands/list/cli_common/list_common_context.py b/samcli/commands/list/cli_common/list_common_context.py index 455314ec198..e51c8de07f7 100644 --- a/samcli/commands/list/cli_common/list_common_context.py +++ b/samcli/commands/list/cli_common/list_common_context.py @@ -1,6 +1,7 @@ """ Common context class to inherit from for sam list sub-commands """ + from samcli.lib.utils.boto_utils import get_boto_client_provider_with_config diff --git a/samcli/commands/list/endpoints/endpoints_context.py b/samcli/commands/list/endpoints/endpoints_context.py index 9f31eff9ce4..3f5b932e61c 100644 --- a/samcli/commands/list/endpoints/endpoints_context.py +++ b/samcli/commands/list/endpoints/endpoints_context.py @@ -1,6 +1,7 @@ """ Display of the Endpoints of a SAM stack """ + import logging from typing import Optional diff --git a/samcli/commands/list/exceptions.py b/samcli/commands/list/exceptions.py index 9269249d0ee..b0ecb9a8d1c 100644 --- a/samcli/commands/list/exceptions.py +++ b/samcli/commands/list/exceptions.py @@ -2,7 +2,6 @@ Exceptions for SAM list """ - from samcli.commands.exceptions import UserException diff --git a/samcli/commands/list/json_consumer.py b/samcli/commands/list/json_consumer.py index 0153830ac6e..78d54810a5e 100644 --- a/samcli/commands/list/json_consumer.py +++ b/samcli/commands/list/json_consumer.py @@ -1,6 +1,7 @@ """ The json consumer for 'sam list' """ + import click from samcli.lib.list.list_interfaces import ListInfoPullerConsumer diff --git a/samcli/commands/list/resources/resources_context.py b/samcli/commands/list/resources/resources_context.py index ea971bc7b15..ba8e5d1dbeb 100644 --- a/samcli/commands/list/resources/resources_context.py +++ b/samcli/commands/list/resources/resources_context.py @@ -1,6 +1,7 @@ """ Display the Resources of a SAM stack """ + import logging from typing import Optional diff --git a/samcli/commands/list/stack_outputs/stack_outputs_context.py b/samcli/commands/list/stack_outputs/stack_outputs_context.py index efd40eed8a0..ab8a922bbb9 100644 --- a/samcli/commands/list/stack_outputs/stack_outputs_context.py +++ b/samcli/commands/list/stack_outputs/stack_outputs_context.py @@ -1,6 +1,7 @@ """ Display the Outputs of a SAM stack """ + import logging from typing import Optional diff --git a/samcli/commands/list/table_consumer.py b/samcli/commands/list/table_consumer.py index e39915b2f34..f6c70136dee 100644 --- a/samcli/commands/list/table_consumer.py +++ b/samcli/commands/list/table_consumer.py @@ -1,6 +1,7 @@ """ The table consumer for 'sam list' """ + from typing import Any, Dict from samcli.commands._utils.table_print import pprint_column_names, pprint_columns diff --git a/samcli/commands/local/cli_common/invoke_context.py b/samcli/commands/local/cli_common/invoke_context.py index fc7ca7020dd..92557611439 100644 --- a/samcli/commands/local/cli_common/invoke_context.py +++ b/samcli/commands/local/cli_common/invoke_context.py @@ -1,6 +1,7 @@ """ Reads CLI arguments and performs necessary preparation to be able to run the function """ + import errno import json import logging diff --git a/samcli/commands/local/cli_common/options.py b/samcli/commands/local/cli_common/options.py index a525fb463c5..8550a8ba958 100644 --- a/samcli/commands/local/cli_common/options.py +++ b/samcli/commands/local/cli_common/options.py @@ -1,6 +1,7 @@ """ Common CLI options for invoke command """ + from pathlib import Path import click diff --git a/samcli/commands/local/generate_event/core/command.py b/samcli/commands/local/generate_event/core/command.py index 1fd17d4a46b..2303867218d 100644 --- a/samcli/commands/local/generate_event/core/command.py +++ b/samcli/commands/local/generate_event/core/command.py @@ -1,6 +1,7 @@ """ Generate Event Command Class. """ + from click import Context, style from samcli.cli.core.command import CoreCommand diff --git a/samcli/commands/local/invoke/core/command.py b/samcli/commands/local/invoke/core/command.py index 3551530462d..1d4f9ce3f52 100644 --- a/samcli/commands/local/invoke/core/command.py +++ b/samcli/commands/local/invoke/core/command.py @@ -1,6 +1,7 @@ """ Invoke Command Class. """ + import json from click import Context, style diff --git a/samcli/commands/local/invoke/core/formatters.py b/samcli/commands/local/invoke/core/formatters.py index bad4eb881bd..b08fd9bcb4f 100644 --- a/samcli/commands/local/invoke/core/formatters.py +++ b/samcli/commands/local/invoke/core/formatters.py @@ -1,6 +1,7 @@ """ Invoke Command Formatter. """ + from samcli.cli.formatters import RootCommandHelpTextFormatter from samcli.cli.row_modifiers import BaseLineRowModifier from samcli.commands.local.invoke.core.options import ALL_OPTIONS diff --git a/samcli/commands/local/invoke/core/options.py b/samcli/commands/local/invoke/core/options.py index ff23f857f56..dbd9b652ebd 100644 --- a/samcli/commands/local/invoke/core/options.py +++ b/samcli/commands/local/invoke/core/options.py @@ -1,6 +1,7 @@ """ Invoke Command Options related Datastructures for formatting. """ + from typing import Dict, List from samcli.cli.core.options import ALL_COMMON_OPTIONS, SAVE_PARAMS_OPTIONS, add_common_options_info diff --git a/samcli/commands/local/lib/exceptions.py b/samcli/commands/local/lib/exceptions.py index 7d739f3ef2f..c19b694d60c 100644 --- a/samcli/commands/local/lib/exceptions.py +++ b/samcli/commands/local/lib/exceptions.py @@ -1,6 +1,7 @@ """ Custom exceptions raised by this local library """ + from samcli.commands.exceptions import UserException diff --git a/samcli/commands/local/lib/local_lambda_service.py b/samcli/commands/local/lib/local_lambda_service.py index 0d493c2ff88..9b4083dcc65 100644 --- a/samcli/commands/local/lib/local_lambda_service.py +++ b/samcli/commands/local/lib/local_lambda_service.py @@ -1,6 +1,7 @@ """ Connects the CLI with Local Lambda Invoke Service. """ + import logging from samcli.local.lambda_service.local_lambda_invoke_service import LocalLambdaInvokeService diff --git a/samcli/commands/local/lib/validators/identity_source_validator.py b/samcli/commands/local/lib/validators/identity_source_validator.py index e95cc6a3165..d9c45b5cf3d 100644 --- a/samcli/commands/local/lib/validators/identity_source_validator.py +++ b/samcli/commands/local/lib/validators/identity_source_validator.py @@ -1,6 +1,7 @@ """ Handles the validation of identity sources """ + import re from samcli.local.apigw.route import Route diff --git a/samcli/commands/local/lib/validators/lambda_auth_props.py b/samcli/commands/local/lib/validators/lambda_auth_props.py index 96a9ce05b1f..7c111b02fc5 100644 --- a/samcli/commands/local/lib/validators/lambda_auth_props.py +++ b/samcli/commands/local/lib/validators/lambda_auth_props.py @@ -1,6 +1,7 @@ """ Module to help validate Lambda Authorizer properties """ + import logging from abc import ABC, abstractmethod diff --git a/samcli/commands/local/start_api/core/formatters.py b/samcli/commands/local/start_api/core/formatters.py index 79b2536a0b4..a353c2d7815 100644 --- a/samcli/commands/local/start_api/core/formatters.py +++ b/samcli/commands/local/start_api/core/formatters.py @@ -1,6 +1,7 @@ """ Invoke API Command Formatter. """ + from samcli.cli.formatters import RootCommandHelpTextFormatter from samcli.cli.row_modifiers import BaseLineRowModifier from samcli.commands.local.start_api.core.options import ALL_OPTIONS diff --git a/samcli/commands/local/start_api/core/options.py b/samcli/commands/local/start_api/core/options.py index 5a5c7ca23dd..01b79ae7b7e 100644 --- a/samcli/commands/local/start_api/core/options.py +++ b/samcli/commands/local/start_api/core/options.py @@ -1,6 +1,7 @@ """ Invoke Start API Command Options related Datastructures for formatting. """ + from typing import Dict, List from samcli.cli.core.options import ALL_COMMON_OPTIONS, SAVE_PARAMS_OPTIONS, add_common_options_info diff --git a/samcli/commands/local/start_lambda/core/formatters.py b/samcli/commands/local/start_lambda/core/formatters.py index 6e8eae43225..11f0f66ffd9 100644 --- a/samcli/commands/local/start_lambda/core/formatters.py +++ b/samcli/commands/local/start_lambda/core/formatters.py @@ -1,6 +1,7 @@ """ Invoke Lambda Command Formatter. """ + from samcli.cli.formatters import RootCommandHelpTextFormatter from samcli.cli.row_modifiers import BaseLineRowModifier from samcli.commands.local.start_lambda.core.options import ALL_OPTIONS diff --git a/samcli/commands/local/start_lambda/core/options.py b/samcli/commands/local/start_lambda/core/options.py index 1a35f564ea6..88bd7e0a22f 100644 --- a/samcli/commands/local/start_lambda/core/options.py +++ b/samcli/commands/local/start_lambda/core/options.py @@ -1,6 +1,7 @@ """ Invoke Start Lambda Command Options related Datastructures for formatting. """ + from typing import Dict, List from samcli.cli.core.options import ALL_COMMON_OPTIONS, SAVE_PARAMS_OPTIONS, add_common_options_info diff --git a/samcli/commands/logs/core/options.py b/samcli/commands/logs/core/options.py index 715111cd42f..901fc9f6527 100644 --- a/samcli/commands/logs/core/options.py +++ b/samcli/commands/logs/core/options.py @@ -1,6 +1,7 @@ """ Logs Command Options related Datastructures for formatting. """ + from typing import Dict, List from samcli.cli.core.options import ALL_COMMON_OPTIONS, SAVE_PARAMS_OPTIONS, add_common_options_info diff --git a/samcli/commands/logs/puller_factory.py b/samcli/commands/logs/puller_factory.py index c322a44819e..1bb50237c85 100644 --- a/samcli/commands/logs/puller_factory.py +++ b/samcli/commands/logs/puller_factory.py @@ -2,6 +2,7 @@ File keeps Factory method to prepare required puller information with its producers and consumers """ + import logging from typing import List, Optional diff --git a/samcli/commands/logs/validation_and_exception_handlers.py b/samcli/commands/logs/validation_and_exception_handlers.py index 48ef9a01932..461fd3f2f79 100644 --- a/samcli/commands/logs/validation_and_exception_handlers.py +++ b/samcli/commands/logs/validation_and_exception_handlers.py @@ -1,6 +1,7 @@ """ Contains helper functions for validation and exception handling of "sam logs" command """ + from functools import wraps from typing import Any, Callable, Dict diff --git a/samcli/commands/package/command.py b/samcli/commands/package/command.py index 249aee5cfbd..994f3a3ffe2 100644 --- a/samcli/commands/package/command.py +++ b/samcli/commands/package/command.py @@ -1,6 +1,7 @@ """ CLI command for "package" command """ + import click from samcli.cli.cli_config_file import ConfigProvider, configuration_option, save_params_option diff --git a/samcli/commands/package/core/command.py b/samcli/commands/package/core/command.py index 16a9ee3d2a6..e0f1056ec1c 100644 --- a/samcli/commands/package/core/command.py +++ b/samcli/commands/package/core/command.py @@ -1,6 +1,7 @@ """ `sam package` command class for help text visual layer. """ + import click from click import Context, style from rich.table import Table diff --git a/samcli/commands/package/core/options.py b/samcli/commands/package/core/options.py index 6dc97001a0d..37ea91379ee 100644 --- a/samcli/commands/package/core/options.py +++ b/samcli/commands/package/core/options.py @@ -1,6 +1,7 @@ """ Package Command Options related Datastructures for formatting. """ + from typing import Dict, List from samcli.cli.core.options import ALL_COMMON_OPTIONS, SAVE_PARAMS_OPTIONS, add_common_options_info diff --git a/samcli/commands/package/exceptions.py b/samcli/commands/package/exceptions.py index f5fdee0297d..a7819601172 100644 --- a/samcli/commands/package/exceptions.py +++ b/samcli/commands/package/exceptions.py @@ -1,6 +1,7 @@ """ Exceptions that are raised by sam package """ + from samcli.commands.exceptions import UserException diff --git a/samcli/commands/pipeline/bootstrap/cli.py b/samcli/commands/pipeline/bootstrap/cli.py index 991d0a62695..36438b5efc3 100644 --- a/samcli/commands/pipeline/bootstrap/cli.py +++ b/samcli/commands/pipeline/bootstrap/cli.py @@ -1,6 +1,7 @@ """ CLI command for "pipeline bootstrap", which sets up the require pipeline infrastructure resources """ + import os from textwrap import dedent from typing import Any, Dict, List, Optional diff --git a/samcli/commands/pipeline/bootstrap/guided_context.py b/samcli/commands/pipeline/bootstrap/guided_context.py index fec10ba1426..0847c028fd7 100644 --- a/samcli/commands/pipeline/bootstrap/guided_context.py +++ b/samcli/commands/pipeline/bootstrap/guided_context.py @@ -2,6 +2,7 @@ An interactive flow that prompt the user for required information to bootstrap the AWS account of an environment with the required infrastructure """ + import os import sys from textwrap import dedent @@ -317,9 +318,11 @@ def _get_user_inputs(self) -> List[Tuple[str, Callable[[], None]]]: inputs.extend( [ ( - f"Pipeline user ARN: {self.pipeline_user_arn}" - if self.pipeline_user_arn - else "Pipeline user: [to be created]", + ( + f"Pipeline user ARN: {self.pipeline_user_arn}" + if self.pipeline_user_arn + else "Pipeline user: [to be created]" + ), self._prompt_pipeline_user, ) ] @@ -328,27 +331,35 @@ def _get_user_inputs(self) -> List[Tuple[str, Callable[[], None]]]: inputs.extend( [ ( - f"Pipeline execution role ARN: {self.pipeline_execution_role_arn}" - if self.pipeline_execution_role_arn - else "Pipeline execution role: [to be created]", + ( + f"Pipeline execution role ARN: {self.pipeline_execution_role_arn}" + if self.pipeline_execution_role_arn + else "Pipeline execution role: [to be created]" + ), self._prompt_pipeline_execution_role, ), ( - f"CloudFormation execution role ARN: {self.cloudformation_execution_role_arn}" - if self.cloudformation_execution_role_arn - else "CloudFormation execution role: [to be created]", + ( + f"CloudFormation execution role ARN: {self.cloudformation_execution_role_arn}" + if self.cloudformation_execution_role_arn + else "CloudFormation execution role: [to be created]" + ), self._prompt_cloudformation_execution_role, ), ( - f"Artifacts bucket ARN: {self.artifacts_bucket_arn}" - if self.artifacts_bucket_arn - else "Artifacts bucket: [to be created]", + ( + f"Artifacts bucket ARN: {self.artifacts_bucket_arn}" + if self.artifacts_bucket_arn + else "Artifacts bucket: [to be created]" + ), self._prompt_artifacts_bucket, ), ( - f"ECR image repository ARN: {self.image_repository_arn}" - if self.image_repository_arn - else f"ECR image repository: [{'to be created' if self.create_image_repository else 'skipped'}]", + ( + f"ECR image repository ARN: {self.image_repository_arn}" + if self.image_repository_arn + else f"ECR image repository: [{'to be created' if self.create_image_repository else 'skipped'}]" + ), self._prompt_image_repository, ), ] diff --git a/samcli/commands/pipeline/bootstrap/oidc_config.py b/samcli/commands/pipeline/bootstrap/oidc_config.py index 776b69abe8b..427a6cce757 100644 --- a/samcli/commands/pipeline/bootstrap/oidc_config.py +++ b/samcli/commands/pipeline/bootstrap/oidc_config.py @@ -1,6 +1,7 @@ """ Represents a pipeline OIDC provider """ + from dataclasses import dataclass from typing import Optional diff --git a/samcli/commands/pipeline/bootstrap/pipeline_oidc_provider.py b/samcli/commands/pipeline/bootstrap/pipeline_oidc_provider.py index b45f4171ca8..45b1ccec187 100644 --- a/samcli/commands/pipeline/bootstrap/pipeline_oidc_provider.py +++ b/samcli/commands/pipeline/bootstrap/pipeline_oidc_provider.py @@ -1,6 +1,7 @@ """ Represents a pipeline OIDC provider """ + from abc import abstractmethod from typing import List diff --git a/samcli/commands/pipeline/external_links.py b/samcli/commands/pipeline/external_links.py index 77301ebb1bb..f4e8978c73c 100644 --- a/samcli/commands/pipeline/external_links.py +++ b/samcli/commands/pipeline/external_links.py @@ -2,6 +2,7 @@ The module to store external links. Put them in a centralized place so that we can verify their validity automatically. """ + CONFIG_AWS_CRED_DOC_URL = "https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html" _SAM_DOC_PREFIX = "https://docs.aws.amazon.com/serverless-application-model/latest/developerguide" diff --git a/samcli/commands/pipeline/init/cli.py b/samcli/commands/pipeline/init/cli.py index 416c1c8fdf9..de1f20851e8 100644 --- a/samcli/commands/pipeline/init/cli.py +++ b/samcli/commands/pipeline/init/cli.py @@ -1,6 +1,7 @@ """ CLI command for "pipeline init" command """ + from typing import Any, Optional import click diff --git a/samcli/commands/pipeline/init/interactive_init_flow.py b/samcli/commands/pipeline/init/interactive_init_flow.py index b6c93acc4fb..ce29274c3c7 100644 --- a/samcli/commands/pipeline/init/interactive_init_flow.py +++ b/samcli/commands/pipeline/init/interactive_init_flow.py @@ -2,6 +2,7 @@ Interactive flow that prompts that users for pipeline template (cookiecutter template) and used it to generate pipeline configuration file """ + import json import logging import os diff --git a/samcli/commands/pipeline/init/pipeline_templates_manifest.py b/samcli/commands/pipeline/init/pipeline_templates_manifest.py index e9729511faa..64b87876a8d 100644 --- a/samcli/commands/pipeline/init/pipeline_templates_manifest.py +++ b/samcli/commands/pipeline/init/pipeline_templates_manifest.py @@ -19,6 +19,7 @@ provider: Github Actions location: templates/cookiecutter-github-actions-two-environments-pipeline """ + from pathlib import Path from typing import Dict, List diff --git a/samcli/commands/remote/exceptions.py b/samcli/commands/remote/exceptions.py index fc913e7e602..3e6df6b5888 100644 --- a/samcli/commands/remote/exceptions.py +++ b/samcli/commands/remote/exceptions.py @@ -1,6 +1,7 @@ """ Exceptions that are used by remote invoke or remote test-events commands """ + from samcli.commands.exceptions import UserException diff --git a/samcli/commands/remote/invoke/cli.py b/samcli/commands/remote/invoke/cli.py index c1c08b3fe02..2d7d3ef71b0 100644 --- a/samcli/commands/remote/invoke/cli.py +++ b/samcli/commands/remote/invoke/cli.py @@ -1,4 +1,5 @@ """CLI command for "invoke" command.""" + import logging from io import TextIOWrapper diff --git a/samcli/commands/remote/invoke/core/command.py b/samcli/commands/remote/invoke/core/command.py index 6c6912e9370..f0137dcaff9 100644 --- a/samcli/commands/remote/invoke/core/command.py +++ b/samcli/commands/remote/invoke/core/command.py @@ -1,6 +1,7 @@ """ Invoke Command Class. """ + import json from click import Context, style diff --git a/samcli/commands/remote/invoke/core/formatters.py b/samcli/commands/remote/invoke/core/formatters.py index ee8cee01aa7..df1d723ab1b 100644 --- a/samcli/commands/remote/invoke/core/formatters.py +++ b/samcli/commands/remote/invoke/core/formatters.py @@ -1,6 +1,7 @@ """ Remote Invoke Command Formatter. """ + from samcli.cli.formatters import RootCommandHelpTextFormatter from samcli.cli.row_modifiers import BaseLineRowModifier from samcli.commands.remote.invoke.core.options import ALL_OPTIONS diff --git a/samcli/commands/remote/invoke/core/options.py b/samcli/commands/remote/invoke/core/options.py index 7d9008ffe3b..d22f223ae4f 100644 --- a/samcli/commands/remote/invoke/core/options.py +++ b/samcli/commands/remote/invoke/core/options.py @@ -1,6 +1,7 @@ """ Remote Invoke Command Options related Datastructures for formatting. """ + from typing import Dict, List from samcli.cli.core.options import ALL_COMMON_OPTIONS, SAVE_PARAMS_OPTIONS, add_common_options_info diff --git a/samcli/commands/remote/remote_invoke_context.py b/samcli/commands/remote/remote_invoke_context.py index bf98b6317a5..cc5dedddb8b 100644 --- a/samcli/commands/remote/remote_invoke_context.py +++ b/samcli/commands/remote/remote_invoke_context.py @@ -1,6 +1,7 @@ """ Context object used by `sam remote invoke` command """ + import logging from dataclasses import dataclass from typing import Optional, cast diff --git a/samcli/commands/remote/test_event/core/base_options.py b/samcli/commands/remote/test_event/core/base_options.py index 5b4edd0d0d9..dacc6a5c450 100644 --- a/samcli/commands/remote/test_event/core/base_options.py +++ b/samcli/commands/remote/test_event/core/base_options.py @@ -1,6 +1,7 @@ """ Remote Test Event Command Options related Datastructures for formatting. """ + from typing import Dict, List from samcli.cli.row_modifiers import RowDefinition diff --git a/samcli/commands/remote/test_event/core/formatters.py b/samcli/commands/remote/test_event/core/formatters.py index 73a295ad3d7..26ea664739f 100644 --- a/samcli/commands/remote/test_event/core/formatters.py +++ b/samcli/commands/remote/test_event/core/formatters.py @@ -1,6 +1,7 @@ """ Remote Test Event Command Formatter base. """ + from typing import List from samcli.cli.formatters import RootCommandHelpTextFormatter diff --git a/samcli/commands/remote/test_event/delete/core/command.py b/samcli/commands/remote/test_event/delete/core/command.py index 15cd46a9e86..f928cadfd3e 100644 --- a/samcli/commands/remote/test_event/delete/core/command.py +++ b/samcli/commands/remote/test_event/delete/core/command.py @@ -1,6 +1,7 @@ """ Delete Test Event Command Class. """ + from click import Context, style from samcli.cli.core.command import CoreCommand diff --git a/samcli/commands/remote/test_event/delete/core/options.py b/samcli/commands/remote/test_event/delete/core/options.py index 820e58275fc..7ae49a3c796 100644 --- a/samcli/commands/remote/test_event/delete/core/options.py +++ b/samcli/commands/remote/test_event/delete/core/options.py @@ -1,6 +1,7 @@ """ Delete Remote Test Event Command Options related Datastructures for formatting. """ + from typing import Dict, List from samcli.cli.core.options import ALL_COMMON_OPTIONS, add_common_options_info diff --git a/samcli/commands/remote/test_event/get/cli.py b/samcli/commands/remote/test_event/get/cli.py index 85f6e68d51e..e8685ca41a8 100644 --- a/samcli/commands/remote/test_event/get/cli.py +++ b/samcli/commands/remote/test_event/get/cli.py @@ -1,4 +1,5 @@ """CLI command for "test-event get" command.""" + import logging import sys from io import TextIOWrapper diff --git a/samcli/commands/remote/test_event/get/core/command.py b/samcli/commands/remote/test_event/get/core/command.py index 0d029a805d0..b68f0f46484 100644 --- a/samcli/commands/remote/test_event/get/core/command.py +++ b/samcli/commands/remote/test_event/get/core/command.py @@ -1,6 +1,7 @@ """ Get Test Event Command Class. """ + from click import Context, style from samcli.cli.core.command import CoreCommand diff --git a/samcli/commands/remote/test_event/get/core/formatters.py b/samcli/commands/remote/test_event/get/core/formatters.py index 857f06b31ba..491ecad6e98 100644 --- a/samcli/commands/remote/test_event/get/core/formatters.py +++ b/samcli/commands/remote/test_event/get/core/formatters.py @@ -1,6 +1,7 @@ """ Get Test Event Command Formatter. """ + from samcli.commands.remote.test_event.core.formatters import RemoteTestEventCommandHelpTextFormatter from samcli.commands.remote.test_event.get.core.options import ALL_OPTIONS diff --git a/samcli/commands/remote/test_event/get/core/options.py b/samcli/commands/remote/test_event/get/core/options.py index b3d15142753..449399e42c0 100644 --- a/samcli/commands/remote/test_event/get/core/options.py +++ b/samcli/commands/remote/test_event/get/core/options.py @@ -1,6 +1,7 @@ """ Get Remote Test Event Command Options related Datastructures for formatting. """ + from typing import Dict, List from samcli.cli.core.options import ALL_COMMON_OPTIONS, add_common_options_info diff --git a/samcli/commands/remote/test_event/list/core/command.py b/samcli/commands/remote/test_event/list/core/command.py index fa0ca884892..19426299862 100644 --- a/samcli/commands/remote/test_event/list/core/command.py +++ b/samcli/commands/remote/test_event/list/core/command.py @@ -1,6 +1,7 @@ """ List Test Event Command Class. """ + from click import Context, style from samcli.cli.core.command import CoreCommand diff --git a/samcli/commands/remote/test_event/list/core/formatters.py b/samcli/commands/remote/test_event/list/core/formatters.py index 25bcaaac421..d632abe2f72 100644 --- a/samcli/commands/remote/test_event/list/core/formatters.py +++ b/samcli/commands/remote/test_event/list/core/formatters.py @@ -1,6 +1,7 @@ """ List Test Events Command Formatter. """ + from samcli.commands.remote.test_event.core.formatters import RemoteTestEventCommandHelpTextFormatter from samcli.commands.remote.test_event.list.core.options import ALL_OPTIONS diff --git a/samcli/commands/remote/test_event/list/core/options.py b/samcli/commands/remote/test_event/list/core/options.py index 21e1f068a3f..659d0a7d390 100644 --- a/samcli/commands/remote/test_event/list/core/options.py +++ b/samcli/commands/remote/test_event/list/core/options.py @@ -1,6 +1,7 @@ """ List Remote Test Events Command Options related Datastructures for formatting. """ + from typing import Dict, List from samcli.cli.core.options import ALL_COMMON_OPTIONS, add_common_options_info diff --git a/samcli/commands/remote/test_event/put/cli.py b/samcli/commands/remote/test_event/put/cli.py index 03426b51ec6..df98670c356 100644 --- a/samcli/commands/remote/test_event/put/cli.py +++ b/samcli/commands/remote/test_event/put/cli.py @@ -1,4 +1,5 @@ """CLI command for "test-event put" command.""" + import logging import sys from io import TextIOWrapper diff --git a/samcli/commands/remote/test_event/put/core/command.py b/samcli/commands/remote/test_event/put/core/command.py index 631e758ab66..3740e75776d 100644 --- a/samcli/commands/remote/test_event/put/core/command.py +++ b/samcli/commands/remote/test_event/put/core/command.py @@ -1,6 +1,7 @@ """ Put Test Event Command Class. """ + import json from click import Context, style diff --git a/samcli/commands/remote/test_event/put/core/formatters.py b/samcli/commands/remote/test_event/put/core/formatters.py index 2967f4d223d..a5ee6315f72 100644 --- a/samcli/commands/remote/test_event/put/core/formatters.py +++ b/samcli/commands/remote/test_event/put/core/formatters.py @@ -1,6 +1,7 @@ """ Put Test Event Command Formatter. """ + from samcli.commands.remote.test_event.core.formatters import RemoteTestEventCommandHelpTextFormatter from samcli.commands.remote.test_event.put.core.options import ALL_OPTIONS diff --git a/samcli/commands/remote/test_event/put/core/options.py b/samcli/commands/remote/test_event/put/core/options.py index 3b2a0c61ec1..a428a7c16de 100644 --- a/samcli/commands/remote/test_event/put/core/options.py +++ b/samcli/commands/remote/test_event/put/core/options.py @@ -1,6 +1,7 @@ """ Put Remote Test Event Command Options related Datastructures for formatting. """ + from typing import Dict, List from samcli.cli.core.options import ALL_COMMON_OPTIONS, add_common_options_info diff --git a/samcli/commands/remote/test_event/test_event.py b/samcli/commands/remote/test_event/test_event.py index 5916378aaa3..f725fad6025 100644 --- a/samcli/commands/remote/test_event/test_event.py +++ b/samcli/commands/remote/test_event/test_event.py @@ -1,4 +1,5 @@ """Command group for "test-event" suite of commands.""" + import click from samcli.commands.remote.test_event.delete.cli import cli as delete_cli diff --git a/samcli/commands/sync/command.py b/samcli/commands/sync/command.py index dfafae7ea40..edbcb98e857 100644 --- a/samcli/commands/sync/command.py +++ b/samcli/commands/sync/command.py @@ -1,4 +1,5 @@ """CLI command for "sync" command.""" + import logging import os from typing import TYPE_CHECKING, Dict, List, Optional, Set, Tuple diff --git a/samcli/commands/sync/core/command.py b/samcli/commands/sync/core/command.py index e498c1cfe7a..d5fbbbee412 100644 --- a/samcli/commands/sync/core/command.py +++ b/samcli/commands/sync/core/command.py @@ -1,6 +1,7 @@ """ Sync Command Class. """ + from click import Context, style from samcli.cli.core.command import CoreCommand diff --git a/samcli/commands/sync/core/formatters.py b/samcli/commands/sync/core/formatters.py index 81791e802dd..a9dec82f760 100644 --- a/samcli/commands/sync/core/formatters.py +++ b/samcli/commands/sync/core/formatters.py @@ -1,6 +1,7 @@ """ Sync Command Formatter. """ + from samcli.cli.formatters import RootCommandHelpTextFormatter from samcli.cli.row_modifiers import BaseLineRowModifier from samcli.commands.sync.core.options import ALL_OPTIONS diff --git a/samcli/commands/sync/core/options.py b/samcli/commands/sync/core/options.py index c03e6ef1908..509261025cd 100644 --- a/samcli/commands/sync/core/options.py +++ b/samcli/commands/sync/core/options.py @@ -1,6 +1,7 @@ """ Sync Command Options related Datastructures for formatting. """ + from typing import Dict, List from samcli.cli.core.options import ALL_COMMON_OPTIONS, SAVE_PARAMS_OPTIONS, add_common_options_info diff --git a/samcli/commands/sync/sync_context.py b/samcli/commands/sync/sync_context.py index a9541d3fcf7..c0c75705a5b 100644 --- a/samcli/commands/sync/sync_context.py +++ b/samcli/commands/sync/sync_context.py @@ -1,6 +1,7 @@ """ Context object used by sync command """ + import logging import threading from dataclasses import dataclass diff --git a/samcli/commands/traces/command.py b/samcli/commands/traces/command.py index 783ac63d434..e3f1f3a5610 100644 --- a/samcli/commands/traces/command.py +++ b/samcli/commands/traces/command.py @@ -1,6 +1,7 @@ """ CLI command for "traces" command """ + import logging import click diff --git a/samcli/commands/traces/traces_puller_factory.py b/samcli/commands/traces/traces_puller_factory.py index ae6e0bfb1d5..11a6ca58146 100644 --- a/samcli/commands/traces/traces_puller_factory.py +++ b/samcli/commands/traces/traces_puller_factory.py @@ -1,6 +1,7 @@ """ Factory methods which generates puller and consumer instances for XRay events """ + from typing import Any, List from samcli.commands.traces.trace_console_consumers import XRayTraceConsoleConsumer diff --git a/samcli/commands/validate/core/formatters.py b/samcli/commands/validate/core/formatters.py index 4cabeb568c5..69f12b0a4bc 100644 --- a/samcli/commands/validate/core/formatters.py +++ b/samcli/commands/validate/core/formatters.py @@ -1,6 +1,7 @@ """ Validate Command Formatter. """ + from samcli.cli.formatters import RootCommandHelpTextFormatter from samcli.cli.row_modifiers import BaseLineRowModifier from samcli.commands.validate.core.options import ALL_OPTIONS diff --git a/samcli/commands/validate/core/options.py b/samcli/commands/validate/core/options.py index 7e4993e130c..61eb1d0abfc 100644 --- a/samcli/commands/validate/core/options.py +++ b/samcli/commands/validate/core/options.py @@ -1,6 +1,7 @@ """ Validate Command Options related Datastructures for formatting. """ + from typing import Dict, List from samcli.cli.core.options import ALL_COMMON_OPTIONS, SAVE_PARAMS_OPTIONS, add_common_options_info diff --git a/samcli/commands/validate/validate.py b/samcli/commands/validate/validate.py index c47e205d8cf..db0a130b24d 100644 --- a/samcli/commands/validate/validate.py +++ b/samcli/commands/validate/validate.py @@ -1,6 +1,7 @@ """ CLI Command for Validating a SAM Template """ + import os import boto3 diff --git a/samcli/hook_packages/terraform/__init__.py b/samcli/hook_packages/terraform/__init__.py index 5dbd4c5c5d6..e75196dfb68 100644 --- a/samcli/hook_packages/terraform/__init__.py +++ b/samcli/hook_packages/terraform/__init__.py @@ -1,4 +1,5 @@ """ Expose top level prepare hook """ + from .main import prepare diff --git a/samcli/hook_packages/terraform/hooks/prepare/constants.py b/samcli/hook_packages/terraform/hooks/prepare/constants.py index e6ea7a1fca0..afa6876768d 100644 --- a/samcli/hook_packages/terraform/hooks/prepare/constants.py +++ b/samcli/hook_packages/terraform/hooks/prepare/constants.py @@ -1,6 +1,7 @@ """ Constants related to the Terraform prepare hook. """ + import re from samcli.lib.utils.resources import AWS_LAMBDA_FUNCTION as CFN_AWS_LAMBDA_FUNCTION diff --git a/samcli/hook_packages/terraform/hooks/prepare/enrich.py b/samcli/hook_packages/terraform/hooks/prepare/enrich.py index 9b27d91ccf9..5ca32ae0758 100644 --- a/samcli/hook_packages/terraform/hooks/prepare/enrich.py +++ b/samcli/hook_packages/terraform/hooks/prepare/enrich.py @@ -3,6 +3,7 @@ This module populates the values required for each of the Lambda resources """ + import json import logging import os diff --git a/samcli/hook_packages/terraform/hooks/prepare/exceptions.py b/samcli/hook_packages/terraform/hooks/prepare/exceptions.py index 3a8d9c2b67b..3074301272b 100644 --- a/samcli/hook_packages/terraform/hooks/prepare/exceptions.py +++ b/samcli/hook_packages/terraform/hooks/prepare/exceptions.py @@ -1,6 +1,7 @@ """ Module containing prepare hook-related exceptions """ + import os from samcli.commands.exceptions import UserException diff --git a/samcli/hook_packages/terraform/hooks/prepare/hook.py b/samcli/hook_packages/terraform/hooks/prepare/hook.py index 76a730cb54e..e287893ee35 100644 --- a/samcli/hook_packages/terraform/hooks/prepare/hook.py +++ b/samcli/hook_packages/terraform/hooks/prepare/hook.py @@ -3,6 +3,7 @@ This module contains the main prepare method """ + import json import logging import os diff --git a/samcli/hook_packages/terraform/hooks/prepare/makefile_generator.py b/samcli/hook_packages/terraform/hooks/prepare/makefile_generator.py index f9606ffbd31..ab0615bf0fa 100644 --- a/samcli/hook_packages/terraform/hooks/prepare/makefile_generator.py +++ b/samcli/hook_packages/terraform/hooks/prepare/makefile_generator.py @@ -3,6 +3,7 @@ This module generates the Makefile for the project and the rules for each of the Lambda functions found """ + import logging import os import shutil diff --git a/samcli/hook_packages/terraform/hooks/prepare/property_builder.py b/samcli/hook_packages/terraform/hooks/prepare/property_builder.py index efb88bedf3c..bdbd1c7d241 100644 --- a/samcli/hook_packages/terraform/hooks/prepare/property_builder.py +++ b/samcli/hook_packages/terraform/hooks/prepare/property_builder.py @@ -1,6 +1,7 @@ """ Terraform prepare property builder """ + import logging from json import loads from json.decoder import JSONDecodeError diff --git a/samcli/hook_packages/terraform/hooks/prepare/resource_linking.py b/samcli/hook_packages/terraform/hooks/prepare/resource_linking.py index a7fbadd4e22..7b1e339644b 100644 --- a/samcli/hook_packages/terraform/hooks/prepare/resource_linking.py +++ b/samcli/hook_packages/terraform/hooks/prepare/resource_linking.py @@ -2,6 +2,7 @@ Use Terraform plan to link resources together e.g. linking layers to functions """ + import logging import re from dataclasses import dataclass @@ -157,9 +158,9 @@ class ResourceLinkingPair: cfn_resource_update_call_back_function: Callable[[Dict, List[ReferenceType]], None] linking_exceptions: ResourcePairExceptions # function to extract the terraform destination value from the linking field value - tf_destination_value_extractor_from_link_field_value_function: Callable[ - [str], str - ] = _default_tf_destination_value_id_extractor + tf_destination_value_extractor_from_link_field_value_function: Callable[[str], str] = ( + _default_tf_destination_value_id_extractor + ) class ResourceLinker: @@ -357,12 +358,14 @@ def _link_using_linking_fields(self, cfn_resource: Dict) -> None: ) dest_resources = [ - LogicalIdReference( - value=child_resources_linking_attributes_logical_id_mapping[value][0], - resource_type=child_resources_linking_attributes_logical_id_mapping[value][1], + ( + LogicalIdReference( + value=child_resources_linking_attributes_logical_id_mapping[value][0], + resource_type=child_resources_linking_attributes_logical_id_mapping[value][1], + ) + if value in child_resources_linking_attributes_logical_id_mapping + else ExistingResourceReference(value) ) - if value in child_resources_linking_attributes_logical_id_mapping - else ExistingResourceReference(value) for value in values ] diff --git a/samcli/hook_packages/terraform/hooks/prepare/resources/code_resource_utils.py b/samcli/hook_packages/terraform/hooks/prepare/resources/code_resource_utils.py index f496409cbc6..88eb44d1c55 100644 --- a/samcli/hook_packages/terraform/hooks/prepare/resources/code_resource_utils.py +++ b/samcli/hook_packages/terraform/hooks/prepare/resources/code_resource_utils.py @@ -1,6 +1,7 @@ """ Utilities module specific to code resources such as Lambda functions and Lambda layers """ + from typing import Any, Dict from samcli.hook_packages.terraform.hooks.prepare.resource_linking import _resolve_resource_attribute diff --git a/samcli/hook_packages/terraform/hooks/prepare/resources/internal.py b/samcli/hook_packages/terraform/hooks/prepare/resources/internal.py index ffbe11f1a06..4effa859733 100644 --- a/samcli/hook_packages/terraform/hooks/prepare/resources/internal.py +++ b/samcli/hook_packages/terraform/hooks/prepare/resources/internal.py @@ -1,4 +1,5 @@ """Module containing logic specific to internal resources handling during the prepare hook execution""" + from samcli.hook_packages.terraform.hooks.prepare.types import ResourceProperties INTERNAL_PREFIX = "Internal::" diff --git a/samcli/hook_packages/terraform/hooks/prepare/resources/lambda_function.py b/samcli/hook_packages/terraform/hooks/prepare/resources/lambda_function.py index 46460904b0a..1738119fe91 100644 --- a/samcli/hook_packages/terraform/hooks/prepare/resources/lambda_function.py +++ b/samcli/hook_packages/terraform/hooks/prepare/resources/lambda_function.py @@ -1,4 +1,5 @@ """Module containing logic specific to Lambda function resource handling during the prepare hook execution""" + from typing import Dict, List, Tuple from samcli.hook_packages.terraform.hooks.prepare.resources.code_resource_utils import ( diff --git a/samcli/hook_packages/terraform/hooks/prepare/resources/resource_properties.py b/samcli/hook_packages/terraform/hooks/prepare/resources/resource_properties.py index 76931dd22bc..8fbf58149b8 100644 --- a/samcli/hook_packages/terraform/hooks/prepare/resources/resource_properties.py +++ b/samcli/hook_packages/terraform/hooks/prepare/resources/resource_properties.py @@ -1,4 +1,5 @@ """Module for getting the resource property mappings for various resource types""" + from typing import Dict from samcli.hook_packages.terraform.hooks.prepare.constants import ( diff --git a/samcli/hook_packages/terraform/hooks/prepare/translate.py b/samcli/hook_packages/terraform/hooks/prepare/translate.py index bd32102eb21..e71540bcdac 100644 --- a/samcli/hook_packages/terraform/hooks/prepare/translate.py +++ b/samcli/hook_packages/terraform/hooks/prepare/translate.py @@ -3,6 +3,7 @@ This method contains the logic required to translate the `terraform show` JSON output into a Cloudformation template """ + import hashlib import logging from typing import Any, Dict, Iterator, List, Tuple, Type, Union diff --git a/samcli/hook_packages/terraform/hooks/prepare/types.py b/samcli/hook_packages/terraform/hooks/prepare/types.py index 361ddc95fd3..30e27085ebb 100644 --- a/samcli/hook_packages/terraform/hooks/prepare/types.py +++ b/samcli/hook_packages/terraform/hooks/prepare/types.py @@ -1,4 +1,5 @@ """ Contains the data types used in the TF prepare hook""" + from abc import ABC from copy import deepcopy from dataclasses import dataclass diff --git a/samcli/hook_packages/terraform/hooks/prepare/utilities.py b/samcli/hook_packages/terraform/hooks/prepare/utilities.py index c0261b95b81..c58104eaa7e 100644 --- a/samcli/hook_packages/terraform/hooks/prepare/utilities.py +++ b/samcli/hook_packages/terraform/hooks/prepare/utilities.py @@ -1,4 +1,5 @@ """ Maintain the utilities functions used in prepare hook """ + from samcli.hook_packages.terraform.hooks.prepare.constants import COMPILED_REGULAR_EXPRESSION diff --git a/samcli/hook_packages/terraform/lib/utils.py b/samcli/hook_packages/terraform/lib/utils.py index 888c9f809b5..8fae5f9d96a 100644 --- a/samcli/hook_packages/terraform/lib/utils.py +++ b/samcli/hook_packages/terraform/lib/utils.py @@ -1,4 +1,5 @@ """Terraform utilities""" + import hashlib from typing import Any, Dict, List, Union diff --git a/samcli/hook_packages/terraform/main.py b/samcli/hook_packages/terraform/main.py index 9f402500f3b..e66309abf00 100644 --- a/samcli/hook_packages/terraform/main.py +++ b/samcli/hook_packages/terraform/main.py @@ -1,6 +1,7 @@ """ Module for Terraform hook entry points """ + from .hooks.prepare.hook import prepare as prepare_hook diff --git a/samcli/lib/bootstrap/companion_stack/companion_stack_builder.py b/samcli/lib/bootstrap/companion_stack/companion_stack_builder.py index 9d4f6fc7054..a8d21c3f0a3 100644 --- a/samcli/lib/bootstrap/companion_stack/companion_stack_builder.py +++ b/samcli/lib/bootstrap/companion_stack/companion_stack_builder.py @@ -1,6 +1,7 @@ """ Companion stack template builder """ + from typing import Dict, cast from samcli.lib.bootstrap.companion_stack.data_types import CompanionStack, ECRRepo diff --git a/samcli/lib/bootstrap/companion_stack/companion_stack_manager.py b/samcli/lib/bootstrap/companion_stack/companion_stack_manager.py index 8f183beb40c..4e647793b78 100644 --- a/samcli/lib/bootstrap/companion_stack/companion_stack_manager.py +++ b/samcli/lib/bootstrap/companion_stack/companion_stack_manager.py @@ -1,6 +1,7 @@ """ Companion stack manager """ + import logging from typing import Dict, List, Optional diff --git a/samcli/lib/bootstrap/companion_stack/data_types.py b/samcli/lib/bootstrap/companion_stack/data_types.py index 8cce26ba300..2725804220f 100644 --- a/samcli/lib/bootstrap/companion_stack/data_types.py +++ b/samcli/lib/bootstrap/companion_stack/data_types.py @@ -1,6 +1,7 @@ """ Date type classes for companion stacks """ + import posixpath import re from typing import Optional diff --git a/samcli/lib/bootstrap/nested_stack/nested_stack_builder.py b/samcli/lib/bootstrap/nested_stack/nested_stack_builder.py index 4ed9cbe1d3e..36a2177e1f7 100644 --- a/samcli/lib/bootstrap/nested_stack/nested_stack_builder.py +++ b/samcli/lib/bootstrap/nested_stack/nested_stack_builder.py @@ -1,6 +1,7 @@ """ StackBuilder implementation for nested stack """ + import re from typing import cast diff --git a/samcli/lib/bootstrap/nested_stack/nested_stack_manager.py b/samcli/lib/bootstrap/nested_stack/nested_stack_manager.py index b0d6faed980..ee2af65fa85 100644 --- a/samcli/lib/bootstrap/nested_stack/nested_stack_manager.py +++ b/samcli/lib/bootstrap/nested_stack/nested_stack_manager.py @@ -1,6 +1,7 @@ """ nested stack manager to generate nested stack information and update original template with it """ + import logging import os import shutil diff --git a/samcli/lib/bootstrap/stack_builder.py b/samcli/lib/bootstrap/stack_builder.py index 0654dd011f3..9e680f8fa2d 100644 --- a/samcli/lib/bootstrap/stack_builder.py +++ b/samcli/lib/bootstrap/stack_builder.py @@ -1,6 +1,7 @@ """ Abstract definitions for stack builder """ + import json from abc import ABC from copy import deepcopy diff --git a/samcli/lib/build/app_builder.py b/samcli/lib/build/app_builder.py index 0e49b7b2856..6c8b0f02f1d 100644 --- a/samcli/lib/build/app_builder.py +++ b/samcli/lib/build/app_builder.py @@ -1,6 +1,7 @@ """ Builds the application """ + import os import io import json diff --git a/samcli/lib/build/build_strategy.py b/samcli/lib/build/build_strategy.py index 7031e26b339..5fae26e79d7 100644 --- a/samcli/lib/build/build_strategy.py +++ b/samcli/lib/build/build_strategy.py @@ -1,6 +1,7 @@ """ Keeps implementation of different build strategies """ + import hashlib import logging import os.path diff --git a/samcli/lib/build/bundler.py b/samcli/lib/build/bundler.py index ba23158d397..797171391f2 100644 --- a/samcli/lib/build/bundler.py +++ b/samcli/lib/build/bundler.py @@ -1,6 +1,7 @@ """ Handles bundler properties as needed to modify the build process """ + import logging from copy import deepcopy from pathlib import Path, PosixPath diff --git a/samcli/lib/build/constants.py b/samcli/lib/build/constants.py index c7c4a3b94d0..3f15a06dc7e 100644 --- a/samcli/lib/build/constants.py +++ b/samcli/lib/build/constants.py @@ -1,6 +1,7 @@ """ build constants """ + from typing import Set DEPRECATED_RUNTIMES: Set[str] = { diff --git a/samcli/lib/build/dependency_hash_generator.py b/samcli/lib/build/dependency_hash_generator.py index bbf9f1bec0b..635618f91d2 100644 --- a/samcli/lib/build/dependency_hash_generator.py +++ b/samcli/lib/build/dependency_hash_generator.py @@ -1,4 +1,5 @@ """Utility Class for Getting Function or Layer Manifest Dependency Hashes""" + import pathlib from typing import Any, Optional diff --git a/samcli/lib/build/exceptions.py b/samcli/lib/build/exceptions.py index 2d33f367df0..e1f4ff50fcc 100644 --- a/samcli/lib/build/exceptions.py +++ b/samcli/lib/build/exceptions.py @@ -2,7 +2,6 @@ Build Related Exceptions. """ - from samcli.commands.exceptions import UserException diff --git a/samcli/lib/build/utils.py b/samcli/lib/build/utils.py index c4941f369aa..45ef2c46727 100644 --- a/samcli/lib/build/utils.py +++ b/samcli/lib/build/utils.py @@ -1,6 +1,7 @@ """ build utilities """ + import logging from typing import Union, Dict, Optional diff --git a/samcli/lib/cli_validation/image_repository_validation.py b/samcli/lib/cli_validation/image_repository_validation.py index 8d26ff558eb..67f4ea965e6 100644 --- a/samcli/lib/cli_validation/image_repository_validation.py +++ b/samcli/lib/cli_validation/image_repository_validation.py @@ -2,6 +2,7 @@ Image Repository Option Validation. This is to be run last after all CLI options have been processed. """ + import click from samcli.commands._utils.option_validator import Validator diff --git a/samcli/lib/cli_validation/remote_invoke_options_validations.py b/samcli/lib/cli_validation/remote_invoke_options_validations.py index bed1591f15d..4b645190ce3 100644 --- a/samcli/lib/cli_validation/remote_invoke_options_validations.py +++ b/samcli/lib/cli_validation/remote_invoke_options_validations.py @@ -1,6 +1,7 @@ """ This file contains validations remote invoke options """ + import logging import sys from functools import wraps diff --git a/samcli/lib/config/exceptions.py b/samcli/lib/config/exceptions.py index 4b3336ed8d4..aabcff57430 100644 --- a/samcli/lib/config/exceptions.py +++ b/samcli/lib/config/exceptions.py @@ -2,7 +2,6 @@ Exceptions to be used by samconfig.py """ - from samcli.commands.exceptions import UserException diff --git a/samcli/lib/config/file_manager.py b/samcli/lib/config/file_manager.py index 0629ace318b..607e4f727fb 100644 --- a/samcli/lib/config/file_manager.py +++ b/samcli/lib/config/file_manager.py @@ -2,7 +2,6 @@ Class to represent the parsing of different file types into Python objects. """ - import json import logging from abc import ABC, abstractmethod diff --git a/samcli/lib/cookiecutter/interactive_flow.py b/samcli/lib/cookiecutter/interactive_flow.py index 2c31ac12879..67e1256d1cc 100644 --- a/samcli/lib/cookiecutter/interactive_flow.py +++ b/samcli/lib/cookiecutter/interactive_flow.py @@ -1,4 +1,5 @@ """A flow of questions to be asked to the user in an interactive way.""" + from typing import Any, Dict, List, Optional, Tuple import click diff --git a/samcli/lib/cookiecutter/interactive_flow_creator.py b/samcli/lib/cookiecutter/interactive_flow_creator.py index 370e4a38311..8a7b9c5bae8 100644 --- a/samcli/lib/cookiecutter/interactive_flow_creator.py +++ b/samcli/lib/cookiecutter/interactive_flow_creator.py @@ -1,4 +1,5 @@ """ This module parses a json/yaml file that defines a flow of questions to fulfill the cookiecutter context""" + from typing import Dict, Optional, Tuple import yaml diff --git a/samcli/lib/cookiecutter/plugin.py b/samcli/lib/cookiecutter/plugin.py index 09cc7b113ca..a8a7cb4cad3 100644 --- a/samcli/lib/cookiecutter/plugin.py +++ b/samcli/lib/cookiecutter/plugin.py @@ -1,6 +1,7 @@ """ Plugins are sub-sets of templates, it encapsulate common behavior of different templates and plugged to each of them """ + from typing import NamedTuple from .interactive_flow import InteractiveFlow diff --git a/samcli/lib/cookiecutter/processor.py b/samcli/lib/cookiecutter/processor.py index 4f34df06f8a..bab7f887709 100644 --- a/samcli/lib/cookiecutter/processor.py +++ b/samcli/lib/cookiecutter/processor.py @@ -1,4 +1,5 @@ """ Define a processor to process the cookiecutter context before/after generating a cookiecutter project""" + from abc import ABC, abstractmethod from typing import Dict diff --git a/samcli/lib/cookiecutter/question.py b/samcli/lib/cookiecutter/question.py index 843d9dfc112..76412307f4f 100644 --- a/samcli/lib/cookiecutter/question.py +++ b/samcli/lib/cookiecutter/question.py @@ -1,4 +1,5 @@ """ This module represents the questions to ask to the user to fulfill the cookiecutter context. """ + from abc import ABC, abstractmethod from enum import Enum from typing import Any, Dict, List, Optional, Type, Union diff --git a/samcli/lib/cookiecutter/template.py b/samcli/lib/cookiecutter/template.py index ddce7b6b827..9ff2a279b91 100644 --- a/samcli/lib/cookiecutter/template.py +++ b/samcli/lib/cookiecutter/template.py @@ -2,6 +2,7 @@ This is the core module of the cookiecutter workflow, it defines how to create a template, prompt the user for values of the context and how to generate a project from the given template and provided context """ + import logging from typing import Dict, List, Optional diff --git a/samcli/lib/deploy/deployer.py b/samcli/lib/deploy/deployer.py index 0500a419014..effe6080015 100644 --- a/samcli/lib/deploy/deployer.py +++ b/samcli/lib/deploy/deployer.py @@ -258,9 +258,9 @@ def describe_changeset(self, change_set_id, stack_name, **kwargs): { "LogicalResourceId": resource_props.get("LogicalResourceId"), "ResourceType": resource_props.get("ResourceType"), - "Replacement": "N/A" - if resource_props.get("Replacement") is None - else resource_props.get("Replacement"), + "Replacement": ( + "N/A" if resource_props.get("Replacement") is None else resource_props.get("Replacement") + ), } ) diff --git a/samcli/lib/docker/log_streamer.py b/samcli/lib/docker/log_streamer.py index 3bb437781ae..c4aacfd09d1 100644 --- a/samcli/lib/docker/log_streamer.py +++ b/samcli/lib/docker/log_streamer.py @@ -1,6 +1,7 @@ """ Log streaming utilities when streaming logs from Docker """ + import os from typing import Dict diff --git a/samcli/lib/docs/browser_configuration.py b/samcli/lib/docs/browser_configuration.py index f966ee69ece..f3d00f0e177 100644 --- a/samcli/lib/docs/browser_configuration.py +++ b/samcli/lib/docs/browser_configuration.py @@ -1,6 +1,7 @@ """ Library housing logic for handling web browsers """ + import logging import webbrowser from enum import Enum diff --git a/samcli/lib/docs/documentation.py b/samcli/lib/docs/documentation.py index a78556238c5..fc5ae45a4f0 100644 --- a/samcli/lib/docs/documentation.py +++ b/samcli/lib/docs/documentation.py @@ -1,6 +1,7 @@ """ Library housing the logic for handling AWS SAM CLI documentation pages """ + import json import logging from pathlib import Path diff --git a/samcli/lib/generated_sample_events/events.py b/samcli/lib/generated_sample_events/events.py index 00ee4a38f05..5d8dd490ffc 100644 --- a/samcli/lib/generated_sample_events/events.py +++ b/samcli/lib/generated_sample_events/events.py @@ -21,7 +21,6 @@ class Events: - """ Events library class that loads and customizes event json files diff --git a/samcli/lib/hook/exceptions.py b/samcli/lib/hook/exceptions.py index a4b162826b3..c5867a7ed14 100644 --- a/samcli/lib/hook/exceptions.py +++ b/samcli/lib/hook/exceptions.py @@ -1,4 +1,5 @@ """Hooks Exceptions""" + from samcli.commands.exceptions import UserException diff --git a/samcli/lib/hook/hook_config.py b/samcli/lib/hook/hook_config.py index 92908642de4..7f53c184115 100644 --- a/samcli/lib/hook/hook_config.py +++ b/samcli/lib/hook/hook_config.py @@ -1,4 +1,5 @@ """Hook Package Config""" + import json from pathlib import Path from typing import Dict, NamedTuple, Optional, cast diff --git a/samcli/lib/hook/hook_wrapper.py b/samcli/lib/hook/hook_wrapper.py index 9580be5a00c..87bbdbb31bc 100644 --- a/samcli/lib/hook/hook_wrapper.py +++ b/samcli/lib/hook/hook_wrapper.py @@ -1,6 +1,7 @@ """ Hooks Wrapper Class """ + import importlib import logging from pathlib import Path diff --git a/samcli/lib/iac/cdk/cdk_iac.py b/samcli/lib/iac/cdk/cdk_iac.py index 700c1ef3c3f..bc79acdb158 100644 --- a/samcli/lib/iac/cdk/cdk_iac.py +++ b/samcli/lib/iac/cdk/cdk_iac.py @@ -1,6 +1,7 @@ """ Provide a CDK implementation of IaCPluginInterface """ + from typing import List from samcli.lib.iac.plugins_interfaces import IaCPluginInterface, LookupPath, SamCliProject, Stack diff --git a/samcli/lib/iac/cfn/cfn_iac.py b/samcli/lib/iac/cfn/cfn_iac.py index 7617af2f92f..7676fa19648 100644 --- a/samcli/lib/iac/cfn/cfn_iac.py +++ b/samcli/lib/iac/cfn/cfn_iac.py @@ -1,6 +1,7 @@ """ Provide a CFN implementation of IaCPluginInterface """ + import logging import os from typing import List, Optional diff --git a/samcli/lib/iac/constants.py b/samcli/lib/iac/constants.py index c3c992aa250..dead7f559c1 100644 --- a/samcli/lib/iac/constants.py +++ b/samcli/lib/iac/constants.py @@ -1,5 +1,6 @@ """ General IaC constants """ + PARAMETER_OVERRIDES = "parameter_overrides" GLOBAL_PARAMETER_OVERRIDES = "global_parameter_overrides" diff --git a/samcli/lib/iac/exceptions.py b/samcli/lib/iac/exceptions.py index ed84517f6e5..2d1872cb601 100644 --- a/samcli/lib/iac/exceptions.py +++ b/samcli/lib/iac/exceptions.py @@ -1,6 +1,7 @@ """ IaC Exceptions """ + from typing import Optional from samcli.commands.exceptions import UserException diff --git a/samcli/lib/iac/iac_factory.py b/samcli/lib/iac/iac_factory.py index 766925e7972..3b629b4abce 100644 --- a/samcli/lib/iac/iac_factory.py +++ b/samcli/lib/iac/iac_factory.py @@ -1,6 +1,7 @@ """ Provide a factory class for IaC project creation """ + import fnmatch import os diff --git a/samcli/lib/init/__init__.py b/samcli/lib/init/__init__.py index e0b8ff0e5b0..241076bc058 100644 --- a/samcli/lib/init/__init__.py +++ b/samcli/lib/init/__init__.py @@ -1,6 +1,7 @@ """ Init module to scaffold a project app from a template """ + import itertools import logging import platform diff --git a/samcli/lib/init/default_samconfig.py b/samcli/lib/init/default_samconfig.py index c45d5fea771..c075761b208 100644 --- a/samcli/lib/init/default_samconfig.py +++ b/samcli/lib/init/default_samconfig.py @@ -1,6 +1,7 @@ """ Module for creating default samconfig.toml files after initialize a sample app """ + from dataclasses import dataclass from enum import Enum from typing import Any, List diff --git a/samcli/lib/init/template_modifiers/application_insights_template_modifier.py b/samcli/lib/init/template_modifiers/application_insights_template_modifier.py index 4a447843079..42139026ad4 100644 --- a/samcli/lib/init/template_modifiers/application_insights_template_modifier.py +++ b/samcli/lib/init/template_modifiers/application_insights_template_modifier.py @@ -1,6 +1,7 @@ """ Class used to parse and update template when application-insights is enabled """ + import logging from typing import Any diff --git a/samcli/lib/init/template_modifiers/cli_template_modifier.py b/samcli/lib/init/template_modifiers/cli_template_modifier.py index 848defc7b77..fe21a1f39b1 100644 --- a/samcli/lib/init/template_modifiers/cli_template_modifier.py +++ b/samcli/lib/init/template_modifiers/cli_template_modifier.py @@ -1,6 +1,7 @@ """ Class used to parse and update template with new field """ + import logging from abc import abstractmethod from copy import deepcopy diff --git a/samcli/lib/init/template_modifiers/structured_logging_template_modifier.py b/samcli/lib/init/template_modifiers/structured_logging_template_modifier.py index 798ce9cd181..7221ae8a339 100644 --- a/samcli/lib/init/template_modifiers/structured_logging_template_modifier.py +++ b/samcli/lib/init/template_modifiers/structured_logging_template_modifier.py @@ -1,6 +1,7 @@ """ Class used to parse and update template when structured logging is enabled """ + import logging from typing import Any diff --git a/samcli/lib/init/template_modifiers/xray_tracing_template_modifier.py b/samcli/lib/init/template_modifiers/xray_tracing_template_modifier.py index e0c0a445d79..961cf077008 100644 --- a/samcli/lib/init/template_modifiers/xray_tracing_template_modifier.py +++ b/samcli/lib/init/template_modifiers/xray_tracing_template_modifier.py @@ -1,6 +1,7 @@ """ Class used to parse and update template when tracing is enabled """ + import logging from typing import Any diff --git a/samcli/lib/intrinsic_resolver/intrinsic_property_resolver.py b/samcli/lib/intrinsic_resolver/intrinsic_property_resolver.py index 3fdd1c2e586..1fee887de78 100644 --- a/samcli/lib/intrinsic_resolver/intrinsic_property_resolver.py +++ b/samcli/lib/intrinsic_resolver/intrinsic_property_resolver.py @@ -1,6 +1,7 @@ """ Process and simplifies CloudFormation intrinsic properties such as FN::* and Ref """ + import base64 import copy import logging diff --git a/samcli/lib/intrinsic_resolver/intrinsics_symbol_table.py b/samcli/lib/intrinsic_resolver/intrinsics_symbol_table.py index e5d704214ea..feefb46c031 100644 --- a/samcli/lib/intrinsic_resolver/intrinsics_symbol_table.py +++ b/samcli/lib/intrinsic_resolver/intrinsics_symbol_table.py @@ -1,6 +1,7 @@ """ The symbol table that is used in IntrinsicResolver in order to resolve runtime attributes """ + import logging import os diff --git a/samcli/lib/intrinsic_resolver/invalid_intrinsic_validation.py b/samcli/lib/intrinsic_resolver/invalid_intrinsic_validation.py index bc11644efbf..a8e6e6f6e89 100644 --- a/samcli/lib/intrinsic_resolver/invalid_intrinsic_validation.py +++ b/samcli/lib/intrinsic_resolver/invalid_intrinsic_validation.py @@ -1,6 +1,7 @@ """ A list of helper functions that cleanup the processing in IntrinsicResolver and IntrinsicSymbolTable """ + from samcli.lib.intrinsic_resolver.invalid_intrinsic_exception import InvalidIntrinsicException diff --git a/samcli/lib/list/data_to_json_mapper.py b/samcli/lib/list/data_to_json_mapper.py index d99f5dc04fa..81d44ca4932 100644 --- a/samcli/lib/list/data_to_json_mapper.py +++ b/samcli/lib/list/data_to_json_mapper.py @@ -1,6 +1,7 @@ """ Implementation of the data to json mapper """ + import json from typing import Dict diff --git a/samcli/lib/list/endpoints/endpoints_def.py b/samcli/lib/list/endpoints/endpoints_def.py index 7bd29dea77f..f44b75b6e64 100644 --- a/samcli/lib/list/endpoints/endpoints_def.py +++ b/samcli/lib/list/endpoints/endpoints_def.py @@ -1,6 +1,7 @@ """ The container for Endpoints """ + from dataclasses import dataclass from typing import Any diff --git a/samcli/lib/list/endpoints/endpoints_producer.py b/samcli/lib/list/endpoints/endpoints_producer.py index b708944e312..70c82687ce2 100644 --- a/samcli/lib/list/endpoints/endpoints_producer.py +++ b/samcli/lib/list/endpoints/endpoints_producer.py @@ -1,6 +1,7 @@ """ The producer for the 'sam list endpoints' command """ + import dataclasses import json import logging @@ -468,9 +469,9 @@ def get_response_domain_dict(response: Dict[Any, Any]) -> Dict[str, str]: resource.get(RESOURCE_TYPE, "") == AWS_APIGATEWAY_DOMAIN_NAME or resource.get(RESOURCE_TYPE, "") == AWS_APIGATEWAY_V2_DOMAIN_NAME ): - response_domain_dict[ - resource.get(LOGICAL_RESOURCE_ID, "") - ] = f'https://{resource.get(PHYSICAL_RESOURCE_ID, "")}' + response_domain_dict[resource.get(LOGICAL_RESOURCE_ID, "")] = ( + f'https://{resource.get(PHYSICAL_RESOURCE_ID, "")}' + ) return response_domain_dict diff --git a/samcli/lib/list/endpoints/endpoints_to_table_mapper.py b/samcli/lib/list/endpoints/endpoints_to_table_mapper.py index 6efe234edb5..6521616f595 100644 --- a/samcli/lib/list/endpoints/endpoints_to_table_mapper.py +++ b/samcli/lib/list/endpoints/endpoints_to_table_mapper.py @@ -1,6 +1,7 @@ """ Implementation of the endpoints to table mapper """ + from collections import OrderedDict from typing import Any, Dict diff --git a/samcli/lib/list/list_interfaces.py b/samcli/lib/list/list_interfaces.py index 91b8b559ca9..ed6d7c45981 100644 --- a/samcli/lib/list/list_interfaces.py +++ b/samcli/lib/list/list_interfaces.py @@ -1,6 +1,7 @@ """ Interface for MapperConsumerFactory, Producer, Mapper, ListInfoPullerConsumer """ + from abc import ABC, abstractmethod from enum import Enum from typing import Generic, TypeVar diff --git a/samcli/lib/list/mapper_consumer_container.py b/samcli/lib/list/mapper_consumer_container.py index 80360d7a16a..babf6d81d4c 100644 --- a/samcli/lib/list/mapper_consumer_container.py +++ b/samcli/lib/list/mapper_consumer_container.py @@ -1,6 +1,7 @@ """ Container for a mapper and a consumer """ + from dataclasses import dataclass from samcli.lib.list.list_interfaces import ListInfoPullerConsumer, Mapper diff --git a/samcli/lib/list/mapper_consumer_factory.py b/samcli/lib/list/mapper_consumer_factory.py index 84b9d1c02e6..bdf6578ea1a 100644 --- a/samcli/lib/list/mapper_consumer_factory.py +++ b/samcli/lib/list/mapper_consumer_factory.py @@ -1,6 +1,7 @@ """ The factory for returning the appropriate mapper and consumer """ + from samcli.commands.list.json_consumer import StringConsumerJsonOutput from samcli.commands.list.table_consumer import StringConsumerTableOutput from samcli.lib.list.data_to_json_mapper import DataToJsonMapper diff --git a/samcli/lib/list/resources/resource_mapping_producer.py b/samcli/lib/list/resources/resource_mapping_producer.py index 96b7e7c56c0..562f145f9a8 100644 --- a/samcli/lib/list/resources/resource_mapping_producer.py +++ b/samcli/lib/list/resources/resource_mapping_producer.py @@ -1,6 +1,7 @@ """ The producer for the 'sam list resources' command """ + import dataclasses import logging from typing import Any, Dict diff --git a/samcli/lib/list/resources/resources_def.py b/samcli/lib/list/resources/resources_def.py index 37bebecbba3..802ac4faf96 100644 --- a/samcli/lib/list/resources/resources_def.py +++ b/samcli/lib/list/resources/resources_def.py @@ -1,6 +1,7 @@ """ The container for Resources """ + from dataclasses import dataclass diff --git a/samcli/lib/list/resources/resources_to_table_mapper.py b/samcli/lib/list/resources/resources_to_table_mapper.py index ca87644ed76..d33757a66fd 100644 --- a/samcli/lib/list/resources/resources_to_table_mapper.py +++ b/samcli/lib/list/resources/resources_to_table_mapper.py @@ -1,6 +1,7 @@ """ Implementation of the resources to table mapper """ + from collections import OrderedDict from typing import Any, Dict diff --git a/samcli/lib/list/stack_outputs/stack_output_to_table_mapper.py b/samcli/lib/list/stack_outputs/stack_output_to_table_mapper.py index 0be89deae60..68c8255526e 100644 --- a/samcli/lib/list/stack_outputs/stack_output_to_table_mapper.py +++ b/samcli/lib/list/stack_outputs/stack_output_to_table_mapper.py @@ -1,6 +1,7 @@ """ Implementation of the stack output to table mapper """ + from collections import OrderedDict from typing import Any, Dict diff --git a/samcli/lib/list/stack_outputs/stack_outputs.py b/samcli/lib/list/stack_outputs/stack_outputs.py index 292da23b481..b0500afa0d0 100644 --- a/samcli/lib/list/stack_outputs/stack_outputs.py +++ b/samcli/lib/list/stack_outputs/stack_outputs.py @@ -1,6 +1,7 @@ """ The container for stack outputs """ + from dataclasses import dataclass diff --git a/samcli/lib/list/stack_outputs/stack_outputs_producer.py b/samcli/lib/list/stack_outputs/stack_outputs_producer.py index dc8df62d8e2..198664b6284 100644 --- a/samcli/lib/list/stack_outputs/stack_outputs_producer.py +++ b/samcli/lib/list/stack_outputs/stack_outputs_producer.py @@ -1,6 +1,7 @@ """ The producer for the 'sam list stack-outputs' command """ + import dataclasses import logging from typing import Any, Optional diff --git a/samcli/lib/observability/cw_logs/cw_log_event.py b/samcli/lib/observability/cw_logs/cw_log_event.py index 49b9a4e889c..1258cec9f1b 100644 --- a/samcli/lib/observability/cw_logs/cw_log_event.py +++ b/samcli/lib/observability/cw_logs/cw_log_event.py @@ -1,6 +1,7 @@ """ CloudWatch log event type """ + from typing import Optional from samcli.lib.observability.observability_info_puller import ObservabilityEvent diff --git a/samcli/lib/observability/cw_logs/cw_log_formatters.py b/samcli/lib/observability/cw_logs/cw_log_formatters.py index 63b2ffd983a..e761bea5f51 100644 --- a/samcli/lib/observability/cw_logs/cw_log_formatters.py +++ b/samcli/lib/observability/cw_logs/cw_log_formatters.py @@ -1,6 +1,7 @@ """ Contains all mappers (formatters) for CloudWatch logs """ + import json import logging from json import JSONDecodeError diff --git a/samcli/lib/observability/cw_logs/cw_log_group_provider.py b/samcli/lib/observability/cw_logs/cw_log_group_provider.py index e920ee41a7d..0bcb70328af 100644 --- a/samcli/lib/observability/cw_logs/cw_log_group_provider.py +++ b/samcli/lib/observability/cw_logs/cw_log_group_provider.py @@ -1,6 +1,7 @@ """ Discover & provide the log group name """ + import logging from typing import Optional diff --git a/samcli/lib/observability/cw_logs/cw_log_puller.py b/samcli/lib/observability/cw_logs/cw_log_puller.py index b2f8c885d19..409be8d3a5d 100644 --- a/samcli/lib/observability/cw_logs/cw_log_puller.py +++ b/samcli/lib/observability/cw_logs/cw_log_puller.py @@ -1,6 +1,7 @@ """ CloudWatch log event puller implementation """ + import logging import time from datetime import datetime diff --git a/samcli/lib/observability/observability_info_puller.py b/samcli/lib/observability/observability_info_puller.py index d5990feae5c..ef160410455 100644 --- a/samcli/lib/observability/observability_info_puller.py +++ b/samcli/lib/observability/observability_info_puller.py @@ -1,6 +1,7 @@ """ Interfaces and generic implementations for observability events (like CW logs) """ + import logging from abc import ABC, abstractmethod from datetime import datetime diff --git a/samcli/lib/observability/util.py b/samcli/lib/observability/util.py index d3996d63539..24b610b46a9 100644 --- a/samcli/lib/observability/util.py +++ b/samcli/lib/observability/util.py @@ -1,6 +1,7 @@ """ Utility classes and methods for observability commands and functionality """ + from enum import Enum diff --git a/samcli/lib/observability/xray_traces/xray_event_mappers.py b/samcli/lib/observability/xray_traces/xray_event_mappers.py index bcd367dd975..224cb3bad67 100644 --- a/samcli/lib/observability/xray_traces/xray_event_mappers.py +++ b/samcli/lib/observability/xray_traces/xray_event_mappers.py @@ -1,6 +1,7 @@ """ Contains mapper implementations of XRay events """ + import json from copy import deepcopy from datetime import datetime diff --git a/samcli/lib/observability/xray_traces/xray_event_puller.py b/samcli/lib/observability/xray_traces/xray_event_puller.py index 506257e4d6e..b012f986939 100644 --- a/samcli/lib/observability/xray_traces/xray_event_puller.py +++ b/samcli/lib/observability/xray_traces/xray_event_puller.py @@ -1,6 +1,7 @@ """ This file contains puller implementations for XRay """ + import logging import time from datetime import datetime diff --git a/samcli/lib/observability/xray_traces/xray_events.py b/samcli/lib/observability/xray_traces/xray_events.py index de610ca1157..f39fcea5a02 100644 --- a/samcli/lib/observability/xray_traces/xray_events.py +++ b/samcli/lib/observability/xray_traces/xray_events.py @@ -1,6 +1,7 @@ """ Keeps XRay event definitions """ + import json import operator from typing import List, Optional diff --git a/samcli/lib/observability/xray_traces/xray_service_graph_event_puller.py b/samcli/lib/observability/xray_traces/xray_service_graph_event_puller.py index 9c3f0c3caf9..019b27aa5c8 100644 --- a/samcli/lib/observability/xray_traces/xray_service_graph_event_puller.py +++ b/samcli/lib/observability/xray_traces/xray_service_graph_event_puller.py @@ -1,6 +1,7 @@ """ This file contains puller implementations for XRay """ + import logging from datetime import datetime from typing import Any, Dict, List, Optional, Set, Union diff --git a/samcli/lib/package/ecr_uploader.py b/samcli/lib/package/ecr_uploader.py index 0393596b39a..6414ccf071b 100644 --- a/samcli/lib/package/ecr_uploader.py +++ b/samcli/lib/package/ecr_uploader.py @@ -1,6 +1,7 @@ """ Client for uploading packaged artifacts to ecr """ + import base64 import logging from io import StringIO diff --git a/samcli/lib/package/ecr_utils.py b/samcli/lib/package/ecr_utils.py index 2a068e55c08..c13be0f65f6 100644 --- a/samcli/lib/package/ecr_utils.py +++ b/samcli/lib/package/ecr_utils.py @@ -1,6 +1,7 @@ """ ECR Packaging Utils """ + import re """ diff --git a/samcli/lib/package/image_utils.py b/samcli/lib/package/image_utils.py index b5a0a6bf83b..fbff23ece0f 100644 --- a/samcli/lib/package/image_utils.py +++ b/samcli/lib/package/image_utils.py @@ -1,6 +1,7 @@ """ Image artifacts based utilities """ + import docker from docker.errors import APIError, NullResource diff --git a/samcli/lib/package/local_files_utils.py b/samcli/lib/package/local_files_utils.py index d6dc1aa1480..e7a9bf68e61 100644 --- a/samcli/lib/package/local_files_utils.py +++ b/samcli/lib/package/local_files_utils.py @@ -1,6 +1,7 @@ """ Utilities for local files handling. """ + import os import tempfile import uuid diff --git a/samcli/lib/package/packageable_resources.py b/samcli/lib/package/packageable_resources.py index ca245715b5f..d2986cc98dc 100644 --- a/samcli/lib/package/packageable_resources.py +++ b/samcli/lib/package/packageable_resources.py @@ -1,6 +1,7 @@ """ Code for all Package-able resources """ + import logging import os import shutil diff --git a/samcli/lib/package/permissions.py b/samcli/lib/package/permissions.py index 24da0bdac57..47c987df0eb 100644 --- a/samcli/lib/package/permissions.py +++ b/samcli/lib/package/permissions.py @@ -1,6 +1,7 @@ """ Classes which will change permissions on a ZipInfo object """ + import platform import zipfile diff --git a/samcli/lib/package/stream_cursor_utils.py b/samcli/lib/package/stream_cursor_utils.py index 924e431baa3..5f31b3b7724 100644 --- a/samcli/lib/package/stream_cursor_utils.py +++ b/samcli/lib/package/stream_cursor_utils.py @@ -1,6 +1,7 @@ """ Stream cursor utilities for moving cursor in the terminal. """ + import os import platform diff --git a/samcli/lib/package/utils.py b/samcli/lib/package/utils.py index d0a1ae9787d..ef0405060a9 100644 --- a/samcli/lib/package/utils.py +++ b/samcli/lib/package/utils.py @@ -1,6 +1,7 @@ """ Utilities involved in Packaging. """ + import contextlib import functools import logging diff --git a/samcli/lib/pipeline/bootstrap/resource.py b/samcli/lib/pipeline/bootstrap/resource.py index cb5eb000e3f..8f4f4518084 100644 --- a/samcli/lib/pipeline/bootstrap/resource.py +++ b/samcli/lib/pipeline/bootstrap/resource.py @@ -1,4 +1,5 @@ """ Represents AWS resource""" + from typing import Optional from samcli.lib.utils.arn_utils import ARNParts diff --git a/samcli/lib/pipeline/bootstrap/stage.py b/samcli/lib/pipeline/bootstrap/stage.py index 06ab4fa6dc2..7bca9dc3153 100644 --- a/samcli/lib/pipeline/bootstrap/stage.py +++ b/samcli/lib/pipeline/bootstrap/stage.py @@ -1,4 +1,5 @@ """ Application Environment """ + import hashlib import json import os @@ -240,13 +241,17 @@ def _get_non_user_provided_resources_msg(self) -> str: [] if self.pipeline_user.is_user_provided or self.use_oidc_provider else [self.pipeline_user.comment], [] if not self.use_oidc_provider else [self.oidc_provider.comment], [] if self.pipeline_execution_role.is_user_provided else [self.pipeline_execution_role.comment], - [] - if self.cloudformation_execution_role.is_user_provided - else [self.cloudformation_execution_role.comment], + ( + [] + if self.cloudformation_execution_role.is_user_provided + else [self.cloudformation_execution_role.comment] + ), [] if self.artifacts_bucket.is_user_provided else [self.artifacts_bucket.comment], - [] - if self.image_repository.is_user_provided or not self.create_image_repository - else [self.image_repository.comment], + ( + [] + if self.image_repository.is_user_provided or not self.create_image_repository + else [self.image_repository.comment] + ), ] ) return "\n".join([f"\t- {comment}" for comment in resource_comments]) diff --git a/samcli/lib/providers/cfn_api_provider.py b/samcli/lib/providers/cfn_api_provider.py index b8f9e6f28c5..f0a46cb74e9 100644 --- a/samcli/lib/providers/cfn_api_provider.py +++ b/samcli/lib/providers/cfn_api_provider.py @@ -1,4 +1,5 @@ """Parses SAM given a template""" + import logging from typing import Any, Dict, List, Optional, Tuple, cast diff --git a/samcli/lib/providers/cfn_base_api_provider.py b/samcli/lib/providers/cfn_base_api_provider.py index 646bff37ab2..bd336df7011 100644 --- a/samcli/lib/providers/cfn_base_api_provider.py +++ b/samcli/lib/providers/cfn_base_api_provider.py @@ -1,4 +1,5 @@ """Class that parses the CloudFormation Api Template""" + import logging from typing import Any, Dict, List, Optional, Type, Union diff --git a/samcli/lib/providers/provider.py b/samcli/lib/providers/provider.py index e0d3183c15c..d14f3fa4b0a 100644 --- a/samcli/lib/providers/provider.py +++ b/samcli/lib/providers/provider.py @@ -2,6 +2,7 @@ A provider class that can parse and return Lambda Functions from a variety of sources. A SAM template is one such source """ + import hashlib import logging import os diff --git a/samcli/lib/providers/sam_function_provider.py b/samcli/lib/providers/sam_function_provider.py index cfed427ce08..da0c64eaca3 100644 --- a/samcli/lib/providers/sam_function_provider.py +++ b/samcli/lib/providers/sam_function_provider.py @@ -1,6 +1,7 @@ """ Class that provides functions from a given SAM template """ + import logging from typing import Any, Dict, Iterator, List, Optional, cast diff --git a/samcli/lib/providers/sam_layer_provider.py b/samcli/lib/providers/sam_layer_provider.py index 44d68fafbbf..ecd642f751d 100644 --- a/samcli/lib/providers/sam_layer_provider.py +++ b/samcli/lib/providers/sam_layer_provider.py @@ -1,6 +1,7 @@ """ Class that provides layers from a given SAM template """ + import logging from typing import Dict, List, Optional diff --git a/samcli/lib/providers/sam_stack_provider.py b/samcli/lib/providers/sam_stack_provider.py index f1746198864..0f9b174f95a 100644 --- a/samcli/lib/providers/sam_stack_provider.py +++ b/samcli/lib/providers/sam_stack_provider.py @@ -1,6 +1,7 @@ """ Class that provides all nested stacks from a given SAM template """ + import logging import os from typing import Dict, Iterator, List, Optional, Tuple, Union, cast diff --git a/samcli/lib/remote_invoke/kinesis_invoke_executors.py b/samcli/lib/remote_invoke/kinesis_invoke_executors.py index ad020bd1ef9..0c34c457e4e 100644 --- a/samcli/lib/remote_invoke/kinesis_invoke_executors.py +++ b/samcli/lib/remote_invoke/kinesis_invoke_executors.py @@ -1,6 +1,7 @@ """ Remote invoke executor implementation for Kinesis streams """ + import logging import uuid from dataclasses import asdict, dataclass diff --git a/samcli/lib/remote_invoke/lambda_invoke_executors.py b/samcli/lib/remote_invoke/lambda_invoke_executors.py index 507999210e2..423a604d3ed 100644 --- a/samcli/lib/remote_invoke/lambda_invoke_executors.py +++ b/samcli/lib/remote_invoke/lambda_invoke_executors.py @@ -1,6 +1,7 @@ """ Remote invoke executor implementation for Lambda """ + import base64 import json import logging diff --git a/samcli/lib/remote_invoke/remote_invoke_executor_factory.py b/samcli/lib/remote_invoke/remote_invoke_executor_factory.py index 5d0daaa3955..4b1d46e55b4 100644 --- a/samcli/lib/remote_invoke/remote_invoke_executor_factory.py +++ b/samcli/lib/remote_invoke/remote_invoke_executor_factory.py @@ -1,6 +1,7 @@ """ Remote Invoke factory to instantiate remote invoker for given resource """ + import logging from typing import Any, Callable, Dict, Optional diff --git a/samcli/lib/remote_invoke/remote_invoke_executors.py b/samcli/lib/remote_invoke/remote_invoke_executors.py index f15899c02aa..8dce0390c2b 100644 --- a/samcli/lib/remote_invoke/remote_invoke_executors.py +++ b/samcli/lib/remote_invoke/remote_invoke_executors.py @@ -1,6 +1,7 @@ """ Abstract class definitions and generic implementations for remote invoke """ + import json import logging from abc import ABC, abstractmethod diff --git a/samcli/lib/remote_invoke/sqs_invoke_executors.py b/samcli/lib/remote_invoke/sqs_invoke_executors.py index b4454158faa..b92653f838f 100644 --- a/samcli/lib/remote_invoke/sqs_invoke_executors.py +++ b/samcli/lib/remote_invoke/sqs_invoke_executors.py @@ -1,6 +1,7 @@ """ Remote invoke executor implementation for SQS """ + import json import logging from dataclasses import asdict, dataclass diff --git a/samcli/lib/remote_invoke/stepfunctions_invoke_executors.py b/samcli/lib/remote_invoke/stepfunctions_invoke_executors.py index f4d6a384c8e..8a3a833214f 100644 --- a/samcli/lib/remote_invoke/stepfunctions_invoke_executors.py +++ b/samcli/lib/remote_invoke/stepfunctions_invoke_executors.py @@ -1,6 +1,7 @@ """ Remote invoke executor implementation for Step Functions """ + import logging import time from datetime import datetime diff --git a/samcli/lib/sync/continuous_sync_flow_executor.py b/samcli/lib/sync/continuous_sync_flow_executor.py index 69a9f02de24..94932184af1 100644 --- a/samcli/lib/sync/continuous_sync_flow_executor.py +++ b/samcli/lib/sync/continuous_sync_flow_executor.py @@ -1,4 +1,5 @@ """SyncFlowExecutor that will run continuously until stop is called.""" + import logging import time from concurrent.futures.thread import ThreadPoolExecutor diff --git a/samcli/lib/sync/exceptions.py b/samcli/lib/sync/exceptions.py index 89c2e529e59..c064e7a55ee 100644 --- a/samcli/lib/sync/exceptions.py +++ b/samcli/lib/sync/exceptions.py @@ -1,4 +1,5 @@ """Exceptions related to sync functionalities""" + from typing import TYPE_CHECKING, Dict, Optional if TYPE_CHECKING: # pragma: no cover diff --git a/samcli/lib/sync/flows/alias_version_sync_flow.py b/samcli/lib/sync/flows/alias_version_sync_flow.py index be03d0bf4e6..f3a270b69dd 100644 --- a/samcli/lib/sync/flows/alias_version_sync_flow.py +++ b/samcli/lib/sync/flows/alias_version_sync_flow.py @@ -1,4 +1,5 @@ """SyncFlow for Lambda Function Alias and Version""" + import hashlib import logging from typing import TYPE_CHECKING, Any, Dict, List, Optional diff --git a/samcli/lib/sync/flows/auto_dependency_layer_sync_flow.py b/samcli/lib/sync/flows/auto_dependency_layer_sync_flow.py index 8271d889deb..002f51c228f 100644 --- a/samcli/lib/sync/flows/auto_dependency_layer_sync_flow.py +++ b/samcli/lib/sync/flows/auto_dependency_layer_sync_flow.py @@ -1,6 +1,7 @@ """ Contains sync flow implementation for Auto Dependency Layer """ + import hashlib import logging import os diff --git a/samcli/lib/sync/flows/function_sync_flow.py b/samcli/lib/sync/flows/function_sync_flow.py index 55a04f59259..bf007eb71f8 100644 --- a/samcli/lib/sync/flows/function_sync_flow.py +++ b/samcli/lib/sync/flows/function_sync_flow.py @@ -1,4 +1,5 @@ """Base SyncFlow for Lambda Function""" + import logging import time from abc import ABC diff --git a/samcli/lib/sync/flows/generic_api_sync_flow.py b/samcli/lib/sync/flows/generic_api_sync_flow.py index afd261dc884..b3452dad3c3 100644 --- a/samcli/lib/sync/flows/generic_api_sync_flow.py +++ b/samcli/lib/sync/flows/generic_api_sync_flow.py @@ -1,4 +1,5 @@ """SyncFlow interface for HttpApi and RestApi""" + import hashlib import logging from abc import ABC diff --git a/samcli/lib/sync/flows/image_function_sync_flow.py b/samcli/lib/sync/flows/image_function_sync_flow.py index a2abb2a396c..7cb9abda51a 100644 --- a/samcli/lib/sync/flows/image_function_sync_flow.py +++ b/samcli/lib/sync/flows/image_function_sync_flow.py @@ -1,4 +1,5 @@ """SyncFlow for Image based Lambda Functions""" + import logging from contextlib import ExitStack from typing import TYPE_CHECKING, Any, Dict, List, Optional diff --git a/samcli/lib/sync/flows/layer_sync_flow.py b/samcli/lib/sync/flows/layer_sync_flow.py index e8ed77b0745..a8e60f0c090 100644 --- a/samcli/lib/sync/flows/layer_sync_flow.py +++ b/samcli/lib/sync/flows/layer_sync_flow.py @@ -1,4 +1,5 @@ """SyncFlow for Layers""" + import base64 import hashlib import logging diff --git a/samcli/lib/sync/flows/rest_api_sync_flow.py b/samcli/lib/sync/flows/rest_api_sync_flow.py index 8bfc5234601..419d4d3532d 100644 --- a/samcli/lib/sync/flows/rest_api_sync_flow.py +++ b/samcli/lib/sync/flows/rest_api_sync_flow.py @@ -1,4 +1,5 @@ """SyncFlow for RestApi""" + import logging from typing import TYPE_CHECKING, Dict, List, Optional, Set, cast diff --git a/samcli/lib/sync/flows/stepfunctions_sync_flow.py b/samcli/lib/sync/flows/stepfunctions_sync_flow.py index 35e75d8dcab..e1a394cb7f7 100644 --- a/samcli/lib/sync/flows/stepfunctions_sync_flow.py +++ b/samcli/lib/sync/flows/stepfunctions_sync_flow.py @@ -1,4 +1,5 @@ """Base SyncFlow for StepFunctions""" + import hashlib import logging from pathlib import Path diff --git a/samcli/lib/sync/flows/zip_function_sync_flow.py b/samcli/lib/sync/flows/zip_function_sync_flow.py index 5e04685a081..4c051c10746 100644 --- a/samcli/lib/sync/flows/zip_function_sync_flow.py +++ b/samcli/lib/sync/flows/zip_function_sync_flow.py @@ -1,4 +1,5 @@ """SyncFlow for ZIP based Lambda Functions""" + import base64 import hashlib import logging diff --git a/samcli/lib/sync/infra_sync_executor.py b/samcli/lib/sync/infra_sync_executor.py index e5c48d44dd2..30b0ef7cdac 100644 --- a/samcli/lib/sync/infra_sync_executor.py +++ b/samcli/lib/sync/infra_sync_executor.py @@ -1,6 +1,7 @@ """ InfraSyncExecutor class which runs build, package and deploy contexts """ + import copy import logging import re @@ -337,9 +338,9 @@ def _auto_skip_infra_sync( nested_template_location, stack_resource_detail.get("StackResourceDetail", {}).get("PhysicalResourceId", ""), parameter_overrides={}, # Do not pass the same parameter overrides to the nested stack - nested_prefix=nested_prefix + resource_logical_id + "/" - if nested_prefix - else resource_logical_id + "/", + nested_prefix=( + nested_prefix + resource_logical_id + "/" if nested_prefix else resource_logical_id + "/" + ), ): return False diff --git a/samcli/lib/sync/sync_flow.py b/samcli/lib/sync/sync_flow.py index cf671fb5a82..1110297f221 100644 --- a/samcli/lib/sync/sync_flow.py +++ b/samcli/lib/sync/sync_flow.py @@ -1,4 +1,5 @@ """SyncFlow base class """ + import logging from abc import ABC, abstractmethod from enum import Enum diff --git a/samcli/lib/sync/sync_flow_executor.py b/samcli/lib/sync/sync_flow_executor.py index d6f712cfead..3d43d741896 100644 --- a/samcli/lib/sync/sync_flow_executor.py +++ b/samcli/lib/sync/sync_flow_executor.py @@ -1,4 +1,5 @@ """Executor for SyncFlows""" + import logging import time from concurrent.futures import Future, ThreadPoolExecutor diff --git a/samcli/lib/sync/sync_flow_factory.py b/samcli/lib/sync/sync_flow_factory.py index f9704bf95cb..4fbdda54b3b 100644 --- a/samcli/lib/sync/sync_flow_factory.py +++ b/samcli/lib/sync/sync_flow_factory.py @@ -1,4 +1,5 @@ """SyncFlow Factory for creating SyncFlows based on resource types""" + import logging from typing import TYPE_CHECKING, Callable, Dict, List, Optional, cast diff --git a/samcli/lib/sync/watch_manager.py b/samcli/lib/sync/watch_manager.py index ca3935878e3..5f7cb176961 100644 --- a/samcli/lib/sync/watch_manager.py +++ b/samcli/lib/sync/watch_manager.py @@ -1,6 +1,7 @@ """ WatchManager for Sync Watch Logic """ + import logging import platform import threading diff --git a/samcli/lib/telemetry/metric.py b/samcli/lib/telemetry/metric.py index 681d2adc641..7f3127cf86a 100644 --- a/samcli/lib/telemetry/metric.py +++ b/samcli/lib/telemetry/metric.py @@ -1,6 +1,7 @@ """ Provides methods to generate and send metrics """ + import logging import platform import uuid diff --git a/samcli/lib/telemetry/user_agent.py b/samcli/lib/telemetry/user_agent.py index 875a4d8788c..c6b6e6bee96 100644 --- a/samcli/lib/telemetry/user_agent.py +++ b/samcli/lib/telemetry/user_agent.py @@ -1,6 +1,7 @@ """ Reads user agent information from environment and returns it for telemetry consumption """ + import os import re from typing import Optional diff --git a/samcli/lib/translate/sam_template_validator.py b/samcli/lib/translate/sam_template_validator.py index ff789925e02..5c2a9ed33da 100644 --- a/samcli/lib/translate/sam_template_validator.py +++ b/samcli/lib/translate/sam_template_validator.py @@ -1,6 +1,7 @@ """ Library for Validating Sam Templates """ + import functools import logging from typing import Dict, Optional, cast diff --git a/samcli/lib/utils/architecture.py b/samcli/lib/utils/architecture.py index 8c394d62291..25cff8888ae 100644 --- a/samcli/lib/utils/architecture.py +++ b/samcli/lib/utils/architecture.py @@ -1,6 +1,7 @@ """ Architecture tools """ + from typing import TYPE_CHECKING, Dict, List, cast from samcli.commands.exceptions import UserException diff --git a/samcli/lib/utils/arn_utils.py b/samcli/lib/utils/arn_utils.py index 2df2aef9eab..be9fa24cbc5 100644 --- a/samcli/lib/utils/arn_utils.py +++ b/samcli/lib/utils/arn_utils.py @@ -1,6 +1,7 @@ """ Module for utilities for ARN (Amazon Resource Names) """ + import re diff --git a/samcli/lib/utils/async_utils.py b/samcli/lib/utils/async_utils.py index 4652769d9eb..82062d84872 100644 --- a/samcli/lib/utils/async_utils.py +++ b/samcli/lib/utils/async_utils.py @@ -1,6 +1,7 @@ """ Contains asyncio related methods and helpers """ + import logging from asyncio import AbstractEventLoop, gather, new_event_loop from concurrent.futures.thread import ThreadPoolExecutor diff --git a/samcli/lib/utils/boto_utils.py b/samcli/lib/utils/boto_utils.py index eab922f7ddf..5cf91a331b4 100644 --- a/samcli/lib/utils/boto_utils.py +++ b/samcli/lib/utils/boto_utils.py @@ -1,6 +1,7 @@ """ This module contains utility functions for boto3 library """ + from typing import Any, Optional from boto3 import Session @@ -28,17 +29,16 @@ def get_boto_config_with_user_agent(**kwargs) -> Config: """ gc = GlobalConfig() return Config( - user_agent_extra=f"aws-sam-cli/{__version__}/{gc.installation_id}" - if gc.telemetry_enabled - else f"aws-sam-cli/{__version__}", + user_agent_extra=( + f"aws-sam-cli/{__version__}/{gc.installation_id}" if gc.telemetry_enabled else f"aws-sam-cli/{__version__}" + ), **kwargs, ) # Type definition of following boto providers, which is equal to Callable[[str], Any] class BotoProviderType(Protocol): - def __call__(self, service_name: str) -> Any: - ... # pragma: no cover + def __call__(self, service_name: str) -> Any: ... # pragma: no cover def get_boto_client_provider_from_session_with_config(session: Session, **kwargs) -> BotoProviderType: diff --git a/samcli/lib/utils/cloudformation.py b/samcli/lib/utils/cloudformation.py index 04f49eef699..def89c6a11b 100644 --- a/samcli/lib/utils/cloudformation.py +++ b/samcli/lib/utils/cloudformation.py @@ -1,6 +1,7 @@ """ This utility file contains methods to read information from certain CFN stack """ + import logging import posixpath from typing import Any, Dict, Iterable, Optional, Set diff --git a/samcli/lib/utils/code_trigger_factory.py b/samcli/lib/utils/code_trigger_factory.py index eb009d9aa54..9ff6b47b156 100644 --- a/samcli/lib/utils/code_trigger_factory.py +++ b/samcli/lib/utils/code_trigger_factory.py @@ -1,6 +1,7 @@ """ Factory for creating CodeResourceTriggers """ + import logging from pathlib import Path from typing import Any, Callable, Dict, List, Optional, cast diff --git a/samcli/lib/utils/defaults.py b/samcli/lib/utils/defaults.py index 4a07b113ac2..37478b2a7a5 100644 --- a/samcli/lib/utils/defaults.py +++ b/samcli/lib/utils/defaults.py @@ -1,6 +1,7 @@ """ Contains helpers for providing default values """ + from botocore.session import get_session diff --git a/samcli/lib/utils/definition_validator.py b/samcli/lib/utils/definition_validator.py index b267316de52..383fa80f1b1 100644 --- a/samcli/lib/utils/definition_validator.py +++ b/samcli/lib/utils/definition_validator.py @@ -1,4 +1,5 @@ """DefinitionValidator for Validating YAML and JSON Files""" + import logging from pathlib import Path from typing import Any, Dict, Optional diff --git a/samcli/lib/utils/file_observer.py b/samcli/lib/utils/file_observer.py index a3ce40b4406..230f47a7a6a 100644 --- a/samcli/lib/utils/file_observer.py +++ b/samcli/lib/utils/file_observer.py @@ -1,6 +1,7 @@ """ Wraps watchdog to observe file system for any change. """ + import logging import platform import threading diff --git a/samcli/lib/utils/hash.py b/samcli/lib/utils/hash.py index b40a2ecb193..3c00eada966 100644 --- a/samcli/lib/utils/hash.py +++ b/samcli/lib/utils/hash.py @@ -1,6 +1,7 @@ """ Hash calculation utilities for files and directories. """ + import hashlib import os import sys diff --git a/samcli/lib/utils/lock_distributor.py b/samcli/lib/utils/lock_distributor.py index 2d4ad8dec0a..141b2341b69 100644 --- a/samcli/lib/utils/lock_distributor.py +++ b/samcli/lib/utils/lock_distributor.py @@ -1,4 +1,5 @@ """LockDistributor for creating and managing a set of locks""" + import multiprocessing import multiprocessing.managers import threading diff --git a/samcli/lib/utils/managed_cloudformation_stack.py b/samcli/lib/utils/managed_cloudformation_stack.py index 83cee2e0a5b..19d1bc2c502 100644 --- a/samcli/lib/utils/managed_cloudformation_stack.py +++ b/samcli/lib/utils/managed_cloudformation_stack.py @@ -1,6 +1,7 @@ """ Bootstrap's user's development environment by creating cloud resources required by SAM CLI """ + import logging from collections.abc import Collection from typing import Dict, List, Optional, Union, cast diff --git a/samcli/lib/utils/osutils.py b/samcli/lib/utils/osutils.py index a9a12bf88cf..27430bfc629 100644 --- a/samcli/lib/utils/osutils.py +++ b/samcli/lib/utils/osutils.py @@ -1,6 +1,7 @@ """ Common OS utilities """ + import io import logging import os diff --git a/samcli/lib/utils/path_observer.py b/samcli/lib/utils/path_observer.py index c61cc07cf8a..d22546d4d22 100644 --- a/samcli/lib/utils/path_observer.py +++ b/samcli/lib/utils/path_observer.py @@ -1,6 +1,7 @@ """ HandlerObserver and its helper classes. """ + import logging import re from dataclasses import dataclass diff --git a/samcli/lib/utils/path_utils.py b/samcli/lib/utils/path_utils.py index 694cd93e504..b47c6217699 100644 --- a/samcli/lib/utils/path_utils.py +++ b/samcli/lib/utils/path_utils.py @@ -1,6 +1,7 @@ """ Common Path related utilities """ + from pathlib import PureWindowsPath diff --git a/samcli/lib/utils/preview_runtimes.py b/samcli/lib/utils/preview_runtimes.py index c17ae95cf8e..9789ab5feb4 100644 --- a/samcli/lib/utils/preview_runtimes.py +++ b/samcli/lib/utils/preview_runtimes.py @@ -2,6 +2,7 @@ Keeps list of preview runtimes, which can be used with sam build or sam local commands. But deployment of them would probably fail until their GA date """ + from typing import Set PREVIEW_RUNTIMES: Set[str] = set() diff --git a/samcli/lib/utils/profile.py b/samcli/lib/utils/profile.py index ab6edc55265..94c9fd6c2d5 100644 --- a/samcli/lib/utils/profile.py +++ b/samcli/lib/utils/profile.py @@ -1,6 +1,7 @@ """ Module for aws profile related helpers """ + from typing import List from botocore.session import Session diff --git a/samcli/lib/utils/resource_trigger.py b/samcli/lib/utils/resource_trigger.py index 024a3b3caf7..9f35aec33b7 100644 --- a/samcli/lib/utils/resource_trigger.py +++ b/samcli/lib/utils/resource_trigger.py @@ -1,4 +1,5 @@ """ResourceTrigger Classes for Creating PathHandlers According to a Resource""" + import platform import re from abc import ABC, abstractmethod diff --git a/samcli/lib/utils/resource_type_based_factory.py b/samcli/lib/utils/resource_type_based_factory.py index 67a46f08af3..01d8b9659c8 100644 --- a/samcli/lib/utils/resource_type_based_factory.py +++ b/samcli/lib/utils/resource_type_based_factory.py @@ -1,4 +1,5 @@ """Base Factory Abstract Class for Creating Objects Specific to a Resource Type""" + import logging from abc import ABC, abstractmethod from typing import Callable, Dict, Generic, List, Optional, TypeVar diff --git a/samcli/lib/utils/retry.py b/samcli/lib/utils/retry.py index 2b8042d4472..bfe8ccd4c26 100644 --- a/samcli/lib/utils/retry.py +++ b/samcli/lib/utils/retry.py @@ -1,6 +1,7 @@ """ Retry decorator to retry decorated function based on Exception with exponential backoff and number of attempts built-in. """ + import math import time from functools import wraps diff --git a/samcli/lib/utils/s3.py b/samcli/lib/utils/s3.py index e841fb236c4..7be4c4ab0cb 100644 --- a/samcli/lib/utils/s3.py +++ b/samcli/lib/utils/s3.py @@ -1,4 +1,5 @@ """Contains utility functions related to AWS S3 service""" + from typing import Any, Dict, Optional from urllib.parse import parse_qs, urlparse diff --git a/samcli/lib/utils/sam_logging.py b/samcli/lib/utils/sam_logging.py index 8ed2617ad99..bc02de61ef2 100644 --- a/samcli/lib/utils/sam_logging.py +++ b/samcli/lib/utils/sam_logging.py @@ -1,6 +1,7 @@ """ Configures a logger """ + import logging import os import sys diff --git a/samcli/lib/utils/stream_writer.py b/samcli/lib/utils/stream_writer.py index dc2c2b9b5ca..28c88d23da2 100644 --- a/samcli/lib/utils/stream_writer.py +++ b/samcli/lib/utils/stream_writer.py @@ -1,6 +1,7 @@ """ This class acts like a wrapper around output streams to provide any flexibility with output we need """ + from io import BytesIO, TextIOWrapper from typing import Optional, TextIO, Union diff --git a/samcli/lib/utils/subprocess_utils.py b/samcli/lib/utils/subprocess_utils.py index 4539df19b61..284ea04d813 100644 --- a/samcli/lib/utils/subprocess_utils.py +++ b/samcli/lib/utils/subprocess_utils.py @@ -1,6 +1,7 @@ """ Utils for invoking subprocess calls """ + import logging import os import platform diff --git a/samcli/lib/utils/version_checker.py b/samcli/lib/utils/version_checker.py index 6c0f64278ed..44250446b99 100644 --- a/samcli/lib/utils/version_checker.py +++ b/samcli/lib/utils/version_checker.py @@ -1,6 +1,7 @@ """ Contains information about newer version checker for SAM CLI """ + import logging from datetime import datetime, timedelta from functools import wraps diff --git a/samcli/lib/warnings/sam_cli_warning.py b/samcli/lib/warnings/sam_cli_warning.py index 506529e7744..6e5aaf46fab 100644 --- a/samcli/lib/warnings/sam_cli_warning.py +++ b/samcli/lib/warnings/sam_cli_warning.py @@ -1,6 +1,7 @@ """ Provides all Warnings checkers for sam template """ + import logging from typing import Dict diff --git a/samcli/local/apigw/authorizers/authorizer.py b/samcli/local/apigw/authorizers/authorizer.py index 17101b06d24..b25452db0d7 100644 --- a/samcli/local/apigw/authorizers/authorizer.py +++ b/samcli/local/apigw/authorizers/authorizer.py @@ -1,6 +1,7 @@ """ Base Authorizer class definition """ + from dataclasses import dataclass diff --git a/samcli/local/apigw/authorizers/lambda_authorizer.py b/samcli/local/apigw/authorizers/lambda_authorizer.py index 8b7b92c6ea7..eb4860b9754 100644 --- a/samcli/local/apigw/authorizers/lambda_authorizer.py +++ b/samcli/local/apigw/authorizers/lambda_authorizer.py @@ -1,6 +1,7 @@ """ Custom Lambda Authorizer class definition """ + import re from abc import ABC, abstractmethod from dataclasses import dataclass diff --git a/samcli/local/apigw/exceptions.py b/samcli/local/apigw/exceptions.py index 474e51560bb..565284186e3 100644 --- a/samcli/local/apigw/exceptions.py +++ b/samcli/local/apigw/exceptions.py @@ -1,6 +1,7 @@ """ Exceptions used by API Gateway service """ + from samcli.commands.exceptions import UserException diff --git a/samcli/local/apigw/route.py b/samcli/local/apigw/route.py index 20858265d68..51a64c34f35 100644 --- a/samcli/local/apigw/route.py +++ b/samcli/local/apigw/route.py @@ -1,6 +1,7 @@ """ Route definition for local start-api """ + from typing import List, Optional from samcli.local.apigw.authorizers.authorizer import Authorizer diff --git a/samcli/local/docker/container.py b/samcli/local/docker/container.py index a95d951c1a5..508ef5e1eed 100644 --- a/samcli/local/docker/container.py +++ b/samcli/local/docker/container.py @@ -1,6 +1,7 @@ """ Representation of a generic Docker container """ + import io import json import logging diff --git a/samcli/local/docker/container_analyzer.py b/samcli/local/docker/container_analyzer.py index 02916f870aa..5e70a4c1fb5 100644 --- a/samcli/local/docker/container_analyzer.py +++ b/samcli/local/docker/container_analyzer.py @@ -1,6 +1,7 @@ """ Class for handling the analysis and inspection of Docker containers """ + import logging from dataclasses import dataclass diff --git a/samcli/local/docker/effective_user.py b/samcli/local/docker/effective_user.py index b6ed8ec9b3a..0ce23120dcc 100644 --- a/samcli/local/docker/effective_user.py +++ b/samcli/local/docker/effective_user.py @@ -1,6 +1,7 @@ """ Representation of an effective user """ + import os from dataclasses import dataclass from typing import Optional diff --git a/samcli/local/docker/exceptions.py b/samcli/local/docker/exceptions.py index 388041e0ff7..cc006980838 100644 --- a/samcli/local/docker/exceptions.py +++ b/samcli/local/docker/exceptions.py @@ -1,6 +1,7 @@ """ Docker container related exceptions """ + from samcli.commands.exceptions import UserException diff --git a/samcli/local/docker/lambda_container.py b/samcli/local/docker/lambda_container.py index 0e3a96efadf..3eea56c72d4 100644 --- a/samcli/local/docker/lambda_container.py +++ b/samcli/local/docker/lambda_container.py @@ -1,6 +1,7 @@ """ Represents Lambda runtime containers. """ + import logging import os from typing import List diff --git a/samcli/local/docker/lambda_image.py b/samcli/local/docker/lambda_image.py index c775a94f4f8..b2546de7a32 100644 --- a/samcli/local/docker/lambda_image.py +++ b/samcli/local/docker/lambda_image.py @@ -1,6 +1,7 @@ """ Generates a Docker Image to be used for invoking a function locally """ + import hashlib import logging import os diff --git a/samcli/local/events/api_event.py b/samcli/local/events/api_event.py index f73e554d9a3..5a172d6cf81 100644 --- a/samcli/local/events/api_event.py +++ b/samcli/local/events/api_event.py @@ -1,4 +1,5 @@ """Holds Classes for API Gateway to Lambda Events""" + import uuid from datetime import datetime from time import time @@ -242,9 +243,9 @@ def to_dict(self) -> Dict[str, Any]: "resource": self.resource, "requestContext": request_context_dict, "queryStringParameters": dict(self.query_string_params) if self.query_string_params else None, - "multiValueQueryStringParameters": dict(self.multi_value_query_string_params) - if self.multi_value_query_string_params - else None, + "multiValueQueryStringParameters": ( + dict(self.multi_value_query_string_params) if self.multi_value_query_string_params else None + ), "headers": dict(self.headers) if self.headers else None, "multiValueHeaders": dict(self.multi_value_headers) if self.multi_value_headers else None, "pathParameters": dict(self.path_parameters) if self.path_parameters else None, diff --git a/samcli/local/lambdafn/config.py b/samcli/local/lambdafn/config.py index 7a90c3651dc..ed9ada46e92 100644 --- a/samcli/local/lambdafn/config.py +++ b/samcli/local/lambdafn/config.py @@ -1,6 +1,7 @@ """ Lambda Function configuration data required by the runtime """ + from samcli.commands.local.cli_common.user_exceptions import InvalidSamTemplateException from .env_vars import EnvironmentVariables diff --git a/samcli/local/lambdafn/runtime.py b/samcli/local/lambdafn/runtime.py index 7e42a53978f..5cc276becf5 100644 --- a/samcli/local/lambdafn/runtime.py +++ b/samcli/local/lambdafn/runtime.py @@ -1,6 +1,7 @@ """ Classes representing a local Lambda runtime """ + import copy import logging import os diff --git a/samcli/local/services/base_local_service.py b/samcli/local/services/base_local_service.py index 573c24b445b..638d55c17b4 100644 --- a/samcli/local/services/base_local_service.py +++ b/samcli/local/services/base_local_service.py @@ -1,4 +1,5 @@ """Base class for all Services that interact with Local Lambda""" + import io import json import logging diff --git a/samcli/yamlhelper.py b/samcli/yamlhelper.py index 5dbae210e13..cb7cdbcf6f6 100644 --- a/samcli/yamlhelper.py +++ b/samcli/yamlhelper.py @@ -119,9 +119,9 @@ def yaml_parse(yamlstr) -> Dict: # json parser. return cast(Dict, json.loads(yamlstr, object_pairs_hook=OrderedDict)) except ValueError: - yaml.constructor.SafeConstructor.yaml_constructors[ - TIMESTAMP_TAG - ] = yaml.constructor.SafeConstructor.yaml_constructors[TAG_STR] + yaml.constructor.SafeConstructor.yaml_constructors[TIMESTAMP_TAG] = ( + yaml.constructor.SafeConstructor.yaml_constructors[TAG_STR] + ) yaml.SafeLoader.add_constructor(yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, _dict_constructor) yaml.SafeLoader.add_multi_constructor("!", intrinsics_multi_constructor) return cast(Dict, yaml.safe_load(yamlstr)) diff --git a/schema/make_schema.py b/schema/make_schema.py index e1d7e889cf0..8e1a8e15687 100644 --- a/schema/make_schema.py +++ b/schema/make_schema.py @@ -1,6 +1,5 @@ """Handles JSON schema generation logic""" - import importlib import json from dataclasses import dataclass diff --git a/tests/get_testing_resources.py b/tests/get_testing_resources.py index 2d19a9cd7d5..c91a79fd77c 100644 --- a/tests/get_testing_resources.py +++ b/tests/get_testing_resources.py @@ -2,6 +2,7 @@ Script for getting test account credentials and managed test account resources. The output will be a json string with creds and resource names. """ + import json import os diff --git a/tests/integration/buildcmd/test_build_cmd.py b/tests/integration/buildcmd/test_build_cmd.py index 4e4f6b3f9d7..6edfe8abd67 100644 --- a/tests/integration/buildcmd/test_build_cmd.py +++ b/tests/integration/buildcmd/test_build_cmd.py @@ -1227,9 +1227,11 @@ def test_dotnet_in_process(self, runtime, code_uri, mode, architecture="x86_64") self._verify_built_artifact( self.default_build_dir, self.FUNCTION_LOGICAL_ID, - self.EXPECTED_FILES_PROJECT_MANIFEST - if runtime != "provided.al2" - else self.EXPECTED_FILES_PROJECT_MANIFEST_PROVIDED, + ( + self.EXPECTED_FILES_PROJECT_MANIFEST + if runtime != "provided.al2" + else self.EXPECTED_FILES_PROJECT_MANIFEST_PROVIDED + ), ) self._verify_resource_property( @@ -1298,9 +1300,11 @@ def test_dotnet_in_container_mount_with_write_explicit(self, runtime, code_uri, self._verify_built_artifact( self.default_build_dir, self.FUNCTION_LOGICAL_ID, - self.EXPECTED_FILES_PROJECT_MANIFEST - if runtime != "provided.al2" - else self.EXPECTED_FILES_PROJECT_MANIFEST_PROVIDED, + ( + self.EXPECTED_FILES_PROJECT_MANIFEST + if runtime != "provided.al2" + else self.EXPECTED_FILES_PROJECT_MANIFEST_PROVIDED + ), ) self._verify_resource_property( @@ -1372,9 +1376,11 @@ def test_dotnet_in_container_mount_with_write_interactive( self._verify_built_artifact( self.default_build_dir, self.FUNCTION_LOGICAL_ID, - self.EXPECTED_FILES_PROJECT_MANIFEST - if runtime != "provided.al2" - else self.EXPECTED_FILES_PROJECT_MANIFEST_PROVIDED, + ( + self.EXPECTED_FILES_PROJECT_MANIFEST + if runtime != "provided.al2" + else self.EXPECTED_FILES_PROJECT_MANIFEST_PROVIDED + ), ) self._verify_resource_property( diff --git a/tests/integration/buildcmd/test_build_terraform_applications.py b/tests/integration/buildcmd/test_build_terraform_applications.py index 22fd93c7f09..79131aab76d 100644 --- a/tests/integration/buildcmd/test_build_terraform_applications.py +++ b/tests/integration/buildcmd/test_build_terraform_applications.py @@ -80,9 +80,9 @@ def build_with_prepare_hook(self): command_list_parameters["use_container"] = True command_list_parameters["build_image"] = self.docker_tag if self.override: - command_list_parameters[ - "container_env_var" - ] = "TF_VAR_HELLO_FUNCTION_SRC_CODE=./artifacts/HelloWorldFunction2" + command_list_parameters["container_env_var"] = ( + "TF_VAR_HELLO_FUNCTION_SRC_CODE=./artifacts/HelloWorldFunction2" + ) environment_variables = os.environ.copy() if self.override: diff --git a/tests/integration/validate/test_validate_command.py b/tests/integration/validate/test_validate_command.py index 900a3af4809..53a36b34724 100644 --- a/tests/integration/validate/test_validate_command.py +++ b/tests/integration/validate/test_validate_command.py @@ -1,6 +1,7 @@ """ Integration tests for sam validate """ + import json import os import re diff --git a/tests/unit/commands/buildcmd/test_utils.py b/tests/unit/commands/buildcmd/test_utils.py index 20a79b3f0f3..2784f7c78c6 100644 --- a/tests/unit/commands/buildcmd/test_utils.py +++ b/tests/unit/commands/buildcmd/test_utils.py @@ -1,6 +1,7 @@ """ Unit tests for build command utils """ + from unittest import TestCase from unittest.mock import patch diff --git a/tests/unit/commands/deploy/test_deploy_context.py b/tests/unit/commands/deploy/test_deploy_context.py index ad5638ef224..55dff41c94b 100644 --- a/tests/unit/commands/deploy/test_deploy_context.py +++ b/tests/unit/commands/deploy/test_deploy_context.py @@ -1,4 +1,5 @@ """Test sam deploy command""" + from unittest import TestCase from unittest.mock import ANY, patch, MagicMock, Mock import tempfile diff --git a/tests/unit/commands/deploy/test_guided_context.py b/tests/unit/commands/deploy/test_guided_context.py index a5137a781be..b52c8fbac51 100644 --- a/tests/unit/commands/deploy/test_guided_context.py +++ b/tests/unit/commands/deploy/test_guided_context.py @@ -35,10 +35,8 @@ def setUp(self): self.companion_stack_manager_mock.return_value.get_unreferenced_repos.return_value = [ self.unreferenced_repo_mock ] - self.companion_stack_manager_mock.return_value.get_repo_uri = ( - lambda repo: "123456789012.dkr.ecr.us-east-1.amazonaws.com/test2" - if repo == self.unreferenced_repo_mock - else None + self.companion_stack_manager_mock.return_value.get_repo_uri = lambda repo: ( + "123456789012.dkr.ecr.us-east-1.amazonaws.com/test2" if repo == self.unreferenced_repo_mock else None ) self.verify_image_patch = patch( diff --git a/tests/unit/commands/local/cli_common/test_invoke_context.py b/tests/unit/commands/local/cli_common/test_invoke_context.py index f30a9574fc4..fce1c37f238 100644 --- a/tests/unit/commands/local/cli_common/test_invoke_context.py +++ b/tests/unit/commands/local/cli_common/test_invoke_context.py @@ -1,6 +1,7 @@ """ Tests the InvokeContext class """ + import errno import os diff --git a/tests/unit/commands/local/lib/swagger/test_parser.py b/tests/unit/commands/local/lib/swagger/test_parser.py index 62b3e2c861f..7af9041a4eb 100644 --- a/tests/unit/commands/local/lib/swagger/test_parser.py +++ b/tests/unit/commands/local/lib/swagger/test_parser.py @@ -1,6 +1,7 @@ """ Test the swagger parser """ + from unittest import TestCase from unittest.mock import ANY, patch, Mock diff --git a/tests/unit/commands/local/lib/test_local_lambda.py b/tests/unit/commands/local/lib/test_local_lambda.py index 1014ea001d2..755e6acd0c9 100644 --- a/tests/unit/commands/local/lib/test_local_lambda.py +++ b/tests/unit/commands/local/lib/test_local_lambda.py @@ -1,6 +1,7 @@ """ Testing local lambda runner """ + import os import posixpath from unittest import TestCase diff --git a/tests/unit/commands/package/test_package_context.py b/tests/unit/commands/package/test_package_context.py index 682dfba17cb..8de0e0fd76c 100644 --- a/tests/unit/commands/package/test_package_context.py +++ b/tests/unit/commands/package/test_package_context.py @@ -1,4 +1,5 @@ """Test sam package command""" + from unittest import TestCase from unittest.mock import patch, MagicMock, Mock, call, ANY from parameterized import parameterized diff --git a/tests/unit/commands/publish/test_command.py b/tests/unit/commands/publish/test_command.py index 28bfa716e41..47bb2d53c47 100644 --- a/tests/unit/commands/publish/test_command.py +++ b/tests/unit/commands/publish/test_command.py @@ -1,4 +1,5 @@ """Test sam publish CLI.""" + import json from unittest import TestCase from unittest.mock import patch, call, Mock diff --git a/tests/unit/hook_packages/terraform/hooks/prepare/prepare_base.py b/tests/unit/hook_packages/terraform/hooks/prepare/prepare_base.py index 96193fa757b..a65a9c3e616 100644 --- a/tests/unit/hook_packages/terraform/hooks/prepare/prepare_base.py +++ b/tests/unit/hook_packages/terraform/hooks/prepare/prepare_base.py @@ -1,6 +1,7 @@ """ Unit test base class for Terraform prepare hook """ + from unittest import TestCase from samcli.hook_packages.terraform.hooks.prepare.translate import AWS_PROVIDER_NAME, NULL_RESOURCE_PROVIDER_NAME diff --git a/tests/unit/hook_packages/terraform/hooks/prepare/test_enrich.py b/tests/unit/hook_packages/terraform/hooks/prepare/test_enrich.py index 9ae96eb42b2..5a214910787 100644 --- a/tests/unit/hook_packages/terraform/hooks/prepare/test_enrich.py +++ b/tests/unit/hook_packages/terraform/hooks/prepare/test_enrich.py @@ -1,4 +1,5 @@ """Test Terraform prepare enrichment""" + from unittest.mock import Mock, call, patch from parameterized import parameterized from subprocess import CalledProcessError diff --git a/tests/unit/hook_packages/terraform/hooks/prepare/test_hook.py b/tests/unit/hook_packages/terraform/hooks/prepare/test_hook.py index a9153c99147..ef56f14df8a 100644 --- a/tests/unit/hook_packages/terraform/hooks/prepare/test_hook.py +++ b/tests/unit/hook_packages/terraform/hooks/prepare/test_hook.py @@ -1,4 +1,5 @@ """Test Terraform prepare hook""" + from subprocess import CalledProcessError from unittest.mock import Mock, call, patch, MagicMock, ANY from parameterized import parameterized diff --git a/tests/unit/hook_packages/terraform/hooks/prepare/test_makefile_generator.py b/tests/unit/hook_packages/terraform/hooks/prepare/test_makefile_generator.py index 3aa4a599325..98cab696128 100644 --- a/tests/unit/hook_packages/terraform/hooks/prepare/test_makefile_generator.py +++ b/tests/unit/hook_packages/terraform/hooks/prepare/test_makefile_generator.py @@ -1,4 +1,5 @@ """Test Terraform prepare Makefile""" + from unittest.mock import patch, Mock, call from parameterized import parameterized diff --git a/tests/unit/hook_packages/terraform/hooks/prepare/test_property_builder.py b/tests/unit/hook_packages/terraform/hooks/prepare/test_property_builder.py index 6e8cbfdb4ad..3278c0224e6 100644 --- a/tests/unit/hook_packages/terraform/hooks/prepare/test_property_builder.py +++ b/tests/unit/hook_packages/terraform/hooks/prepare/test_property_builder.py @@ -1,4 +1,5 @@ """Test Terraform property builder""" + import json from unittest.mock import patch, Mock, call from parameterized import parameterized diff --git a/tests/unit/hook_packages/terraform/hooks/prepare/test_translate.py b/tests/unit/hook_packages/terraform/hooks/prepare/test_translate.py index ea5239f72da..0c664c4697b 100644 --- a/tests/unit/hook_packages/terraform/hooks/prepare/test_translate.py +++ b/tests/unit/hook_packages/terraform/hooks/prepare/test_translate.py @@ -1,4 +1,5 @@ """Test Terraform prepare translate""" + import copy from unittest import TestCase from unittest.mock import Mock, call, patch, MagicMock, ANY diff --git a/tests/unit/hook_packages/terraform/hooks/prepare/test_types.py b/tests/unit/hook_packages/terraform/hooks/prepare/test_types.py index 16de4bd21e2..1ac534b5ba3 100644 --- a/tests/unit/hook_packages/terraform/hooks/prepare/test_types.py +++ b/tests/unit/hook_packages/terraform/hooks/prepare/test_types.py @@ -1,4 +1,5 @@ """Test types""" + from unittest import TestCase from unittest.mock import patch, Mock diff --git a/tests/unit/hook_packages/terraform/lib/test_utils.py b/tests/unit/hook_packages/terraform/lib/test_utils.py index bfda8d97ebc..8a7bd9c98d8 100644 --- a/tests/unit/hook_packages/terraform/lib/test_utils.py +++ b/tests/unit/hook_packages/terraform/lib/test_utils.py @@ -1,4 +1,5 @@ """Test Terraform utilities""" + from unittest import TestCase from unittest.mock import patch, Mock, call from parameterized import parameterized diff --git a/tests/unit/lib/cli_validation/test_remote_invoke_options_validations.py b/tests/unit/lib/cli_validation/test_remote_invoke_options_validations.py index 32f9f72860c..1acba0f7f41 100644 --- a/tests/unit/lib/cli_validation/test_remote_invoke_options_validations.py +++ b/tests/unit/lib/cli_validation/test_remote_invoke_options_validations.py @@ -83,8 +83,8 @@ def test_event_and_remote_event_params(self, patched_click_context): mocked_context = Mock() patched_click_context.return_value = mocked_context - mocked_context.params.get.side_effect = ( - lambda key: "event_content" if key in ("event", "test_event_name") else None + mocked_context.params.get.side_effect = lambda key: ( + "event_content" if key in ("event", "test_event_name") else None ) with self.assertRaises(BadOptionUsage) as ex: @@ -102,8 +102,8 @@ def test_event_file_and_remote_event_params(self, patched_click_context): mocked_context = Mock() patched_click_context.return_value = mocked_context - mocked_context.params.get.side_effect = ( - lambda key: "event_content" if key in ("event_file", "test_event_name") else None + mocked_context.params.get.side_effect = lambda key: ( + "event_content" if key in ("event_file", "test_event_name") else None ) with self.assertRaises(BadOptionUsage) as ex: diff --git a/tests/unit/lib/hook/test_hook_config.py b/tests/unit/lib/hook/test_hook_config.py index ef4a05ebd7f..4603b13a03e 100644 --- a/tests/unit/lib/hook/test_hook_config.py +++ b/tests/unit/lib/hook/test_hook_config.py @@ -1,4 +1,5 @@ """Test Hook Package Config""" + import json from copy import deepcopy from unittest import TestCase diff --git a/tests/unit/lib/hook/test_hook_wrapper.py b/tests/unit/lib/hook/test_hook_wrapper.py index 370d9f1dbef..9541c031dc2 100644 --- a/tests/unit/lib/hook/test_hook_wrapper.py +++ b/tests/unit/lib/hook/test_hook_wrapper.py @@ -1,4 +1,5 @@ """Test Hook Warpper""" + from pathlib import Path from unittest import TestCase from unittest.mock import patch, Mock diff --git a/tests/unit/lib/utils/test_path_utils.py b/tests/unit/lib/utils/test_path_utils.py index e15ec8ea65d..c22458269d9 100644 --- a/tests/unit/lib/utils/test_path_utils.py +++ b/tests/unit/lib/utils/test_path_utils.py @@ -1,6 +1,7 @@ """ test path_utils module """ + from unittest import TestCase from parameterized import parameterized diff --git a/tests/unit/local/docker/test_container.py b/tests/unit/local/docker/test_container.py index 84003e9e0b9..b181ce33fa0 100644 --- a/tests/unit/local/docker/test_container.py +++ b/tests/unit/local/docker/test_container.py @@ -1,6 +1,7 @@ """ Unit test for Container class """ + import base64 import json from unittest import TestCase diff --git a/tests/unit/local/docker/test_effective_user.py b/tests/unit/local/docker/test_effective_user.py index cdb255bbb58..126cf41ea22 100644 --- a/tests/unit/local/docker/test_effective_user.py +++ b/tests/unit/local/docker/test_effective_user.py @@ -1,6 +1,7 @@ """ Unit test for EffectiveUser class """ + from unittest import TestCase from unittest.mock import patch diff --git a/tests/unit/local/docker/test_lambda_build_container.py b/tests/unit/local/docker/test_lambda_build_container.py index e260a147040..d62c52e8934 100644 --- a/tests/unit/local/docker/test_lambda_build_container.py +++ b/tests/unit/local/docker/test_lambda_build_container.py @@ -1,6 +1,7 @@ """ Unit test for Lambda Build Container management """ + import itertools import json import pathlib diff --git a/tests/unit/local/docker/test_lambda_container.py b/tests/unit/local/docker/test_lambda_container.py index d36aeff8419..acce6a5ca7d 100644 --- a/tests/unit/local/docker/test_lambda_container.py +++ b/tests/unit/local/docker/test_lambda_container.py @@ -1,6 +1,7 @@ """ Unit test for Lambda container management """ + from unittest import TestCase from unittest.mock import patch, Mock diff --git a/tests/unit/local/docker/test_manager.py b/tests/unit/local/docker/test_manager.py index 87b6af154de..84c6f13a6dc 100644 --- a/tests/unit/local/docker/test_manager.py +++ b/tests/unit/local/docker/test_manager.py @@ -1,6 +1,7 @@ """ Tests container manager """ + import importlib from unittest import TestCase from unittest.mock import Mock, patch, MagicMock, ANY, call From 1e5424671beff20ee36199fd50bb59e2bb008249 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 21:40:20 +0000 Subject: [PATCH 094/100] chore: update aws-sam-translator to 1.84.0 (#6642) * chore: update aws-sam-translator to 1.84.0 * Update reproducibles: update-reproducible-linux-reqs * Update reproducibles: update-reproducible-mac-reqs * Update reproducibles: update-reproducible-win-reqs --------- Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 0c03e917c7b..8ff9bdc57db 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -6,7 +6,7 @@ jmespath~=1.0.1 ruamel_yaml~=0.18.5 PyYAML~=6.0,>=6.0.1 cookiecutter~=2.5.0 -aws-sam-translator==1.83.0 +aws-sam-translator==1.84.0 #docker minor version updates can include breaking changes. Auto update micro version only. docker~=7.0.0 dateparser~=1.2 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 5c6eaae4652..3144fec71a8 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -24,9 +24,9 @@ aws-lambda-builders==1.45.0 \ --hash=sha256:5c19a6628eecf21578cd9c521e747f4a2163c62c527cd840b11b62a10b661348 \ --hash=sha256:a4db7766198c052900905bd7ee3b1a8b486511394cdabffed054204d43b29943 # via aws-sam-cli (setup.py) -aws-sam-translator==1.83.0 \ - --hash=sha256:022246b4745cc9067f88ab2b051f49898606bcf0222e22b9da41063e5619c6f9 \ - --hash=sha256:46025ca8894a56eacd87eb0e4f9af5c01c567c9a734b97fbba353bffd56ba5dc +aws-sam-translator==1.84.0 \ + --hash=sha256:a24f43e80095c79258a1f1c7a0b8169f55daf0b2bc237d5b9010b02ba86fa3bb \ + --hash=sha256:dbfd5669b5ef4bd7bc7af4775eec2ce4db61a2c2a17d721e67b51cf6a6dd63f9 # via # aws-sam-cli (setup.py) # cfn-lint diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 79f5480eccc..d944b32fbd1 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -24,9 +24,9 @@ aws-lambda-builders==1.45.0 \ --hash=sha256:5c19a6628eecf21578cd9c521e747f4a2163c62c527cd840b11b62a10b661348 \ --hash=sha256:a4db7766198c052900905bd7ee3b1a8b486511394cdabffed054204d43b29943 # via aws-sam-cli (setup.py) -aws-sam-translator==1.83.0 \ - --hash=sha256:022246b4745cc9067f88ab2b051f49898606bcf0222e22b9da41063e5619c6f9 \ - --hash=sha256:46025ca8894a56eacd87eb0e4f9af5c01c567c9a734b97fbba353bffd56ba5dc +aws-sam-translator==1.84.0 \ + --hash=sha256:a24f43e80095c79258a1f1c7a0b8169f55daf0b2bc237d5b9010b02ba86fa3bb \ + --hash=sha256:dbfd5669b5ef4bd7bc7af4775eec2ce4db61a2c2a17d721e67b51cf6a6dd63f9 # via # aws-sam-cli (setup.py) # cfn-lint diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index f60951b0e99..dc272da6790 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -24,9 +24,9 @@ aws-lambda-builders==1.45.0 \ --hash=sha256:5c19a6628eecf21578cd9c521e747f4a2163c62c527cd840b11b62a10b661348 \ --hash=sha256:a4db7766198c052900905bd7ee3b1a8b486511394cdabffed054204d43b29943 # via aws-sam-cli (setup.py) -aws-sam-translator==1.83.0 \ - --hash=sha256:022246b4745cc9067f88ab2b051f49898606bcf0222e22b9da41063e5619c6f9 \ - --hash=sha256:46025ca8894a56eacd87eb0e4f9af5c01c567c9a734b97fbba353bffd56ba5dc +aws-sam-translator==1.84.0 \ + --hash=sha256:a24f43e80095c79258a1f1c7a0b8169f55daf0b2bc237d5b9010b02ba86fa3bb \ + --hash=sha256:dbfd5669b5ef4bd7bc7af4775eec2ce4db61a2c2a17d721e67b51cf6a6dd63f9 # via # aws-sam-cli (setup.py) # cfn-lint From aaafcb500e474565230dadc4753c45f215828e47 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 14:00:38 -0800 Subject: [PATCH 095/100] chore(deps): bump certifi from 2023.11.17 to 2024.2.2 in /requirements (#6640) Bumps [certifi](https://github.com/certifi/python-certifi) from 2023.11.17 to 2024.2.2. - [Commits](https://github.com/certifi/python-certifi/compare/2023.11.17...2024.02.02) --- updated-dependencies: - dependency-name: certifi dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 3144fec71a8..480e65e4d8f 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -60,9 +60,9 @@ botocore-stubs==1.34.32 \ --hash=sha256:978c97b8c02b5ffa3726a5052e5715aecc52c640a75a8088b3a58453c2b054b2 \ --hash=sha256:e5b04b8ab81e736088470b7be244de072ac2f986caf0f51b7e2087400778dc9f # via boto3-stubs -certifi==2023.11.17 \ - --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ - --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 +certifi==2024.2.2 \ + --hash=sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f \ + --hash=sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1 # via requests cffi==1.16.0 \ --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index d944b32fbd1..20b20fbb6af 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -78,9 +78,9 @@ botocore-stubs==1.34.32 \ --hash=sha256:978c97b8c02b5ffa3726a5052e5715aecc52c640a75a8088b3a58453c2b054b2 \ --hash=sha256:e5b04b8ab81e736088470b7be244de072ac2f986caf0f51b7e2087400778dc9f # via boto3-stubs -certifi==2023.11.17 \ - --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ - --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 +certifi==2024.2.2 \ + --hash=sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f \ + --hash=sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1 # via requests cffi==1.16.0 \ --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index dc272da6790..d4359a63eab 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -60,9 +60,9 @@ botocore-stubs==1.34.32 \ --hash=sha256:978c97b8c02b5ffa3726a5052e5715aecc52c640a75a8088b3a58453c2b054b2 \ --hash=sha256:e5b04b8ab81e736088470b7be244de072ac2f986caf0f51b7e2087400778dc9f # via boto3-stubs -certifi==2023.11.17 \ - --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ - --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 +certifi==2024.2.2 \ + --hash=sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f \ + --hash=sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1 # via requests cffi==1.16.0 \ --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \ From 225d97226abb2db13ad947deeeb6227044f2ed86 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 16:37:07 -0800 Subject: [PATCH 096/100] chore(deps-dev): bump the types group in /requirements with 2 updates (#6647) Bumps the types group in /requirements with 2 updates: [types-psutil](https://github.com/python/typeshed) and [types-colorama](https://github.com/python/typeshed). Updates `types-psutil` from 5.9.5.20240106 to 5.9.5.20240205 - [Commits](https://github.com/python/typeshed/commits) Updates `types-colorama` from 0.4.15.20240106 to 0.4.15.20240205 - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-psutil dependency-type: direct:development update-type: version-update:semver-patch dependency-group: types - dependency-name: types-colorama dependency-type: direct:development update-type: version-update:semver-patch dependency-group: types ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/dev.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index f8b8ceebf42..05585cb879d 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -11,10 +11,10 @@ mypy==1.8.0 types-pywin32==306.0.0.20240130 types-PyYAML==6.0.12.12 types-chevron==0.14.2.20240106 -types-psutil==5.9.5.20240106 +types-psutil==5.9.5.20240205 types-setuptools==69.0.0.20240125 types-Pygments==2.17.0.20240106 -types-colorama==0.4.15.20240106 +types-colorama==0.4.15.20240205 types-dateparser==1.1.4.20240106 types-docutils==0.20.0.20240201 types-jsonschema==4.21.0.20240118 From a10d9609dfe99f96446098a39887d1616b6de6bc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 16:37:11 -0800 Subject: [PATCH 097/100] chore(deps): bump pytz from 2023.4 to 2024.1 in /requirements (#6639) Bumps [pytz](https://github.com/stub42/pytz) from 2023.4 to 2024.1. - [Release notes](https://github.com/stub42/pytz/releases) - [Commits](https://github.com/stub42/pytz/compare/release_2023.4...release_2024.1) --- updated-dependencies: - dependency-name: pytz dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/reproducible-linux.txt | 6 +++--- requirements/reproducible-mac.txt | 6 +++--- requirements/reproducible-win.txt | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 480e65e4d8f..b9416facb57 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -585,9 +585,9 @@ python-slugify==8.0.3 \ --hash=sha256:c71189c161e8c671f1b141034d9a56308a8a5978cd13d40446c879569212fdd1 \ --hash=sha256:e04cba5f1c562502a1175c84a8bc23890c54cdaf23fccaaf0bf78511508cabed # via cookiecutter -pytz==2023.4 \ - --hash=sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40 \ - --hash=sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a +pytz==2024.1 \ + --hash=sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812 \ + --hash=sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319 # via dateparser pyyaml==6.0.1 \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 20b20fbb6af..98078d0f887 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -617,9 +617,9 @@ python-slugify==8.0.3 \ --hash=sha256:c71189c161e8c671f1b141034d9a56308a8a5978cd13d40446c879569212fdd1 \ --hash=sha256:e04cba5f1c562502a1175c84a8bc23890c54cdaf23fccaaf0bf78511508cabed # via cookiecutter -pytz==2023.4 \ - --hash=sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40 \ - --hash=sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a +pytz==2024.1 \ + --hash=sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812 \ + --hash=sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319 # via dateparser pyyaml==6.0.1 \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index d4359a63eab..919e335d417 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -589,9 +589,9 @@ python-slugify==8.0.3 \ --hash=sha256:c71189c161e8c671f1b141034d9a56308a8a5978cd13d40446c879569212fdd1 \ --hash=sha256:e04cba5f1c562502a1175c84a8bc23890c54cdaf23fccaaf0bf78511508cabed # via cookiecutter -pytz==2023.4 \ - --hash=sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40 \ - --hash=sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a +pytz==2024.1 \ + --hash=sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812 \ + --hash=sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319 # via dateparser pywin32==306 \ --hash=sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d \ From 183de05f15d0e9a4bafa774dd173d19034473419 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 18:11:29 -0800 Subject: [PATCH 098/100] chore(deps-dev): bump ruff from 0.1.15 to 0.2.0 in /requirements (#6638) Bumps [ruff](https://github.com/astral-sh/ruff) from 0.1.15 to 0.2.0. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/v0.1.15...v0.2.0) --- updated-dependencies: - dependency-name: ruff dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/pre-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/pre-dev.txt b/requirements/pre-dev.txt index 43172de7382..2446b4802fa 100644 --- a/requirements/pre-dev.txt +++ b/requirements/pre-dev.txt @@ -1 +1 @@ -ruff==0.1.15 +ruff==0.2.0 From f31eb0b92765cd7a36e83488baf61ff2b59e4f4d Mon Sep 17 00:00:00 2001 From: Wing Fung Lau <4760060+hawflau@users.noreply.github.com> Date: Tue, 6 Feb 2024 09:26:49 -0800 Subject: [PATCH 099/100] chore: bump version to 1.109.0 (#6656) Co-authored-by: Lau --- samcli/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samcli/__init__.py b/samcli/__init__.py index 3fefdee9863..513927b9d1d 100644 --- a/samcli/__init__.py +++ b/samcli/__init__.py @@ -2,4 +2,4 @@ SAM CLI version """ -__version__ = "1.108.0" +__version__ = "1.109.0" From 49c53250f547d46c0e80d592a022e72e49c75379 Mon Sep 17 00:00:00 2001 From: Anup Kashyap Date: Tue, 6 Feb 2024 12:15:17 -0700 Subject: [PATCH 100/100] Sync timestamp (#6575) * Added timestamp in sync logs * Fixed formatting * Update integration tests, update test cases to python3.11 * Format files --------- Co-authored-by: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Co-authored-by: Daniel Mil <84205762+mildaniel@users.noreply.github.com> Co-authored-by: Daniel Mil --- samcli/lib/sync/sync_flow_executor.py | 7 ++- tests/integration/sync/test_sync_adl.py | 6 +-- tests/integration/sync/test_sync_watch.py | 43 +++++++++---------- .../template-makefile-create-new-file.yaml | 4 +- .../template-python-code-only-layer.yaml | 14 +++--- .../before/template-python-code-only.yaml | 6 +-- .../template-python-no-dependencies.yaml | 2 +- .../sync/code/before/template-python.yaml | 6 +-- ..._template_level3_nested_zip_functions.json | 7 +-- ...ate_level3_nested_zip_functions_after.json | 7 +-- ...v1_synthesized_template_zip_functions.json | 7 +-- ...thesized_template_zip_functions_after.json | 7 +-- .../sync/infra/template-python-after.yaml | 6 +-- .../sync/infra/template-python-auto-skip.yaml | 6 +-- .../sync/infra/template-python-before.yaml | 6 +-- .../child_child_stack/template.yaml | 2 +- .../nested/before/child_stack/template.yaml | 6 +-- .../testdata/sync/nested/before/template.yaml | 6 +-- .../child_stack/child_function/template.yaml | 2 +- .../child_stack/child_layer/template.yaml | 4 +- 20 files changed, 80 insertions(+), 74 deletions(-) diff --git a/samcli/lib/sync/sync_flow_executor.py b/samcli/lib/sync/sync_flow_executor.py index 3d43d741896..db73abc528a 100644 --- a/samcli/lib/sync/sync_flow_executor.py +++ b/samcli/lib/sync/sync_flow_executor.py @@ -4,6 +4,7 @@ import time from concurrent.futures import Future, ThreadPoolExecutor from dataclasses import dataclass +from datetime import datetime from queue import Queue from threading import RLock from typing import Callable, List, Optional, Set @@ -311,8 +312,12 @@ def _handle_result( sync_flow_result: SyncFlowResult = future.result() for dependent_sync_flow in sync_flow_result.dependent_sync_flows: self.add_sync_flow(dependent_sync_flow) + message = ( + f"{datetime.now().strftime('%d/%b/%Y:%H:%M:%S')}: " + f"Finished syncing {sync_flow_result.sync_flow.log_name}." + ) LOG.info( - self._color.color_log(msg=f"Finished syncing {sync_flow_result.sync_flow.log_name}.", color="green"), + self._color.color_log(msg=message, color="green"), extra=dict(markup=True), ) return True diff --git a/tests/integration/sync/test_sync_adl.py b/tests/integration/sync/test_sync_adl.py index 854325af207..f5e0a4c32e3 100644 --- a/tests/integration/sync/test_sync_adl.py +++ b/tests/integration/sync/test_sync_adl.py @@ -128,7 +128,7 @@ def test_sync_watch_code(self): ) read_until_string( self.watch_process, - "\x1b[32mFinished syncing Layer HelloWorldFunction", + "Finished syncing Layer HelloWorldFunction", timeout=60, ) lambda_response = json.loads(self._get_lambda_response(lambda_functions[0])) @@ -142,7 +142,7 @@ def test_sync_watch_code(self): ) read_until_string( self.watch_process, - "\x1b[32mFinished syncing Layer HelloWorldFunction", + "Finished syncing Layer HelloWorldFunction", timeout=60, ) self._confirm_lambda_error(lambda_functions[0]) @@ -154,7 +154,7 @@ def test_sync_watch_code(self): ) read_until_string( self.watch_process, - "\x1b[32mFinished syncing Function Layer Reference Sync HelloWorldFunction.\x1b[0m\n", + "Finished syncing Function Layer Reference Sync HelloWorldFunction.\x1b[0m\n", timeout=60, ) diff --git a/tests/integration/sync/test_sync_watch.py b/tests/integration/sync/test_sync_watch.py index f450060cb95..133d1ddbde7 100644 --- a/tests/integration/sync/test_sync_watch.py +++ b/tests/integration/sync/test_sync_watch.py @@ -223,7 +223,7 @@ def test_sync_watch_code(self): ) read_until_string( self.watch_process, - "\x1b[32mFinished syncing Function Layer Reference Sync HelloWorldFunction.\x1b[0m\n", + "Finished syncing Function Layer Reference Sync HelloWorldFunction.\x1b[0m\n", timeout=45, ) layer_contents = self.get_dependency_layer_contents_from_arn(self.stack_resources, "python", 2) @@ -235,7 +235,7 @@ def test_sync_watch_code(self): self.test_data_path.joinpath("code", "before", "function", "app.py"), ) read_until_string( - self.watch_process, "\x1b[32mFinished syncing Lambda Function HelloWorldFunction.\x1b[0m\n", timeout=30 + self.watch_process, "Finished syncing Lambda Function HelloWorldFunction.\x1b[0m\n", timeout=30 ) lambda_functions = self.stack_resources.get(AWS_LAMBDA_FUNCTION) for lambda_function in lambda_functions: @@ -250,7 +250,7 @@ def test_sync_watch_code(self): ) read_until_string( self.watch_process, - "\x1b[32mFinished syncing Function Layer Reference Sync HelloWorldFunction.\x1b[0m\n", + "Finished syncing Function Layer Reference Sync HelloWorldFunction.\x1b[0m\n", timeout=30, ) lambda_functions = self.stack_resources.get(AWS_LAMBDA_FUNCTION) @@ -264,7 +264,7 @@ def test_sync_watch_code(self): self.test_data_path.joinpath("code", "after", "apigateway", "definition.json"), self.test_data_path.joinpath("code", "before", "apigateway", "definition.json"), ) - read_until_string(self.watch_process, "\x1b[32mFinished syncing RestApi HelloWorldApi.\x1b[0m\n", timeout=20) + read_until_string(self.watch_process, "Finished syncing RestApi HelloWorldApi.\x1b[0m\n", timeout=20) time.sleep(API_SLEEP) rest_api = self.stack_resources.get(AWS_APIGATEWAY_RESTAPI)[0] self.assertEqual(self._get_api_message(rest_api), '{"message": "hello 2"}') @@ -274,9 +274,7 @@ def test_sync_watch_code(self): self.test_data_path.joinpath("code", "after", "statemachine", "function.asl.json"), self.test_data_path.joinpath("code", "before", "statemachine", "function.asl.json"), ) - read_until_string( - self.watch_process, "\x1b[32mFinished syncing StepFunctions HelloStepFunction.\x1b[0m\n", timeout=20 - ) + read_until_string(self.watch_process, "Finished syncing StepFunctions HelloStepFunction.\x1b[0m\n", timeout=20) state_machine = self.stack_resources.get(AWS_STEPFUNCTIONS_STATEMACHINE)[0] time.sleep(SFN_SLEEP) self.assertEqual(self._get_sfn_response(state_machine), '"World 2"') @@ -326,8 +324,7 @@ def test_sync_watch_code_nested_stack(self): ) read_until_string( self.watch_process, - "\x1b[32mFinished syncing Function Layer Reference Sync " - "LocalNestedChildStack/HelloWorldFunction.\x1b[0m\n", + "Finished syncing Function Layer Reference Sync " "LocalNestedChildStack/HelloWorldFunction.\x1b[0m\n", timeout=45, ) layer_contents = self.get_dependency_layer_contents_from_arn(self.stack_resources, "python", 2) @@ -340,7 +337,7 @@ def test_sync_watch_code_nested_stack(self): ) read_until_string( self.watch_process, - "\x1b[32mFinished syncing Lambda Function LocalNestedChildStack/HelloWorldFunction.\x1b[0m\n", + "Finished syncing Lambda Function LocalNestedChildStack/HelloWorldFunction.\x1b[0m\n", timeout=30, ) lambda_functions = self.stack_resources.get(AWS_LAMBDA_FUNCTION) @@ -356,7 +353,7 @@ def test_sync_watch_code_nested_stack(self): ) read_until_string( self.watch_process, - "\x1b[32mFinished syncing Function Layer Reference Sync LocalNestedChildStack/HelloWorldFunction.\x1b[0m\n", + "Finished syncing Function Layer Reference Sync LocalNestedChildStack/HelloWorldFunction.\x1b[0m\n", timeout=30, ) lambda_functions = self.stack_resources.get(AWS_LAMBDA_FUNCTION) @@ -372,7 +369,7 @@ def test_sync_watch_code_nested_stack(self): ) read_until_string( self.watch_process, - "\x1b[32mFinished syncing RestApi LocalNestedChildStack/HelloWorldApi.\x1b[0m\n", + "Finished syncing RestApi LocalNestedChildStack/HelloWorldApi.\x1b[0m\n", timeout=20, ) time.sleep(API_SLEEP) @@ -386,7 +383,7 @@ def test_sync_watch_code_nested_stack(self): ) read_until_string( self.watch_process, - "\x1b[32mFinished syncing StepFunctions LocalNestedChildStack/HelloStepFunction.\x1b[0m\n", + "Finished syncing StepFunctions LocalNestedChildStack/HelloStepFunction.\x1b[0m\n", timeout=20, ) state_machine = self.stack_resources.get(AWS_STEPFUNCTIONS_STATEMACHINE)[0] @@ -413,7 +410,7 @@ def test_sync_watch_code(self): self.test_data_path.joinpath("code", "before", "esbuild_function", "app.ts"), ) read_until_string( - self.watch_process, "\x1b[32mFinished syncing Lambda Function HelloWorldFunction.\x1b[0m\n", timeout=30 + self.watch_process, "Finished syncing Lambda Function HelloWorldFunction.\x1b[0m\n", timeout=30 ) lambda_functions = self.stack_resources.get(AWS_LAMBDA_FUNCTION) for lambda_function in lambda_functions: @@ -473,7 +470,7 @@ def test_sync_watch_code(self): self.test_data_path.joinpath("code", "before", "function", "requirements.txt"), ) read_until_string( - self.watch_process, "\x1b[32mFinished syncing Lambda Function HelloWorldFunction.\x1b[0m\n", timeout=45 + self.watch_process, "Finished syncing Lambda Function HelloWorldFunction.\x1b[0m\n", timeout=45 ) lambda_functions = self.stack_resources.get(AWS_LAMBDA_FUNCTION) @@ -521,7 +518,7 @@ def test_sync_watch_code(self): tags="integ=true clarity=yes foo_bar=baz", ) self.watch_process = start_persistent_process(sync_command_list, cwd=self.test_data_path) - read_until_string(self.watch_process, "\x1b[32mSync watch started.\x1b[0m\n", timeout=30) + read_until_string(self.watch_process, "Sync watch started.\x1b[0m\n", timeout=30) self.stack_resources = self._get_stacks(self.stack_name) @@ -535,7 +532,7 @@ def test_sync_watch_code(self): ) read_until_string( self.watch_process, - "\x1b[32mFinished syncing Function Layer Reference Sync HelloWorldFunction.\x1b[0m\n", + "Finished syncing Function Layer Reference Sync HelloWorldFunction.\x1b[0m\n", timeout=45, ) layer_contents = self.get_dependency_layer_contents_from_arn(self.stack_resources, "python", 2) @@ -547,7 +544,7 @@ def test_sync_watch_code(self): self.test_data_path.joinpath("code", "before", "function", "app.py"), ) read_until_string( - self.watch_process, "\x1b[32mFinished syncing Lambda Function HelloWorldFunction.\x1b[0m\n", timeout=30 + self.watch_process, "Finished syncing Lambda Function HelloWorldFunction.\x1b[0m\n", timeout=30 ) lambda_functions = self.stack_resources.get(AWS_LAMBDA_FUNCTION) for lambda_function in lambda_functions: @@ -562,7 +559,7 @@ def test_sync_watch_code(self): ) read_until_string( self.watch_process, - "\x1b[32mFinished syncing Function Layer Reference Sync HelloWorldFunction.\x1b[0m\n", + "Finished syncing Function Layer Reference Sync HelloWorldFunction.\x1b[0m\n", timeout=30, ) lambda_functions = self.stack_resources.get(AWS_LAMBDA_FUNCTION) @@ -679,7 +676,7 @@ def test_sync_watch_auto_skip_infra(self): self.watch_process = start_persistent_process(sync_command_list, cwd=self.test_dir) read_until_string( - self.watch_process, "\x1b[32mFinished syncing Lambda Function HelloWorldFunction.\x1b[0m\n", timeout=100 + self.watch_process, "Finished syncing Lambda Function HelloWorldFunction.\x1b[0m\n", timeout=100 ) kill_process(self.watch_process) @@ -714,7 +711,7 @@ def test_sync_watch_auto_skip_infra(self): read_until_string( self.watch_process, - "\x1b[32mFinished syncing Function Layer Reference Sync HelloWorldFunction.\x1b[0m\n", + "Finished syncing Function Layer Reference Sync HelloWorldFunction.\x1b[0m\n", timeout=100, ) @@ -749,7 +746,7 @@ def test_sync_watch_auto_skip_infra(self): read_until_string( self.watch_process, - "\x1b[32mFinished syncing RestApi HelloWorldApi.\x1b[0m\n", + "Finished syncing RestApi HelloWorldApi.\x1b[0m\n", timeout=100, ) time.sleep(API_SLEEP) @@ -781,7 +778,7 @@ def test_sync_watch_auto_skip_infra(self): read_until_string( self.watch_process, - "\x1b[32mFinished syncing StepFunctions HelloStepFunction.\x1b[0m\n", + "Finished syncing StepFunctions HelloStepFunction.\x1b[0m\n", timeout=100, ) time.sleep(SFN_SLEEP) diff --git a/tests/integration/testdata/sync/code/before/template-makefile-create-new-file.yaml b/tests/integration/testdata/sync/code/before/template-makefile-create-new-file.yaml index dde583cc6e9..d35d56be45f 100644 --- a/tests/integration/testdata/sync/code/before/template-makefile-create-new-file.yaml +++ b/tests/integration/testdata/sync/code/before/template-makefile-create-new-file.yaml @@ -11,7 +11,7 @@ Resources: Properties: CodeUri: makefile_function_create_new_file/ Handler: main.handler - Runtime: python3.7 + Runtime: python3.11 Layers: - !Ref HelloWorldLayer Metadata: @@ -22,6 +22,6 @@ Resources: Properties: ContentUri: makefile_layer_create_new_file/ CompatibleRuntimes: - - python3.7 + - python3.11 Metadata: BuildMethod: makefile \ No newline at end of file diff --git a/tests/integration/testdata/sync/code/before/template-python-code-only-layer.yaml b/tests/integration/testdata/sync/code/before/template-python-code-only-layer.yaml index 133dc915dee..3c2afbd0df0 100644 --- a/tests/integration/testdata/sync/code/before/template-python-code-only-layer.yaml +++ b/tests/integration/testdata/sync/code/before/template-python-code-only-layer.yaml @@ -22,7 +22,7 @@ Resources: Properties: CodeUri: function/ Handler: app.lambda_handler - Runtime: python3.7 + Runtime: python3.11 Layers: - Ref: HelloWorldLayer Tracing: Active @@ -32,7 +32,7 @@ Resources: Properties: CodeUri: function/ Handler: app.lambda_handler - Runtime: python3.7 + Runtime: python3.11 Layers: - Ref: HelloWorldLayerWithoutBuildMethod Tracing: Active @@ -42,7 +42,7 @@ Resources: Properties: CodeUri: function/ Handler: app.lambda_handler - Runtime: python3.7 + Runtime: python3.11 Layers: - Ref: HelloWorldPreBuiltZipLayer Tracing: Active @@ -54,9 +54,9 @@ Resources: Description: Hello World Layer ContentUri: layer/ CompatibleRuntimes: - - python3.7 + - python3.11 Metadata: - BuildMethod: python3.7 + BuildMethod: python3.11 HelloWorldLayerWithoutBuildMethod: Type: AWS::Serverless::LayerVersion @@ -65,7 +65,7 @@ Resources: Description: Hello World Layer without BuildMethod ContentUri: layer_without_build_method/ CompatibleRuntimes: - - python3.7 + - python3.11 HelloWorldPreBuiltZipLayer: Type: AWS::Serverless::LayerVersion @@ -74,7 +74,7 @@ Resources: Description: Hello World Layer which is pre-built as ZIP file ContentUri: layer_zip/layer.zip CompatibleRuntimes: - - python3.7 + - python3.11 HelloStepFunction: Type: AWS::Serverless::StateMachine diff --git a/tests/integration/testdata/sync/code/before/template-python-code-only.yaml b/tests/integration/testdata/sync/code/before/template-python-code-only.yaml index a90129ba1e2..0c1200c5c7f 100644 --- a/tests/integration/testdata/sync/code/before/template-python-code-only.yaml +++ b/tests/integration/testdata/sync/code/before/template-python-code-only.yaml @@ -16,7 +16,7 @@ Resources: Properties: CodeUri: function/ Handler: app.lambda_handler - Runtime: python3.7 + Runtime: python3.11 Layers: - Ref: HelloWorldLayer Tracing: Active @@ -28,6 +28,6 @@ Resources: Description: Hello World Layer ContentUri: layer/ CompatibleRuntimes: - - python3.7 + - python3.11 Metadata: - BuildMethod: python3.7 + BuildMethod: python3.11 diff --git a/tests/integration/testdata/sync/code/before/template-python-no-dependencies.yaml b/tests/integration/testdata/sync/code/before/template-python-no-dependencies.yaml index b95b0c76707..7961b53ce9c 100644 --- a/tests/integration/testdata/sync/code/before/template-python-no-dependencies.yaml +++ b/tests/integration/testdata/sync/code/before/template-python-no-dependencies.yaml @@ -11,4 +11,4 @@ Resources: Properties: CodeUri: python_function_no_deps/ Handler: app.lambda_handler - Runtime: python3.7 \ No newline at end of file + Runtime: python3.11 \ No newline at end of file diff --git a/tests/integration/testdata/sync/code/before/template-python.yaml b/tests/integration/testdata/sync/code/before/template-python.yaml index 56cb6422354..7199dfc9ff5 100644 --- a/tests/integration/testdata/sync/code/before/template-python.yaml +++ b/tests/integration/testdata/sync/code/before/template-python.yaml @@ -16,7 +16,7 @@ Resources: Properties: CodeUri: function/ Handler: app.lambda_handler - Runtime: python3.7 + Runtime: python3.11 Layers: - Ref: HelloWorldLayer Tracing: Active @@ -40,9 +40,9 @@ Resources: Description: Hello World Layer ContentUri: layer/ CompatibleRuntimes: - - python3.7 + - python3.11 Metadata: - BuildMethod: python3.7 + BuildMethod: python3.11 HelloStepFunction: Type: AWS::Serverless::StateMachine diff --git a/tests/integration/testdata/sync/infra/cdk/cdk_v1_synthesized_template_level3_nested_zip_functions.json b/tests/integration/testdata/sync/infra/cdk/cdk_v1_synthesized_template_level3_nested_zip_functions.json index 4bdebf1d5c2..501f219ab51 100644 --- a/tests/integration/testdata/sync/infra/cdk/cdk_v1_synthesized_template_level3_nested_zip_functions.json +++ b/tests/integration/testdata/sync/infra/cdk/cdk_v1_synthesized_template_level3_nested_zip_functions.json @@ -44,7 +44,8 @@ "CompatibleRuntimes": [ "python3.7", "python3.8", - "python3.9" + "python3.9", + "python3.11" ] }, "Metadata": { @@ -52,7 +53,7 @@ "aws:asset:path": "before/asset.b998895901bf33127f2c9dce715854f8b35aa73fb7eb5245ba9721580bbe6948", "aws:asset:is-bundled": false, "aws:asset:property": "Content", - "BuildMethod": "python3.7" + "BuildMethod": "python3.11" } }, "RandomCitiesFunctionServiceRole4EFB1CF5": { @@ -142,7 +143,7 @@ "Ref": "CountriesLibLayer259A7AF1" } ], - "Runtime": "python3.7" + "Runtime": "python3.11" }, "DependsOn": [ "RandomCitiesFunctionServiceRole4EFB1CF5" diff --git a/tests/integration/testdata/sync/infra/cdk/cdk_v1_synthesized_template_level3_nested_zip_functions_after.json b/tests/integration/testdata/sync/infra/cdk/cdk_v1_synthesized_template_level3_nested_zip_functions_after.json index a74eaccfd4a..1efd11e775b 100644 --- a/tests/integration/testdata/sync/infra/cdk/cdk_v1_synthesized_template_level3_nested_zip_functions_after.json +++ b/tests/integration/testdata/sync/infra/cdk/cdk_v1_synthesized_template_level3_nested_zip_functions_after.json @@ -44,7 +44,8 @@ "CompatibleRuntimes": [ "python3.7", "python3.8", - "python3.9" + "python3.9", + "python3.11" ] }, "Metadata": { @@ -52,7 +53,7 @@ "aws:asset:path": "after/asset.b998895901bf33127f2c9dce715854f8b35aa73fb7eb5245ba9721580bbe6948", "aws:asset:is-bundled": false, "aws:asset:property": "Content", - "BuildMethod": "python3.7" + "BuildMethod": "python3.11" } }, "RandomCitiesFunctionServiceRole4EFB1CF5": { @@ -142,7 +143,7 @@ "Ref": "CountriesLibLayer259A7AF1" } ], - "Runtime": "python3.7" + "Runtime": "python3.11" }, "DependsOn": [ "RandomCitiesFunctionServiceRole4EFB1CF5" diff --git a/tests/integration/testdata/sync/infra/cdk/cdk_v1_synthesized_template_zip_functions.json b/tests/integration/testdata/sync/infra/cdk/cdk_v1_synthesized_template_zip_functions.json index 9b8144d2311..5eb15f6c79c 100644 --- a/tests/integration/testdata/sync/infra/cdk/cdk_v1_synthesized_template_zip_functions.json +++ b/tests/integration/testdata/sync/infra/cdk/cdk_v1_synthesized_template_zip_functions.json @@ -44,7 +44,8 @@ "CompatibleRuntimes": [ "python3.7", "python3.8", - "python3.9" + "python3.9", + "python3.11" ] }, "Metadata": { @@ -52,7 +53,7 @@ "aws:asset:path": "before/asset.b998895901bf33127f2c9dce715854f8b35aa73fb7eb5245ba9721580bbe6948", "aws:asset:is-bundled": false, "aws:asset:property": "Content", - "BuildMethod": "python3.7" + "BuildMethod": "python3.11" } }, "RandomCitiesFunctionServiceRole4EFB1CF5": { @@ -142,7 +143,7 @@ "Ref": "CountriesLibLayer259A7AF1" } ], - "Runtime": "python3.7" + "Runtime": "python3.11" }, "DependsOn": [ "RandomCitiesFunctionServiceRole4EFB1CF5" diff --git a/tests/integration/testdata/sync/infra/cdk/cdk_v1_synthesized_template_zip_functions_after.json b/tests/integration/testdata/sync/infra/cdk/cdk_v1_synthesized_template_zip_functions_after.json index ca59fdf28f9..6aead65356f 100644 --- a/tests/integration/testdata/sync/infra/cdk/cdk_v1_synthesized_template_zip_functions_after.json +++ b/tests/integration/testdata/sync/infra/cdk/cdk_v1_synthesized_template_zip_functions_after.json @@ -44,7 +44,8 @@ "CompatibleRuntimes": [ "python3.7", "python3.8", - "python3.9" + "python3.9", + "python3.11" ] }, "Metadata": { @@ -52,7 +53,7 @@ "aws:asset:path": "after/asset.b998895901bf33127f2c9dce715854f8b35aa73fb7eb5245ba9721580bbe6948", "aws:asset:is-bundled": false, "aws:asset:property": "Content", - "BuildMethod": "python3.7" + "BuildMethod": "python3.11" } }, "RandomCitiesFunctionServiceRole4EFB1CF5": { @@ -142,7 +143,7 @@ "Ref": "CountriesLibLayer259A7AF1" } ], - "Runtime": "python3.7" + "Runtime": "python3.11" }, "DependsOn": [ "RandomCitiesFunctionServiceRole4EFB1CF5" diff --git a/tests/integration/testdata/sync/infra/template-python-after.yaml b/tests/integration/testdata/sync/infra/template-python-after.yaml index add839c5070..6293b89e29d 100644 --- a/tests/integration/testdata/sync/infra/template-python-after.yaml +++ b/tests/integration/testdata/sync/infra/template-python-after.yaml @@ -16,7 +16,7 @@ Resources: Properties: CodeUri: after/Python/function/ Handler: app.lambda_handler - Runtime: python3.7 + Runtime: python3.11 Layers: - Ref: HelloWorldLayer Tracing: Active @@ -40,9 +40,9 @@ Resources: Description: Hello World Layer ContentUri: after/Python/layer/ CompatibleRuntimes: - - python3.7 + - python3.11 Metadata: - BuildMethod: python3.7 + BuildMethod: python3.11 HelloStepFunction: Type: AWS::Serverless::StateMachine diff --git a/tests/integration/testdata/sync/infra/template-python-auto-skip.yaml b/tests/integration/testdata/sync/infra/template-python-auto-skip.yaml index bfe4ca54255..8f3694986c0 100644 --- a/tests/integration/testdata/sync/infra/template-python-auto-skip.yaml +++ b/tests/integration/testdata/sync/infra/template-python-auto-skip.yaml @@ -16,7 +16,7 @@ Resources: Properties: CodeUri: after/Python/function/ Handler: app.lambda_handler - Runtime: python3.7 + Runtime: python3.11 Layers: - Ref: HelloWorldLayer Tracing: Active @@ -40,9 +40,9 @@ Resources: Description: Hello World Layer ContentUri: after/Python/layer/ CompatibleRuntimes: - - python3.7 + - python3.11 Metadata: - BuildMethod: python3.7 + BuildMethod: python3.11 HelloStepFunction: Type: AWS::Serverless::StateMachine diff --git a/tests/integration/testdata/sync/infra/template-python-before.yaml b/tests/integration/testdata/sync/infra/template-python-before.yaml index 2ed2834830c..6167cfa57e8 100644 --- a/tests/integration/testdata/sync/infra/template-python-before.yaml +++ b/tests/integration/testdata/sync/infra/template-python-before.yaml @@ -16,7 +16,7 @@ Resources: Properties: CodeUri: before/Python/function/ Handler: app.lambda_handler - Runtime: python3.7 + Runtime: python3.11 Layers: - Ref: HelloWorldLayer Tracing: Active @@ -40,9 +40,9 @@ Resources: Description: Hello World Layer ContentUri: before/Python/layer/ CompatibleRuntimes: - - python3.7 + - python3.11 Metadata: - BuildMethod: python3.7 + BuildMethod: python3.11 HelloStepFunction: Type: AWS::Serverless::StateMachine diff --git a/tests/integration/testdata/sync/nested/before/child_stack/child_child_stack/template.yaml b/tests/integration/testdata/sync/nested/before/child_stack/child_child_stack/template.yaml index eae704f5364..84c06c77ad0 100644 --- a/tests/integration/testdata/sync/nested/before/child_stack/child_child_stack/template.yaml +++ b/tests/integration/testdata/sync/nested/before/child_stack/child_child_stack/template.yaml @@ -24,7 +24,7 @@ Resources: # Build with nested stack already exhibits this behaviour CodeUri: ../child_functions/ Handler: child_function.lambda_handler - Runtime: python3.7 + Runtime: python3.11 Layers: - Ref: ParentLayer2 Tracing: Active diff --git a/tests/integration/testdata/sync/nested/before/child_stack/template.yaml b/tests/integration/testdata/sync/nested/before/child_stack/template.yaml index c90b60f94a6..ad6c931be33 100644 --- a/tests/integration/testdata/sync/nested/before/child_stack/template.yaml +++ b/tests/integration/testdata/sync/nested/before/child_stack/template.yaml @@ -24,7 +24,7 @@ Resources: # Build with nested stack already exhibits this behaviour CodeUri: child_functions/ Handler: child_function.lambda_handler - Runtime: python3.7 + Runtime: python3.11 Layers: - Ref: ParentLayer Tracing: Active @@ -40,9 +40,9 @@ Resources: # Build with nested stack already exhibits this behaviour ContentUri: ../root_layer/ CompatibleRuntimes: - - python3.7 + - python3.11 Metadata: - BuildMethod: python3.7 + BuildMethod: python3.11 ChildChildStack: Type: AWS::Serverless::Application diff --git a/tests/integration/testdata/sync/nested/before/template.yaml b/tests/integration/testdata/sync/nested/before/template.yaml index ebe0cafc9ed..13ec4724115 100644 --- a/tests/integration/testdata/sync/nested/before/template.yaml +++ b/tests/integration/testdata/sync/nested/before/template.yaml @@ -19,7 +19,7 @@ Resources: Properties: CodeUri: root_function/ Handler: root_function.lambda_handler - Runtime: python3.7 + Runtime: python3.11 Layers: - Ref: HelloWorldLayer Tracing: Active @@ -31,9 +31,9 @@ Resources: Description: Hello World Layer ContentUri: root_layer/ CompatibleRuntimes: - - python3.7 + - python3.11 Metadata: - BuildMethod: python3.7 + BuildMethod: python3.11 ChildStack: Type: AWS::Serverless::Application diff --git a/tests/integration/testdata/sync/nested_intrinsics/before/child_stack/child_function/template.yaml b/tests/integration/testdata/sync/nested_intrinsics/before/child_stack/child_function/template.yaml index 75488615f78..edd463aa180 100644 --- a/tests/integration/testdata/sync/nested_intrinsics/before/child_stack/child_function/template.yaml +++ b/tests/integration/testdata/sync/nested_intrinsics/before/child_stack/child_function/template.yaml @@ -16,7 +16,7 @@ Resources: Properties: CodeUri: function/ Handler: function.lambda_handler - Runtime: python3.7 + Runtime: python3.11 Layers: - Ref: Layer Tracing: Active \ No newline at end of file diff --git a/tests/integration/testdata/sync/nested_intrinsics/before/child_stack/child_layer/template.yaml b/tests/integration/testdata/sync/nested_intrinsics/before/child_stack/child_layer/template.yaml index 2313c0bf7d2..5c8a07432bf 100644 --- a/tests/integration/testdata/sync/nested_intrinsics/before/child_stack/child_layer/template.yaml +++ b/tests/integration/testdata/sync/nested_intrinsics/before/child_stack/child_layer/template.yaml @@ -14,9 +14,9 @@ Resources: Description: Hello World Layer ContentUri: layer/ CompatibleRuntimes: - - python3.7 + - python3.11 Metadata: - BuildMethod: python3.7 + BuildMethod: python3.11 Outputs: LayerName: