diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 307cd24326..1aea07e652 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -279,4 +279,4 @@ jobs: - name: Init samdev run: make init - name: Run tests without Docker - run: pytest -vv tests/integration/buildcmd/test_build_cmd.py -k TestBuildCommand_PythonFunctions_WithoutDocker + run: pytest -vv tests/integration/buildcmd/test_build_cmd_python.py -k TestBuildCommand_PythonFunctions_WithoutDocker diff --git a/Makefile b/Makefile index dc2cc11778..5083326961 100644 --- a/Makefile +++ b/Makefile @@ -50,7 +50,7 @@ black-check: black --check setup.py samcli tests schema format: black - ruff samcli --fix + ruff check samcli --fix schema: python -m schema.make_schema diff --git a/appveyor-ubuntu.yml b/appveyor-ubuntu.yml index 6ef006f095..f5535092c7 100644 --- a/appveyor-ubuntu.yml +++ b/appveyor-ubuntu.yml @@ -53,9 +53,6 @@ install: - sh: "mvn --version" - sh: "source ${HOME}/venv${PYTHON_VERSION}/bin/activate" - - sh: "rbenv install 3.3.0" - - sh: "rbenv global 3.3.0" - - sh: "ruby --version" - sh: "docker info" - sh: "docker version" - sh: "nvm install ${NODE_VERSION}" diff --git a/appveyor-windows-al2023.yml b/appveyor-windows-al2023.yml new file mode 100644 index 0000000000..1f3dbbb2c4 --- /dev/null +++ b/appveyor-windows-al2023.yml @@ -0,0 +1,178 @@ +version: 1.0.{build} +image: ws2022-azure +build: off + +clone_folder: C:\source + +environment: + AWS_DEFAULT_REGION: us-east-1 + SAM_CLI_DEV: 1 + CARGO_LAMBDA_VERSION: "v0.17.1" + + # Python uses $TMPDIR envvar to find root of tempdir + TMPDIR: "%TEMP%" + TMP: "%TEMP%" + + # MSI Installers only use Py3.8. It is sufficient to test with this version here. + PYTHON_HOME: "C:\\Python38-x64" + PYTHON_SCRIPTS: "C:\\Python38-x64\\Scripts" + PYTHON_EXE: "C:\\Python38-x64\\python.exe" + PYTHON_ARCH: "64" + HOME: 'C:\Users\appveyor' + HOMEDRIVE: "C:" + HOMEPATH: 'C:\Users\appveyor' + NOSE_PARAMETERIZED_NO_WARN: 1 + AWS_S3: "AWS_S3_TESTING" + AWS_ECR: "AWS_ECR_TESTING" + APPVEYOR_CONSOLE_DISABLE_PTY: true + APPVEYOR_BUILD_WORKER_IMAGE: "ws2022-azure" + +init: + # Uncomment this for RDP + # - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) + - ps: gcim Win32_Processor | % { "$($_.NumberOfLogicalProcessors) logical CPUs" } + - ps: gcim Win32_OperatingSystem | % { "$([int]($_.TotalVisibleMemorySize/1mb)) Gb" } + - git config --global core.autocrlf false + - ps: New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force + - ps: git config --system core.longpaths true + +install: + # upgrade chocolately + - choco upgrade chocolatey + # setup make + - "choco install make" + # setup Java, Maven and Gradle + - choco install correttojdk --version=21.0.0 + - 'set JAVA_HOME=C:\Program Files\Amazon Corretto\jdk21.0.0_35' + - 'set PATH=%JAVA_HOME%\bin;%PATH%' + - java --version + - javac --version + - choco upgrade gradle --version=8.4.0 + - "gradle -v" + - "mvn --version" + + # Make sure the temp directory exists for Python to use. + - ps: "mkdir -Force C:\\tmp" + - 'set PATH=%PYTHON_HOME%;C:\Ruby33-x64\bin;C:\Ruby32-x64\bin;%PATH%;C:\Python39-x64;C:\Python310-x64;C:\Python311-x64;C:\Python312-x64' + - "echo %PYTHON_HOME%" + - "echo %PATH%" + - "python --version" + - "ruby --version" + - ps: "Restart-Service docker" + # Switch to Docker Linux containers + - ps: '& $Env:ProgramFiles\Docker\Docker\DockerCli.exe -SwitchLinuxEngine' + - "docker info" + - "docker version" + + # Upgrade setuptools, wheel and virtualenv + - "python -m pip install --upgrade setuptools wheel virtualenv" + + # Install Node 20 + - ps: "Install-Product node 20" + + # Install AWS CLI Globally via pip3 + - "pip install awscli" + + # Check for git executable + - "git --version" + + # Get testing env vars + - ps: " + If (Test-Path env:BY_CANARY){ + python -m virtualenv venv_env_vars; + ./venv_env_vars/Scripts/pip install boto3; + $test_env_var = ./venv_env_vars/Scripts/python tests/get_testing_resources.py; + $test_env_var_json = ConvertFrom-Json $test_env_var; + + $env:CI_ACCESS_ROLE_AWS_ACCESS_KEY_ID = $env:AWS_ACCESS_KEY_ID; + $env:CI_ACCESS_ROLE_AWS_SECRET_ACCESS_KEY = $env:AWS_SECRET_ACCESS_KEY; + $env:CI_ACCESS_ROLE_AWS_SESSION_TOKEN = $env:AWS_SESSION_TOKEN; + + $env:AWS_ACCESS_KEY_ID = $test_env_var_json.accessKeyID; + $env:AWS_SECRET_ACCESS_KEY = $test_env_var_json.secretAccessKey; + $env:AWS_SESSION_TOKEN = $test_env_var_json.sessionToken; + $env:TASK_TOKEN = $test_env_var_json.taskToken; + $env:AWS_S3_TESTING = $test_env_var_json.TestBucketName; + $env:AWS_ECR_TESTING = $test_env_var_json.TestECRURI; + $env:AWS_KMS_KEY = $test_env_var_json.TestKMSKeyArn; + $env:AWS_SIGNING_PROFILE_NAME = $test_env_var_json.TestSigningProfileName; + $env:AWS_SIGNING_PROFILE_VERSION_ARN = $test_env_var_json.TestSigningProfileARN; + }" + + + # Create new virtual environment with chosen python version and activate it + - "python -m virtualenv venv" + - "venv\\Scripts\\activate" + - "python --version" + + # Actually install SAM CLI's dependencies + - 'pip install -e ".[dev]"' + + # Install aws cli + - "pip install awscli" + + # Echo final Path + - "echo %PATH%" + + # use amazon-ecr-credential-helper + - choco install amazon-ecr-credential-helper + - ps: "ls $env:HOME/.docker" + - ps: " + $docker_config = Get-Content $env:HOME/.docker/config.json -raw | ConvertFrom-Json; + $docker_config.credsStore = 'ecr-login'; + $docker_config | ConvertTo-Json | set-content $env:HOME/.docker/config.json; + " + - ps: "get-content $env:HOME/.docker/config.json" + + # claim some disk space before starting the tests + - "docker system prune -a -f" + # activate virtual environment + - "venv\\Scripts\\activate" + + + +# Final clean up no matter success or failure +on_finish: + # Upload test reports as artifacts + - ps: Get-ChildItem .\TEST_REPORT-*.json | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name } + - ps: ' + If (Test-Path env:BY_CANARY){ + $env:AWS_ACCESS_KEY_ID = $env:TEST_REPORT_S3_BUCKET_ACCESS_KEY_ID; + $env:AWS_SECRET_ACCESS_KEY = $env:TEST_REPORT_S3_BUCKET_SECRET_ACCESS_KEY; + $env:AWS_SESSION_TOKEN = $env:TEST_REPORT_S3_BUCKET_SESSION_TOKEN; + aws s3 cp ".\" "s3://$env:TEST_REPORT_S3_BUCKET_NAME/appveyor/$env:APPVEYOR_PROJECT_SLUG/$env:APPVEYOR_BUILD_ID/$env:APPVEYOR_JOB_ID/" --recursive --exclude "*" --include "TEST_REPORT-*.json" --region us-west-2 + }' + + # notify success + - ps: " + If (Test-Path env:BY_CANARY){ + $env:AWS_ACCESS_KEY_ID = $env:CI_ACCESS_ROLE_AWS_ACCESS_KEY_ID; + $env:AWS_SECRET_ACCESS_KEY = $env:CI_ACCESS_ROLE_AWS_SECRET_ACCESS_KEY; + $env:AWS_SESSION_TOKEN = $env:CI_ACCESS_ROLE_AWS_SESSION_TOKEN; + aws stepfunctions send-task-success --task-token \"$env:TASK_TOKEN\" --task-output \"{}\" --region us-west-2; + }" + +build_script: + # install Rust in build_script to not override the default "install" actions + - appveyor-retry appveyor DownloadFile https://win.rustup.rs/ -FileName rustup-init.exe + - rustup-init.exe -y --default-host x86_64-pc-windows-msvc --default-toolchain stable + - set PATH=%PATH%;C:\Users\appveyor\.cargo\bin + - set RUST_BACKTRACE=1 + - rustup toolchain install stable --profile minimal --no-self-update + - rustup default stable + - rustup target add x86_64-unknown-linux-gnu --toolchain stable + - rustup target add aarch64-unknown-linux-gnu --toolchain stable + - ps: "choco install zig" + - ps: Invoke-WebRequest -Uri https://github.com/cargo-lambda/cargo-lambda/releases/download/$env:CARGO_LAMBDA_VERSION/cargo-lambda-$env:CARGO_LAMBDA_VERSION.windows-x64.zip -OutFile C:\Users\appveyor\cargo-lambda.zip + - ps: Expand-Archive -DestinationPath C:\Users\appveyor\.cargo\bin C:\Users\appveyor\cargo-lambda.zip + - rustc -V + - cargo -V + - cargo lambda -V + +test_script: + - ps: "pytest -vv -n 2 --reruns 3 -m 'al2023' tests/integration/buildcmd --json-report --json-report-file=TEST_REPORT-integration-buildcmd.json" + +# Uncomment for RDP +# on_finish: +# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) + diff --git a/appveyor-windows-binary.yml b/appveyor-windows-binary.yml index 3d2a65b2b3..86432d42cc 100644 --- a/appveyor-windows-binary.yml +++ b/appveyor-windows-binary.yml @@ -49,10 +49,6 @@ init: - ps: New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force - ps: git config --system core.longpaths true -cache: - - C:\ProgramData\chocolatey\bin -> appveyor.yml - - C:\ProgramData\chocolatey\lib -> appveyor.yml - install: # upgrade chocolately - choco upgrade chocolatey @@ -71,7 +67,7 @@ install: # Make sure the temp directory exists for Python to use. - ps: "mkdir -Force C:\\tmp" - - 'set PATH=%PYTHON_HOME%;C:\Ruby32-x64\bin;%PATH%;C:\Python37-x64;C:\Python39-x64;C:\Python310-x64;C:\Python38-x64;C:\Python312-x64' + - 'set PATH=%PYTHON_HOME%;C:\Ruby32-x64\bin;%PATH%;C:\Python39-x64;C:\Python310-x64;C:\Python38-x64;C:\Python312-x64' - "echo %PYTHON_HOME%" - "echo %PATH%" - "python --version" @@ -84,7 +80,6 @@ install: # Upgrade setuptools, wheel and virtualenv - "python -m pip install --upgrade setuptools wheel virtualenv" # Install pip for the python versions which is used by the tests - - "C:\\Python37-x64\\python.exe -m pip install --upgrade pip" - "C:\\Python39-x64\\python.exe -m pip install --upgrade pip" - "C:\\Python310-x64\\python.exe -m pip install --upgrade pip" @@ -185,7 +180,7 @@ for: - configuration: BuildIntegTesting test_script: - - ps: "pytest -vv -n 2 --reruns 3 tests/integration/buildcmd -m 'not java and not python and not provided' --ignore=tests/integration/buildcmd/test_build_cmd_arm64.py --ignore=tests/integration/buildcmd/test_build_terraform_applications.py --ignore=tests/integration/buildcmd/test_build_terraform_applications_other_cases.py --json-report --json-report-file=TEST_REPORT-integration-buildcmd.json" + - ps: "pytest -vv -n 2 --reruns 3 tests/integration/buildcmd -m 'not java and not python and not provided and not al2023' --ignore=tests/integration/buildcmd/test_build_cmd_arm64.py --ignore=tests/integration/buildcmd/test_build_terraform_applications.py --ignore=tests/integration/buildcmd/test_build_terraform_applications_other_cases.py --json-report --json-report-file=TEST_REPORT-integration-buildcmd.json" - matrix: only: @@ -209,7 +204,7 @@ for: - cargo lambda -V test_script: - - ps: "pytest -vv -n 2 --reruns 3 tests/integration/buildcmd -m 'java or python or provided' --ignore=tests/integration/buildcmd/test_build_cmd_arm64.py --ignore=tests/integration/buildcmd/test_build_terraform_applications.py --ignore=tests/integration/buildcmd/test_build_terraform_applications_other_cases.py --json-report --json-report-file=TEST_REPORT-integration-buildcmd-java-python-provided.json" + - ps: "pytest -vv -n 2 --reruns 3 tests/integration/buildcmd -m 'java and not al2023 or python and not al2023 or provided and not al2023' --ignore=tests/integration/buildcmd/test_build_cmd_arm64.py --ignore=tests/integration/buildcmd/test_build_terraform_applications.py --ignore=tests/integration/buildcmd/test_build_terraform_applications_other_cases.py --json-report --json-report-file=TEST_REPORT-integration-buildcmd-java-python-provided.json" #Integ testing build arm64 - matrix: @@ -234,7 +229,7 @@ for: - cargo lambda -V test_script: - - ps: "pytest -vv --reruns 3 tests/integration/buildcmd/test_build_cmd_arm64.py --json-report --json-report-file=TEST_REPORT-integration-buildcmd-arm64.json" + - ps: "pytest -vv --reruns 3 -m 'not al2023' tests/integration/buildcmd/test_build_cmd_arm64.py --json-report --json-report-file=TEST_REPORT-integration-buildcmd-arm64.json" #Integ testing Terraform build - matrix: diff --git a/appveyor-windows.yml b/appveyor-windows.yml index f73b6ef62a..3100a1d655 100644 --- a/appveyor-windows.yml +++ b/appveyor-windows.yml @@ -66,7 +66,7 @@ install: # Make sure the temp directory exists for Python to use. - ps: "mkdir -Force C:\\tmp" - - 'set PATH=%PYTHON_HOME%;C:\Ruby32-x64\bin;%PATH%;C:\Python37-x64;C:\Python39-x64;C:\Python310-x64;C:\Python311-x64;C:\Python312-x64' + - 'set PATH=%PYTHON_HOME%;C:\Ruby32-x64\bin;%PATH%;C:\Python39-x64;C:\Python310-x64;C:\Python311-x64;C:\Python312-x64' - "echo %PYTHON_HOME%" - "echo %PATH%" - "python --version" @@ -79,7 +79,6 @@ install: # Upgrade setuptools, wheel and virtualenv - "python -m pip install --upgrade setuptools wheel virtualenv" # Install pip for the python versions which is used by the tests - - "C:\\Python37-x64\\python.exe -m pip install --upgrade pip" - "C:\\Python39-x64\\python.exe -m pip install --upgrade pip" - "C:\\Python310-x64\\python.exe -m pip install --upgrade pip" @@ -172,7 +171,7 @@ for: - configuration: BuildIntegTesting test_script: - - ps: "pytest -vv -n 2 --reruns 3 tests/integration/buildcmd -m 'not java and not python and not provided' --ignore=tests/integration/buildcmd/test_build_cmd_arm64.py --ignore=tests/integration/buildcmd/test_build_terraform_applications.py --ignore=tests/integration/buildcmd/test_build_terraform_applications_other_cases.py --json-report --json-report-file=TEST_REPORT-integration-buildcmd.json" + - ps: "pytest -vv -n 2 --reruns 3 tests/integration/buildcmd -m 'not java and not python and not provided and not al2023' --ignore=tests/integration/buildcmd/test_build_cmd_arm64.py --ignore=tests/integration/buildcmd/test_build_terraform_applications.py --ignore=tests/integration/buildcmd/test_build_terraform_applications_other_cases.py --json-report --json-report-file=TEST_REPORT-integration-buildcmd.json" - matrix: only: @@ -196,7 +195,7 @@ for: - cargo lambda -V test_script: - - ps: "pytest -vv -n 2 --reruns 3 tests/integration/buildcmd -m 'java or python or provided' --ignore=tests/integration/buildcmd/test_build_cmd_arm64.py --ignore=tests/integration/buildcmd/test_build_terraform_applications.py --ignore=tests/integration/buildcmd/test_build_terraform_applications_other_cases.py --json-report --json-report-file=TEST_REPORT-integration-buildcmd-java-python-provided.json" + - ps: "pytest -vv -n 2 --reruns 3 tests/integration/buildcmd -m 'java and not al2023 or python and not al2023 or provided and not al2023' --ignore=tests/integration/buildcmd/test_build_cmd_arm64.py --ignore=tests/integration/buildcmd/test_build_terraform_applications.py --ignore=tests/integration/buildcmd/test_build_terraform_applications_other_cases.py --json-report --json-report-file=TEST_REPORT-integration-buildcmd-java-python-provided.json" #Integ testing build arm64 - matrix: @@ -221,7 +220,7 @@ for: - cargo lambda -V test_script: - - ps: "pytest -vv --reruns 3 tests/integration/buildcmd/test_build_cmd_arm64.py --json-report --json-report-file=TEST_REPORT-integration-buildcmd-arm64.json" + - ps: "pytest -vv --reruns 3 -m 'not al2023' tests/integration/buildcmd/test_build_cmd_arm64.py --json-report --json-report-file=TEST_REPORT-integration-buildcmd-arm64.json" #Integ testing Terraform build - matrix: diff --git a/installer/pyinstaller/build-linux.sh b/installer/pyinstaller/build-linux.sh index e2a3acefeb..5fb3411e01 100755 --- a/installer/pyinstaller/build-linux.sh +++ b/installer/pyinstaller/build-linux.sh @@ -16,7 +16,7 @@ if [ "$python_version" = "" ]; then fi if [ "$openssl_version" = "" ]; then - openssl_version="1.1.1w"; + openssl_version="3.0.14"; fi if [ "$zlib_version" = "" ]; then @@ -38,7 +38,7 @@ fi set -eux -yum install -y libffi-devel +yum install -y libffi-devel perl-IPC-Cmd echo "Making Folders" mkdir -p .build/src @@ -49,11 +49,12 @@ mkdir -p .build/output/openssl cd .build/output/openssl echo "Building OpenSSL" -curl -L "https://github.com/openssl/openssl/releases/download/OpenSSL_${openssl_version//./_}/openssl-${openssl_version}.tar.gz" --output openssl.tar.gz +curl -L "https://github.com/openssl/openssl/releases/download/openssl-${openssl_version}/openssl-${openssl_version}.tar.gz" --output openssl.tar.gz tar xzf openssl.tar.gz cd openssl-${openssl_version} # install_sw installs OpenSSL without manual pages ./config --prefix=/opt/openssl && make -j8 && make -j8 install_sw +ln -sf /opt/openssl/lib64 /opt/openssl/lib cd ../../ echo "Building zlib" diff --git a/installer/pyinstaller/build-mac.sh b/installer/pyinstaller/build-mac.sh index 9e64029fa2..faf89926ed 100755 --- a/installer/pyinstaller/build-mac.sh +++ b/installer/pyinstaller/build-mac.sh @@ -30,7 +30,7 @@ if [ "$python_library_zip_filename" = "" ]; then fi if [ "$openssl_version" = "" ]; then - openssl_version="1.1.1w"; + openssl_version="3.0.14"; fi if [ "$python_version" = "" ]; then diff --git a/mypy.ini b/mypy.ini index ba4e3fa9d1..68ba89944e 100644 --- a/mypy.ini +++ b/mypy.ini @@ -49,6 +49,9 @@ ignore_missing_imports=True [mypy-watchdog,watchdog.*] ignore_missing_imports=True +[mypy-cfnlint,cfnlint.*] +ignore_missing_imports=True + # progressive add typechecks and these modules already complete the process, let's keep them clean [mypy-samcli.lib.iac.plugins_interfaces,samcli.commands.build,samcli.lib.build.*,samcli.commands.local.cli_common.invoke_context,samcli.commands.local.lib.local_lambda,samcli.lib.providers.*,samcli.lib.utils.git_repo.py,samcli.lib.cookiecutter.*,samcli.lib.pipeline.*,samcli.commands.pipeline.*] disallow_untyped_defs=True diff --git a/pytest.ini b/pytest.ini index c48ab402e6..a02d5bd6f5 100644 --- a/pytest.ini +++ b/pytest.ini @@ -24,3 +24,4 @@ markers = python provided dotnet + al2023: Marker to note tests that require a newer Docker version on Windows diff --git a/requirements/base.txt b/requirements/base.txt index f2786529eb..6972f068a1 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -4,16 +4,16 @@ Flask<3.1 boto3>=1.29.2,<2 jmespath~=1.0.1 ruamel_yaml~=0.18.6 -PyYAML~=6.0,>=6.0.1 +PyYAML~=6.0 cookiecutter~=2.6.0 -aws-sam-translator==1.89.0 +aws-sam-translator==1.90.0 #docker minor version updates can include breaking changes. Auto update micro version only. docker~=7.1.0 dateparser~=1.2 requests~=2.32.3 aws_lambda_builders==1.50.0 tomlkit==0.13.0 -watchdog==4.0.1 +watchdog==4.0.2 rich~=13.7.1 pyopenssl~=24.2.1 # Pin to <4.18 to until SAM-T no longer uses RefResolver @@ -28,7 +28,7 @@ regex!=2021.10.8 tzlocal==5.2 #Adding cfn-lint dependency for SAM validate -cfn-lint~=0.87.7 +cfn-lint~=1.10.0 # Type checking boto3 objects -boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.147 +boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.159 diff --git a/requirements/dev.txt b/requirements/dev.txt index 679d27a47b..2cf436099b 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,23 +1,23 @@ -r pre-dev.txt -coverage==7.6.0 +coverage==7.6.1 pytest-cov==5.0.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.10.1 -types-pywin32==306.0.0.20240408 -types-PyYAML==6.0.12.20240724 +mypy==1.11.1 +types-pywin32==306.0.0.20240806 +types-PyYAML==6.0.12.20240808 types-chevron==0.14.2.20240310 types-psutil==6.0.0.20240621 -types-setuptools==71.1.0.20240724 +types-setuptools==71.1.0.20240813 types-Pygments==2.18.0.20240506 types-colorama==0.4.15.20240311 types-dateparser==1.2.0.20240420 types-docutils==0.21.0.20240724 -types-jsonschema==4.23.0.20240712 +types-jsonschema==4.23.0.20240813 types-pyOpenSSL==24.1.0.20240722 # lucashuy: pin `types-request` based on the Python version since newer versions of # the types require a newer version of requests, which is only installed in newer versions of Python @@ -27,7 +27,7 @@ types-urllib3==1.26.25.14 # Test requirements -pytest==8.3.1 +pytest==8.3.2 parameterized==0.9.0 pytest-xdist==3.6.1 @@ -41,5 +41,5 @@ pytest-json-report-wip==1.5.1 filelock==3.15.4 # formatter -black==24.4.2 +black==24.8.0 psutil==6.0.0 diff --git a/requirements/pre-dev.txt b/requirements/pre-dev.txt index e1d1ab18ad..3af089ab04 100644 --- a/requirements/pre-dev.txt +++ b/requirements/pre-dev.txt @@ -1 +1 @@ -ruff==0.5.4 +ruff==0.5.7 diff --git a/requirements/pyinstaller-build.txt b/requirements/pyinstaller-build.txt index 2785aa75b2..066d032323 100644 --- a/requirements/pyinstaller-build.txt +++ b/requirements/pyinstaller-build.txt @@ -1,3 +1,3 @@ # Executable binary builder requirements setuptools==70.3.0 -pyinstaller==6.9.0 +pyinstaller==6.10.0 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 647b30e542..6bf741b96f 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -12,21 +12,19 @@ arrow==1.3.0 \ --hash=sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80 \ --hash=sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85 # via cookiecutter -attrs==23.2.0 \ - --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ - --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 +attrs==24.2.0 \ + --hash=sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346 \ + --hash=sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2 # via - # jschema-to-python # jsonschema # referencing - # sarif-om aws-lambda-builders==1.50.0 \ --hash=sha256:40a613ecb19fbf0b64a47bae14bd252ea5da32ea71fde9808d596e2dbc011baf \ --hash=sha256:ad95ed55359c399872f5825582896500dfc1c5564eccf2a6ab8d0e9f6c1ae385 # via aws-sam-cli (setup.py) -aws-sam-translator==1.89.0 \ - --hash=sha256:843be1b5ca7634f700ad0c844a7e0dc42858f35da502e91691473eadd1731ded \ - --hash=sha256:fff1005d0b1f3cb511d0ac7e85f54af06afc9d9e433df013a2338d7a0168d174 +aws-sam-translator==1.90.0 \ + --hash=sha256:25f1d5be7980ff57299977ca0bb807caf7b5ea474646bb0fc96e2541f34a20b6 \ + --hash=sha256:35e70accfe4ead2cc4e6df104a991f94a4fc4aa3b1dc4d460dded77cf30f670c # via # aws-sam-cli (setup.py) # cfn-lint @@ -38,87 +36,102 @@ blinker==1.8.2 \ --hash=sha256:1779309f71bf239144b9399d06ae925637cf6634cf6bd131104184531bf67c01 \ --hash=sha256:8f77b09d3bf7c795e969e9486f39c2c5e9c39d4ee07424be2bc594ece9642d83 # via flask -boto3==1.34.147 \ - --hash=sha256:9ec1c6ab22588242a47549f51a63dfc7c21fdf95a94820fc6e629ab060c38bd9 \ - --hash=sha256:e1cef9a1a301866bcdee32ae0c699465eb2345f9a8e613a5835821430165ff6d +boto3==1.34.159 \ + --hash=sha256:21120d23cc37c0e80dc4f64434bc5664d2a5645dcd9bf8a8fa97ed5c82164ca0 \ + --hash=sha256:ffe7bbb88ba81b5d54bc8fa0cfb2f3b7fe63a6cffa0f9207df2ef5c22a1c0587 # 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.147 \ - --hash=sha256:3a483d2a55b247029d6e5e04002153984353c0c19882607af7e37038a7ce72b0 \ - --hash=sha256:6a5b276eb3414b370a084561f23d610a1e8c8e7630f6fe463523fc06766bc887 +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.159 \ + --hash=sha256:9d5b69db82dbc55fce3d58f5d39d0680ca5334d7df596447c29357b9a0669b09 \ + --hash=sha256:d3a298f3b0a3a7758c2bfb8585089e18567c1eee695f939439ef0023e84b32ce # via aws-sam-cli (setup.py) -botocore==1.34.147 \ - --hash=sha256:2e8f000b77e4ca345146cb2edab6403769a517b564f627bb084ab335417f3dbe \ - --hash=sha256:be94a2f4874b1d1705cae2bd512c475047497379651678593acb6c61c50d91de +botocore==1.34.159 \ + --hash=sha256:7633062491457419a49f5860c014251ae85689f78266a3ce020c2c8688a76b97 \ + --hash=sha256:dc28806eb21e3c8d690c422530dff8b4b242ac033cbe98f160a9d37796c09cb1 # via # boto3 # s3transfer -botocore-stubs==1.34.147 \ - --hash=sha256:d69c75b71c2fe1456b724653f586adcd5bf660ff6d104ecb6ac5efb40fcf363b \ - --hash=sha256:ef1643787c95036641cc49700d8e7d48e31826ce4c25b50e2745a4e9104c662b +botocore-stubs==1.34.159 \ + --hash=sha256:b2bf4ff8dd4a39556f6338bdc7e75485282dd7e2c0b7dacdcfc219352c7865ea \ + --hash=sha256:f9f51612960c0fa1b01638816ee3d1ca031f9efc3e1328e4f4d52253b573067a # via boto3-stubs certifi==2024.7.4 \ --hash=sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b \ --hash=sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90 # via requests -cffi==1.16.0 \ - --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \ - --hash=sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a \ - --hash=sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417 \ - --hash=sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab \ - --hash=sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520 \ - --hash=sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36 \ - --hash=sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743 \ - --hash=sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8 \ - --hash=sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed \ - --hash=sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684 \ - --hash=sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56 \ - --hash=sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324 \ - --hash=sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d \ - --hash=sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235 \ - --hash=sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e \ - --hash=sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088 \ - --hash=sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000 \ - --hash=sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7 \ - --hash=sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e \ - --hash=sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673 \ - --hash=sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c \ - --hash=sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe \ - --hash=sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2 \ - --hash=sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098 \ - --hash=sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8 \ - --hash=sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a \ - --hash=sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0 \ - --hash=sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b \ - --hash=sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896 \ - --hash=sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e \ - --hash=sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9 \ - --hash=sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2 \ - --hash=sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b \ - --hash=sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6 \ - --hash=sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404 \ - --hash=sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f \ - --hash=sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0 \ - --hash=sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4 \ - --hash=sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc \ - --hash=sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936 \ - --hash=sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba \ - --hash=sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872 \ - --hash=sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb \ - --hash=sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614 \ - --hash=sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1 \ - --hash=sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d \ - --hash=sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969 \ - --hash=sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b \ - --hash=sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4 \ - --hash=sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627 \ - --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ - --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 +cffi==1.17.0 \ + --hash=sha256:011aff3524d578a9412c8b3cfaa50f2c0bd78e03eb7af7aa5e0df59b158efb2f \ + --hash=sha256:0a048d4f6630113e54bb4b77e315e1ba32a5a31512c31a273807d0027a7e69ab \ + --hash=sha256:0bb15e7acf8ab35ca8b24b90af52c8b391690ef5c4aec3d31f38f0d37d2cc499 \ + --hash=sha256:0d46ee4764b88b91f16661a8befc6bfb24806d885e27436fdc292ed7e6f6d058 \ + --hash=sha256:0e60821d312f99d3e1569202518dddf10ae547e799d75aef3bca3a2d9e8ee693 \ + --hash=sha256:0fdacad9e0d9fc23e519efd5ea24a70348305e8d7d85ecbb1a5fa66dc834e7fb \ + --hash=sha256:14b9cbc8f7ac98a739558eb86fabc283d4d564dafed50216e7f7ee62d0d25377 \ + --hash=sha256:17c6d6d3260c7f2d94f657e6872591fe8733872a86ed1345bda872cfc8c74885 \ + --hash=sha256:1a2ddbac59dc3716bc79f27906c010406155031a1c801410f1bafff17ea304d2 \ + --hash=sha256:2404f3de742f47cb62d023f0ba7c5a916c9c653d5b368cc966382ae4e57da401 \ + --hash=sha256:24658baf6224d8f280e827f0a50c46ad819ec8ba380a42448e24459daf809cf4 \ + --hash=sha256:24aa705a5f5bd3a8bcfa4d123f03413de5d86e497435693b638cbffb7d5d8a1b \ + --hash=sha256:2770bb0d5e3cc0e31e7318db06efcbcdb7b31bcb1a70086d3177692a02256f59 \ + --hash=sha256:331ad15c39c9fe9186ceaf87203a9ecf5ae0ba2538c9e898e3a6967e8ad3db6f \ + --hash=sha256:3aa9d43b02a0c681f0bfbc12d476d47b2b2b6a3f9287f11ee42989a268a1833c \ + --hash=sha256:41f4915e09218744d8bae14759f983e466ab69b178de38066f7579892ff2a555 \ + --hash=sha256:4304d4416ff032ed50ad6bb87416d802e67139e31c0bde4628f36a47a3164bfa \ + --hash=sha256:435a22d00ec7d7ea533db494da8581b05977f9c37338c80bc86314bec2619424 \ + --hash=sha256:45f7cd36186db767d803b1473b3c659d57a23b5fa491ad83c6d40f2af58e4dbb \ + --hash=sha256:48b389b1fd5144603d61d752afd7167dfd205973a43151ae5045b35793232aa2 \ + --hash=sha256:4e67d26532bfd8b7f7c05d5a766d6f437b362c1bf203a3a5ce3593a645e870b8 \ + --hash=sha256:516a405f174fd3b88829eabfe4bb296ac602d6a0f68e0d64d5ac9456194a5b7e \ + --hash=sha256:5ba5c243f4004c750836f81606a9fcb7841f8874ad8f3bf204ff5e56332b72b9 \ + --hash=sha256:5bdc0f1f610d067c70aa3737ed06e2726fd9d6f7bfee4a351f4c40b6831f4e82 \ + --hash=sha256:6107e445faf057c118d5050560695e46d272e5301feffda3c41849641222a828 \ + --hash=sha256:6327b572f5770293fc062a7ec04160e89741e8552bf1c358d1a23eba68166759 \ + --hash=sha256:669b29a9eca6146465cc574659058ed949748f0809a2582d1f1a324eb91054dc \ + --hash=sha256:6ce01337d23884b21c03869d2f68c5523d43174d4fc405490eb0091057943118 \ + --hash=sha256:6d872186c1617d143969defeadac5a904e6e374183e07977eedef9c07c8953bf \ + --hash=sha256:6f76a90c345796c01d85e6332e81cab6d70de83b829cf1d9762d0a3da59c7932 \ + --hash=sha256:70d2aa9fb00cf52034feac4b913181a6e10356019b18ef89bc7c12a283bf5f5a \ + --hash=sha256:7cbc78dc018596315d4e7841c8c3a7ae31cc4d638c9b627f87d52e8abaaf2d29 \ + --hash=sha256:856bf0924d24e7f93b8aee12a3a1095c34085600aa805693fb7f5d1962393206 \ + --hash=sha256:8a98748ed1a1df4ee1d6f927e151ed6c1a09d5ec21684de879c7ea6aa96f58f2 \ + --hash=sha256:93a7350f6706b31f457c1457d3a3259ff9071a66f312ae64dc024f049055f72c \ + --hash=sha256:964823b2fc77b55355999ade496c54dde161c621cb1f6eac61dc30ed1b63cd4c \ + --hash=sha256:a003ac9edc22d99ae1286b0875c460351f4e101f8c9d9d2576e78d7e048f64e0 \ + --hash=sha256:a0ce71725cacc9ebf839630772b07eeec220cbb5f03be1399e0457a1464f8e1a \ + --hash=sha256:a47eef975d2b8b721775a0fa286f50eab535b9d56c70a6e62842134cf7841195 \ + --hash=sha256:a8b5b9712783415695663bd463990e2f00c6750562e6ad1d28e072a611c5f2a6 \ + --hash=sha256:a9015f5b8af1bb6837a3fcb0cdf3b874fe3385ff6274e8b7925d81ccaec3c5c9 \ + --hash=sha256:aec510255ce690d240f7cb23d7114f6b351c733a74c279a84def763660a2c3bc \ + --hash=sha256:b00e7bcd71caa0282cbe3c90966f738e2db91e64092a877c3ff7f19a1628fdcb \ + --hash=sha256:b50aaac7d05c2c26dfd50c3321199f019ba76bb650e346a6ef3616306eed67b0 \ + --hash=sha256:b7b6ea9e36d32582cda3465f54c4b454f62f23cb083ebc7a94e2ca6ef011c3a7 \ + --hash=sha256:bb9333f58fc3a2296fb1d54576138d4cf5d496a2cc118422bd77835e6ae0b9cb \ + --hash=sha256:c1c13185b90bbd3f8b5963cd8ce7ad4ff441924c31e23c975cb150e27c2bf67a \ + --hash=sha256:c3b8bd3133cd50f6b637bb4322822c94c5ce4bf0d724ed5ae70afce62187c492 \ + --hash=sha256:c5d97162c196ce54af6700949ddf9409e9833ef1003b4741c2b39ef46f1d9720 \ + --hash=sha256:c815270206f983309915a6844fe994b2fa47e5d05c4c4cef267c3b30e34dbe42 \ + --hash=sha256:cab2eba3830bf4f6d91e2d6718e0e1c14a2f5ad1af68a89d24ace0c6b17cced7 \ + --hash=sha256:d1df34588123fcc88c872f5acb6f74ae59e9d182a2707097f9e28275ec26a12d \ + --hash=sha256:d6bdcd415ba87846fd317bee0774e412e8792832e7805938987e4ede1d13046d \ + --hash=sha256:db9a30ec064129d605d0f1aedc93e00894b9334ec74ba9c6bdd08147434b33eb \ + --hash=sha256:dbc183e7bef690c9abe5ea67b7b60fdbca81aa8da43468287dae7b5c046107d4 \ + --hash=sha256:dca802c8db0720ce1c49cce1149ff7b06e91ba15fa84b1d59144fef1a1bc7ac2 \ + --hash=sha256:dec6b307ce928e8e112a6bb9921a1cb00a0e14979bf28b98e084a4b8a742bd9b \ + --hash=sha256:df8bb0010fdd0a743b7542589223a2816bdde4d94bb5ad67884348fa2c1c67e8 \ + --hash=sha256:e4094c7b464cf0a858e75cd14b03509e84789abf7b79f8537e6a72152109c76e \ + --hash=sha256:e4760a68cab57bfaa628938e9c2971137e05ce48e762a9cb53b76c9b569f1204 \ + --hash=sha256:eb09b82377233b902d4c3fbeeb7ad731cdab579c6c6fda1f763cd779139e47c3 \ + --hash=sha256:eb862356ee9391dc5a0b3cbc00f416b48c1b9a52d252d898e5b7696a5f9fe150 \ + --hash=sha256:ef9528915df81b8f4c7612b19b8628214c65c9b7f74db2e34a646a0a2a0da2d4 \ + --hash=sha256:f3157624b7558b914cb039fd1af735e5e8049a87c817cc215109ad1c8779df76 \ + --hash=sha256:f3e0992f23bbb0be00a921eae5363329253c3b86287db27092461c887b791e5e \ + --hash=sha256:f9338cc05451f1942d0d8203ec2c346c830f8e86469903d5126c1f0a13a2bcbb \ + --hash=sha256:ffef8fd58a36fb5f1196919638f73dd3ae0db1a878982b27a9a5a176ede4ba91 # via cryptography -cfn-lint==0.87.7 \ - --hash=sha256:85f6b7f32cf155a74d670d53f86b39f99cfc282b02158d98fdab9fc1dba0809e \ - --hash=sha256:ac6ac86dde1ba3d0fb0e217a4d329239a98f00af7862e4fa5ace6c416c4e056c +cfn-lint==1.10.0 \ + --hash=sha256:6c1ad17d50d6f185b27857ef3efbbadbdd53813aa2d3dd502686b0aed617fdea \ + --hash=sha256:fecadfe69882fe3b8e0283530b591a56bcfacfc2d51818bacbd1f862d27a61c6 # via aws-sam-cli (setup.py) chardet==5.2.0 \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ @@ -298,18 +311,10 @@ jmespath==1.0.1 \ # aws-sam-cli (setup.py) # boto3 # botocore -jschema-to-python==1.2.3 \ - --hash=sha256:76ff14fe5d304708ccad1284e4b11f96a658949a31ee7faed9e0995279549b91 \ - --hash=sha256:8a703ca7604d42d74b2815eecf99a33359a8dccbb80806cce386d5e2dd992b05 - # via cfn-lint jsonpatch==1.33 \ --hash=sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade \ --hash=sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c # via cfn-lint -jsonpickle==3.2.2 \ - --hash=sha256:87cd82d237fd72c5a34970e7222dddc0accc13fddf49af84111887ed9a9445aa \ - --hash=sha256:d425fd2b8afe9f5d7d57205153403fbf897782204437882a477e8eed60930f8c - # via jschema-to-python jsonpointer==3.0.0 \ --hash=sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942 \ --hash=sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef @@ -320,15 +325,10 @@ jsonschema==4.23.0 \ # via # aws-sam-cli (setup.py) # aws-sam-translator - # cfn-lint jsonschema-specifications==2023.12.1 \ --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c # via jsonschema -junit-xml==1.9 \ - --hash=sha256:de16a051990d4e25a3982b2dd9e89d671067548718866416faec14d9de56db9f \ - --hash=sha256:ec5ca1a55aefdd76d28fcc0b135251d156c7106fa979686a4b48d62b761b4732 - # via cfn-lint markdown-it-py==3.0.0 \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb @@ -413,25 +413,25 @@ mypy-boto3-cloudformation==1.34.111 \ --hash=sha256:526e928c504fa2880b1774aa10629a04fe0ec70ed2864ab3d3f7772386a1a925 \ --hash=sha256:a02e201d1a9d9a8fb4db5b942d5c537a4e8861c611f0d986126674ac557cb9e8 # via boto3-stubs -mypy-boto3-ecr==1.34.140 \ - --hash=sha256:5c31b1ba2b08115a4363ebe0280a0a68438827f44bb4abaeb77e5e7b757a6f55 \ - --hash=sha256:7a73c68d8c52b932ab2dc3d16493efa7e5c3796e5b191a8249c2fc9555699762 +mypy-boto3-ecr==1.34.154 \ + --hash=sha256:5e4c22ac3af042ba8535a44a08c33494ee232bea8e3b8917a8d9a78a311d50bf \ + --hash=sha256:8e7c7bbc714684ac762c8594dded1dcb214c215d05ed080f45e25b97d9432a99 # via boto3-stubs -mypy-boto3-iam==1.34.83 \ - --hash=sha256:7261315616757ebf7509df0e9b091d5942e470eb51c4b23c662a06873a9a8eca \ - --hash=sha256:dec66a98e29ec1e36178c24b8ff57aab6b91230df97557363bbd90ec06874768 +mypy-boto3-iam==1.34.152 \ + --hash=sha256:2c97e2b05f8e2839921d57114b6a2fc6a990b84462fba3c72a04ab1e382cb0f9 \ + --hash=sha256:e2a6094b53f5043b972765d24d86fce228ae224780b3e3b2a441f5ad8967e279 # via boto3-stubs -mypy-boto3-kinesis==1.34.0 \ - --hash=sha256:1add81c53f6e36599e0c22e142024867759aaf2f4954bcb2baa21c284c852377 \ - --hash=sha256:f404e75badd5977e9f09741b769b8888854bdd411c631344686ab889efe98741 +mypy-boto3-kinesis==1.34.153 \ + --hash=sha256:759a0da81badc5bd5dcf06991fbea931a80e00dfe3766ee522f6f6308e87a696 \ + --hash=sha256:e33bde87f403d660a80345a5eabc5373e79836b4e0b6f261f2bb592fa6908216 # via boto3-stubs mypy-boto3-lambda==1.34.77 \ --hash=sha256:7b81d2a5604fb592e92fe0b284ecd259de071703360a33b71c9b54df46d81c9c \ --hash=sha256:e21022d2eef12aa731af80790410afdba9412b056339823252813bae2adbf553 # via boto3-stubs -mypy-boto3-s3==1.34.138 \ - --hash=sha256:47ded5f06accc10ff9db9d55c85cca88e4f028ec360d7cfcea90377e525cba56 \ - --hash=sha256:7f9770d1f0e9f6fc2ced96daf5c0792b2dbbb4a4f874f28200ff3c940d0815c3 +mypy-boto3-s3==1.34.158 \ + --hash=sha256:a875eb0ee91ba5ac6967291887f6e924eb9dc157966e8181da20533086218166 \ + --hash=sha256:c01f1b2304ba7718c8561aaa2b6dc70fe438c91964256aa6ddc508d1cc553c66 # via boto3-stubs mypy-boto3-schemas==1.34.0 \ --hash=sha256:28c016609dcffc606bd8425ee92894c46e943ab77033e1ae46481f00c39b7f75 \ @@ -449,9 +449,9 @@ mypy-boto3-sqs==1.34.121 \ --hash=sha256:bdbc623235ffc8127cb8753f49323f74a919df552247b0b2caaf85cf9bb495b8 \ --hash=sha256:e92aefacfa08e7094b79002576ef261e4075f5af9c25219fc47fb8452f53fc5f # via boto3-stubs -mypy-boto3-stepfunctions==1.34.137 \ - --hash=sha256:c568275ab1b2d9600352ec26e9915335526d39fc6e7192a664428118f6c7799f \ - --hash=sha256:c78a6abaaf6b3c9eaee183b4cc59cb0d6aa838e2f20698be3d6ad46788a64945 +mypy-boto3-stepfunctions==1.34.149 \ + --hash=sha256:155f6d7aa4b61799166e5beae85386cf5393612e4cbabe7a8426225325e3c12b \ + --hash=sha256:dbe3c90af541178826f0992c58ef3699d5f1f42d0f51ff5b761d4c8036768726 # via boto3-stubs mypy-boto3-sts==1.34.0 \ --hash=sha256:3ba1875c2792b4f35fd918dca957ce09ad197beb7cfbda61f42144ffa9cda05d \ @@ -465,12 +465,6 @@ networkx==3.3 \ --hash=sha256:0c127d8b2f4865f59ae9cb8aafcd60b5c70f3241ebd66f7defad7c4ab90126c9 \ --hash=sha256:28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 # via cfn-lint -pbr==6.0.0 \ - --hash=sha256:4a7317d5e3b17a3dccb6a8cfe67dab65b20551404c52c8ed41279fa4f0cb4cda \ - --hash=sha256:d1377122a5a00e2f940ee482999518efe16d745d423a670c27773dfbc3c9a7d9 - # via - # jschema-to-python - # sarif-om pycparser==2.22 \ --hash=sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6 \ --hash=sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc @@ -593,47 +587,60 @@ pytz==2024.1 \ --hash=sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812 \ --hash=sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319 # via dateparser -pyyaml==6.0.1 \ - --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ - --hash=sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741 \ - --hash=sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206 \ - --hash=sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27 \ - --hash=sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595 \ - --hash=sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62 \ - --hash=sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98 \ - --hash=sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696 \ - --hash=sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d \ - --hash=sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867 \ - --hash=sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47 \ - --hash=sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486 \ - --hash=sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6 \ - --hash=sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3 \ - --hash=sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007 \ - --hash=sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938 \ - --hash=sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c \ - --hash=sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735 \ - --hash=sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d \ - --hash=sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba \ - --hash=sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8 \ - --hash=sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5 \ - --hash=sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd \ - --hash=sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3 \ - --hash=sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0 \ - --hash=sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515 \ - --hash=sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c \ - --hash=sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c \ - --hash=sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924 \ - --hash=sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34 \ - --hash=sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43 \ - --hash=sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859 \ - --hash=sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673 \ - --hash=sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a \ - --hash=sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab \ - --hash=sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa \ - --hash=sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c \ - --hash=sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585 \ - --hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \ - --hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f +pyyaml==6.0.2 \ + --hash=sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff \ + --hash=sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48 \ + --hash=sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086 \ + --hash=sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e \ + --hash=sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133 \ + --hash=sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5 \ + --hash=sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484 \ + --hash=sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee \ + --hash=sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5 \ + --hash=sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68 \ + --hash=sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a \ + --hash=sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf \ + --hash=sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99 \ + --hash=sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8 \ + --hash=sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85 \ + --hash=sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19 \ + --hash=sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc \ + --hash=sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a \ + --hash=sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1 \ + --hash=sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317 \ + --hash=sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c \ + --hash=sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631 \ + --hash=sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d \ + --hash=sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652 \ + --hash=sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5 \ + --hash=sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e \ + --hash=sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b \ + --hash=sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8 \ + --hash=sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476 \ + --hash=sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706 \ + --hash=sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563 \ + --hash=sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237 \ + --hash=sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b \ + --hash=sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083 \ + --hash=sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180 \ + --hash=sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425 \ + --hash=sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e \ + --hash=sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f \ + --hash=sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725 \ + --hash=sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183 \ + --hash=sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab \ + --hash=sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774 \ + --hash=sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725 \ + --hash=sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e \ + --hash=sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5 \ + --hash=sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d \ + --hash=sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290 \ + --hash=sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44 \ + --hash=sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed \ + --hash=sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4 \ + --hash=sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba \ + --hash=sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12 \ + --hash=sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4 # via # aws-sam-cli (setup.py) # cfn-lint @@ -644,86 +651,86 @@ referencing==0.35.1 \ # via # jsonschema # jsonschema-specifications -regex==2024.5.15 \ - --hash=sha256:0721931ad5fe0dda45d07f9820b90b2148ccdd8e45bb9e9b42a146cb4f695649 \ - --hash=sha256:10002e86e6068d9e1c91eae8295ef690f02f913c57db120b58fdd35a6bb1af35 \ - --hash=sha256:10e4ce0dca9ae7a66e6089bb29355d4432caed736acae36fef0fdd7879f0b0cb \ - --hash=sha256:119af6e56dce35e8dfb5222573b50c89e5508d94d55713c75126b753f834de68 \ - --hash=sha256:1337b7dbef9b2f71121cdbf1e97e40de33ff114801263b275aafd75303bd62b5 \ - --hash=sha256:13cdaf31bed30a1e1c2453ef6015aa0983e1366fad2667657dbcac7b02f67133 \ - --hash=sha256:1595f2d10dff3d805e054ebdc41c124753631b6a471b976963c7b28543cf13b0 \ - --hash=sha256:16093f563098448ff6b1fa68170e4acbef94e6b6a4e25e10eae8598bb1694b5d \ - --hash=sha256:1878b8301ed011704aea4c806a3cadbd76f84dece1ec09cc9e4dc934cfa5d4da \ - --hash=sha256:19068a6a79cf99a19ccefa44610491e9ca02c2be3305c7760d3831d38a467a6f \ - --hash=sha256:19dfb1c504781a136a80ecd1fff9f16dddf5bb43cec6871778c8a907a085bb3d \ - --hash=sha256:1b5269484f6126eee5e687785e83c6b60aad7663dafe842b34691157e5083e53 \ - --hash=sha256:1c1c174d6ec38d6c8a7504087358ce9213d4332f6293a94fbf5249992ba54efa \ - --hash=sha256:2431b9e263af1953c55abbd3e2efca67ca80a3de8a0437cb58e2421f8184717a \ - --hash=sha256:287eb7f54fc81546346207c533ad3c2c51a8d61075127d7f6d79aaf96cdee890 \ - --hash=sha256:2b4c884767504c0e2401babe8b5b7aea9148680d2e157fa28f01529d1f7fcf67 \ - --hash=sha256:35cb514e137cb3488bce23352af3e12fb0dbedd1ee6e60da053c69fb1b29cc6c \ - --hash=sha256:391d7f7f1e409d192dba8bcd42d3e4cf9e598f3979cdaed6ab11288da88cb9f2 \ - --hash=sha256:3ad070b823ca5890cab606c940522d05d3d22395d432f4aaaf9d5b1653e47ced \ - --hash=sha256:3cd7874d57f13bf70078f1ff02b8b0aa48d5b9ed25fc48547516c6aba36f5741 \ - --hash=sha256:3e507ff1e74373c4d3038195fdd2af30d297b4f0950eeda6f515ae3d84a1770f \ - --hash=sha256:455705d34b4154a80ead722f4f185b04c4237e8e8e33f265cd0798d0e44825fa \ - --hash=sha256:4a605586358893b483976cffc1723fb0f83e526e8f14c6e6614e75919d9862cf \ - --hash=sha256:4babf07ad476aaf7830d77000874d7611704a7fcf68c9c2ad151f5d94ae4bfc4 \ - --hash=sha256:4eee78a04e6c67e8391edd4dad3279828dd66ac4b79570ec998e2155d2e59fd5 \ - --hash=sha256:5397de3219a8b08ae9540c48f602996aa6b0b65d5a61683e233af8605c42b0f2 \ - --hash=sha256:5b5467acbfc153847d5adb21e21e29847bcb5870e65c94c9206d20eb4e99a384 \ - --hash=sha256:5eaa7ddaf517aa095fa8da0b5015c44d03da83f5bd49c87961e3c997daed0de7 \ - --hash=sha256:632b01153e5248c134007209b5c6348a544ce96c46005d8456de1d552455b014 \ - --hash=sha256:64c65783e96e563103d641760664125e91bd85d8e49566ee560ded4da0d3e704 \ - --hash=sha256:64f18a9a3513a99c4bef0e3efd4c4a5b11228b48aa80743be822b71e132ae4f5 \ - --hash=sha256:673b5a6da4557b975c6c90198588181029c60793835ce02f497ea817ff647cb2 \ - --hash=sha256:68811ab14087b2f6e0fc0c2bae9ad689ea3584cad6917fc57be6a48bbd012c49 \ - --hash=sha256:6e8d717bca3a6e2064fc3a08df5cbe366369f4b052dcd21b7416e6d71620dca1 \ - --hash=sha256:71a455a3c584a88f654b64feccc1e25876066c4f5ef26cd6dd711308aa538694 \ - --hash=sha256:72d7a99cd6b8f958e85fc6ca5b37c4303294954eac1376535b03c2a43eb72629 \ - --hash=sha256:7b59138b219ffa8979013be7bc85bb60c6f7b7575df3d56dc1e403a438c7a3f6 \ - --hash=sha256:7dbe2467273b875ea2de38ded4eba86cbcbc9a1a6d0aa11dcf7bd2e67859c435 \ - --hash=sha256:833616ddc75ad595dee848ad984d067f2f31be645d603e4d158bba656bbf516c \ - --hash=sha256:87e2a9c29e672fc65523fb47a90d429b70ef72b901b4e4b1bd42387caf0d6835 \ - --hash=sha256:8fe45aa3f4aa57faabbc9cb46a93363edd6197cbc43523daea044e9ff2fea83e \ - --hash=sha256:9e717956dcfd656f5055cc70996ee2cc82ac5149517fc8e1b60261b907740201 \ - --hash=sha256:9efa1a32ad3a3ea112224897cdaeb6aa00381627f567179c0314f7b65d354c62 \ - --hash=sha256:9ff11639a8d98969c863d4617595eb5425fd12f7c5ef6621a4b74b71ed8726d5 \ - --hash=sha256:a094801d379ab20c2135529948cb84d417a2169b9bdceda2a36f5f10977ebc16 \ - --hash=sha256:a0981022dccabca811e8171f913de05720590c915b033b7e601f35ce4ea7019f \ - --hash=sha256:a0bd000c6e266927cb7a1bc39d55be95c4b4f65c5be53e659537537e019232b1 \ - --hash=sha256:a32b96f15c8ab2e7d27655969a23895eb799de3665fa94349f3b2fbfd547236f \ - --hash=sha256:a81e3cfbae20378d75185171587cbf756015ccb14840702944f014e0d93ea09f \ - --hash=sha256:ac394ff680fc46b97487941f5e6ae49a9f30ea41c6c6804832063f14b2a5a145 \ - --hash=sha256:ada150c5adfa8fbcbf321c30c751dc67d2f12f15bd183ffe4ec7cde351d945b3 \ - --hash=sha256:b2b6f1b3bb6f640c1a92be3bbfbcb18657b125b99ecf141fb3310b5282c7d4ed \ - --hash=sha256:b802512f3e1f480f41ab5f2cfc0e2f761f08a1f41092d6718868082fc0d27143 \ - --hash=sha256:ba68168daedb2c0bab7fd7e00ced5ba90aebf91024dea3c88ad5063c2a562cca \ - --hash=sha256:bfc4f82cabe54f1e7f206fd3d30fda143f84a63fe7d64a81558d6e5f2e5aaba9 \ - --hash=sha256:c0c18345010870e58238790a6779a1219b4d97bd2e77e1140e8ee5d14df071aa \ - --hash=sha256:c3bea0ba8b73b71b37ac833a7f3fd53825924165da6a924aec78c13032f20850 \ - --hash=sha256:c486b4106066d502495b3025a0a7251bf37ea9540433940a23419461ab9f2a80 \ - --hash=sha256:c49e15eac7c149f3670b3e27f1f28a2c1ddeccd3a2812cba953e01be2ab9b5fe \ - --hash=sha256:c6a2b494a76983df8e3d3feea9b9ffdd558b247e60b92f877f93a1ff43d26656 \ - --hash=sha256:cab12877a9bdafde5500206d1020a584355a97884dfd388af3699e9137bf7388 \ - --hash=sha256:cac27dcaa821ca271855a32188aa61d12decb6fe45ffe3e722401fe61e323cd1 \ - --hash=sha256:cdd09d47c0b2efee9378679f8510ee6955d329424c659ab3c5e3a6edea696294 \ - --hash=sha256:cf2430df4148b08fb4324b848672514b1385ae3807651f3567871f130a728cc3 \ - --hash=sha256:d0a3d8d6acf0c78a1fff0e210d224b821081330b8524e3e2bc5a68ef6ab5803d \ - --hash=sha256:d0c0c0003c10f54a591d220997dd27d953cd9ccc1a7294b40a4be5312be8797b \ - --hash=sha256:d1f059a4d795e646e1c37665b9d06062c62d0e8cc3c511fe01315973a6542e40 \ - --hash=sha256:d347a741ea871c2e278fde6c48f85136c96b8659b632fb57a7d1ce1872547600 \ - --hash=sha256:d3ee02d9e5f482cc8309134a91eeaacbdd2261ba111b0fef3748eeb4913e6a2c \ - --hash=sha256:d99ceffa25ac45d150e30bd9ed14ec6039f2aad0ffa6bb87a5936f5782fc1569 \ - --hash=sha256:e38a7d4e8f633a33b4c7350fbd8bad3b70bf81439ac67ac38916c4a86b465456 \ - --hash=sha256:e4682f5ba31f475d58884045c1a97a860a007d44938c4c0895f41d64481edbc9 \ - --hash=sha256:e5bb9425fe881d578aeca0b2b4b3d314ec88738706f66f219c194d67179337cb \ - --hash=sha256:e64198f6b856d48192bf921421fdd8ad8eb35e179086e99e99f711957ffedd6e \ - --hash=sha256:e6662686aeb633ad65be2a42b4cb00178b3fbf7b91878f9446075c404ada552f \ - --hash=sha256:ec54d5afa89c19c6dd8541a133be51ee1017a38b412b1321ccb8d6ddbeb4cf7d \ - --hash=sha256:f5b1dff3ad008dccf18e652283f5e5339d70bf8ba7c98bf848ac33db10f7bc7a \ - --hash=sha256:f8ec0c2fea1e886a19c3bee0cd19d862b3aa75dcdfb42ebe8ed30708df64687a \ - --hash=sha256:f9ebd0a36102fcad2f03696e8af4ae682793a5d30b46c647eaf280d6cfb32796 +regex==2024.7.24 \ + --hash=sha256:01b689e887f612610c869421241e075c02f2e3d1ae93a037cb14f88ab6a8934c \ + --hash=sha256:04ce29e2c5fedf296b1a1b0acc1724ba93a36fb14031f3abfb7abda2806c1535 \ + --hash=sha256:0ffe3f9d430cd37d8fa5632ff6fb36d5b24818c5c986893063b4e5bdb84cdf24 \ + --hash=sha256:18300a1d78cf1290fa583cd8b7cde26ecb73e9f5916690cf9d42de569c89b1ce \ + --hash=sha256:185e029368d6f89f36e526764cf12bf8d6f0e3a2a7737da625a76f594bdfcbfc \ + --hash=sha256:19c65b00d42804e3fbea9708f0937d157e53429a39b7c61253ff15670ff62cb5 \ + --hash=sha256:228b0d3f567fafa0633aee87f08b9276c7062da9616931382993c03808bb68ce \ + --hash=sha256:23acc72f0f4e1a9e6e9843d6328177ae3074b4182167e34119ec7233dfeccf53 \ + --hash=sha256:25419b70ba00a16abc90ee5fce061228206173231f004437730b67ac77323f0d \ + --hash=sha256:2dfbb8baf8ba2c2b9aa2807f44ed272f0913eeeba002478c4577b8d29cde215c \ + --hash=sha256:2f1baff13cc2521bea83ab2528e7a80cbe0ebb2c6f0bfad15be7da3aed443908 \ + --hash=sha256:33e2614a7ce627f0cdf2ad104797d1f68342d967de3695678c0cb84f530709f8 \ + --hash=sha256:3426de3b91d1bc73249042742f45c2148803c111d1175b283270177fdf669024 \ + --hash=sha256:382281306e3adaaa7b8b9ebbb3ffb43358a7bbf585fa93821300a418bb975281 \ + --hash=sha256:3d974d24edb231446f708c455fd08f94c41c1ff4f04bcf06e5f36df5ef50b95a \ + --hash=sha256:3f3b6ca8eae6d6c75a6cff525c8530c60e909a71a15e1b731723233331de4169 \ + --hash=sha256:3fac296f99283ac232d8125be932c5cd7644084a30748fda013028c815ba3364 \ + --hash=sha256:416c0e4f56308f34cdb18c3f59849479dde5b19febdcd6e6fa4d04b6c31c9faa \ + --hash=sha256:438d9f0f4bc64e8dea78274caa5af971ceff0f8771e1a2333620969936ba10be \ + --hash=sha256:43affe33137fcd679bdae93fb25924979517e011f9dea99163f80b82eadc7e53 \ + --hash=sha256:44fc61b99035fd9b3b9453f1713234e5a7c92a04f3577252b45feefe1b327759 \ + --hash=sha256:45104baae8b9f67569f0f1dca5e1f1ed77a54ae1cd8b0b07aba89272710db61e \ + --hash=sha256:4fdd1384619f406ad9037fe6b6eaa3de2749e2e12084abc80169e8e075377d3b \ + --hash=sha256:538d30cd96ed7d1416d3956f94d54e426a8daf7c14527f6e0d6d425fcb4cca52 \ + --hash=sha256:558a57cfc32adcf19d3f791f62b5ff564922942e389e3cfdb538a23d65a6b610 \ + --hash=sha256:5eefee9bfe23f6df09ffb6dfb23809f4d74a78acef004aa904dc7c88b9944b05 \ + --hash=sha256:64bd50cf16bcc54b274e20235bf8edbb64184a30e1e53873ff8d444e7ac656b2 \ + --hash=sha256:65fd3d2e228cae024c411c5ccdffae4c315271eee4a8b839291f84f796b34eca \ + --hash=sha256:66b4c0731a5c81921e938dcf1a88e978264e26e6ac4ec96a4d21ae0354581ae0 \ + --hash=sha256:68a8f8c046c6466ac61a36b65bb2395c74451df2ffb8458492ef49900efed293 \ + --hash=sha256:6a1141a1dcc32904c47f6846b040275c6e5de0bf73f17d7a409035d55b76f289 \ + --hash=sha256:6b9fc7e9cc983e75e2518496ba1afc524227c163e43d706688a6bb9eca41617e \ + --hash=sha256:6f51f9556785e5a203713f5efd9c085b4a45aecd2a42573e2b5041881b588d1f \ + --hash=sha256:7214477bf9bd195894cf24005b1e7b496f46833337b5dedb7b2a6e33f66d962c \ + --hash=sha256:731fcd76bbdbf225e2eb85b7c38da9633ad3073822f5ab32379381e8c3c12e94 \ + --hash=sha256:74007a5b25b7a678459f06559504f1eec2f0f17bca218c9d56f6a0a12bfffdad \ + --hash=sha256:7a5486ca56c8869070a966321d5ab416ff0f83f30e0e2da1ab48815c8d165d46 \ + --hash=sha256:7c479f5ae937ec9985ecaf42e2e10631551d909f203e31308c12d703922742f9 \ + --hash=sha256:7df9ea48641da022c2a3c9c641650cd09f0cd15e8908bf931ad538f5ca7919c9 \ + --hash=sha256:7e37e809b9303ec3a179085415cb5f418ecf65ec98cdfe34f6a078b46ef823ee \ + --hash=sha256:80c811cfcb5c331237d9bad3bea2c391114588cf4131707e84d9493064d267f9 \ + --hash=sha256:836d3cc225b3e8a943d0b02633fb2f28a66e281290302a79df0e1eaa984ff7c1 \ + --hash=sha256:84c312cdf839e8b579f504afcd7b65f35d60b6285d892b19adea16355e8343c9 \ + --hash=sha256:86b17ba823ea76256b1885652e3a141a99a5c4422f4a869189db328321b73799 \ + --hash=sha256:871e3ab2838fbcb4e0865a6e01233975df3a15e6fce93b6f99d75cacbd9862d1 \ + --hash=sha256:88ecc3afd7e776967fa16c80f974cb79399ee8dc6c96423321d6f7d4b881c92b \ + --hash=sha256:8bc593dcce679206b60a538c302d03c29b18e3d862609317cb560e18b66d10cf \ + --hash=sha256:8fd5afd101dcf86a270d254364e0e8dddedebe6bd1ab9d5f732f274fa00499a5 \ + --hash=sha256:945352286a541406f99b2655c973852da7911b3f4264e010218bbc1cc73168f2 \ + --hash=sha256:973335b1624859cb0e52f96062a28aa18f3a5fc77a96e4a3d6d76e29811a0e6e \ + --hash=sha256:994448ee01864501912abf2bad9203bffc34158e80fe8bfb5b031f4f8e16da51 \ + --hash=sha256:9cfd009eed1a46b27c14039ad5bbc5e71b6367c5b2e6d5f5da0ea91600817506 \ + --hash=sha256:a2ec4419a3fe6cf8a4795752596dfe0adb4aea40d3683a132bae9c30b81e8d73 \ + --hash=sha256:a4997716674d36a82eab3e86f8fa77080a5d8d96a389a61ea1d0e3a94a582cf7 \ + --hash=sha256:a512eed9dfd4117110b1881ba9a59b31433caed0c4101b361f768e7bcbaf93c5 \ + --hash=sha256:a82465ebbc9b1c5c50738536fdfa7cab639a261a99b469c9d4c7dcbb2b3f1e57 \ + --hash=sha256:ae2757ace61bc4061b69af19e4689fa4416e1a04840f33b441034202b5cd02d4 \ + --hash=sha256:b16582783f44fbca6fcf46f61347340c787d7530d88b4d590a397a47583f31dd \ + --hash=sha256:ba2537ef2163db9e6ccdbeb6f6424282ae4dea43177402152c67ef869cf3978b \ + --hash=sha256:bf7a89eef64b5455835f5ed30254ec19bf41f7541cd94f266ab7cbd463f00c41 \ + --hash=sha256:c0abb5e4e8ce71a61d9446040c1e86d4e6d23f9097275c5bd49ed978755ff0fe \ + --hash=sha256:c414cbda77dbf13c3bc88b073a1a9f375c7b0cb5e115e15d4b73ec3a2fbc6f59 \ + --hash=sha256:c51edc3541e11fbe83f0c4d9412ef6c79f664a3745fab261457e84465ec9d5a8 \ + --hash=sha256:c5e69fd3eb0b409432b537fe3c6f44ac089c458ab6b78dcec14478422879ec5f \ + --hash=sha256:c918b7a1e26b4ab40409820ddccc5d49871a82329640f5005f73572d5eaa9b5e \ + --hash=sha256:c9bb87fdf2ab2370f21e4d5636e5317775e5d51ff32ebff2cf389f71b9b13750 \ + --hash=sha256:ca5b2028c2f7af4e13fb9fc29b28d0ce767c38c7facdf64f6c2cd040413055f1 \ + --hash=sha256:d0a07763776188b4db4c9c7fb1b8c494049f84659bb387b71c73bbc07f189e96 \ + --hash=sha256:d33a0021893ede5969876052796165bab6006559ab845fd7b515a30abdd990dc \ + --hash=sha256:d55588cba7553f0b6ec33130bc3e114b355570b45785cebdc9daed8c637dd440 \ + --hash=sha256:dac8e84fff5d27420f3c1e879ce9929108e873667ec87e0c8eeb413a5311adfe \ + --hash=sha256:eaef80eac3b4cfbdd6de53c6e108b4c534c21ae055d1dbea2de6b3b8ff3def38 \ + --hash=sha256:eb462f0e346fcf41a901a126b50f8781e9a474d3927930f3490f38a6e73b6950 \ + --hash=sha256:eb563dd3aea54c797adf513eeec819c4213d7dbfc311874eb4fd28d10f2ff0f2 \ + --hash=sha256:f273674b445bcb6e4409bf8d1be67bc4b58e8b46fd0d560055d515b8830063cd \ + --hash=sha256:f6442f0f0ff81775eaa5b05af8a0ffa1dda36e9cf6ec1e0d3d245e8564b684ce \ + --hash=sha256:fb168b5924bef397b5ba13aabd8cf5df7d3d93f10218d7b925e360d436863f66 \ + --hash=sha256:fbf8c2f00904eaf63ff37718eb13acf8e178cb940520e47b2f05027f5bb34ce3 \ + --hash=sha256:fe4ebef608553aff8deb845c7f4f1d0740ff76fa672c011cc0bacb2a00fbde86 # via # aws-sam-cli (setup.py) # cfn-lint @@ -741,110 +748,110 @@ rich==13.7.1 \ # via # aws-sam-cli (setup.py) # cookiecutter -rpds-py==0.19.1 \ - --hash=sha256:01227f8b3e6c8961490d869aa65c99653df80d2f0a7fde8c64ebddab2b9b02fd \ - --hash=sha256:08ce9c95a0b093b7aec75676b356a27879901488abc27e9d029273d280438505 \ - --hash=sha256:0b02dd77a2de6e49078c8937aadabe933ceac04b41c5dde5eca13a69f3cf144e \ - --hash=sha256:0d4b52811dcbc1aba08fd88d475f75b4f6db0984ba12275d9bed1a04b2cae9b5 \ - --hash=sha256:13e6d4840897d4e4e6b2aa1443e3a8eca92b0402182aafc5f4ca1f5e24f9270a \ - --hash=sha256:1a129c02b42d46758c87faeea21a9f574e1c858b9f358b6dd0bbd71d17713175 \ - --hash=sha256:1a8dfa125b60ec00c7c9baef945bb04abf8ac772d8ebefd79dae2a5f316d7850 \ - --hash=sha256:1c32e41de995f39b6b315d66c27dea3ef7f7c937c06caab4c6a79a5e09e2c415 \ - --hash=sha256:1d494887d40dc4dd0d5a71e9d07324e5c09c4383d93942d391727e7a40ff810b \ - --hash=sha256:1d4af2eb520d759f48f1073ad3caef997d1bfd910dc34e41261a595d3f038a94 \ - --hash=sha256:1fb93d3486f793d54a094e2bfd9cd97031f63fcb5bc18faeb3dd4b49a1c06523 \ - --hash=sha256:24f8ae92c7fae7c28d0fae9b52829235df83f34847aa8160a47eb229d9666c7b \ - --hash=sha256:24fc5a84777cb61692d17988989690d6f34f7f95968ac81398d67c0d0994a897 \ - --hash=sha256:26ab43b6d65d25b1a333c8d1b1c2f8399385ff683a35ab5e274ba7b8bb7dc61c \ - --hash=sha256:271accf41b02687cef26367c775ab220372ee0f4925591c6796e7c148c50cab5 \ - --hash=sha256:2ddd50f18ebc05ec29a0d9271e9dbe93997536da3546677f8ca00b76d477680c \ - --hash=sha256:31dd5794837f00b46f4096aa8ccaa5972f73a938982e32ed817bb520c465e520 \ - --hash=sha256:31e450840f2f27699d014cfc8865cc747184286b26d945bcea6042bb6aa4d26e \ - --hash=sha256:32e0db3d6e4f45601b58e4ac75c6f24afbf99818c647cc2066f3e4b192dabb1f \ - --hash=sha256:346557f5b1d8fd9966059b7a748fd79ac59f5752cd0e9498d6a40e3ac1c1875f \ - --hash=sha256:34bca66e2e3eabc8a19e9afe0d3e77789733c702c7c43cd008e953d5d1463fde \ - --hash=sha256:3511f6baf8438326e351097cecd137eb45c5f019944fe0fd0ae2fea2fd26be39 \ - --hash=sha256:35af5e4d5448fa179fd7fff0bba0fba51f876cd55212f96c8bbcecc5c684ae5c \ - --hash=sha256:3837c63dd6918a24de6c526277910e3766d8c2b1627c500b155f3eecad8fad65 \ - --hash=sha256:39d67896f7235b2c886fb1ee77b1491b77049dcef6fbf0f401e7b4cbed86bbd4 \ - --hash=sha256:3b823be829407393d84ee56dc849dbe3b31b6a326f388e171555b262e8456cc1 \ - --hash=sha256:3c73254c256081704dba0a333457e2fb815364018788f9b501efe7c5e0ada401 \ - --hash=sha256:3ddab996807c6b4227967fe1587febade4e48ac47bb0e2d3e7858bc621b1cace \ - --hash=sha256:3e1dc59a5e7bc7f44bd0c048681f5e05356e479c50be4f2c1a7089103f1621d5 \ - --hash=sha256:4383beb4a29935b8fa28aca8fa84c956bf545cb0c46307b091b8d312a9150e6a \ - --hash=sha256:4cc4bc73e53af8e7a42c8fd7923bbe35babacfa7394ae9240b3430b5dcf16b2a \ - --hash=sha256:4dd02e29c8cbed21a1875330b07246b71121a1c08e29f0ee3db5b4cfe16980c4 \ - --hash=sha256:4f580ae79d0b861dfd912494ab9d477bea535bfb4756a2269130b6607a21802e \ - --hash=sha256:53dbc35808c6faa2ce3e48571f8f74ef70802218554884787b86a30947842a14 \ - --hash=sha256:56313be667a837ff1ea3508cebb1ef6681d418fa2913a0635386cf29cff35165 \ - --hash=sha256:57863d16187995c10fe9cf911b897ed443ac68189179541734502353af33e693 \ - --hash=sha256:5953391af1405f968eb5701ebbb577ebc5ced8d0041406f9052638bafe52209d \ - --hash=sha256:5beffdbe766cfe4fb04f30644d822a1080b5359df7db3a63d30fa928375b2720 \ - --hash=sha256:5e360188b72f8080fefa3adfdcf3618604cc8173651c9754f189fece068d2a45 \ - --hash=sha256:5e58b61dcbb483a442c6239c3836696b79f2cd8e7eec11e12155d3f6f2d886d1 \ - --hash=sha256:69084fd29bfeff14816666c93a466e85414fe6b7d236cfc108a9c11afa6f7301 \ - --hash=sha256:6d1d7539043b2b31307f2c6c72957a97c839a88b2629a348ebabe5aa8b626d6b \ - --hash=sha256:6d8b735c4d162dc7d86a9cf3d717f14b6c73637a1f9cd57fe7e61002d9cb1972 \ - --hash=sha256:6ea961a674172ed2235d990d7edf85d15d8dfa23ab8575e48306371c070cda67 \ - --hash=sha256:71157f9db7f6bc6599a852852f3389343bea34315b4e6f109e5cbc97c1fb2963 \ - --hash=sha256:720f3108fb1bfa32e51db58b832898372eb5891e8472a8093008010911e324c5 \ - --hash=sha256:74129d5ffc4cde992d89d345f7f7d6758320e5d44a369d74d83493429dad2de5 \ - --hash=sha256:747251e428406b05fc86fee3904ee19550c4d2d19258cef274e2151f31ae9d38 \ - --hash=sha256:75130df05aae7a7ac171b3b5b24714cffeabd054ad2ebc18870b3aa4526eba23 \ - --hash=sha256:7b3661e6d4ba63a094138032c1356d557de5b3ea6fd3cca62a195f623e381c76 \ - --hash=sha256:7d5c7e32f3ee42f77d8ff1a10384b5cdcc2d37035e2e3320ded909aa192d32c3 \ - --hash=sha256:8124101e92c56827bebef084ff106e8ea11c743256149a95b9fd860d3a4f331f \ - --hash=sha256:81db2e7282cc0487f500d4db203edc57da81acde9e35f061d69ed983228ffe3b \ - --hash=sha256:840e18c38098221ea6201f091fc5d4de6128961d2930fbbc96806fb43f69aec1 \ - --hash=sha256:89cc8921a4a5028d6dd388c399fcd2eef232e7040345af3d5b16c04b91cf3c7e \ - --hash=sha256:8b32cd4ab6db50c875001ba4f5a6b30c0f42151aa1fbf9c2e7e3674893fb1dc4 \ - --hash=sha256:8df1c283e57c9cb4d271fdc1875f4a58a143a2d1698eb0d6b7c0d7d5f49c53a1 \ - --hash=sha256:902cf4739458852fe917104365ec0efbea7d29a15e4276c96a8d33e6ed8ec137 \ - --hash=sha256:97fbb77eaeb97591efdc654b8b5f3ccc066406ccfb3175b41382f221ecc216e8 \ - --hash=sha256:9c7042488165f7251dc7894cd533a875d2875af6d3b0e09eda9c4b334627ad1c \ - --hash=sha256:9e318e6786b1e750a62f90c6f7fa8b542102bdcf97c7c4de2a48b50b61bd36ec \ - --hash=sha256:a9421b23c85f361a133aa7c5e8ec757668f70343f4ed8fdb5a4a14abd5437244 \ - --hash=sha256:aaf71f95b21f9dc708123335df22e5a2fef6307e3e6f9ed773b2e0938cc4d491 \ - --hash=sha256:afedc35fe4b9e30ab240b208bb9dc8938cb4afe9187589e8d8d085e1aacb8309 \ - --hash=sha256:b5e28e56143750808c1c79c70a16519e9bc0a68b623197b96292b21b62d6055c \ - --hash=sha256:b82c9514c6d74b89a370c4060bdb80d2299bc6857e462e4a215b4ef7aa7b090e \ - --hash=sha256:b8f78398e67a7227aefa95f876481485403eb974b29e9dc38b307bb6eb2315ea \ - --hash=sha256:bbda75f245caecff8faa7e32ee94dfaa8312a3367397975527f29654cd17a6ed \ - --hash=sha256:bca34e913d27401bda2a6f390d0614049f5a95b3b11cd8eff80fe4ec340a1208 \ - --hash=sha256:bd04d8cab16cab5b0a9ffc7d10f0779cf1120ab16c3925404428f74a0a43205a \ - --hash=sha256:c149a652aeac4902ecff2dd93c3b2681c608bd5208c793c4a99404b3e1afc87c \ - --hash=sha256:c2087dbb76a87ec2c619253e021e4fb20d1a72580feeaa6892b0b3d955175a71 \ - --hash=sha256:c34f751bf67cab69638564eee34023909380ba3e0d8ee7f6fe473079bf93f09b \ - --hash=sha256:c6d20c8896c00775e6f62d8373aba32956aa0b850d02b5ec493f486c88e12859 \ - --hash=sha256:c7af6f7b80f687b33a4cdb0a785a5d4de1fb027a44c9a049d8eb67d5bfe8a687 \ - --hash=sha256:c7b07959866a6afb019abb9564d8a55046feb7a84506c74a6f197cbcdf8a208e \ - --hash=sha256:ca0dda0c5715efe2ab35bb83f813f681ebcd2840d8b1b92bfc6fe3ab382fae4a \ - --hash=sha256:cdb7eb3cf3deb3dd9e7b8749323b5d970052711f9e1e9f36364163627f96da58 \ - --hash=sha256:ce757c7c90d35719b38fa3d4ca55654a76a40716ee299b0865f2de21c146801c \ - --hash=sha256:d1fa67ef839bad3815124f5f57e48cd50ff392f4911a9f3cf449d66fa3df62a5 \ - --hash=sha256:d2dbd8f4990d4788cb122f63bf000357533f34860d269c1a8e90ae362090ff3a \ - --hash=sha256:d4ec0046facab83012d821b33cead742a35b54575c4edfb7ed7445f63441835f \ - --hash=sha256:dbceedcf4a9329cc665452db1aaf0845b85c666e4885b92ee0cddb1dbf7e052a \ - --hash=sha256:dc733d35f861f8d78abfaf54035461e10423422999b360966bf1c443cbc42705 \ - --hash=sha256:dd635c2c4043222d80d80ca1ac4530a633102a9f2ad12252183bcf338c1b9474 \ - --hash=sha256:de1f7cd5b6b351e1afd7568bdab94934d656abe273d66cda0ceea43bbc02a0c2 \ - --hash=sha256:df7c841813f6265e636fe548a49664c77af31ddfa0085515326342a751a6ba51 \ - --hash=sha256:e0f9d268b19e8f61bf42a1da48276bcd05f7ab5560311f541d22557f8227b866 \ - --hash=sha256:e2d66eb41ffca6cc3c91d8387509d27ba73ad28371ef90255c50cb51f8953301 \ - --hash=sha256:e429fc517a1c5e2a70d576077231538a98d59a45dfc552d1ac45a132844e6dfb \ - --hash=sha256:e4d2b88efe65544a7d5121b0c3b003ebba92bfede2ea3577ce548b69c5235185 \ - --hash=sha256:e76c902d229a3aa9d5ceb813e1cbcc69bf5bda44c80d574ff1ac1fa3136dea71 \ - --hash=sha256:ef07a0a1d254eeb16455d839cef6e8c2ed127f47f014bbda64a58b5482b6c836 \ - --hash=sha256:f09529d2332264a902688031a83c19de8fda5eb5881e44233286b9c9ec91856d \ - --hash=sha256:f0a6d4a93d2a05daec7cb885157c97bbb0be4da739d6f9dfb02e101eb40921cd \ - --hash=sha256:f0cf2a0dbb5987da4bd92a7ca727eadb225581dd9681365beba9accbe5308f7d \ - --hash=sha256:f2671cb47e50a97f419a02cd1e0c339b31de017b033186358db92f4d8e2e17d8 \ - --hash=sha256:f35b34a5184d5e0cc360b61664c1c06e866aab077b5a7c538a3e20c8fcdbf90b \ - --hash=sha256:f3d73022990ab0c8b172cce57c69fd9a89c24fd473a5e79cbce92df87e3d9c48 \ - --hash=sha256:f5b8353ea1a4d7dfb59a7f45c04df66ecfd363bb5b35f33b11ea579111d4655f \ - --hash=sha256:f809a17cc78bd331e137caa25262b507225854073fd319e987bd216bed911b7c \ - --hash=sha256:f9bc4161bd3b970cd6a6fcda70583ad4afd10f2750609fb1f3ca9505050d4ef3 \ - --hash=sha256:fdf4890cda3b59170009d012fca3294c00140e7f2abe1910e6a730809d0f3f9b +rpds-py==0.20.0 \ + --hash=sha256:06db23d43f26478303e954c34c75182356ca9aa7797d22c5345b16871ab9c45c \ + --hash=sha256:0e13e6952ef264c40587d510ad676a988df19adea20444c2b295e536457bc585 \ + --hash=sha256:11ef6ce74616342888b69878d45e9f779b95d4bd48b382a229fe624a409b72c5 \ + --hash=sha256:1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6 \ + --hash=sha256:18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef \ + --hash=sha256:1e0f80b739e5a8f54837be5d5c924483996b603d5502bfff79bf33da06164ee2 \ + --hash=sha256:1e5f3cd7397c8f86c8cc72d5a791071431c108edd79872cdd96e00abd8497d29 \ + --hash=sha256:220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318 \ + --hash=sha256:22e6c9976e38f4d8c4a63bd8a8edac5307dffd3ee7e6026d97f3cc3a2dc02a0b \ + --hash=sha256:238a2d5b1cad28cdc6ed15faf93a998336eb041c4e440dd7f902528b8891b399 \ + --hash=sha256:2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739 \ + --hash=sha256:28527c685f237c05445efec62426d285e47a58fb05ba0090a4340b73ecda6dee \ + --hash=sha256:2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174 \ + --hash=sha256:338ca4539aad4ce70a656e5187a3a31c5204f261aef9f6ab50e50bcdffaf050a \ + --hash=sha256:39ed0d010457a78f54090fafb5d108501b5aa5604cc22408fc1c0c77eac14344 \ + --hash=sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2 \ + --hash=sha256:3d2b1ad682a3dfda2a4e8ad8572f3100f95fad98cb99faf37ff0ddfe9cbf9d03 \ + --hash=sha256:3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5 \ + --hash=sha256:3fde368e9140312b6e8b6c09fb9f8c8c2f00999d1823403ae90cc00480221b22 \ + --hash=sha256:40ce74fc86ee4645d0a225498d091d8bc61f39b709ebef8204cb8b5a464d3c0e \ + --hash=sha256:49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96 \ + --hash=sha256:4a1f1d51eccb7e6c32ae89243cb352389228ea62f89cd80823ea7dd1b98e0b91 \ + --hash=sha256:4b16aa0107ecb512b568244ef461f27697164d9a68d8b35090e9b0c1c8b27752 \ + --hash=sha256:4f1ed4749a08379555cebf4650453f14452eaa9c43d0a95c49db50c18b7da075 \ + --hash=sha256:4fe84294c7019456e56d93e8ababdad5a329cd25975be749c3f5f558abb48253 \ + --hash=sha256:50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee \ + --hash=sha256:514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad \ + --hash=sha256:54b43a2b07db18314669092bb2de584524d1ef414588780261e31e85846c26a5 \ + --hash=sha256:55fea87029cded5df854ca7e192ec7bdb7ecd1d9a3f63d5c4eb09148acf4a7ce \ + --hash=sha256:569b3ea770c2717b730b61998b6c54996adee3cef69fc28d444f3e7920313cf7 \ + --hash=sha256:56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b \ + --hash=sha256:57eb94a8c16ab08fef6404301c38318e2c5a32216bf5de453e2714c964c125c8 \ + --hash=sha256:5a35df9f5548fd79cb2f52d27182108c3e6641a4feb0f39067911bf2adaa3e57 \ + --hash=sha256:5a8c94dad2e45324fc74dce25e1645d4d14df9a4e54a30fa0ae8bad9a63928e3 \ + --hash=sha256:5b4f105deeffa28bbcdff6c49b34e74903139afa690e35d2d9e3c2c2fba18cec \ + --hash=sha256:5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209 \ + --hash=sha256:614fdafe9f5f19c63ea02817fa4861c606a59a604a77c8cdef5aa01d28b97921 \ + --hash=sha256:617c7357272c67696fd052811e352ac54ed1d9b49ab370261a80d3b6ce385045 \ + --hash=sha256:65794e4048ee837494aea3c21a28ad5fc080994dfba5b036cf84de37f7ad5074 \ + --hash=sha256:6632f2d04f15d1bd6fe0eedd3b86d9061b836ddca4c03d5cf5c7e9e6b7c14580 \ + --hash=sha256:6c8ef2ebf76df43f5750b46851ed1cdf8f109d7787ca40035fe19fbdc1acc5a7 \ + --hash=sha256:758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5 \ + --hash=sha256:7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3 \ + --hash=sha256:89c19a494bf3ad08c1da49445cc5d13d8fefc265f48ee7e7556839acdacf69d0 \ + --hash=sha256:8a86a9b96070674fc88b6f9f71a97d2c1d3e5165574615d1f9168ecba4cecb24 \ + --hash=sha256:8bc7690f7caee50b04a79bf017a8d020c1f48c2a1077ffe172abec59870f1139 \ + --hash=sha256:8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db \ + --hash=sha256:9426133526f69fcaba6e42146b4e12d6bc6c839b8b555097020e2b78ce908dcc \ + --hash=sha256:9824fb430c9cf9af743cf7aaf6707bf14323fb51ee74425c380f4c846ea70789 \ + --hash=sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f \ + --hash=sha256:9bc2d153989e3216b0559251b0c260cfd168ec78b1fac33dd485750a228db5a2 \ + --hash=sha256:9d35cef91e59ebbeaa45214861874bc6f19eb35de96db73e467a8358d701a96c \ + --hash=sha256:a1862d2d7ce1674cffa6d186d53ca95c6e17ed2b06b3f4c476173565c862d232 \ + --hash=sha256:a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6 \ + --hash=sha256:aa7f429242aae2947246587d2964fad750b79e8c233a2367f71b554e9447949c \ + --hash=sha256:aa9a0521aeca7d4941499a73ad7d4f8ffa3d1affc50b9ea11d992cd7eff18a29 \ + --hash=sha256:ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489 \ + --hash=sha256:ae94bd0b2f02c28e199e9bc51485d0c5601f58780636185660f86bf80c89af94 \ + --hash=sha256:af0fc424a5842a11e28956e69395fbbeab2c97c42253169d87e90aac2886d751 \ + --hash=sha256:b2a5db5397d82fa847e4c624b0c98fe59d2d9b7cf0ce6de09e4d2e80f8f5b3f2 \ + --hash=sha256:b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda \ + --hash=sha256:b74b25f024b421d5859d156750ea9a65651793d51b76a2e9238c05c9d5f203a9 \ + --hash=sha256:b7f19250ceef892adf27f0399b9e5afad019288e9be756d6919cb58892129f51 \ + --hash=sha256:b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c \ + --hash=sha256:b8c00a3b1e70c1d3891f0db1b05292747f0dbcfb49c43f9244d04c70fbc40eb8 \ + --hash=sha256:bb273176be34a746bdac0b0d7e4e2c467323d13640b736c4c477881a3220a989 \ + --hash=sha256:c3c20f0ddeb6e29126d45f89206b8291352b8c5b44384e78a6499d68b52ae511 \ + --hash=sha256:c3e130fd0ec56cb76eb49ef52faead8ff09d13f4527e9b0c400307ff72b408e1 \ + --hash=sha256:c52d3f2f82b763a24ef52f5d24358553e8403ce05f893b5347098014f2d9eff2 \ + --hash=sha256:c6377e647bbfd0a0b159fe557f2c6c602c159fc752fa316572f012fc0bf67150 \ + --hash=sha256:c638144ce971df84650d3ed0096e2ae7af8e62ecbbb7b201c8935c370df00a2c \ + --hash=sha256:ce9845054c13696f7af7f2b353e6b4f676dab1b4b215d7fe5e05c6f8bb06f965 \ + --hash=sha256:cf258ede5bc22a45c8e726b29835b9303c285ab46fc7c3a4cc770736b5304c9f \ + --hash=sha256:d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58 \ + --hash=sha256:d0b67d87bb45ed1cd020e8fbf2307d449b68abc45402fe1a4ac9e46c3c8b192b \ + --hash=sha256:d20277fd62e1b992a50c43f13fbe13277a31f8c9f70d59759c88f644d66c619f \ + --hash=sha256:d454b8749b4bd70dd0a79f428731ee263fa6995f83ccb8bada706e8d1d3ff89d \ + --hash=sha256:d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821 \ + --hash=sha256:d72278a30111e5b5525c1dd96120d9e958464316f55adb030433ea905866f4de \ + --hash=sha256:d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121 \ + --hash=sha256:d807dc2051abe041b6649681dce568f8e10668e3c1c6543ebae58f2d7e617855 \ + --hash=sha256:dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272 \ + --hash=sha256:dcedf0b42bcb4cfff4101d7771a10532415a6106062f005ab97d1d0ab5681c60 \ + --hash=sha256:deb62214c42a261cb3eb04d474f7155279c1a8a8c30ac89b7dcb1721d92c3c02 \ + --hash=sha256:def7400461c3a3f26e49078302e1c1b38f6752342c77e3cf72ce91ca69fb1bc1 \ + --hash=sha256:df3de6b7726b52966edf29663e57306b23ef775faf0ac01a3e9f4012a24a4140 \ + --hash=sha256:e1940dae14e715e2e02dfd5b0f64a52e8374a517a1e531ad9412319dc3ac7879 \ + --hash=sha256:e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940 \ + --hash=sha256:e6900ecdd50ce0facf703f7a00df12374b74bbc8ad9fe0f6559947fb20f82364 \ + --hash=sha256:ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4 \ + --hash=sha256:eb851b7df9dda52dc1415ebee12362047ce771fc36914586b2e9fcbd7d293b3e \ + --hash=sha256:ec31a99ca63bf3cd7f1a5ac9fe95c5e2d060d3c768a09bc1d16e235840861420 \ + --hash=sha256:f0475242f447cc6cb8a9dd486d68b2ef7fbee84427124c232bff5f63b1fe11e5 \ + --hash=sha256:f2fbf7db2012d4876fb0d66b5b9ba6591197b0f165db8d99371d976546472a24 \ + --hash=sha256:f60012a73aa396be721558caa3a6fd49b3dd0033d1675c6d59c4502e870fcf0c \ + --hash=sha256:f8e604fe73ba048c06085beaf51147eaec7df856824bfe7b98657cf436623daf \ + --hash=sha256:f90a4cd061914a60bd51c68bcb4357086991bd0bb93d8aa66a6da7701370708f \ + --hash=sha256:f918a1a130a6dfe1d7fe0f105064141342e7dd1611f2e6a21cd2f5c8cb1cfb3e \ + --hash=sha256:fa518bcd7600c584bf42e6617ee8132869e877db2f76bcdc281ec6a4113a53ab \ + --hash=sha256:faefcc78f53a88f3076b7f8be0a8f8d35133a3ecf7f3770895c25f8813460f08 \ + --hash=sha256:fcaeb7b57f1a1e071ebd748984359fef83ecb026325b9d4ca847c95bc7311c92 \ + --hash=sha256:fd2d84f40633bc475ef2d5490b9c19543fbf18596dcb1b291e3a12ea5d722f7a \ + --hash=sha256:fdfc3a892927458d98f3d55428ae46b921d1f7543b89382fdb483f5640daaec8 # via # jsonschema # referencing @@ -908,19 +915,13 @@ s3transfer==0.10.2 \ --hash=sha256:0711534e9356d3cc692fdde846b4a1e4b0cb6519971860796e6bc4c7aea00ef6 \ --hash=sha256:eca1c20de70a39daee580aef4986996620f365c4e0fda6a86100231d62f1bf69 # via boto3 -sarif-om==1.0.4 \ - --hash=sha256:539ef47a662329b1c8502388ad92457425e95dc0aaaf995fe46f4984c4771911 \ - --hash=sha256:cd5f416b3083e00d402a92e449a7ff67af46f11241073eea0461802a3b5aef98 - # via cfn-lint six==1.16.0 \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 - # via - # junit-xml - # python-dateutil -sympy==1.13.1 \ - --hash=sha256:9cebf7e04ff162015ce31c9c6c9144daa34a93bd082f54fd8f12deca4f47515f \ - --hash=sha256:db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + # via python-dateutil +sympy==1.13.2 \ + --hash=sha256:401449d84d07be9d0c7a46a64bd54fe097667d5e7181bfe67ec777be9e01cb13 \ + --hash=sha256:c51d75517712f1aed280d4ce58506a4a88d635d6b5dd48b39102a7ae1f3fcfe9 # via cfn-lint text-unidecode==1.3 \ --hash=sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8 \ @@ -949,6 +950,7 @@ typing-extensions==4.12.2 \ # aws-sam-cli (setup.py) # aws-sam-translator # boto3-stubs + # cfn-lint # mypy-boto3-apigateway # mypy-boto3-cloudformation # mypy-boto3-ecr @@ -978,47 +980,50 @@ urllib3==1.26.19 \ # botocore # docker # requests -watchdog==4.0.1 \ - --hash=sha256:0144c0ea9997b92615af1d94afc0c217e07ce2c14912c7b1a5731776329fcfc7 \ - --hash=sha256:03e70d2df2258fb6cb0e95bbdbe06c16e608af94a3ffbd2b90c3f1e83eb10767 \ - --hash=sha256:093b23e6906a8b97051191a4a0c73a77ecc958121d42346274c6af6520dec175 \ - --hash=sha256:123587af84260c991dc5f62a6e7ef3d1c57dfddc99faacee508c71d287248459 \ - --hash=sha256:17e32f147d8bf9657e0922c0940bcde863b894cd871dbb694beb6704cfbd2fb5 \ - --hash=sha256:206afc3d964f9a233e6ad34618ec60b9837d0582b500b63687e34011e15bb429 \ - --hash=sha256:4107ac5ab936a63952dea2a46a734a23230aa2f6f9db1291bf171dac3ebd53c6 \ - --hash=sha256:4513ec234c68b14d4161440e07f995f231be21a09329051e67a2118a7a612d2d \ - --hash=sha256:611be3904f9843f0529c35a3ff3fd617449463cb4b73b1633950b3d97fa4bfb7 \ - --hash=sha256:62c613ad689ddcb11707f030e722fa929f322ef7e4f18f5335d2b73c61a85c28 \ - --hash=sha256:667f3c579e813fcbad1b784db7a1aaa96524bed53437e119f6a2f5de4db04235 \ - --hash=sha256:6e8c70d2cd745daec2a08734d9f63092b793ad97612470a0ee4cbb8f5f705c57 \ - --hash=sha256:7577b3c43e5909623149f76b099ac49a1a01ca4e167d1785c76eb52fa585745a \ - --hash=sha256:998d2be6976a0ee3a81fb8e2777900c28641fb5bfbd0c84717d89bca0addcdc5 \ - --hash=sha256:a3c2c317a8fb53e5b3d25790553796105501a235343f5d2bf23bb8649c2c8709 \ - --hash=sha256:ab998f567ebdf6b1da7dc1e5accfaa7c6992244629c0fdaef062f43249bd8dee \ - --hash=sha256:ac7041b385f04c047fcc2951dc001671dee1b7e0615cde772e84b01fbf68ee84 \ - --hash=sha256:bca36be5707e81b9e6ce3208d92d95540d4ca244c006b61511753583c81c70dd \ - --hash=sha256:c9904904b6564d4ee8a1ed820db76185a3c96e05560c776c79a6ce5ab71888ba \ - --hash=sha256:cad0bbd66cd59fc474b4a4376bc5ac3fc698723510cbb64091c2a793b18654db \ - --hash=sha256:d10a681c9a1d5a77e75c48a3b8e1a9f2ae2928eda463e8d33660437705659682 \ - --hash=sha256:d4925e4bf7b9bddd1c3de13c9b8a2cdb89a468f640e66fbfabaf735bd85b3e35 \ - --hash=sha256:d7b9f5f3299e8dd230880b6c55504a1f69cf1e4316275d1b215ebdd8187ec88d \ - --hash=sha256:da2dfdaa8006eb6a71051795856bedd97e5b03e57da96f98e375682c48850645 \ - --hash=sha256:dddba7ca1c807045323b6af4ff80f5ddc4d654c8bce8317dde1bd96b128ed253 \ - --hash=sha256:e7921319fe4430b11278d924ef66d4daa469fafb1da679a2e48c935fa27af193 \ - --hash=sha256:e93f451f2dfa433d97765ca2634628b789b49ba8b504fdde5837cdcf25fdb53b \ - --hash=sha256:eebaacf674fa25511e8867028d281e602ee6500045b57f43b08778082f7f8b44 \ - --hash=sha256:ef0107bbb6a55f5be727cfc2ef945d5676b97bffb8425650dadbb184be9f9a2b \ - --hash=sha256:f0de0f284248ab40188f23380b03b59126d1479cd59940f2a34f8852db710625 \ - --hash=sha256:f27279d060e2ab24c0aa98363ff906d2386aa6c4dc2f1a374655d4e02a6c5e5e \ - --hash=sha256:f8affdf3c0f0466e69f5b3917cdd042f89c8c63aebdb9f7c078996f607cdb0f5 +watchdog==4.0.2 \ + --hash=sha256:0b4359067d30d5b864e09c8597b112fe0a0a59321a0f331498b013fb097406b4 \ + --hash=sha256:0d8a7e523ef03757a5aa29f591437d64d0d894635f8a50f370fe37f913ce4e19 \ + --hash=sha256:0e83619a2d5d436a7e58a1aea957a3c1ccbf9782c43c0b4fed80580e5e4acd1a \ + --hash=sha256:10b6683df70d340ac3279eff0b2766813f00f35a1d37515d2c99959ada8f05fa \ + --hash=sha256:132937547a716027bd5714383dfc40dc66c26769f1ce8a72a859d6a48f371f3a \ + --hash=sha256:1cdcfd8142f604630deef34722d695fb455d04ab7cfe9963055df1fc69e6727a \ + --hash=sha256:2d468028a77b42cc685ed694a7a550a8d1771bb05193ba7b24006b8241a571a1 \ + --hash=sha256:32be97f3b75693a93c683787a87a0dc8db98bb84701539954eef991fb35f5fbc \ + --hash=sha256:770eef5372f146997638d737c9a3c597a3b41037cfbc5c41538fc27c09c3a3f9 \ + --hash=sha256:7c7d4bf585ad501c5f6c980e7be9c4f15604c7cc150e942d82083b31a7548930 \ + --hash=sha256:88456d65f207b39f1981bf772e473799fcdc10801062c36fd5ad9f9d1d463a73 \ + --hash=sha256:914285126ad0b6eb2258bbbcb7b288d9dfd655ae88fa28945be05a7b475a800b \ + --hash=sha256:936acba76d636f70db8f3c66e76aa6cb5136a936fc2a5088b9ce1c7a3508fc83 \ + --hash=sha256:980b71510f59c884d684b3663d46e7a14b457c9611c481e5cef08f4dd022eed7 \ + --hash=sha256:984306dc4720da5498b16fc037b36ac443816125a3705dfde4fd90652d8028ef \ + --hash=sha256:a2cffa171445b0efa0726c561eca9a27d00a1f2b83846dbd5a4f639c4f8ca8e1 \ + --hash=sha256:aa160781cafff2719b663c8a506156e9289d111d80f3387cf3af49cedee1f040 \ + --hash=sha256:b2c45f6e1e57ebb4687690c05bc3a2c1fb6ab260550c4290b8abb1335e0fd08b \ + --hash=sha256:b4dfbb6c49221be4535623ea4474a4d6ee0a9cef4a80b20c28db4d858b64e270 \ + --hash=sha256:baececaa8edff42cd16558a639a9b0ddf425f93d892e8392a56bf904f5eff22c \ + --hash=sha256:bcfd02377be80ef3b6bc4ce481ef3959640458d6feaae0bd43dd90a43da90a7d \ + --hash=sha256:c0b14488bd336c5b1845cee83d3e631a1f8b4e9c5091ec539406e4a324f882d8 \ + --hash=sha256:c100d09ac72a8a08ddbf0629ddfa0b8ee41740f9051429baa8e31bb903ad7508 \ + --hash=sha256:c344453ef3bf875a535b0488e3ad28e341adbd5a9ffb0f7d62cefacc8824ef2b \ + --hash=sha256:c50f148b31b03fbadd6d0b5980e38b558046b127dc483e5e4505fcef250f9503 \ + --hash=sha256:c82253cfc9be68e3e49282831afad2c1f6593af80c0daf1287f6a92657986757 \ + --hash=sha256:cd67c7df93eb58f360c43802acc945fa8da70c675b6fa37a241e17ca698ca49b \ + --hash=sha256:d7ab624ff2f663f98cd03c8b7eedc09375a911794dfea6bf2a359fcc266bff29 \ + --hash=sha256:e252f8ca942a870f38cf785aef420285431311652d871409a64e2a0a52a2174c \ + --hash=sha256:ede7f010f2239b97cc79e6cb3c249e72962404ae3865860855d5cbe708b0fd22 \ + --hash=sha256:eeea812f38536a0aa859972d50c76e37f4456474b02bd93674d1947cf1e39578 \ + --hash=sha256:f15edcae3830ff20e55d1f4e743e92970c847bcddc8b7509bcd172aa04de506e \ + --hash=sha256:f5315a8c8dd6dd9425b974515081fc0aadca1d1d61e078d2246509fd756141ee \ + --hash=sha256:f6ee8dedd255087bc7fe82adf046f0b75479b989185fb0bdf9a98b612170eac7 \ + --hash=sha256:f7c739888c20f99824f7aa9d31ac8a97353e22d0c0e54703a547a218f6637eb3 # via aws-sam-cli (setup.py) werkzeug==3.0.3 \ --hash=sha256:097e5bfda9f0aba8da6b8545146def481d06aa7d3266e7448e2cccf67dd8bd18 \ --hash=sha256:fc9645dc43e03e4d630d23143a04a7f947a9a3b5727cd535fdfe155a17cc48c8 # via flask -wheel==0.43.0 \ - --hash=sha256:465ef92c69fa5c5da2d1cf8ac40559a8c940886afcef87dcf14b9470862f1d85 \ - --hash=sha256:55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81 +wheel==0.44.0 \ + --hash=sha256:2376a90c98cc337d18623527a97c31797bd02bad0033d41547043a1cbfbe448f \ + --hash=sha256:a29c3f2817e95ab89aa4660681ad547c0e9547f20e75b0562fe7723c9a2a9d49 # via aws-lambda-builders # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 258d78a178..91e469898c 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -12,21 +12,19 @@ arrow==1.3.0 \ --hash=sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80 \ --hash=sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85 # via cookiecutter -attrs==23.2.0 \ - --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ - --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 +attrs==24.2.0 \ + --hash=sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346 \ + --hash=sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2 # via - # jschema-to-python # jsonschema # referencing - # sarif-om aws-lambda-builders==1.50.0 \ --hash=sha256:40a613ecb19fbf0b64a47bae14bd252ea5da32ea71fde9808d596e2dbc011baf \ --hash=sha256:ad95ed55359c399872f5825582896500dfc1c5564eccf2a6ab8d0e9f6c1ae385 # via aws-sam-cli (setup.py) -aws-sam-translator==1.89.0 \ - --hash=sha256:843be1b5ca7634f700ad0c844a7e0dc42858f35da502e91691473eadd1731ded \ - --hash=sha256:fff1005d0b1f3cb511d0ac7e85f54af06afc9d9e433df013a2338d7a0168d174 +aws-sam-translator==1.90.0 \ + --hash=sha256:25f1d5be7980ff57299977ca0bb807caf7b5ea474646bb0fc96e2541f34a20b6 \ + --hash=sha256:35e70accfe4ead2cc4e6df104a991f94a4fc4aa3b1dc4d460dded77cf30f670c # via # aws-sam-cli (setup.py) # cfn-lint @@ -56,87 +54,102 @@ blinker==1.8.2 \ --hash=sha256:1779309f71bf239144b9399d06ae925637cf6634cf6bd131104184531bf67c01 \ --hash=sha256:8f77b09d3bf7c795e969e9486f39c2c5e9c39d4ee07424be2bc594ece9642d83 # via flask -boto3==1.34.147 \ - --hash=sha256:9ec1c6ab22588242a47549f51a63dfc7c21fdf95a94820fc6e629ab060c38bd9 \ - --hash=sha256:e1cef9a1a301866bcdee32ae0c699465eb2345f9a8e613a5835821430165ff6d +boto3==1.34.159 \ + --hash=sha256:21120d23cc37c0e80dc4f64434bc5664d2a5645dcd9bf8a8fa97ed5c82164ca0 \ + --hash=sha256:ffe7bbb88ba81b5d54bc8fa0cfb2f3b7fe63a6cffa0f9207df2ef5c22a1c0587 # 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.147 \ - --hash=sha256:3a483d2a55b247029d6e5e04002153984353c0c19882607af7e37038a7ce72b0 \ - --hash=sha256:6a5b276eb3414b370a084561f23d610a1e8c8e7630f6fe463523fc06766bc887 +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.159 \ + --hash=sha256:9d5b69db82dbc55fce3d58f5d39d0680ca5334d7df596447c29357b9a0669b09 \ + --hash=sha256:d3a298f3b0a3a7758c2bfb8585089e18567c1eee695f939439ef0023e84b32ce # via aws-sam-cli (setup.py) -botocore==1.34.147 \ - --hash=sha256:2e8f000b77e4ca345146cb2edab6403769a517b564f627bb084ab335417f3dbe \ - --hash=sha256:be94a2f4874b1d1705cae2bd512c475047497379651678593acb6c61c50d91de +botocore==1.34.159 \ + --hash=sha256:7633062491457419a49f5860c014251ae85689f78266a3ce020c2c8688a76b97 \ + --hash=sha256:dc28806eb21e3c8d690c422530dff8b4b242ac033cbe98f160a9d37796c09cb1 # via # boto3 # s3transfer -botocore-stubs==1.34.147 \ - --hash=sha256:d69c75b71c2fe1456b724653f586adcd5bf660ff6d104ecb6ac5efb40fcf363b \ - --hash=sha256:ef1643787c95036641cc49700d8e7d48e31826ce4c25b50e2745a4e9104c662b +botocore-stubs==1.34.159 \ + --hash=sha256:b2bf4ff8dd4a39556f6338bdc7e75485282dd7e2c0b7dacdcfc219352c7865ea \ + --hash=sha256:f9f51612960c0fa1b01638816ee3d1ca031f9efc3e1328e4f4d52253b573067a # via boto3-stubs certifi==2024.7.4 \ --hash=sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b \ --hash=sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90 # via requests -cffi==1.16.0 \ - --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \ - --hash=sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a \ - --hash=sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417 \ - --hash=sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab \ - --hash=sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520 \ - --hash=sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36 \ - --hash=sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743 \ - --hash=sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8 \ - --hash=sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed \ - --hash=sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684 \ - --hash=sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56 \ - --hash=sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324 \ - --hash=sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d \ - --hash=sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235 \ - --hash=sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e \ - --hash=sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088 \ - --hash=sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000 \ - --hash=sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7 \ - --hash=sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e \ - --hash=sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673 \ - --hash=sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c \ - --hash=sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe \ - --hash=sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2 \ - --hash=sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098 \ - --hash=sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8 \ - --hash=sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a \ - --hash=sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0 \ - --hash=sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b \ - --hash=sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896 \ - --hash=sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e \ - --hash=sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9 \ - --hash=sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2 \ - --hash=sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b \ - --hash=sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6 \ - --hash=sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404 \ - --hash=sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f \ - --hash=sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0 \ - --hash=sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4 \ - --hash=sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc \ - --hash=sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936 \ - --hash=sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba \ - --hash=sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872 \ - --hash=sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb \ - --hash=sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614 \ - --hash=sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1 \ - --hash=sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d \ - --hash=sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969 \ - --hash=sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b \ - --hash=sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4 \ - --hash=sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627 \ - --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ - --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 +cffi==1.17.0 \ + --hash=sha256:011aff3524d578a9412c8b3cfaa50f2c0bd78e03eb7af7aa5e0df59b158efb2f \ + --hash=sha256:0a048d4f6630113e54bb4b77e315e1ba32a5a31512c31a273807d0027a7e69ab \ + --hash=sha256:0bb15e7acf8ab35ca8b24b90af52c8b391690ef5c4aec3d31f38f0d37d2cc499 \ + --hash=sha256:0d46ee4764b88b91f16661a8befc6bfb24806d885e27436fdc292ed7e6f6d058 \ + --hash=sha256:0e60821d312f99d3e1569202518dddf10ae547e799d75aef3bca3a2d9e8ee693 \ + --hash=sha256:0fdacad9e0d9fc23e519efd5ea24a70348305e8d7d85ecbb1a5fa66dc834e7fb \ + --hash=sha256:14b9cbc8f7ac98a739558eb86fabc283d4d564dafed50216e7f7ee62d0d25377 \ + --hash=sha256:17c6d6d3260c7f2d94f657e6872591fe8733872a86ed1345bda872cfc8c74885 \ + --hash=sha256:1a2ddbac59dc3716bc79f27906c010406155031a1c801410f1bafff17ea304d2 \ + --hash=sha256:2404f3de742f47cb62d023f0ba7c5a916c9c653d5b368cc966382ae4e57da401 \ + --hash=sha256:24658baf6224d8f280e827f0a50c46ad819ec8ba380a42448e24459daf809cf4 \ + --hash=sha256:24aa705a5f5bd3a8bcfa4d123f03413de5d86e497435693b638cbffb7d5d8a1b \ + --hash=sha256:2770bb0d5e3cc0e31e7318db06efcbcdb7b31bcb1a70086d3177692a02256f59 \ + --hash=sha256:331ad15c39c9fe9186ceaf87203a9ecf5ae0ba2538c9e898e3a6967e8ad3db6f \ + --hash=sha256:3aa9d43b02a0c681f0bfbc12d476d47b2b2b6a3f9287f11ee42989a268a1833c \ + --hash=sha256:41f4915e09218744d8bae14759f983e466ab69b178de38066f7579892ff2a555 \ + --hash=sha256:4304d4416ff032ed50ad6bb87416d802e67139e31c0bde4628f36a47a3164bfa \ + --hash=sha256:435a22d00ec7d7ea533db494da8581b05977f9c37338c80bc86314bec2619424 \ + --hash=sha256:45f7cd36186db767d803b1473b3c659d57a23b5fa491ad83c6d40f2af58e4dbb \ + --hash=sha256:48b389b1fd5144603d61d752afd7167dfd205973a43151ae5045b35793232aa2 \ + --hash=sha256:4e67d26532bfd8b7f7c05d5a766d6f437b362c1bf203a3a5ce3593a645e870b8 \ + --hash=sha256:516a405f174fd3b88829eabfe4bb296ac602d6a0f68e0d64d5ac9456194a5b7e \ + --hash=sha256:5ba5c243f4004c750836f81606a9fcb7841f8874ad8f3bf204ff5e56332b72b9 \ + --hash=sha256:5bdc0f1f610d067c70aa3737ed06e2726fd9d6f7bfee4a351f4c40b6831f4e82 \ + --hash=sha256:6107e445faf057c118d5050560695e46d272e5301feffda3c41849641222a828 \ + --hash=sha256:6327b572f5770293fc062a7ec04160e89741e8552bf1c358d1a23eba68166759 \ + --hash=sha256:669b29a9eca6146465cc574659058ed949748f0809a2582d1f1a324eb91054dc \ + --hash=sha256:6ce01337d23884b21c03869d2f68c5523d43174d4fc405490eb0091057943118 \ + --hash=sha256:6d872186c1617d143969defeadac5a904e6e374183e07977eedef9c07c8953bf \ + --hash=sha256:6f76a90c345796c01d85e6332e81cab6d70de83b829cf1d9762d0a3da59c7932 \ + --hash=sha256:70d2aa9fb00cf52034feac4b913181a6e10356019b18ef89bc7c12a283bf5f5a \ + --hash=sha256:7cbc78dc018596315d4e7841c8c3a7ae31cc4d638c9b627f87d52e8abaaf2d29 \ + --hash=sha256:856bf0924d24e7f93b8aee12a3a1095c34085600aa805693fb7f5d1962393206 \ + --hash=sha256:8a98748ed1a1df4ee1d6f927e151ed6c1a09d5ec21684de879c7ea6aa96f58f2 \ + --hash=sha256:93a7350f6706b31f457c1457d3a3259ff9071a66f312ae64dc024f049055f72c \ + --hash=sha256:964823b2fc77b55355999ade496c54dde161c621cb1f6eac61dc30ed1b63cd4c \ + --hash=sha256:a003ac9edc22d99ae1286b0875c460351f4e101f8c9d9d2576e78d7e048f64e0 \ + --hash=sha256:a0ce71725cacc9ebf839630772b07eeec220cbb5f03be1399e0457a1464f8e1a \ + --hash=sha256:a47eef975d2b8b721775a0fa286f50eab535b9d56c70a6e62842134cf7841195 \ + --hash=sha256:a8b5b9712783415695663bd463990e2f00c6750562e6ad1d28e072a611c5f2a6 \ + --hash=sha256:a9015f5b8af1bb6837a3fcb0cdf3b874fe3385ff6274e8b7925d81ccaec3c5c9 \ + --hash=sha256:aec510255ce690d240f7cb23d7114f6b351c733a74c279a84def763660a2c3bc \ + --hash=sha256:b00e7bcd71caa0282cbe3c90966f738e2db91e64092a877c3ff7f19a1628fdcb \ + --hash=sha256:b50aaac7d05c2c26dfd50c3321199f019ba76bb650e346a6ef3616306eed67b0 \ + --hash=sha256:b7b6ea9e36d32582cda3465f54c4b454f62f23cb083ebc7a94e2ca6ef011c3a7 \ + --hash=sha256:bb9333f58fc3a2296fb1d54576138d4cf5d496a2cc118422bd77835e6ae0b9cb \ + --hash=sha256:c1c13185b90bbd3f8b5963cd8ce7ad4ff441924c31e23c975cb150e27c2bf67a \ + --hash=sha256:c3b8bd3133cd50f6b637bb4322822c94c5ce4bf0d724ed5ae70afce62187c492 \ + --hash=sha256:c5d97162c196ce54af6700949ddf9409e9833ef1003b4741c2b39ef46f1d9720 \ + --hash=sha256:c815270206f983309915a6844fe994b2fa47e5d05c4c4cef267c3b30e34dbe42 \ + --hash=sha256:cab2eba3830bf4f6d91e2d6718e0e1c14a2f5ad1af68a89d24ace0c6b17cced7 \ + --hash=sha256:d1df34588123fcc88c872f5acb6f74ae59e9d182a2707097f9e28275ec26a12d \ + --hash=sha256:d6bdcd415ba87846fd317bee0774e412e8792832e7805938987e4ede1d13046d \ + --hash=sha256:db9a30ec064129d605d0f1aedc93e00894b9334ec74ba9c6bdd08147434b33eb \ + --hash=sha256:dbc183e7bef690c9abe5ea67b7b60fdbca81aa8da43468287dae7b5c046107d4 \ + --hash=sha256:dca802c8db0720ce1c49cce1149ff7b06e91ba15fa84b1d59144fef1a1bc7ac2 \ + --hash=sha256:dec6b307ce928e8e112a6bb9921a1cb00a0e14979bf28b98e084a4b8a742bd9b \ + --hash=sha256:df8bb0010fdd0a743b7542589223a2816bdde4d94bb5ad67884348fa2c1c67e8 \ + --hash=sha256:e4094c7b464cf0a858e75cd14b03509e84789abf7b79f8537e6a72152109c76e \ + --hash=sha256:e4760a68cab57bfaa628938e9c2971137e05ce48e762a9cb53b76c9b569f1204 \ + --hash=sha256:eb09b82377233b902d4c3fbeeb7ad731cdab579c6c6fda1f763cd779139e47c3 \ + --hash=sha256:eb862356ee9391dc5a0b3cbc00f416b48c1b9a52d252d898e5b7696a5f9fe150 \ + --hash=sha256:ef9528915df81b8f4c7612b19b8628214c65c9b7f74db2e34a646a0a2a0da2d4 \ + --hash=sha256:f3157624b7558b914cb039fd1af735e5e8049a87c817cc215109ad1c8779df76 \ + --hash=sha256:f3e0992f23bbb0be00a921eae5363329253c3b86287db27092461c887b791e5e \ + --hash=sha256:f9338cc05451f1942d0d8203ec2c346c830f8e86469903d5126c1f0a13a2bcbb \ + --hash=sha256:ffef8fd58a36fb5f1196919638f73dd3ae0db1a878982b27a9a5a176ede4ba91 # via cryptography -cfn-lint==0.87.7 \ - --hash=sha256:85f6b7f32cf155a74d670d53f86b39f99cfc282b02158d98fdab9fc1dba0809e \ - --hash=sha256:ac6ac86dde1ba3d0fb0e217a4d329239a98f00af7862e4fa5ace6c416c4e056c +cfn-lint==1.10.0 \ + --hash=sha256:6c1ad17d50d6f185b27857ef3efbbadbdd53813aa2d3dd502686b0aed617fdea \ + --hash=sha256:fecadfe69882fe3b8e0283530b591a56bcfacfc2d51818bacbd1f862d27a61c6 # via aws-sam-cli (setup.py) chardet==5.2.0 \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ @@ -299,9 +312,9 @@ idna==3.7 \ --hash=sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc \ --hash=sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0 # via requests -importlib-metadata==8.0.0 \ - --hash=sha256:15584cf2b1bf449d98ff8a6ff1abef57bf20f3ac6454f431736cd3e660921b2f \ - --hash=sha256:188bd24e4c346d3f0a933f275c2fec67050326a856b9a359881d7c2a697e8812 +importlib-metadata==8.2.0 \ + --hash=sha256:11901fa0c2f97919b288679932bb64febaeacf289d18ac84dd68cb2e74213369 \ + --hash=sha256:72e8d4399996132204f9a16dcc751af254a48f8d1b20b9ff0f98d4a8f901e73d # via flask importlib-resources==6.4.0 \ --hash=sha256:50d10f043df931902d4194ea07ec57960f66a80449ff867bfe782b4c486ba78c \ @@ -326,18 +339,10 @@ jmespath==1.0.1 \ # aws-sam-cli (setup.py) # boto3 # botocore -jschema-to-python==1.2.3 \ - --hash=sha256:76ff14fe5d304708ccad1284e4b11f96a658949a31ee7faed9e0995279549b91 \ - --hash=sha256:8a703ca7604d42d74b2815eecf99a33359a8dccbb80806cce386d5e2dd992b05 - # via cfn-lint jsonpatch==1.33 \ --hash=sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade \ --hash=sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c # via cfn-lint -jsonpickle==3.2.2 \ - --hash=sha256:87cd82d237fd72c5a34970e7222dddc0accc13fddf49af84111887ed9a9445aa \ - --hash=sha256:d425fd2b8afe9f5d7d57205153403fbf897782204437882a477e8eed60930f8c - # via jschema-to-python jsonpointer==3.0.0 \ --hash=sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942 \ --hash=sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef @@ -348,15 +353,10 @@ jsonschema==4.23.0 \ # via # aws-sam-cli (setup.py) # aws-sam-translator - # cfn-lint jsonschema-specifications==2023.12.1 \ --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c # via jsonschema -junit-xml==1.9 \ - --hash=sha256:de16a051990d4e25a3982b2dd9e89d671067548718866416faec14d9de56db9f \ - --hash=sha256:ec5ca1a55aefdd76d28fcc0b135251d156c7106fa979686a4b48d62b761b4732 - # via cfn-lint markdown-it-py==3.0.0 \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb @@ -441,25 +441,25 @@ mypy-boto3-cloudformation==1.34.111 \ --hash=sha256:526e928c504fa2880b1774aa10629a04fe0ec70ed2864ab3d3f7772386a1a925 \ --hash=sha256:a02e201d1a9d9a8fb4db5b942d5c537a4e8861c611f0d986126674ac557cb9e8 # via boto3-stubs -mypy-boto3-ecr==1.34.140 \ - --hash=sha256:5c31b1ba2b08115a4363ebe0280a0a68438827f44bb4abaeb77e5e7b757a6f55 \ - --hash=sha256:7a73c68d8c52b932ab2dc3d16493efa7e5c3796e5b191a8249c2fc9555699762 +mypy-boto3-ecr==1.34.154 \ + --hash=sha256:5e4c22ac3af042ba8535a44a08c33494ee232bea8e3b8917a8d9a78a311d50bf \ + --hash=sha256:8e7c7bbc714684ac762c8594dded1dcb214c215d05ed080f45e25b97d9432a99 # via boto3-stubs -mypy-boto3-iam==1.34.83 \ - --hash=sha256:7261315616757ebf7509df0e9b091d5942e470eb51c4b23c662a06873a9a8eca \ - --hash=sha256:dec66a98e29ec1e36178c24b8ff57aab6b91230df97557363bbd90ec06874768 +mypy-boto3-iam==1.34.152 \ + --hash=sha256:2c97e2b05f8e2839921d57114b6a2fc6a990b84462fba3c72a04ab1e382cb0f9 \ + --hash=sha256:e2a6094b53f5043b972765d24d86fce228ae224780b3e3b2a441f5ad8967e279 # via boto3-stubs -mypy-boto3-kinesis==1.34.0 \ - --hash=sha256:1add81c53f6e36599e0c22e142024867759aaf2f4954bcb2baa21c284c852377 \ - --hash=sha256:f404e75badd5977e9f09741b769b8888854bdd411c631344686ab889efe98741 +mypy-boto3-kinesis==1.34.153 \ + --hash=sha256:759a0da81badc5bd5dcf06991fbea931a80e00dfe3766ee522f6f6308e87a696 \ + --hash=sha256:e33bde87f403d660a80345a5eabc5373e79836b4e0b6f261f2bb592fa6908216 # via boto3-stubs mypy-boto3-lambda==1.34.77 \ --hash=sha256:7b81d2a5604fb592e92fe0b284ecd259de071703360a33b71c9b54df46d81c9c \ --hash=sha256:e21022d2eef12aa731af80790410afdba9412b056339823252813bae2adbf553 # via boto3-stubs -mypy-boto3-s3==1.34.138 \ - --hash=sha256:47ded5f06accc10ff9db9d55c85cca88e4f028ec360d7cfcea90377e525cba56 \ - --hash=sha256:7f9770d1f0e9f6fc2ced96daf5c0792b2dbbb4a4f874f28200ff3c940d0815c3 +mypy-boto3-s3==1.34.158 \ + --hash=sha256:a875eb0ee91ba5ac6967291887f6e924eb9dc157966e8181da20533086218166 \ + --hash=sha256:c01f1b2304ba7718c8561aaa2b6dc70fe438c91964256aa6ddc508d1cc553c66 # via boto3-stubs mypy-boto3-schemas==1.34.0 \ --hash=sha256:28c016609dcffc606bd8425ee92894c46e943ab77033e1ae46481f00c39b7f75 \ @@ -477,9 +477,9 @@ mypy-boto3-sqs==1.34.121 \ --hash=sha256:bdbc623235ffc8127cb8753f49323f74a919df552247b0b2caaf85cf9bb495b8 \ --hash=sha256:e92aefacfa08e7094b79002576ef261e4075f5af9c25219fc47fb8452f53fc5f # via boto3-stubs -mypy-boto3-stepfunctions==1.34.137 \ - --hash=sha256:c568275ab1b2d9600352ec26e9915335526d39fc6e7192a664428118f6c7799f \ - --hash=sha256:c78a6abaaf6b3c9eaee183b4cc59cb0d6aa838e2f20698be3d6ad46788a64945 +mypy-boto3-stepfunctions==1.34.149 \ + --hash=sha256:155f6d7aa4b61799166e5beae85386cf5393612e4cbabe7a8426225325e3c12b \ + --hash=sha256:dbe3c90af541178826f0992c58ef3699d5f1f42d0f51ff5b761d4c8036768726 # via boto3-stubs mypy-boto3-sts==1.34.0 \ --hash=sha256:3ba1875c2792b4f35fd918dca957ce09ad197beb7cfbda61f42144ffa9cda05d \ @@ -493,12 +493,6 @@ networkx==3.1 \ --hash=sha256:4f33f68cb2afcf86f28a45f43efc27a9386b535d567d2127f8f61d51dec58d36 \ --hash=sha256:de346335408f84de0eada6ff9fafafff9bcda11f0a0dfaa931133debb146ab61 # via cfn-lint -pbr==6.0.0 \ - --hash=sha256:4a7317d5e3b17a3dccb6a8cfe67dab65b20551404c52c8ed41279fa4f0cb4cda \ - --hash=sha256:d1377122a5a00e2f940ee482999518efe16d745d423a670c27773dfbc3c9a7d9 - # via - # jschema-to-python - # sarif-om pkgutil-resolve-name==1.3.10 \ --hash=sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174 \ --hash=sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e @@ -625,47 +619,60 @@ pytz==2024.1 \ --hash=sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812 \ --hash=sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319 # via dateparser -pyyaml==6.0.1 \ - --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ - --hash=sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741 \ - --hash=sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206 \ - --hash=sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27 \ - --hash=sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595 \ - --hash=sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62 \ - --hash=sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98 \ - --hash=sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696 \ - --hash=sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d \ - --hash=sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867 \ - --hash=sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47 \ - --hash=sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486 \ - --hash=sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6 \ - --hash=sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3 \ - --hash=sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007 \ - --hash=sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938 \ - --hash=sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c \ - --hash=sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735 \ - --hash=sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d \ - --hash=sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba \ - --hash=sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8 \ - --hash=sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5 \ - --hash=sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd \ - --hash=sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3 \ - --hash=sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0 \ - --hash=sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515 \ - --hash=sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c \ - --hash=sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c \ - --hash=sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924 \ - --hash=sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34 \ - --hash=sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43 \ - --hash=sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859 \ - --hash=sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673 \ - --hash=sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a \ - --hash=sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab \ - --hash=sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa \ - --hash=sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c \ - --hash=sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585 \ - --hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \ - --hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f +pyyaml==6.0.2 \ + --hash=sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff \ + --hash=sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48 \ + --hash=sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086 \ + --hash=sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e \ + --hash=sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133 \ + --hash=sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5 \ + --hash=sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484 \ + --hash=sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee \ + --hash=sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5 \ + --hash=sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68 \ + --hash=sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a \ + --hash=sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf \ + --hash=sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99 \ + --hash=sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8 \ + --hash=sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85 \ + --hash=sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19 \ + --hash=sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc \ + --hash=sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a \ + --hash=sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1 \ + --hash=sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317 \ + --hash=sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c \ + --hash=sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631 \ + --hash=sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d \ + --hash=sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652 \ + --hash=sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5 \ + --hash=sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e \ + --hash=sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b \ + --hash=sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8 \ + --hash=sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476 \ + --hash=sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706 \ + --hash=sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563 \ + --hash=sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237 \ + --hash=sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b \ + --hash=sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083 \ + --hash=sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180 \ + --hash=sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425 \ + --hash=sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e \ + --hash=sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f \ + --hash=sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725 \ + --hash=sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183 \ + --hash=sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab \ + --hash=sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774 \ + --hash=sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725 \ + --hash=sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e \ + --hash=sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5 \ + --hash=sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d \ + --hash=sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290 \ + --hash=sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44 \ + --hash=sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed \ + --hash=sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4 \ + --hash=sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba \ + --hash=sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12 \ + --hash=sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4 # via # aws-sam-cli (setup.py) # cfn-lint @@ -676,86 +683,86 @@ referencing==0.35.1 \ # via # jsonschema # jsonschema-specifications -regex==2024.5.15 \ - --hash=sha256:0721931ad5fe0dda45d07f9820b90b2148ccdd8e45bb9e9b42a146cb4f695649 \ - --hash=sha256:10002e86e6068d9e1c91eae8295ef690f02f913c57db120b58fdd35a6bb1af35 \ - --hash=sha256:10e4ce0dca9ae7a66e6089bb29355d4432caed736acae36fef0fdd7879f0b0cb \ - --hash=sha256:119af6e56dce35e8dfb5222573b50c89e5508d94d55713c75126b753f834de68 \ - --hash=sha256:1337b7dbef9b2f71121cdbf1e97e40de33ff114801263b275aafd75303bd62b5 \ - --hash=sha256:13cdaf31bed30a1e1c2453ef6015aa0983e1366fad2667657dbcac7b02f67133 \ - --hash=sha256:1595f2d10dff3d805e054ebdc41c124753631b6a471b976963c7b28543cf13b0 \ - --hash=sha256:16093f563098448ff6b1fa68170e4acbef94e6b6a4e25e10eae8598bb1694b5d \ - --hash=sha256:1878b8301ed011704aea4c806a3cadbd76f84dece1ec09cc9e4dc934cfa5d4da \ - --hash=sha256:19068a6a79cf99a19ccefa44610491e9ca02c2be3305c7760d3831d38a467a6f \ - --hash=sha256:19dfb1c504781a136a80ecd1fff9f16dddf5bb43cec6871778c8a907a085bb3d \ - --hash=sha256:1b5269484f6126eee5e687785e83c6b60aad7663dafe842b34691157e5083e53 \ - --hash=sha256:1c1c174d6ec38d6c8a7504087358ce9213d4332f6293a94fbf5249992ba54efa \ - --hash=sha256:2431b9e263af1953c55abbd3e2efca67ca80a3de8a0437cb58e2421f8184717a \ - --hash=sha256:287eb7f54fc81546346207c533ad3c2c51a8d61075127d7f6d79aaf96cdee890 \ - --hash=sha256:2b4c884767504c0e2401babe8b5b7aea9148680d2e157fa28f01529d1f7fcf67 \ - --hash=sha256:35cb514e137cb3488bce23352af3e12fb0dbedd1ee6e60da053c69fb1b29cc6c \ - --hash=sha256:391d7f7f1e409d192dba8bcd42d3e4cf9e598f3979cdaed6ab11288da88cb9f2 \ - --hash=sha256:3ad070b823ca5890cab606c940522d05d3d22395d432f4aaaf9d5b1653e47ced \ - --hash=sha256:3cd7874d57f13bf70078f1ff02b8b0aa48d5b9ed25fc48547516c6aba36f5741 \ - --hash=sha256:3e507ff1e74373c4d3038195fdd2af30d297b4f0950eeda6f515ae3d84a1770f \ - --hash=sha256:455705d34b4154a80ead722f4f185b04c4237e8e8e33f265cd0798d0e44825fa \ - --hash=sha256:4a605586358893b483976cffc1723fb0f83e526e8f14c6e6614e75919d9862cf \ - --hash=sha256:4babf07ad476aaf7830d77000874d7611704a7fcf68c9c2ad151f5d94ae4bfc4 \ - --hash=sha256:4eee78a04e6c67e8391edd4dad3279828dd66ac4b79570ec998e2155d2e59fd5 \ - --hash=sha256:5397de3219a8b08ae9540c48f602996aa6b0b65d5a61683e233af8605c42b0f2 \ - --hash=sha256:5b5467acbfc153847d5adb21e21e29847bcb5870e65c94c9206d20eb4e99a384 \ - --hash=sha256:5eaa7ddaf517aa095fa8da0b5015c44d03da83f5bd49c87961e3c997daed0de7 \ - --hash=sha256:632b01153e5248c134007209b5c6348a544ce96c46005d8456de1d552455b014 \ - --hash=sha256:64c65783e96e563103d641760664125e91bd85d8e49566ee560ded4da0d3e704 \ - --hash=sha256:64f18a9a3513a99c4bef0e3efd4c4a5b11228b48aa80743be822b71e132ae4f5 \ - --hash=sha256:673b5a6da4557b975c6c90198588181029c60793835ce02f497ea817ff647cb2 \ - --hash=sha256:68811ab14087b2f6e0fc0c2bae9ad689ea3584cad6917fc57be6a48bbd012c49 \ - --hash=sha256:6e8d717bca3a6e2064fc3a08df5cbe366369f4b052dcd21b7416e6d71620dca1 \ - --hash=sha256:71a455a3c584a88f654b64feccc1e25876066c4f5ef26cd6dd711308aa538694 \ - --hash=sha256:72d7a99cd6b8f958e85fc6ca5b37c4303294954eac1376535b03c2a43eb72629 \ - --hash=sha256:7b59138b219ffa8979013be7bc85bb60c6f7b7575df3d56dc1e403a438c7a3f6 \ - --hash=sha256:7dbe2467273b875ea2de38ded4eba86cbcbc9a1a6d0aa11dcf7bd2e67859c435 \ - --hash=sha256:833616ddc75ad595dee848ad984d067f2f31be645d603e4d158bba656bbf516c \ - --hash=sha256:87e2a9c29e672fc65523fb47a90d429b70ef72b901b4e4b1bd42387caf0d6835 \ - --hash=sha256:8fe45aa3f4aa57faabbc9cb46a93363edd6197cbc43523daea044e9ff2fea83e \ - --hash=sha256:9e717956dcfd656f5055cc70996ee2cc82ac5149517fc8e1b60261b907740201 \ - --hash=sha256:9efa1a32ad3a3ea112224897cdaeb6aa00381627f567179c0314f7b65d354c62 \ - --hash=sha256:9ff11639a8d98969c863d4617595eb5425fd12f7c5ef6621a4b74b71ed8726d5 \ - --hash=sha256:a094801d379ab20c2135529948cb84d417a2169b9bdceda2a36f5f10977ebc16 \ - --hash=sha256:a0981022dccabca811e8171f913de05720590c915b033b7e601f35ce4ea7019f \ - --hash=sha256:a0bd000c6e266927cb7a1bc39d55be95c4b4f65c5be53e659537537e019232b1 \ - --hash=sha256:a32b96f15c8ab2e7d27655969a23895eb799de3665fa94349f3b2fbfd547236f \ - --hash=sha256:a81e3cfbae20378d75185171587cbf756015ccb14840702944f014e0d93ea09f \ - --hash=sha256:ac394ff680fc46b97487941f5e6ae49a9f30ea41c6c6804832063f14b2a5a145 \ - --hash=sha256:ada150c5adfa8fbcbf321c30c751dc67d2f12f15bd183ffe4ec7cde351d945b3 \ - --hash=sha256:b2b6f1b3bb6f640c1a92be3bbfbcb18657b125b99ecf141fb3310b5282c7d4ed \ - --hash=sha256:b802512f3e1f480f41ab5f2cfc0e2f761f08a1f41092d6718868082fc0d27143 \ - --hash=sha256:ba68168daedb2c0bab7fd7e00ced5ba90aebf91024dea3c88ad5063c2a562cca \ - --hash=sha256:bfc4f82cabe54f1e7f206fd3d30fda143f84a63fe7d64a81558d6e5f2e5aaba9 \ - --hash=sha256:c0c18345010870e58238790a6779a1219b4d97bd2e77e1140e8ee5d14df071aa \ - --hash=sha256:c3bea0ba8b73b71b37ac833a7f3fd53825924165da6a924aec78c13032f20850 \ - --hash=sha256:c486b4106066d502495b3025a0a7251bf37ea9540433940a23419461ab9f2a80 \ - --hash=sha256:c49e15eac7c149f3670b3e27f1f28a2c1ddeccd3a2812cba953e01be2ab9b5fe \ - --hash=sha256:c6a2b494a76983df8e3d3feea9b9ffdd558b247e60b92f877f93a1ff43d26656 \ - --hash=sha256:cab12877a9bdafde5500206d1020a584355a97884dfd388af3699e9137bf7388 \ - --hash=sha256:cac27dcaa821ca271855a32188aa61d12decb6fe45ffe3e722401fe61e323cd1 \ - --hash=sha256:cdd09d47c0b2efee9378679f8510ee6955d329424c659ab3c5e3a6edea696294 \ - --hash=sha256:cf2430df4148b08fb4324b848672514b1385ae3807651f3567871f130a728cc3 \ - --hash=sha256:d0a3d8d6acf0c78a1fff0e210d224b821081330b8524e3e2bc5a68ef6ab5803d \ - --hash=sha256:d0c0c0003c10f54a591d220997dd27d953cd9ccc1a7294b40a4be5312be8797b \ - --hash=sha256:d1f059a4d795e646e1c37665b9d06062c62d0e8cc3c511fe01315973a6542e40 \ - --hash=sha256:d347a741ea871c2e278fde6c48f85136c96b8659b632fb57a7d1ce1872547600 \ - --hash=sha256:d3ee02d9e5f482cc8309134a91eeaacbdd2261ba111b0fef3748eeb4913e6a2c \ - --hash=sha256:d99ceffa25ac45d150e30bd9ed14ec6039f2aad0ffa6bb87a5936f5782fc1569 \ - --hash=sha256:e38a7d4e8f633a33b4c7350fbd8bad3b70bf81439ac67ac38916c4a86b465456 \ - --hash=sha256:e4682f5ba31f475d58884045c1a97a860a007d44938c4c0895f41d64481edbc9 \ - --hash=sha256:e5bb9425fe881d578aeca0b2b4b3d314ec88738706f66f219c194d67179337cb \ - --hash=sha256:e64198f6b856d48192bf921421fdd8ad8eb35e179086e99e99f711957ffedd6e \ - --hash=sha256:e6662686aeb633ad65be2a42b4cb00178b3fbf7b91878f9446075c404ada552f \ - --hash=sha256:ec54d5afa89c19c6dd8541a133be51ee1017a38b412b1321ccb8d6ddbeb4cf7d \ - --hash=sha256:f5b1dff3ad008dccf18e652283f5e5339d70bf8ba7c98bf848ac33db10f7bc7a \ - --hash=sha256:f8ec0c2fea1e886a19c3bee0cd19d862b3aa75dcdfb42ebe8ed30708df64687a \ - --hash=sha256:f9ebd0a36102fcad2f03696e8af4ae682793a5d30b46c647eaf280d6cfb32796 +regex==2024.7.24 \ + --hash=sha256:01b689e887f612610c869421241e075c02f2e3d1ae93a037cb14f88ab6a8934c \ + --hash=sha256:04ce29e2c5fedf296b1a1b0acc1724ba93a36fb14031f3abfb7abda2806c1535 \ + --hash=sha256:0ffe3f9d430cd37d8fa5632ff6fb36d5b24818c5c986893063b4e5bdb84cdf24 \ + --hash=sha256:18300a1d78cf1290fa583cd8b7cde26ecb73e9f5916690cf9d42de569c89b1ce \ + --hash=sha256:185e029368d6f89f36e526764cf12bf8d6f0e3a2a7737da625a76f594bdfcbfc \ + --hash=sha256:19c65b00d42804e3fbea9708f0937d157e53429a39b7c61253ff15670ff62cb5 \ + --hash=sha256:228b0d3f567fafa0633aee87f08b9276c7062da9616931382993c03808bb68ce \ + --hash=sha256:23acc72f0f4e1a9e6e9843d6328177ae3074b4182167e34119ec7233dfeccf53 \ + --hash=sha256:25419b70ba00a16abc90ee5fce061228206173231f004437730b67ac77323f0d \ + --hash=sha256:2dfbb8baf8ba2c2b9aa2807f44ed272f0913eeeba002478c4577b8d29cde215c \ + --hash=sha256:2f1baff13cc2521bea83ab2528e7a80cbe0ebb2c6f0bfad15be7da3aed443908 \ + --hash=sha256:33e2614a7ce627f0cdf2ad104797d1f68342d967de3695678c0cb84f530709f8 \ + --hash=sha256:3426de3b91d1bc73249042742f45c2148803c111d1175b283270177fdf669024 \ + --hash=sha256:382281306e3adaaa7b8b9ebbb3ffb43358a7bbf585fa93821300a418bb975281 \ + --hash=sha256:3d974d24edb231446f708c455fd08f94c41c1ff4f04bcf06e5f36df5ef50b95a \ + --hash=sha256:3f3b6ca8eae6d6c75a6cff525c8530c60e909a71a15e1b731723233331de4169 \ + --hash=sha256:3fac296f99283ac232d8125be932c5cd7644084a30748fda013028c815ba3364 \ + --hash=sha256:416c0e4f56308f34cdb18c3f59849479dde5b19febdcd6e6fa4d04b6c31c9faa \ + --hash=sha256:438d9f0f4bc64e8dea78274caa5af971ceff0f8771e1a2333620969936ba10be \ + --hash=sha256:43affe33137fcd679bdae93fb25924979517e011f9dea99163f80b82eadc7e53 \ + --hash=sha256:44fc61b99035fd9b3b9453f1713234e5a7c92a04f3577252b45feefe1b327759 \ + --hash=sha256:45104baae8b9f67569f0f1dca5e1f1ed77a54ae1cd8b0b07aba89272710db61e \ + --hash=sha256:4fdd1384619f406ad9037fe6b6eaa3de2749e2e12084abc80169e8e075377d3b \ + --hash=sha256:538d30cd96ed7d1416d3956f94d54e426a8daf7c14527f6e0d6d425fcb4cca52 \ + --hash=sha256:558a57cfc32adcf19d3f791f62b5ff564922942e389e3cfdb538a23d65a6b610 \ + --hash=sha256:5eefee9bfe23f6df09ffb6dfb23809f4d74a78acef004aa904dc7c88b9944b05 \ + --hash=sha256:64bd50cf16bcc54b274e20235bf8edbb64184a30e1e53873ff8d444e7ac656b2 \ + --hash=sha256:65fd3d2e228cae024c411c5ccdffae4c315271eee4a8b839291f84f796b34eca \ + --hash=sha256:66b4c0731a5c81921e938dcf1a88e978264e26e6ac4ec96a4d21ae0354581ae0 \ + --hash=sha256:68a8f8c046c6466ac61a36b65bb2395c74451df2ffb8458492ef49900efed293 \ + --hash=sha256:6a1141a1dcc32904c47f6846b040275c6e5de0bf73f17d7a409035d55b76f289 \ + --hash=sha256:6b9fc7e9cc983e75e2518496ba1afc524227c163e43d706688a6bb9eca41617e \ + --hash=sha256:6f51f9556785e5a203713f5efd9c085b4a45aecd2a42573e2b5041881b588d1f \ + --hash=sha256:7214477bf9bd195894cf24005b1e7b496f46833337b5dedb7b2a6e33f66d962c \ + --hash=sha256:731fcd76bbdbf225e2eb85b7c38da9633ad3073822f5ab32379381e8c3c12e94 \ + --hash=sha256:74007a5b25b7a678459f06559504f1eec2f0f17bca218c9d56f6a0a12bfffdad \ + --hash=sha256:7a5486ca56c8869070a966321d5ab416ff0f83f30e0e2da1ab48815c8d165d46 \ + --hash=sha256:7c479f5ae937ec9985ecaf42e2e10631551d909f203e31308c12d703922742f9 \ + --hash=sha256:7df9ea48641da022c2a3c9c641650cd09f0cd15e8908bf931ad538f5ca7919c9 \ + --hash=sha256:7e37e809b9303ec3a179085415cb5f418ecf65ec98cdfe34f6a078b46ef823ee \ + --hash=sha256:80c811cfcb5c331237d9bad3bea2c391114588cf4131707e84d9493064d267f9 \ + --hash=sha256:836d3cc225b3e8a943d0b02633fb2f28a66e281290302a79df0e1eaa984ff7c1 \ + --hash=sha256:84c312cdf839e8b579f504afcd7b65f35d60b6285d892b19adea16355e8343c9 \ + --hash=sha256:86b17ba823ea76256b1885652e3a141a99a5c4422f4a869189db328321b73799 \ + --hash=sha256:871e3ab2838fbcb4e0865a6e01233975df3a15e6fce93b6f99d75cacbd9862d1 \ + --hash=sha256:88ecc3afd7e776967fa16c80f974cb79399ee8dc6c96423321d6f7d4b881c92b \ + --hash=sha256:8bc593dcce679206b60a538c302d03c29b18e3d862609317cb560e18b66d10cf \ + --hash=sha256:8fd5afd101dcf86a270d254364e0e8dddedebe6bd1ab9d5f732f274fa00499a5 \ + --hash=sha256:945352286a541406f99b2655c973852da7911b3f4264e010218bbc1cc73168f2 \ + --hash=sha256:973335b1624859cb0e52f96062a28aa18f3a5fc77a96e4a3d6d76e29811a0e6e \ + --hash=sha256:994448ee01864501912abf2bad9203bffc34158e80fe8bfb5b031f4f8e16da51 \ + --hash=sha256:9cfd009eed1a46b27c14039ad5bbc5e71b6367c5b2e6d5f5da0ea91600817506 \ + --hash=sha256:a2ec4419a3fe6cf8a4795752596dfe0adb4aea40d3683a132bae9c30b81e8d73 \ + --hash=sha256:a4997716674d36a82eab3e86f8fa77080a5d8d96a389a61ea1d0e3a94a582cf7 \ + --hash=sha256:a512eed9dfd4117110b1881ba9a59b31433caed0c4101b361f768e7bcbaf93c5 \ + --hash=sha256:a82465ebbc9b1c5c50738536fdfa7cab639a261a99b469c9d4c7dcbb2b3f1e57 \ + --hash=sha256:ae2757ace61bc4061b69af19e4689fa4416e1a04840f33b441034202b5cd02d4 \ + --hash=sha256:b16582783f44fbca6fcf46f61347340c787d7530d88b4d590a397a47583f31dd \ + --hash=sha256:ba2537ef2163db9e6ccdbeb6f6424282ae4dea43177402152c67ef869cf3978b \ + --hash=sha256:bf7a89eef64b5455835f5ed30254ec19bf41f7541cd94f266ab7cbd463f00c41 \ + --hash=sha256:c0abb5e4e8ce71a61d9446040c1e86d4e6d23f9097275c5bd49ed978755ff0fe \ + --hash=sha256:c414cbda77dbf13c3bc88b073a1a9f375c7b0cb5e115e15d4b73ec3a2fbc6f59 \ + --hash=sha256:c51edc3541e11fbe83f0c4d9412ef6c79f664a3745fab261457e84465ec9d5a8 \ + --hash=sha256:c5e69fd3eb0b409432b537fe3c6f44ac089c458ab6b78dcec14478422879ec5f \ + --hash=sha256:c918b7a1e26b4ab40409820ddccc5d49871a82329640f5005f73572d5eaa9b5e \ + --hash=sha256:c9bb87fdf2ab2370f21e4d5636e5317775e5d51ff32ebff2cf389f71b9b13750 \ + --hash=sha256:ca5b2028c2f7af4e13fb9fc29b28d0ce767c38c7facdf64f6c2cd040413055f1 \ + --hash=sha256:d0a07763776188b4db4c9c7fb1b8c494049f84659bb387b71c73bbc07f189e96 \ + --hash=sha256:d33a0021893ede5969876052796165bab6006559ab845fd7b515a30abdd990dc \ + --hash=sha256:d55588cba7553f0b6ec33130bc3e114b355570b45785cebdc9daed8c637dd440 \ + --hash=sha256:dac8e84fff5d27420f3c1e879ce9929108e873667ec87e0c8eeb413a5311adfe \ + --hash=sha256:eaef80eac3b4cfbdd6de53c6e108b4c534c21ae055d1dbea2de6b3b8ff3def38 \ + --hash=sha256:eb462f0e346fcf41a901a126b50f8781e9a474d3927930f3490f38a6e73b6950 \ + --hash=sha256:eb563dd3aea54c797adf513eeec819c4213d7dbfc311874eb4fd28d10f2ff0f2 \ + --hash=sha256:f273674b445bcb6e4409bf8d1be67bc4b58e8b46fd0d560055d515b8830063cd \ + --hash=sha256:f6442f0f0ff81775eaa5b05af8a0ffa1dda36e9cf6ec1e0d3d245e8564b684ce \ + --hash=sha256:fb168b5924bef397b5ba13aabd8cf5df7d3d93f10218d7b925e360d436863f66 \ + --hash=sha256:fbf8c2f00904eaf63ff37718eb13acf8e178cb940520e47b2f05027f5bb34ce3 \ + --hash=sha256:fe4ebef608553aff8deb845c7f4f1d0740ff76fa672c011cc0bacb2a00fbde86 # via # aws-sam-cli (setup.py) # cfn-lint @@ -773,110 +780,110 @@ rich==13.7.1 \ # via # aws-sam-cli (setup.py) # cookiecutter -rpds-py==0.19.1 \ - --hash=sha256:01227f8b3e6c8961490d869aa65c99653df80d2f0a7fde8c64ebddab2b9b02fd \ - --hash=sha256:08ce9c95a0b093b7aec75676b356a27879901488abc27e9d029273d280438505 \ - --hash=sha256:0b02dd77a2de6e49078c8937aadabe933ceac04b41c5dde5eca13a69f3cf144e \ - --hash=sha256:0d4b52811dcbc1aba08fd88d475f75b4f6db0984ba12275d9bed1a04b2cae9b5 \ - --hash=sha256:13e6d4840897d4e4e6b2aa1443e3a8eca92b0402182aafc5f4ca1f5e24f9270a \ - --hash=sha256:1a129c02b42d46758c87faeea21a9f574e1c858b9f358b6dd0bbd71d17713175 \ - --hash=sha256:1a8dfa125b60ec00c7c9baef945bb04abf8ac772d8ebefd79dae2a5f316d7850 \ - --hash=sha256:1c32e41de995f39b6b315d66c27dea3ef7f7c937c06caab4c6a79a5e09e2c415 \ - --hash=sha256:1d494887d40dc4dd0d5a71e9d07324e5c09c4383d93942d391727e7a40ff810b \ - --hash=sha256:1d4af2eb520d759f48f1073ad3caef997d1bfd910dc34e41261a595d3f038a94 \ - --hash=sha256:1fb93d3486f793d54a094e2bfd9cd97031f63fcb5bc18faeb3dd4b49a1c06523 \ - --hash=sha256:24f8ae92c7fae7c28d0fae9b52829235df83f34847aa8160a47eb229d9666c7b \ - --hash=sha256:24fc5a84777cb61692d17988989690d6f34f7f95968ac81398d67c0d0994a897 \ - --hash=sha256:26ab43b6d65d25b1a333c8d1b1c2f8399385ff683a35ab5e274ba7b8bb7dc61c \ - --hash=sha256:271accf41b02687cef26367c775ab220372ee0f4925591c6796e7c148c50cab5 \ - --hash=sha256:2ddd50f18ebc05ec29a0d9271e9dbe93997536da3546677f8ca00b76d477680c \ - --hash=sha256:31dd5794837f00b46f4096aa8ccaa5972f73a938982e32ed817bb520c465e520 \ - --hash=sha256:31e450840f2f27699d014cfc8865cc747184286b26d945bcea6042bb6aa4d26e \ - --hash=sha256:32e0db3d6e4f45601b58e4ac75c6f24afbf99818c647cc2066f3e4b192dabb1f \ - --hash=sha256:346557f5b1d8fd9966059b7a748fd79ac59f5752cd0e9498d6a40e3ac1c1875f \ - --hash=sha256:34bca66e2e3eabc8a19e9afe0d3e77789733c702c7c43cd008e953d5d1463fde \ - --hash=sha256:3511f6baf8438326e351097cecd137eb45c5f019944fe0fd0ae2fea2fd26be39 \ - --hash=sha256:35af5e4d5448fa179fd7fff0bba0fba51f876cd55212f96c8bbcecc5c684ae5c \ - --hash=sha256:3837c63dd6918a24de6c526277910e3766d8c2b1627c500b155f3eecad8fad65 \ - --hash=sha256:39d67896f7235b2c886fb1ee77b1491b77049dcef6fbf0f401e7b4cbed86bbd4 \ - --hash=sha256:3b823be829407393d84ee56dc849dbe3b31b6a326f388e171555b262e8456cc1 \ - --hash=sha256:3c73254c256081704dba0a333457e2fb815364018788f9b501efe7c5e0ada401 \ - --hash=sha256:3ddab996807c6b4227967fe1587febade4e48ac47bb0e2d3e7858bc621b1cace \ - --hash=sha256:3e1dc59a5e7bc7f44bd0c048681f5e05356e479c50be4f2c1a7089103f1621d5 \ - --hash=sha256:4383beb4a29935b8fa28aca8fa84c956bf545cb0c46307b091b8d312a9150e6a \ - --hash=sha256:4cc4bc73e53af8e7a42c8fd7923bbe35babacfa7394ae9240b3430b5dcf16b2a \ - --hash=sha256:4dd02e29c8cbed21a1875330b07246b71121a1c08e29f0ee3db5b4cfe16980c4 \ - --hash=sha256:4f580ae79d0b861dfd912494ab9d477bea535bfb4756a2269130b6607a21802e \ - --hash=sha256:53dbc35808c6faa2ce3e48571f8f74ef70802218554884787b86a30947842a14 \ - --hash=sha256:56313be667a837ff1ea3508cebb1ef6681d418fa2913a0635386cf29cff35165 \ - --hash=sha256:57863d16187995c10fe9cf911b897ed443ac68189179541734502353af33e693 \ - --hash=sha256:5953391af1405f968eb5701ebbb577ebc5ced8d0041406f9052638bafe52209d \ - --hash=sha256:5beffdbe766cfe4fb04f30644d822a1080b5359df7db3a63d30fa928375b2720 \ - --hash=sha256:5e360188b72f8080fefa3adfdcf3618604cc8173651c9754f189fece068d2a45 \ - --hash=sha256:5e58b61dcbb483a442c6239c3836696b79f2cd8e7eec11e12155d3f6f2d886d1 \ - --hash=sha256:69084fd29bfeff14816666c93a466e85414fe6b7d236cfc108a9c11afa6f7301 \ - --hash=sha256:6d1d7539043b2b31307f2c6c72957a97c839a88b2629a348ebabe5aa8b626d6b \ - --hash=sha256:6d8b735c4d162dc7d86a9cf3d717f14b6c73637a1f9cd57fe7e61002d9cb1972 \ - --hash=sha256:6ea961a674172ed2235d990d7edf85d15d8dfa23ab8575e48306371c070cda67 \ - --hash=sha256:71157f9db7f6bc6599a852852f3389343bea34315b4e6f109e5cbc97c1fb2963 \ - --hash=sha256:720f3108fb1bfa32e51db58b832898372eb5891e8472a8093008010911e324c5 \ - --hash=sha256:74129d5ffc4cde992d89d345f7f7d6758320e5d44a369d74d83493429dad2de5 \ - --hash=sha256:747251e428406b05fc86fee3904ee19550c4d2d19258cef274e2151f31ae9d38 \ - --hash=sha256:75130df05aae7a7ac171b3b5b24714cffeabd054ad2ebc18870b3aa4526eba23 \ - --hash=sha256:7b3661e6d4ba63a094138032c1356d557de5b3ea6fd3cca62a195f623e381c76 \ - --hash=sha256:7d5c7e32f3ee42f77d8ff1a10384b5cdcc2d37035e2e3320ded909aa192d32c3 \ - --hash=sha256:8124101e92c56827bebef084ff106e8ea11c743256149a95b9fd860d3a4f331f \ - --hash=sha256:81db2e7282cc0487f500d4db203edc57da81acde9e35f061d69ed983228ffe3b \ - --hash=sha256:840e18c38098221ea6201f091fc5d4de6128961d2930fbbc96806fb43f69aec1 \ - --hash=sha256:89cc8921a4a5028d6dd388c399fcd2eef232e7040345af3d5b16c04b91cf3c7e \ - --hash=sha256:8b32cd4ab6db50c875001ba4f5a6b30c0f42151aa1fbf9c2e7e3674893fb1dc4 \ - --hash=sha256:8df1c283e57c9cb4d271fdc1875f4a58a143a2d1698eb0d6b7c0d7d5f49c53a1 \ - --hash=sha256:902cf4739458852fe917104365ec0efbea7d29a15e4276c96a8d33e6ed8ec137 \ - --hash=sha256:97fbb77eaeb97591efdc654b8b5f3ccc066406ccfb3175b41382f221ecc216e8 \ - --hash=sha256:9c7042488165f7251dc7894cd533a875d2875af6d3b0e09eda9c4b334627ad1c \ - --hash=sha256:9e318e6786b1e750a62f90c6f7fa8b542102bdcf97c7c4de2a48b50b61bd36ec \ - --hash=sha256:a9421b23c85f361a133aa7c5e8ec757668f70343f4ed8fdb5a4a14abd5437244 \ - --hash=sha256:aaf71f95b21f9dc708123335df22e5a2fef6307e3e6f9ed773b2e0938cc4d491 \ - --hash=sha256:afedc35fe4b9e30ab240b208bb9dc8938cb4afe9187589e8d8d085e1aacb8309 \ - --hash=sha256:b5e28e56143750808c1c79c70a16519e9bc0a68b623197b96292b21b62d6055c \ - --hash=sha256:b82c9514c6d74b89a370c4060bdb80d2299bc6857e462e4a215b4ef7aa7b090e \ - --hash=sha256:b8f78398e67a7227aefa95f876481485403eb974b29e9dc38b307bb6eb2315ea \ - --hash=sha256:bbda75f245caecff8faa7e32ee94dfaa8312a3367397975527f29654cd17a6ed \ - --hash=sha256:bca34e913d27401bda2a6f390d0614049f5a95b3b11cd8eff80fe4ec340a1208 \ - --hash=sha256:bd04d8cab16cab5b0a9ffc7d10f0779cf1120ab16c3925404428f74a0a43205a \ - --hash=sha256:c149a652aeac4902ecff2dd93c3b2681c608bd5208c793c4a99404b3e1afc87c \ - --hash=sha256:c2087dbb76a87ec2c619253e021e4fb20d1a72580feeaa6892b0b3d955175a71 \ - --hash=sha256:c34f751bf67cab69638564eee34023909380ba3e0d8ee7f6fe473079bf93f09b \ - --hash=sha256:c6d20c8896c00775e6f62d8373aba32956aa0b850d02b5ec493f486c88e12859 \ - --hash=sha256:c7af6f7b80f687b33a4cdb0a785a5d4de1fb027a44c9a049d8eb67d5bfe8a687 \ - --hash=sha256:c7b07959866a6afb019abb9564d8a55046feb7a84506c74a6f197cbcdf8a208e \ - --hash=sha256:ca0dda0c5715efe2ab35bb83f813f681ebcd2840d8b1b92bfc6fe3ab382fae4a \ - --hash=sha256:cdb7eb3cf3deb3dd9e7b8749323b5d970052711f9e1e9f36364163627f96da58 \ - --hash=sha256:ce757c7c90d35719b38fa3d4ca55654a76a40716ee299b0865f2de21c146801c \ - --hash=sha256:d1fa67ef839bad3815124f5f57e48cd50ff392f4911a9f3cf449d66fa3df62a5 \ - --hash=sha256:d2dbd8f4990d4788cb122f63bf000357533f34860d269c1a8e90ae362090ff3a \ - --hash=sha256:d4ec0046facab83012d821b33cead742a35b54575c4edfb7ed7445f63441835f \ - --hash=sha256:dbceedcf4a9329cc665452db1aaf0845b85c666e4885b92ee0cddb1dbf7e052a \ - --hash=sha256:dc733d35f861f8d78abfaf54035461e10423422999b360966bf1c443cbc42705 \ - --hash=sha256:dd635c2c4043222d80d80ca1ac4530a633102a9f2ad12252183bcf338c1b9474 \ - --hash=sha256:de1f7cd5b6b351e1afd7568bdab94934d656abe273d66cda0ceea43bbc02a0c2 \ - --hash=sha256:df7c841813f6265e636fe548a49664c77af31ddfa0085515326342a751a6ba51 \ - --hash=sha256:e0f9d268b19e8f61bf42a1da48276bcd05f7ab5560311f541d22557f8227b866 \ - --hash=sha256:e2d66eb41ffca6cc3c91d8387509d27ba73ad28371ef90255c50cb51f8953301 \ - --hash=sha256:e429fc517a1c5e2a70d576077231538a98d59a45dfc552d1ac45a132844e6dfb \ - --hash=sha256:e4d2b88efe65544a7d5121b0c3b003ebba92bfede2ea3577ce548b69c5235185 \ - --hash=sha256:e76c902d229a3aa9d5ceb813e1cbcc69bf5bda44c80d574ff1ac1fa3136dea71 \ - --hash=sha256:ef07a0a1d254eeb16455d839cef6e8c2ed127f47f014bbda64a58b5482b6c836 \ - --hash=sha256:f09529d2332264a902688031a83c19de8fda5eb5881e44233286b9c9ec91856d \ - --hash=sha256:f0a6d4a93d2a05daec7cb885157c97bbb0be4da739d6f9dfb02e101eb40921cd \ - --hash=sha256:f0cf2a0dbb5987da4bd92a7ca727eadb225581dd9681365beba9accbe5308f7d \ - --hash=sha256:f2671cb47e50a97f419a02cd1e0c339b31de017b033186358db92f4d8e2e17d8 \ - --hash=sha256:f35b34a5184d5e0cc360b61664c1c06e866aab077b5a7c538a3e20c8fcdbf90b \ - --hash=sha256:f3d73022990ab0c8b172cce57c69fd9a89c24fd473a5e79cbce92df87e3d9c48 \ - --hash=sha256:f5b8353ea1a4d7dfb59a7f45c04df66ecfd363bb5b35f33b11ea579111d4655f \ - --hash=sha256:f809a17cc78bd331e137caa25262b507225854073fd319e987bd216bed911b7c \ - --hash=sha256:f9bc4161bd3b970cd6a6fcda70583ad4afd10f2750609fb1f3ca9505050d4ef3 \ - --hash=sha256:fdf4890cda3b59170009d012fca3294c00140e7f2abe1910e6a730809d0f3f9b +rpds-py==0.20.0 \ + --hash=sha256:06db23d43f26478303e954c34c75182356ca9aa7797d22c5345b16871ab9c45c \ + --hash=sha256:0e13e6952ef264c40587d510ad676a988df19adea20444c2b295e536457bc585 \ + --hash=sha256:11ef6ce74616342888b69878d45e9f779b95d4bd48b382a229fe624a409b72c5 \ + --hash=sha256:1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6 \ + --hash=sha256:18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef \ + --hash=sha256:1e0f80b739e5a8f54837be5d5c924483996b603d5502bfff79bf33da06164ee2 \ + --hash=sha256:1e5f3cd7397c8f86c8cc72d5a791071431c108edd79872cdd96e00abd8497d29 \ + --hash=sha256:220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318 \ + --hash=sha256:22e6c9976e38f4d8c4a63bd8a8edac5307dffd3ee7e6026d97f3cc3a2dc02a0b \ + --hash=sha256:238a2d5b1cad28cdc6ed15faf93a998336eb041c4e440dd7f902528b8891b399 \ + --hash=sha256:2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739 \ + --hash=sha256:28527c685f237c05445efec62426d285e47a58fb05ba0090a4340b73ecda6dee \ + --hash=sha256:2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174 \ + --hash=sha256:338ca4539aad4ce70a656e5187a3a31c5204f261aef9f6ab50e50bcdffaf050a \ + --hash=sha256:39ed0d010457a78f54090fafb5d108501b5aa5604cc22408fc1c0c77eac14344 \ + --hash=sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2 \ + --hash=sha256:3d2b1ad682a3dfda2a4e8ad8572f3100f95fad98cb99faf37ff0ddfe9cbf9d03 \ + --hash=sha256:3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5 \ + --hash=sha256:3fde368e9140312b6e8b6c09fb9f8c8c2f00999d1823403ae90cc00480221b22 \ + --hash=sha256:40ce74fc86ee4645d0a225498d091d8bc61f39b709ebef8204cb8b5a464d3c0e \ + --hash=sha256:49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96 \ + --hash=sha256:4a1f1d51eccb7e6c32ae89243cb352389228ea62f89cd80823ea7dd1b98e0b91 \ + --hash=sha256:4b16aa0107ecb512b568244ef461f27697164d9a68d8b35090e9b0c1c8b27752 \ + --hash=sha256:4f1ed4749a08379555cebf4650453f14452eaa9c43d0a95c49db50c18b7da075 \ + --hash=sha256:4fe84294c7019456e56d93e8ababdad5a329cd25975be749c3f5f558abb48253 \ + --hash=sha256:50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee \ + --hash=sha256:514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad \ + --hash=sha256:54b43a2b07db18314669092bb2de584524d1ef414588780261e31e85846c26a5 \ + --hash=sha256:55fea87029cded5df854ca7e192ec7bdb7ecd1d9a3f63d5c4eb09148acf4a7ce \ + --hash=sha256:569b3ea770c2717b730b61998b6c54996adee3cef69fc28d444f3e7920313cf7 \ + --hash=sha256:56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b \ + --hash=sha256:57eb94a8c16ab08fef6404301c38318e2c5a32216bf5de453e2714c964c125c8 \ + --hash=sha256:5a35df9f5548fd79cb2f52d27182108c3e6641a4feb0f39067911bf2adaa3e57 \ + --hash=sha256:5a8c94dad2e45324fc74dce25e1645d4d14df9a4e54a30fa0ae8bad9a63928e3 \ + --hash=sha256:5b4f105deeffa28bbcdff6c49b34e74903139afa690e35d2d9e3c2c2fba18cec \ + --hash=sha256:5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209 \ + --hash=sha256:614fdafe9f5f19c63ea02817fa4861c606a59a604a77c8cdef5aa01d28b97921 \ + --hash=sha256:617c7357272c67696fd052811e352ac54ed1d9b49ab370261a80d3b6ce385045 \ + --hash=sha256:65794e4048ee837494aea3c21a28ad5fc080994dfba5b036cf84de37f7ad5074 \ + --hash=sha256:6632f2d04f15d1bd6fe0eedd3b86d9061b836ddca4c03d5cf5c7e9e6b7c14580 \ + --hash=sha256:6c8ef2ebf76df43f5750b46851ed1cdf8f109d7787ca40035fe19fbdc1acc5a7 \ + --hash=sha256:758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5 \ + --hash=sha256:7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3 \ + --hash=sha256:89c19a494bf3ad08c1da49445cc5d13d8fefc265f48ee7e7556839acdacf69d0 \ + --hash=sha256:8a86a9b96070674fc88b6f9f71a97d2c1d3e5165574615d1f9168ecba4cecb24 \ + --hash=sha256:8bc7690f7caee50b04a79bf017a8d020c1f48c2a1077ffe172abec59870f1139 \ + --hash=sha256:8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db \ + --hash=sha256:9426133526f69fcaba6e42146b4e12d6bc6c839b8b555097020e2b78ce908dcc \ + --hash=sha256:9824fb430c9cf9af743cf7aaf6707bf14323fb51ee74425c380f4c846ea70789 \ + --hash=sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f \ + --hash=sha256:9bc2d153989e3216b0559251b0c260cfd168ec78b1fac33dd485750a228db5a2 \ + --hash=sha256:9d35cef91e59ebbeaa45214861874bc6f19eb35de96db73e467a8358d701a96c \ + --hash=sha256:a1862d2d7ce1674cffa6d186d53ca95c6e17ed2b06b3f4c476173565c862d232 \ + --hash=sha256:a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6 \ + --hash=sha256:aa7f429242aae2947246587d2964fad750b79e8c233a2367f71b554e9447949c \ + --hash=sha256:aa9a0521aeca7d4941499a73ad7d4f8ffa3d1affc50b9ea11d992cd7eff18a29 \ + --hash=sha256:ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489 \ + --hash=sha256:ae94bd0b2f02c28e199e9bc51485d0c5601f58780636185660f86bf80c89af94 \ + --hash=sha256:af0fc424a5842a11e28956e69395fbbeab2c97c42253169d87e90aac2886d751 \ + --hash=sha256:b2a5db5397d82fa847e4c624b0c98fe59d2d9b7cf0ce6de09e4d2e80f8f5b3f2 \ + --hash=sha256:b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda \ + --hash=sha256:b74b25f024b421d5859d156750ea9a65651793d51b76a2e9238c05c9d5f203a9 \ + --hash=sha256:b7f19250ceef892adf27f0399b9e5afad019288e9be756d6919cb58892129f51 \ + --hash=sha256:b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c \ + --hash=sha256:b8c00a3b1e70c1d3891f0db1b05292747f0dbcfb49c43f9244d04c70fbc40eb8 \ + --hash=sha256:bb273176be34a746bdac0b0d7e4e2c467323d13640b736c4c477881a3220a989 \ + --hash=sha256:c3c20f0ddeb6e29126d45f89206b8291352b8c5b44384e78a6499d68b52ae511 \ + --hash=sha256:c3e130fd0ec56cb76eb49ef52faead8ff09d13f4527e9b0c400307ff72b408e1 \ + --hash=sha256:c52d3f2f82b763a24ef52f5d24358553e8403ce05f893b5347098014f2d9eff2 \ + --hash=sha256:c6377e647bbfd0a0b159fe557f2c6c602c159fc752fa316572f012fc0bf67150 \ + --hash=sha256:c638144ce971df84650d3ed0096e2ae7af8e62ecbbb7b201c8935c370df00a2c \ + --hash=sha256:ce9845054c13696f7af7f2b353e6b4f676dab1b4b215d7fe5e05c6f8bb06f965 \ + --hash=sha256:cf258ede5bc22a45c8e726b29835b9303c285ab46fc7c3a4cc770736b5304c9f \ + --hash=sha256:d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58 \ + --hash=sha256:d0b67d87bb45ed1cd020e8fbf2307d449b68abc45402fe1a4ac9e46c3c8b192b \ + --hash=sha256:d20277fd62e1b992a50c43f13fbe13277a31f8c9f70d59759c88f644d66c619f \ + --hash=sha256:d454b8749b4bd70dd0a79f428731ee263fa6995f83ccb8bada706e8d1d3ff89d \ + --hash=sha256:d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821 \ + --hash=sha256:d72278a30111e5b5525c1dd96120d9e958464316f55adb030433ea905866f4de \ + --hash=sha256:d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121 \ + --hash=sha256:d807dc2051abe041b6649681dce568f8e10668e3c1c6543ebae58f2d7e617855 \ + --hash=sha256:dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272 \ + --hash=sha256:dcedf0b42bcb4cfff4101d7771a10532415a6106062f005ab97d1d0ab5681c60 \ + --hash=sha256:deb62214c42a261cb3eb04d474f7155279c1a8a8c30ac89b7dcb1721d92c3c02 \ + --hash=sha256:def7400461c3a3f26e49078302e1c1b38f6752342c77e3cf72ce91ca69fb1bc1 \ + --hash=sha256:df3de6b7726b52966edf29663e57306b23ef775faf0ac01a3e9f4012a24a4140 \ + --hash=sha256:e1940dae14e715e2e02dfd5b0f64a52e8374a517a1e531ad9412319dc3ac7879 \ + --hash=sha256:e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940 \ + --hash=sha256:e6900ecdd50ce0facf703f7a00df12374b74bbc8ad9fe0f6559947fb20f82364 \ + --hash=sha256:ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4 \ + --hash=sha256:eb851b7df9dda52dc1415ebee12362047ce771fc36914586b2e9fcbd7d293b3e \ + --hash=sha256:ec31a99ca63bf3cd7f1a5ac9fe95c5e2d060d3c768a09bc1d16e235840861420 \ + --hash=sha256:f0475242f447cc6cb8a9dd486d68b2ef7fbee84427124c232bff5f63b1fe11e5 \ + --hash=sha256:f2fbf7db2012d4876fb0d66b5b9ba6591197b0f165db8d99371d976546472a24 \ + --hash=sha256:f60012a73aa396be721558caa3a6fd49b3dd0033d1675c6d59c4502e870fcf0c \ + --hash=sha256:f8e604fe73ba048c06085beaf51147eaec7df856824bfe7b98657cf436623daf \ + --hash=sha256:f90a4cd061914a60bd51c68bcb4357086991bd0bb93d8aa66a6da7701370708f \ + --hash=sha256:f918a1a130a6dfe1d7fe0f105064141342e7dd1611f2e6a21cd2f5c8cb1cfb3e \ + --hash=sha256:fa518bcd7600c584bf42e6617ee8132869e877db2f76bcdc281ec6a4113a53ab \ + --hash=sha256:faefcc78f53a88f3076b7f8be0a8f8d35133a3ecf7f3770895c25f8813460f08 \ + --hash=sha256:fcaeb7b57f1a1e071ebd748984359fef83ecb026325b9d4ca847c95bc7311c92 \ + --hash=sha256:fd2d84f40633bc475ef2d5490b9c19543fbf18596dcb1b291e3a12ea5d722f7a \ + --hash=sha256:fdfc3a892927458d98f3d55428ae46b921d1f7543b89382fdb483f5640daaec8 # via # jsonschema # referencing @@ -940,19 +947,13 @@ s3transfer==0.10.2 \ --hash=sha256:0711534e9356d3cc692fdde846b4a1e4b0cb6519971860796e6bc4c7aea00ef6 \ --hash=sha256:eca1c20de70a39daee580aef4986996620f365c4e0fda6a86100231d62f1bf69 # via boto3 -sarif-om==1.0.4 \ - --hash=sha256:539ef47a662329b1c8502388ad92457425e95dc0aaaf995fe46f4984c4771911 \ - --hash=sha256:cd5f416b3083e00d402a92e449a7ff67af46f11241073eea0461802a3b5aef98 - # via cfn-lint six==1.16.0 \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 - # via - # junit-xml - # python-dateutil -sympy==1.13.1 \ - --hash=sha256:9cebf7e04ff162015ce31c9c6c9144daa34a93bd082f54fd8f12deca4f47515f \ - --hash=sha256:db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + # via python-dateutil +sympy==1.13.2 \ + --hash=sha256:401449d84d07be9d0c7a46a64bd54fe097667d5e7181bfe67ec777be9e01cb13 \ + --hash=sha256:c51d75517712f1aed280d4ce58506a4a88d635d6b5dd48b39102a7ae1f3fcfe9 # via cfn-lint text-unidecode==1.3 \ --hash=sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8 \ @@ -983,6 +984,7 @@ typing-extensions==4.12.2 \ # aws-sam-translator # boto3-stubs # botocore-stubs + # cfn-lint # mypy-boto3-apigateway # mypy-boto3-cloudformation # mypy-boto3-ecr @@ -1013,51 +1015,54 @@ urllib3==1.26.19 \ # botocore # docker # requests -watchdog==4.0.1 \ - --hash=sha256:0144c0ea9997b92615af1d94afc0c217e07ce2c14912c7b1a5731776329fcfc7 \ - --hash=sha256:03e70d2df2258fb6cb0e95bbdbe06c16e608af94a3ffbd2b90c3f1e83eb10767 \ - --hash=sha256:093b23e6906a8b97051191a4a0c73a77ecc958121d42346274c6af6520dec175 \ - --hash=sha256:123587af84260c991dc5f62a6e7ef3d1c57dfddc99faacee508c71d287248459 \ - --hash=sha256:17e32f147d8bf9657e0922c0940bcde863b894cd871dbb694beb6704cfbd2fb5 \ - --hash=sha256:206afc3d964f9a233e6ad34618ec60b9837d0582b500b63687e34011e15bb429 \ - --hash=sha256:4107ac5ab936a63952dea2a46a734a23230aa2f6f9db1291bf171dac3ebd53c6 \ - --hash=sha256:4513ec234c68b14d4161440e07f995f231be21a09329051e67a2118a7a612d2d \ - --hash=sha256:611be3904f9843f0529c35a3ff3fd617449463cb4b73b1633950b3d97fa4bfb7 \ - --hash=sha256:62c613ad689ddcb11707f030e722fa929f322ef7e4f18f5335d2b73c61a85c28 \ - --hash=sha256:667f3c579e813fcbad1b784db7a1aaa96524bed53437e119f6a2f5de4db04235 \ - --hash=sha256:6e8c70d2cd745daec2a08734d9f63092b793ad97612470a0ee4cbb8f5f705c57 \ - --hash=sha256:7577b3c43e5909623149f76b099ac49a1a01ca4e167d1785c76eb52fa585745a \ - --hash=sha256:998d2be6976a0ee3a81fb8e2777900c28641fb5bfbd0c84717d89bca0addcdc5 \ - --hash=sha256:a3c2c317a8fb53e5b3d25790553796105501a235343f5d2bf23bb8649c2c8709 \ - --hash=sha256:ab998f567ebdf6b1da7dc1e5accfaa7c6992244629c0fdaef062f43249bd8dee \ - --hash=sha256:ac7041b385f04c047fcc2951dc001671dee1b7e0615cde772e84b01fbf68ee84 \ - --hash=sha256:bca36be5707e81b9e6ce3208d92d95540d4ca244c006b61511753583c81c70dd \ - --hash=sha256:c9904904b6564d4ee8a1ed820db76185a3c96e05560c776c79a6ce5ab71888ba \ - --hash=sha256:cad0bbd66cd59fc474b4a4376bc5ac3fc698723510cbb64091c2a793b18654db \ - --hash=sha256:d10a681c9a1d5a77e75c48a3b8e1a9f2ae2928eda463e8d33660437705659682 \ - --hash=sha256:d4925e4bf7b9bddd1c3de13c9b8a2cdb89a468f640e66fbfabaf735bd85b3e35 \ - --hash=sha256:d7b9f5f3299e8dd230880b6c55504a1f69cf1e4316275d1b215ebdd8187ec88d \ - --hash=sha256:da2dfdaa8006eb6a71051795856bedd97e5b03e57da96f98e375682c48850645 \ - --hash=sha256:dddba7ca1c807045323b6af4ff80f5ddc4d654c8bce8317dde1bd96b128ed253 \ - --hash=sha256:e7921319fe4430b11278d924ef66d4daa469fafb1da679a2e48c935fa27af193 \ - --hash=sha256:e93f451f2dfa433d97765ca2634628b789b49ba8b504fdde5837cdcf25fdb53b \ - --hash=sha256:eebaacf674fa25511e8867028d281e602ee6500045b57f43b08778082f7f8b44 \ - --hash=sha256:ef0107bbb6a55f5be727cfc2ef945d5676b97bffb8425650dadbb184be9f9a2b \ - --hash=sha256:f0de0f284248ab40188f23380b03b59126d1479cd59940f2a34f8852db710625 \ - --hash=sha256:f27279d060e2ab24c0aa98363ff906d2386aa6c4dc2f1a374655d4e02a6c5e5e \ - --hash=sha256:f8affdf3c0f0466e69f5b3917cdd042f89c8c63aebdb9f7c078996f607cdb0f5 +watchdog==4.0.2 \ + --hash=sha256:0b4359067d30d5b864e09c8597b112fe0a0a59321a0f331498b013fb097406b4 \ + --hash=sha256:0d8a7e523ef03757a5aa29f591437d64d0d894635f8a50f370fe37f913ce4e19 \ + --hash=sha256:0e83619a2d5d436a7e58a1aea957a3c1ccbf9782c43c0b4fed80580e5e4acd1a \ + --hash=sha256:10b6683df70d340ac3279eff0b2766813f00f35a1d37515d2c99959ada8f05fa \ + --hash=sha256:132937547a716027bd5714383dfc40dc66c26769f1ce8a72a859d6a48f371f3a \ + --hash=sha256:1cdcfd8142f604630deef34722d695fb455d04ab7cfe9963055df1fc69e6727a \ + --hash=sha256:2d468028a77b42cc685ed694a7a550a8d1771bb05193ba7b24006b8241a571a1 \ + --hash=sha256:32be97f3b75693a93c683787a87a0dc8db98bb84701539954eef991fb35f5fbc \ + --hash=sha256:770eef5372f146997638d737c9a3c597a3b41037cfbc5c41538fc27c09c3a3f9 \ + --hash=sha256:7c7d4bf585ad501c5f6c980e7be9c4f15604c7cc150e942d82083b31a7548930 \ + --hash=sha256:88456d65f207b39f1981bf772e473799fcdc10801062c36fd5ad9f9d1d463a73 \ + --hash=sha256:914285126ad0b6eb2258bbbcb7b288d9dfd655ae88fa28945be05a7b475a800b \ + --hash=sha256:936acba76d636f70db8f3c66e76aa6cb5136a936fc2a5088b9ce1c7a3508fc83 \ + --hash=sha256:980b71510f59c884d684b3663d46e7a14b457c9611c481e5cef08f4dd022eed7 \ + --hash=sha256:984306dc4720da5498b16fc037b36ac443816125a3705dfde4fd90652d8028ef \ + --hash=sha256:a2cffa171445b0efa0726c561eca9a27d00a1f2b83846dbd5a4f639c4f8ca8e1 \ + --hash=sha256:aa160781cafff2719b663c8a506156e9289d111d80f3387cf3af49cedee1f040 \ + --hash=sha256:b2c45f6e1e57ebb4687690c05bc3a2c1fb6ab260550c4290b8abb1335e0fd08b \ + --hash=sha256:b4dfbb6c49221be4535623ea4474a4d6ee0a9cef4a80b20c28db4d858b64e270 \ + --hash=sha256:baececaa8edff42cd16558a639a9b0ddf425f93d892e8392a56bf904f5eff22c \ + --hash=sha256:bcfd02377be80ef3b6bc4ce481ef3959640458d6feaae0bd43dd90a43da90a7d \ + --hash=sha256:c0b14488bd336c5b1845cee83d3e631a1f8b4e9c5091ec539406e4a324f882d8 \ + --hash=sha256:c100d09ac72a8a08ddbf0629ddfa0b8ee41740f9051429baa8e31bb903ad7508 \ + --hash=sha256:c344453ef3bf875a535b0488e3ad28e341adbd5a9ffb0f7d62cefacc8824ef2b \ + --hash=sha256:c50f148b31b03fbadd6d0b5980e38b558046b127dc483e5e4505fcef250f9503 \ + --hash=sha256:c82253cfc9be68e3e49282831afad2c1f6593af80c0daf1287f6a92657986757 \ + --hash=sha256:cd67c7df93eb58f360c43802acc945fa8da70c675b6fa37a241e17ca698ca49b \ + --hash=sha256:d7ab624ff2f663f98cd03c8b7eedc09375a911794dfea6bf2a359fcc266bff29 \ + --hash=sha256:e252f8ca942a870f38cf785aef420285431311652d871409a64e2a0a52a2174c \ + --hash=sha256:ede7f010f2239b97cc79e6cb3c249e72962404ae3865860855d5cbe708b0fd22 \ + --hash=sha256:eeea812f38536a0aa859972d50c76e37f4456474b02bd93674d1947cf1e39578 \ + --hash=sha256:f15edcae3830ff20e55d1f4e743e92970c847bcddc8b7509bcd172aa04de506e \ + --hash=sha256:f5315a8c8dd6dd9425b974515081fc0aadca1d1d61e078d2246509fd756141ee \ + --hash=sha256:f6ee8dedd255087bc7fe82adf046f0b75479b989185fb0bdf9a98b612170eac7 \ + --hash=sha256:f7c739888c20f99824f7aa9d31ac8a97353e22d0c0e54703a547a218f6637eb3 # via aws-sam-cli (setup.py) werkzeug==3.0.3 \ --hash=sha256:097e5bfda9f0aba8da6b8545146def481d06aa7d3266e7448e2cccf67dd8bd18 \ --hash=sha256:fc9645dc43e03e4d630d23143a04a7f947a9a3b5727cd535fdfe155a17cc48c8 # via flask -wheel==0.43.0 \ - --hash=sha256:465ef92c69fa5c5da2d1cf8ac40559a8c940886afcef87dcf14b9470862f1d85 \ - --hash=sha256:55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81 +wheel==0.44.0 \ + --hash=sha256:2376a90c98cc337d18623527a97c31797bd02bad0033d41547043a1cbfbe448f \ + --hash=sha256:a29c3f2817e95ab89aa4660681ad547c0e9547f20e75b0562fe7723c9a2a9d49 # via aws-lambda-builders -zipp==3.19.2 \ - --hash=sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19 \ - --hash=sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c +zipp==3.20.0 \ + --hash=sha256:0145e43d89664cfe1a2e533adc75adafed82fe2da404b4bbb6b026c0157bdb31 \ + --hash=sha256:58da6168be89f0be59beb194da1250516fdaa062ccebd30127ac65d30045e10d # via # importlib-metadata # importlib-resources diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 986b613251..a6fd38033b 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -12,21 +12,19 @@ arrow==1.3.0 \ --hash=sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80 \ --hash=sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85 # via cookiecutter -attrs==23.2.0 \ - --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ - --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 +attrs==24.2.0 \ + --hash=sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346 \ + --hash=sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2 # via - # jschema-to-python # jsonschema # referencing - # sarif-om aws-lambda-builders==1.50.0 \ --hash=sha256:40a613ecb19fbf0b64a47bae14bd252ea5da32ea71fde9808d596e2dbc011baf \ --hash=sha256:ad95ed55359c399872f5825582896500dfc1c5564eccf2a6ab8d0e9f6c1ae385 # via aws-sam-cli (setup.py) -aws-sam-translator==1.89.0 \ - --hash=sha256:843be1b5ca7634f700ad0c844a7e0dc42858f35da502e91691473eadd1731ded \ - --hash=sha256:fff1005d0b1f3cb511d0ac7e85f54af06afc9d9e433df013a2338d7a0168d174 +aws-sam-translator==1.90.0 \ + --hash=sha256:25f1d5be7980ff57299977ca0bb807caf7b5ea474646bb0fc96e2541f34a20b6 \ + --hash=sha256:35e70accfe4ead2cc4e6df104a991f94a4fc4aa3b1dc4d460dded77cf30f670c # via # aws-sam-cli (setup.py) # cfn-lint @@ -38,87 +36,102 @@ blinker==1.8.2 \ --hash=sha256:1779309f71bf239144b9399d06ae925637cf6634cf6bd131104184531bf67c01 \ --hash=sha256:8f77b09d3bf7c795e969e9486f39c2c5e9c39d4ee07424be2bc594ece9642d83 # via flask -boto3==1.34.147 \ - --hash=sha256:9ec1c6ab22588242a47549f51a63dfc7c21fdf95a94820fc6e629ab060c38bd9 \ - --hash=sha256:e1cef9a1a301866bcdee32ae0c699465eb2345f9a8e613a5835821430165ff6d +boto3==1.34.159 \ + --hash=sha256:21120d23cc37c0e80dc4f64434bc5664d2a5645dcd9bf8a8fa97ed5c82164ca0 \ + --hash=sha256:ffe7bbb88ba81b5d54bc8fa0cfb2f3b7fe63a6cffa0f9207df2ef5c22a1c0587 # 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.147 \ - --hash=sha256:3a483d2a55b247029d6e5e04002153984353c0c19882607af7e37038a7ce72b0 \ - --hash=sha256:6a5b276eb3414b370a084561f23d610a1e8c8e7630f6fe463523fc06766bc887 +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.159 \ + --hash=sha256:9d5b69db82dbc55fce3d58f5d39d0680ca5334d7df596447c29357b9a0669b09 \ + --hash=sha256:d3a298f3b0a3a7758c2bfb8585089e18567c1eee695f939439ef0023e84b32ce # via aws-sam-cli (setup.py) -botocore==1.34.147 \ - --hash=sha256:2e8f000b77e4ca345146cb2edab6403769a517b564f627bb084ab335417f3dbe \ - --hash=sha256:be94a2f4874b1d1705cae2bd512c475047497379651678593acb6c61c50d91de +botocore==1.34.159 \ + --hash=sha256:7633062491457419a49f5860c014251ae85689f78266a3ce020c2c8688a76b97 \ + --hash=sha256:dc28806eb21e3c8d690c422530dff8b4b242ac033cbe98f160a9d37796c09cb1 # via # boto3 # s3transfer -botocore-stubs==1.34.147 \ - --hash=sha256:d69c75b71c2fe1456b724653f586adcd5bf660ff6d104ecb6ac5efb40fcf363b \ - --hash=sha256:ef1643787c95036641cc49700d8e7d48e31826ce4c25b50e2745a4e9104c662b +botocore-stubs==1.34.159 \ + --hash=sha256:b2bf4ff8dd4a39556f6338bdc7e75485282dd7e2c0b7dacdcfc219352c7865ea \ + --hash=sha256:f9f51612960c0fa1b01638816ee3d1ca031f9efc3e1328e4f4d52253b573067a # via boto3-stubs certifi==2024.7.4 \ --hash=sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b \ --hash=sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90 # via requests -cffi==1.16.0 \ - --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \ - --hash=sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a \ - --hash=sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417 \ - --hash=sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab \ - --hash=sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520 \ - --hash=sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36 \ - --hash=sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743 \ - --hash=sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8 \ - --hash=sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed \ - --hash=sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684 \ - --hash=sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56 \ - --hash=sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324 \ - --hash=sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d \ - --hash=sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235 \ - --hash=sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e \ - --hash=sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088 \ - --hash=sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000 \ - --hash=sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7 \ - --hash=sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e \ - --hash=sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673 \ - --hash=sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c \ - --hash=sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe \ - --hash=sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2 \ - --hash=sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098 \ - --hash=sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8 \ - --hash=sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a \ - --hash=sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0 \ - --hash=sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b \ - --hash=sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896 \ - --hash=sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e \ - --hash=sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9 \ - --hash=sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2 \ - --hash=sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b \ - --hash=sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6 \ - --hash=sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404 \ - --hash=sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f \ - --hash=sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0 \ - --hash=sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4 \ - --hash=sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc \ - --hash=sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936 \ - --hash=sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba \ - --hash=sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872 \ - --hash=sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb \ - --hash=sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614 \ - --hash=sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1 \ - --hash=sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d \ - --hash=sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969 \ - --hash=sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b \ - --hash=sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4 \ - --hash=sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627 \ - --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ - --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 +cffi==1.17.0 \ + --hash=sha256:011aff3524d578a9412c8b3cfaa50f2c0bd78e03eb7af7aa5e0df59b158efb2f \ + --hash=sha256:0a048d4f6630113e54bb4b77e315e1ba32a5a31512c31a273807d0027a7e69ab \ + --hash=sha256:0bb15e7acf8ab35ca8b24b90af52c8b391690ef5c4aec3d31f38f0d37d2cc499 \ + --hash=sha256:0d46ee4764b88b91f16661a8befc6bfb24806d885e27436fdc292ed7e6f6d058 \ + --hash=sha256:0e60821d312f99d3e1569202518dddf10ae547e799d75aef3bca3a2d9e8ee693 \ + --hash=sha256:0fdacad9e0d9fc23e519efd5ea24a70348305e8d7d85ecbb1a5fa66dc834e7fb \ + --hash=sha256:14b9cbc8f7ac98a739558eb86fabc283d4d564dafed50216e7f7ee62d0d25377 \ + --hash=sha256:17c6d6d3260c7f2d94f657e6872591fe8733872a86ed1345bda872cfc8c74885 \ + --hash=sha256:1a2ddbac59dc3716bc79f27906c010406155031a1c801410f1bafff17ea304d2 \ + --hash=sha256:2404f3de742f47cb62d023f0ba7c5a916c9c653d5b368cc966382ae4e57da401 \ + --hash=sha256:24658baf6224d8f280e827f0a50c46ad819ec8ba380a42448e24459daf809cf4 \ + --hash=sha256:24aa705a5f5bd3a8bcfa4d123f03413de5d86e497435693b638cbffb7d5d8a1b \ + --hash=sha256:2770bb0d5e3cc0e31e7318db06efcbcdb7b31bcb1a70086d3177692a02256f59 \ + --hash=sha256:331ad15c39c9fe9186ceaf87203a9ecf5ae0ba2538c9e898e3a6967e8ad3db6f \ + --hash=sha256:3aa9d43b02a0c681f0bfbc12d476d47b2b2b6a3f9287f11ee42989a268a1833c \ + --hash=sha256:41f4915e09218744d8bae14759f983e466ab69b178de38066f7579892ff2a555 \ + --hash=sha256:4304d4416ff032ed50ad6bb87416d802e67139e31c0bde4628f36a47a3164bfa \ + --hash=sha256:435a22d00ec7d7ea533db494da8581b05977f9c37338c80bc86314bec2619424 \ + --hash=sha256:45f7cd36186db767d803b1473b3c659d57a23b5fa491ad83c6d40f2af58e4dbb \ + --hash=sha256:48b389b1fd5144603d61d752afd7167dfd205973a43151ae5045b35793232aa2 \ + --hash=sha256:4e67d26532bfd8b7f7c05d5a766d6f437b362c1bf203a3a5ce3593a645e870b8 \ + --hash=sha256:516a405f174fd3b88829eabfe4bb296ac602d6a0f68e0d64d5ac9456194a5b7e \ + --hash=sha256:5ba5c243f4004c750836f81606a9fcb7841f8874ad8f3bf204ff5e56332b72b9 \ + --hash=sha256:5bdc0f1f610d067c70aa3737ed06e2726fd9d6f7bfee4a351f4c40b6831f4e82 \ + --hash=sha256:6107e445faf057c118d5050560695e46d272e5301feffda3c41849641222a828 \ + --hash=sha256:6327b572f5770293fc062a7ec04160e89741e8552bf1c358d1a23eba68166759 \ + --hash=sha256:669b29a9eca6146465cc574659058ed949748f0809a2582d1f1a324eb91054dc \ + --hash=sha256:6ce01337d23884b21c03869d2f68c5523d43174d4fc405490eb0091057943118 \ + --hash=sha256:6d872186c1617d143969defeadac5a904e6e374183e07977eedef9c07c8953bf \ + --hash=sha256:6f76a90c345796c01d85e6332e81cab6d70de83b829cf1d9762d0a3da59c7932 \ + --hash=sha256:70d2aa9fb00cf52034feac4b913181a6e10356019b18ef89bc7c12a283bf5f5a \ + --hash=sha256:7cbc78dc018596315d4e7841c8c3a7ae31cc4d638c9b627f87d52e8abaaf2d29 \ + --hash=sha256:856bf0924d24e7f93b8aee12a3a1095c34085600aa805693fb7f5d1962393206 \ + --hash=sha256:8a98748ed1a1df4ee1d6f927e151ed6c1a09d5ec21684de879c7ea6aa96f58f2 \ + --hash=sha256:93a7350f6706b31f457c1457d3a3259ff9071a66f312ae64dc024f049055f72c \ + --hash=sha256:964823b2fc77b55355999ade496c54dde161c621cb1f6eac61dc30ed1b63cd4c \ + --hash=sha256:a003ac9edc22d99ae1286b0875c460351f4e101f8c9d9d2576e78d7e048f64e0 \ + --hash=sha256:a0ce71725cacc9ebf839630772b07eeec220cbb5f03be1399e0457a1464f8e1a \ + --hash=sha256:a47eef975d2b8b721775a0fa286f50eab535b9d56c70a6e62842134cf7841195 \ + --hash=sha256:a8b5b9712783415695663bd463990e2f00c6750562e6ad1d28e072a611c5f2a6 \ + --hash=sha256:a9015f5b8af1bb6837a3fcb0cdf3b874fe3385ff6274e8b7925d81ccaec3c5c9 \ + --hash=sha256:aec510255ce690d240f7cb23d7114f6b351c733a74c279a84def763660a2c3bc \ + --hash=sha256:b00e7bcd71caa0282cbe3c90966f738e2db91e64092a877c3ff7f19a1628fdcb \ + --hash=sha256:b50aaac7d05c2c26dfd50c3321199f019ba76bb650e346a6ef3616306eed67b0 \ + --hash=sha256:b7b6ea9e36d32582cda3465f54c4b454f62f23cb083ebc7a94e2ca6ef011c3a7 \ + --hash=sha256:bb9333f58fc3a2296fb1d54576138d4cf5d496a2cc118422bd77835e6ae0b9cb \ + --hash=sha256:c1c13185b90bbd3f8b5963cd8ce7ad4ff441924c31e23c975cb150e27c2bf67a \ + --hash=sha256:c3b8bd3133cd50f6b637bb4322822c94c5ce4bf0d724ed5ae70afce62187c492 \ + --hash=sha256:c5d97162c196ce54af6700949ddf9409e9833ef1003b4741c2b39ef46f1d9720 \ + --hash=sha256:c815270206f983309915a6844fe994b2fa47e5d05c4c4cef267c3b30e34dbe42 \ + --hash=sha256:cab2eba3830bf4f6d91e2d6718e0e1c14a2f5ad1af68a89d24ace0c6b17cced7 \ + --hash=sha256:d1df34588123fcc88c872f5acb6f74ae59e9d182a2707097f9e28275ec26a12d \ + --hash=sha256:d6bdcd415ba87846fd317bee0774e412e8792832e7805938987e4ede1d13046d \ + --hash=sha256:db9a30ec064129d605d0f1aedc93e00894b9334ec74ba9c6bdd08147434b33eb \ + --hash=sha256:dbc183e7bef690c9abe5ea67b7b60fdbca81aa8da43468287dae7b5c046107d4 \ + --hash=sha256:dca802c8db0720ce1c49cce1149ff7b06e91ba15fa84b1d59144fef1a1bc7ac2 \ + --hash=sha256:dec6b307ce928e8e112a6bb9921a1cb00a0e14979bf28b98e084a4b8a742bd9b \ + --hash=sha256:df8bb0010fdd0a743b7542589223a2816bdde4d94bb5ad67884348fa2c1c67e8 \ + --hash=sha256:e4094c7b464cf0a858e75cd14b03509e84789abf7b79f8537e6a72152109c76e \ + --hash=sha256:e4760a68cab57bfaa628938e9c2971137e05ce48e762a9cb53b76c9b569f1204 \ + --hash=sha256:eb09b82377233b902d4c3fbeeb7ad731cdab579c6c6fda1f763cd779139e47c3 \ + --hash=sha256:eb862356ee9391dc5a0b3cbc00f416b48c1b9a52d252d898e5b7696a5f9fe150 \ + --hash=sha256:ef9528915df81b8f4c7612b19b8628214c65c9b7f74db2e34a646a0a2a0da2d4 \ + --hash=sha256:f3157624b7558b914cb039fd1af735e5e8049a87c817cc215109ad1c8779df76 \ + --hash=sha256:f3e0992f23bbb0be00a921eae5363329253c3b86287db27092461c887b791e5e \ + --hash=sha256:f9338cc05451f1942d0d8203ec2c346c830f8e86469903d5126c1f0a13a2bcbb \ + --hash=sha256:ffef8fd58a36fb5f1196919638f73dd3ae0db1a878982b27a9a5a176ede4ba91 # via cryptography -cfn-lint==0.87.7 \ - --hash=sha256:85f6b7f32cf155a74d670d53f86b39f99cfc282b02158d98fdab9fc1dba0809e \ - --hash=sha256:ac6ac86dde1ba3d0fb0e217a4d329239a98f00af7862e4fa5ace6c416c4e056c +cfn-lint==1.10.0 \ + --hash=sha256:6c1ad17d50d6f185b27857ef3efbbadbdd53813aa2d3dd502686b0aed617fdea \ + --hash=sha256:fecadfe69882fe3b8e0283530b591a56bcfacfc2d51818bacbd1f862d27a61c6 # via aws-sam-cli (setup.py) chardet==5.2.0 \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ @@ -302,18 +315,10 @@ jmespath==1.0.1 \ # aws-sam-cli (setup.py) # boto3 # botocore -jschema-to-python==1.2.3 \ - --hash=sha256:76ff14fe5d304708ccad1284e4b11f96a658949a31ee7faed9e0995279549b91 \ - --hash=sha256:8a703ca7604d42d74b2815eecf99a33359a8dccbb80806cce386d5e2dd992b05 - # via cfn-lint jsonpatch==1.33 \ --hash=sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade \ --hash=sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c # via cfn-lint -jsonpickle==3.2.2 \ - --hash=sha256:87cd82d237fd72c5a34970e7222dddc0accc13fddf49af84111887ed9a9445aa \ - --hash=sha256:d425fd2b8afe9f5d7d57205153403fbf897782204437882a477e8eed60930f8c - # via jschema-to-python jsonpointer==3.0.0 \ --hash=sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942 \ --hash=sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef @@ -324,15 +329,10 @@ jsonschema==4.23.0 \ # via # aws-sam-cli (setup.py) # aws-sam-translator - # cfn-lint jsonschema-specifications==2023.12.1 \ --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c # via jsonschema -junit-xml==1.9 \ - --hash=sha256:de16a051990d4e25a3982b2dd9e89d671067548718866416faec14d9de56db9f \ - --hash=sha256:ec5ca1a55aefdd76d28fcc0b135251d156c7106fa979686a4b48d62b761b4732 - # via cfn-lint markdown-it-py==3.0.0 \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb @@ -417,25 +417,25 @@ mypy-boto3-cloudformation==1.34.111 \ --hash=sha256:526e928c504fa2880b1774aa10629a04fe0ec70ed2864ab3d3f7772386a1a925 \ --hash=sha256:a02e201d1a9d9a8fb4db5b942d5c537a4e8861c611f0d986126674ac557cb9e8 # via boto3-stubs -mypy-boto3-ecr==1.34.140 \ - --hash=sha256:5c31b1ba2b08115a4363ebe0280a0a68438827f44bb4abaeb77e5e7b757a6f55 \ - --hash=sha256:7a73c68d8c52b932ab2dc3d16493efa7e5c3796e5b191a8249c2fc9555699762 +mypy-boto3-ecr==1.34.154 \ + --hash=sha256:5e4c22ac3af042ba8535a44a08c33494ee232bea8e3b8917a8d9a78a311d50bf \ + --hash=sha256:8e7c7bbc714684ac762c8594dded1dcb214c215d05ed080f45e25b97d9432a99 # via boto3-stubs -mypy-boto3-iam==1.34.83 \ - --hash=sha256:7261315616757ebf7509df0e9b091d5942e470eb51c4b23c662a06873a9a8eca \ - --hash=sha256:dec66a98e29ec1e36178c24b8ff57aab6b91230df97557363bbd90ec06874768 +mypy-boto3-iam==1.34.152 \ + --hash=sha256:2c97e2b05f8e2839921d57114b6a2fc6a990b84462fba3c72a04ab1e382cb0f9 \ + --hash=sha256:e2a6094b53f5043b972765d24d86fce228ae224780b3e3b2a441f5ad8967e279 # via boto3-stubs -mypy-boto3-kinesis==1.34.0 \ - --hash=sha256:1add81c53f6e36599e0c22e142024867759aaf2f4954bcb2baa21c284c852377 \ - --hash=sha256:f404e75badd5977e9f09741b769b8888854bdd411c631344686ab889efe98741 +mypy-boto3-kinesis==1.34.153 \ + --hash=sha256:759a0da81badc5bd5dcf06991fbea931a80e00dfe3766ee522f6f6308e87a696 \ + --hash=sha256:e33bde87f403d660a80345a5eabc5373e79836b4e0b6f261f2bb592fa6908216 # via boto3-stubs mypy-boto3-lambda==1.34.77 \ --hash=sha256:7b81d2a5604fb592e92fe0b284ecd259de071703360a33b71c9b54df46d81c9c \ --hash=sha256:e21022d2eef12aa731af80790410afdba9412b056339823252813bae2adbf553 # via boto3-stubs -mypy-boto3-s3==1.34.138 \ - --hash=sha256:47ded5f06accc10ff9db9d55c85cca88e4f028ec360d7cfcea90377e525cba56 \ - --hash=sha256:7f9770d1f0e9f6fc2ced96daf5c0792b2dbbb4a4f874f28200ff3c940d0815c3 +mypy-boto3-s3==1.34.158 \ + --hash=sha256:a875eb0ee91ba5ac6967291887f6e924eb9dc157966e8181da20533086218166 \ + --hash=sha256:c01f1b2304ba7718c8561aaa2b6dc70fe438c91964256aa6ddc508d1cc553c66 # via boto3-stubs mypy-boto3-schemas==1.34.0 \ --hash=sha256:28c016609dcffc606bd8425ee92894c46e943ab77033e1ae46481f00c39b7f75 \ @@ -453,9 +453,9 @@ mypy-boto3-sqs==1.34.121 \ --hash=sha256:bdbc623235ffc8127cb8753f49323f74a919df552247b0b2caaf85cf9bb495b8 \ --hash=sha256:e92aefacfa08e7094b79002576ef261e4075f5af9c25219fc47fb8452f53fc5f # via boto3-stubs -mypy-boto3-stepfunctions==1.34.137 \ - --hash=sha256:c568275ab1b2d9600352ec26e9915335526d39fc6e7192a664428118f6c7799f \ - --hash=sha256:c78a6abaaf6b3c9eaee183b4cc59cb0d6aa838e2f20698be3d6ad46788a64945 +mypy-boto3-stepfunctions==1.34.149 \ + --hash=sha256:155f6d7aa4b61799166e5beae85386cf5393612e4cbabe7a8426225325e3c12b \ + --hash=sha256:dbe3c90af541178826f0992c58ef3699d5f1f42d0f51ff5b761d4c8036768726 # via boto3-stubs mypy-boto3-sts==1.34.0 \ --hash=sha256:3ba1875c2792b4f35fd918dca957ce09ad197beb7cfbda61f42144ffa9cda05d \ @@ -469,12 +469,6 @@ networkx==3.3 \ --hash=sha256:0c127d8b2f4865f59ae9cb8aafcd60b5c70f3241ebd66f7defad7c4ab90126c9 \ --hash=sha256:28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 # via cfn-lint -pbr==6.0.0 \ - --hash=sha256:4a7317d5e3b17a3dccb6a8cfe67dab65b20551404c52c8ed41279fa4f0cb4cda \ - --hash=sha256:d1377122a5a00e2f940ee482999518efe16d745d423a670c27773dfbc3c9a7d9 - # via - # jschema-to-python - # sarif-om pycparser==2.22 \ --hash=sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6 \ --hash=sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc @@ -613,47 +607,60 @@ pywin32==306 \ --hash=sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407 \ --hash=sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0 # via docker -pyyaml==6.0.1 \ - --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ - --hash=sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741 \ - --hash=sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206 \ - --hash=sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27 \ - --hash=sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595 \ - --hash=sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62 \ - --hash=sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98 \ - --hash=sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696 \ - --hash=sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d \ - --hash=sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867 \ - --hash=sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47 \ - --hash=sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486 \ - --hash=sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6 \ - --hash=sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3 \ - --hash=sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007 \ - --hash=sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938 \ - --hash=sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c \ - --hash=sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735 \ - --hash=sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d \ - --hash=sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba \ - --hash=sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8 \ - --hash=sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5 \ - --hash=sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd \ - --hash=sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3 \ - --hash=sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0 \ - --hash=sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515 \ - --hash=sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c \ - --hash=sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c \ - --hash=sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924 \ - --hash=sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34 \ - --hash=sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43 \ - --hash=sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859 \ - --hash=sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673 \ - --hash=sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a \ - --hash=sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab \ - --hash=sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa \ - --hash=sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c \ - --hash=sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585 \ - --hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \ - --hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f +pyyaml==6.0.2 \ + --hash=sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff \ + --hash=sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48 \ + --hash=sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086 \ + --hash=sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e \ + --hash=sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133 \ + --hash=sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5 \ + --hash=sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484 \ + --hash=sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee \ + --hash=sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5 \ + --hash=sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68 \ + --hash=sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a \ + --hash=sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf \ + --hash=sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99 \ + --hash=sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8 \ + --hash=sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85 \ + --hash=sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19 \ + --hash=sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc \ + --hash=sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a \ + --hash=sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1 \ + --hash=sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317 \ + --hash=sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c \ + --hash=sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631 \ + --hash=sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d \ + --hash=sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652 \ + --hash=sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5 \ + --hash=sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e \ + --hash=sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b \ + --hash=sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8 \ + --hash=sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476 \ + --hash=sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706 \ + --hash=sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563 \ + --hash=sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237 \ + --hash=sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b \ + --hash=sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083 \ + --hash=sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180 \ + --hash=sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425 \ + --hash=sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e \ + --hash=sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f \ + --hash=sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725 \ + --hash=sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183 \ + --hash=sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab \ + --hash=sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774 \ + --hash=sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725 \ + --hash=sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e \ + --hash=sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5 \ + --hash=sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d \ + --hash=sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290 \ + --hash=sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44 \ + --hash=sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed \ + --hash=sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4 \ + --hash=sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba \ + --hash=sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12 \ + --hash=sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4 # via # aws-sam-cli (setup.py) # cfn-lint @@ -664,86 +671,86 @@ referencing==0.35.1 \ # via # jsonschema # jsonschema-specifications -regex==2024.5.15 \ - --hash=sha256:0721931ad5fe0dda45d07f9820b90b2148ccdd8e45bb9e9b42a146cb4f695649 \ - --hash=sha256:10002e86e6068d9e1c91eae8295ef690f02f913c57db120b58fdd35a6bb1af35 \ - --hash=sha256:10e4ce0dca9ae7a66e6089bb29355d4432caed736acae36fef0fdd7879f0b0cb \ - --hash=sha256:119af6e56dce35e8dfb5222573b50c89e5508d94d55713c75126b753f834de68 \ - --hash=sha256:1337b7dbef9b2f71121cdbf1e97e40de33ff114801263b275aafd75303bd62b5 \ - --hash=sha256:13cdaf31bed30a1e1c2453ef6015aa0983e1366fad2667657dbcac7b02f67133 \ - --hash=sha256:1595f2d10dff3d805e054ebdc41c124753631b6a471b976963c7b28543cf13b0 \ - --hash=sha256:16093f563098448ff6b1fa68170e4acbef94e6b6a4e25e10eae8598bb1694b5d \ - --hash=sha256:1878b8301ed011704aea4c806a3cadbd76f84dece1ec09cc9e4dc934cfa5d4da \ - --hash=sha256:19068a6a79cf99a19ccefa44610491e9ca02c2be3305c7760d3831d38a467a6f \ - --hash=sha256:19dfb1c504781a136a80ecd1fff9f16dddf5bb43cec6871778c8a907a085bb3d \ - --hash=sha256:1b5269484f6126eee5e687785e83c6b60aad7663dafe842b34691157e5083e53 \ - --hash=sha256:1c1c174d6ec38d6c8a7504087358ce9213d4332f6293a94fbf5249992ba54efa \ - --hash=sha256:2431b9e263af1953c55abbd3e2efca67ca80a3de8a0437cb58e2421f8184717a \ - --hash=sha256:287eb7f54fc81546346207c533ad3c2c51a8d61075127d7f6d79aaf96cdee890 \ - --hash=sha256:2b4c884767504c0e2401babe8b5b7aea9148680d2e157fa28f01529d1f7fcf67 \ - --hash=sha256:35cb514e137cb3488bce23352af3e12fb0dbedd1ee6e60da053c69fb1b29cc6c \ - --hash=sha256:391d7f7f1e409d192dba8bcd42d3e4cf9e598f3979cdaed6ab11288da88cb9f2 \ - --hash=sha256:3ad070b823ca5890cab606c940522d05d3d22395d432f4aaaf9d5b1653e47ced \ - --hash=sha256:3cd7874d57f13bf70078f1ff02b8b0aa48d5b9ed25fc48547516c6aba36f5741 \ - --hash=sha256:3e507ff1e74373c4d3038195fdd2af30d297b4f0950eeda6f515ae3d84a1770f \ - --hash=sha256:455705d34b4154a80ead722f4f185b04c4237e8e8e33f265cd0798d0e44825fa \ - --hash=sha256:4a605586358893b483976cffc1723fb0f83e526e8f14c6e6614e75919d9862cf \ - --hash=sha256:4babf07ad476aaf7830d77000874d7611704a7fcf68c9c2ad151f5d94ae4bfc4 \ - --hash=sha256:4eee78a04e6c67e8391edd4dad3279828dd66ac4b79570ec998e2155d2e59fd5 \ - --hash=sha256:5397de3219a8b08ae9540c48f602996aa6b0b65d5a61683e233af8605c42b0f2 \ - --hash=sha256:5b5467acbfc153847d5adb21e21e29847bcb5870e65c94c9206d20eb4e99a384 \ - --hash=sha256:5eaa7ddaf517aa095fa8da0b5015c44d03da83f5bd49c87961e3c997daed0de7 \ - --hash=sha256:632b01153e5248c134007209b5c6348a544ce96c46005d8456de1d552455b014 \ - --hash=sha256:64c65783e96e563103d641760664125e91bd85d8e49566ee560ded4da0d3e704 \ - --hash=sha256:64f18a9a3513a99c4bef0e3efd4c4a5b11228b48aa80743be822b71e132ae4f5 \ - --hash=sha256:673b5a6da4557b975c6c90198588181029c60793835ce02f497ea817ff647cb2 \ - --hash=sha256:68811ab14087b2f6e0fc0c2bae9ad689ea3584cad6917fc57be6a48bbd012c49 \ - --hash=sha256:6e8d717bca3a6e2064fc3a08df5cbe366369f4b052dcd21b7416e6d71620dca1 \ - --hash=sha256:71a455a3c584a88f654b64feccc1e25876066c4f5ef26cd6dd711308aa538694 \ - --hash=sha256:72d7a99cd6b8f958e85fc6ca5b37c4303294954eac1376535b03c2a43eb72629 \ - --hash=sha256:7b59138b219ffa8979013be7bc85bb60c6f7b7575df3d56dc1e403a438c7a3f6 \ - --hash=sha256:7dbe2467273b875ea2de38ded4eba86cbcbc9a1a6d0aa11dcf7bd2e67859c435 \ - --hash=sha256:833616ddc75ad595dee848ad984d067f2f31be645d603e4d158bba656bbf516c \ - --hash=sha256:87e2a9c29e672fc65523fb47a90d429b70ef72b901b4e4b1bd42387caf0d6835 \ - --hash=sha256:8fe45aa3f4aa57faabbc9cb46a93363edd6197cbc43523daea044e9ff2fea83e \ - --hash=sha256:9e717956dcfd656f5055cc70996ee2cc82ac5149517fc8e1b60261b907740201 \ - --hash=sha256:9efa1a32ad3a3ea112224897cdaeb6aa00381627f567179c0314f7b65d354c62 \ - --hash=sha256:9ff11639a8d98969c863d4617595eb5425fd12f7c5ef6621a4b74b71ed8726d5 \ - --hash=sha256:a094801d379ab20c2135529948cb84d417a2169b9bdceda2a36f5f10977ebc16 \ - --hash=sha256:a0981022dccabca811e8171f913de05720590c915b033b7e601f35ce4ea7019f \ - --hash=sha256:a0bd000c6e266927cb7a1bc39d55be95c4b4f65c5be53e659537537e019232b1 \ - --hash=sha256:a32b96f15c8ab2e7d27655969a23895eb799de3665fa94349f3b2fbfd547236f \ - --hash=sha256:a81e3cfbae20378d75185171587cbf756015ccb14840702944f014e0d93ea09f \ - --hash=sha256:ac394ff680fc46b97487941f5e6ae49a9f30ea41c6c6804832063f14b2a5a145 \ - --hash=sha256:ada150c5adfa8fbcbf321c30c751dc67d2f12f15bd183ffe4ec7cde351d945b3 \ - --hash=sha256:b2b6f1b3bb6f640c1a92be3bbfbcb18657b125b99ecf141fb3310b5282c7d4ed \ - --hash=sha256:b802512f3e1f480f41ab5f2cfc0e2f761f08a1f41092d6718868082fc0d27143 \ - --hash=sha256:ba68168daedb2c0bab7fd7e00ced5ba90aebf91024dea3c88ad5063c2a562cca \ - --hash=sha256:bfc4f82cabe54f1e7f206fd3d30fda143f84a63fe7d64a81558d6e5f2e5aaba9 \ - --hash=sha256:c0c18345010870e58238790a6779a1219b4d97bd2e77e1140e8ee5d14df071aa \ - --hash=sha256:c3bea0ba8b73b71b37ac833a7f3fd53825924165da6a924aec78c13032f20850 \ - --hash=sha256:c486b4106066d502495b3025a0a7251bf37ea9540433940a23419461ab9f2a80 \ - --hash=sha256:c49e15eac7c149f3670b3e27f1f28a2c1ddeccd3a2812cba953e01be2ab9b5fe \ - --hash=sha256:c6a2b494a76983df8e3d3feea9b9ffdd558b247e60b92f877f93a1ff43d26656 \ - --hash=sha256:cab12877a9bdafde5500206d1020a584355a97884dfd388af3699e9137bf7388 \ - --hash=sha256:cac27dcaa821ca271855a32188aa61d12decb6fe45ffe3e722401fe61e323cd1 \ - --hash=sha256:cdd09d47c0b2efee9378679f8510ee6955d329424c659ab3c5e3a6edea696294 \ - --hash=sha256:cf2430df4148b08fb4324b848672514b1385ae3807651f3567871f130a728cc3 \ - --hash=sha256:d0a3d8d6acf0c78a1fff0e210d224b821081330b8524e3e2bc5a68ef6ab5803d \ - --hash=sha256:d0c0c0003c10f54a591d220997dd27d953cd9ccc1a7294b40a4be5312be8797b \ - --hash=sha256:d1f059a4d795e646e1c37665b9d06062c62d0e8cc3c511fe01315973a6542e40 \ - --hash=sha256:d347a741ea871c2e278fde6c48f85136c96b8659b632fb57a7d1ce1872547600 \ - --hash=sha256:d3ee02d9e5f482cc8309134a91eeaacbdd2261ba111b0fef3748eeb4913e6a2c \ - --hash=sha256:d99ceffa25ac45d150e30bd9ed14ec6039f2aad0ffa6bb87a5936f5782fc1569 \ - --hash=sha256:e38a7d4e8f633a33b4c7350fbd8bad3b70bf81439ac67ac38916c4a86b465456 \ - --hash=sha256:e4682f5ba31f475d58884045c1a97a860a007d44938c4c0895f41d64481edbc9 \ - --hash=sha256:e5bb9425fe881d578aeca0b2b4b3d314ec88738706f66f219c194d67179337cb \ - --hash=sha256:e64198f6b856d48192bf921421fdd8ad8eb35e179086e99e99f711957ffedd6e \ - --hash=sha256:e6662686aeb633ad65be2a42b4cb00178b3fbf7b91878f9446075c404ada552f \ - --hash=sha256:ec54d5afa89c19c6dd8541a133be51ee1017a38b412b1321ccb8d6ddbeb4cf7d \ - --hash=sha256:f5b1dff3ad008dccf18e652283f5e5339d70bf8ba7c98bf848ac33db10f7bc7a \ - --hash=sha256:f8ec0c2fea1e886a19c3bee0cd19d862b3aa75dcdfb42ebe8ed30708df64687a \ - --hash=sha256:f9ebd0a36102fcad2f03696e8af4ae682793a5d30b46c647eaf280d6cfb32796 +regex==2024.7.24 \ + --hash=sha256:01b689e887f612610c869421241e075c02f2e3d1ae93a037cb14f88ab6a8934c \ + --hash=sha256:04ce29e2c5fedf296b1a1b0acc1724ba93a36fb14031f3abfb7abda2806c1535 \ + --hash=sha256:0ffe3f9d430cd37d8fa5632ff6fb36d5b24818c5c986893063b4e5bdb84cdf24 \ + --hash=sha256:18300a1d78cf1290fa583cd8b7cde26ecb73e9f5916690cf9d42de569c89b1ce \ + --hash=sha256:185e029368d6f89f36e526764cf12bf8d6f0e3a2a7737da625a76f594bdfcbfc \ + --hash=sha256:19c65b00d42804e3fbea9708f0937d157e53429a39b7c61253ff15670ff62cb5 \ + --hash=sha256:228b0d3f567fafa0633aee87f08b9276c7062da9616931382993c03808bb68ce \ + --hash=sha256:23acc72f0f4e1a9e6e9843d6328177ae3074b4182167e34119ec7233dfeccf53 \ + --hash=sha256:25419b70ba00a16abc90ee5fce061228206173231f004437730b67ac77323f0d \ + --hash=sha256:2dfbb8baf8ba2c2b9aa2807f44ed272f0913eeeba002478c4577b8d29cde215c \ + --hash=sha256:2f1baff13cc2521bea83ab2528e7a80cbe0ebb2c6f0bfad15be7da3aed443908 \ + --hash=sha256:33e2614a7ce627f0cdf2ad104797d1f68342d967de3695678c0cb84f530709f8 \ + --hash=sha256:3426de3b91d1bc73249042742f45c2148803c111d1175b283270177fdf669024 \ + --hash=sha256:382281306e3adaaa7b8b9ebbb3ffb43358a7bbf585fa93821300a418bb975281 \ + --hash=sha256:3d974d24edb231446f708c455fd08f94c41c1ff4f04bcf06e5f36df5ef50b95a \ + --hash=sha256:3f3b6ca8eae6d6c75a6cff525c8530c60e909a71a15e1b731723233331de4169 \ + --hash=sha256:3fac296f99283ac232d8125be932c5cd7644084a30748fda013028c815ba3364 \ + --hash=sha256:416c0e4f56308f34cdb18c3f59849479dde5b19febdcd6e6fa4d04b6c31c9faa \ + --hash=sha256:438d9f0f4bc64e8dea78274caa5af971ceff0f8771e1a2333620969936ba10be \ + --hash=sha256:43affe33137fcd679bdae93fb25924979517e011f9dea99163f80b82eadc7e53 \ + --hash=sha256:44fc61b99035fd9b3b9453f1713234e5a7c92a04f3577252b45feefe1b327759 \ + --hash=sha256:45104baae8b9f67569f0f1dca5e1f1ed77a54ae1cd8b0b07aba89272710db61e \ + --hash=sha256:4fdd1384619f406ad9037fe6b6eaa3de2749e2e12084abc80169e8e075377d3b \ + --hash=sha256:538d30cd96ed7d1416d3956f94d54e426a8daf7c14527f6e0d6d425fcb4cca52 \ + --hash=sha256:558a57cfc32adcf19d3f791f62b5ff564922942e389e3cfdb538a23d65a6b610 \ + --hash=sha256:5eefee9bfe23f6df09ffb6dfb23809f4d74a78acef004aa904dc7c88b9944b05 \ + --hash=sha256:64bd50cf16bcc54b274e20235bf8edbb64184a30e1e53873ff8d444e7ac656b2 \ + --hash=sha256:65fd3d2e228cae024c411c5ccdffae4c315271eee4a8b839291f84f796b34eca \ + --hash=sha256:66b4c0731a5c81921e938dcf1a88e978264e26e6ac4ec96a4d21ae0354581ae0 \ + --hash=sha256:68a8f8c046c6466ac61a36b65bb2395c74451df2ffb8458492ef49900efed293 \ + --hash=sha256:6a1141a1dcc32904c47f6846b040275c6e5de0bf73f17d7a409035d55b76f289 \ + --hash=sha256:6b9fc7e9cc983e75e2518496ba1afc524227c163e43d706688a6bb9eca41617e \ + --hash=sha256:6f51f9556785e5a203713f5efd9c085b4a45aecd2a42573e2b5041881b588d1f \ + --hash=sha256:7214477bf9bd195894cf24005b1e7b496f46833337b5dedb7b2a6e33f66d962c \ + --hash=sha256:731fcd76bbdbf225e2eb85b7c38da9633ad3073822f5ab32379381e8c3c12e94 \ + --hash=sha256:74007a5b25b7a678459f06559504f1eec2f0f17bca218c9d56f6a0a12bfffdad \ + --hash=sha256:7a5486ca56c8869070a966321d5ab416ff0f83f30e0e2da1ab48815c8d165d46 \ + --hash=sha256:7c479f5ae937ec9985ecaf42e2e10631551d909f203e31308c12d703922742f9 \ + --hash=sha256:7df9ea48641da022c2a3c9c641650cd09f0cd15e8908bf931ad538f5ca7919c9 \ + --hash=sha256:7e37e809b9303ec3a179085415cb5f418ecf65ec98cdfe34f6a078b46ef823ee \ + --hash=sha256:80c811cfcb5c331237d9bad3bea2c391114588cf4131707e84d9493064d267f9 \ + --hash=sha256:836d3cc225b3e8a943d0b02633fb2f28a66e281290302a79df0e1eaa984ff7c1 \ + --hash=sha256:84c312cdf839e8b579f504afcd7b65f35d60b6285d892b19adea16355e8343c9 \ + --hash=sha256:86b17ba823ea76256b1885652e3a141a99a5c4422f4a869189db328321b73799 \ + --hash=sha256:871e3ab2838fbcb4e0865a6e01233975df3a15e6fce93b6f99d75cacbd9862d1 \ + --hash=sha256:88ecc3afd7e776967fa16c80f974cb79399ee8dc6c96423321d6f7d4b881c92b \ + --hash=sha256:8bc593dcce679206b60a538c302d03c29b18e3d862609317cb560e18b66d10cf \ + --hash=sha256:8fd5afd101dcf86a270d254364e0e8dddedebe6bd1ab9d5f732f274fa00499a5 \ + --hash=sha256:945352286a541406f99b2655c973852da7911b3f4264e010218bbc1cc73168f2 \ + --hash=sha256:973335b1624859cb0e52f96062a28aa18f3a5fc77a96e4a3d6d76e29811a0e6e \ + --hash=sha256:994448ee01864501912abf2bad9203bffc34158e80fe8bfb5b031f4f8e16da51 \ + --hash=sha256:9cfd009eed1a46b27c14039ad5bbc5e71b6367c5b2e6d5f5da0ea91600817506 \ + --hash=sha256:a2ec4419a3fe6cf8a4795752596dfe0adb4aea40d3683a132bae9c30b81e8d73 \ + --hash=sha256:a4997716674d36a82eab3e86f8fa77080a5d8d96a389a61ea1d0e3a94a582cf7 \ + --hash=sha256:a512eed9dfd4117110b1881ba9a59b31433caed0c4101b361f768e7bcbaf93c5 \ + --hash=sha256:a82465ebbc9b1c5c50738536fdfa7cab639a261a99b469c9d4c7dcbb2b3f1e57 \ + --hash=sha256:ae2757ace61bc4061b69af19e4689fa4416e1a04840f33b441034202b5cd02d4 \ + --hash=sha256:b16582783f44fbca6fcf46f61347340c787d7530d88b4d590a397a47583f31dd \ + --hash=sha256:ba2537ef2163db9e6ccdbeb6f6424282ae4dea43177402152c67ef869cf3978b \ + --hash=sha256:bf7a89eef64b5455835f5ed30254ec19bf41f7541cd94f266ab7cbd463f00c41 \ + --hash=sha256:c0abb5e4e8ce71a61d9446040c1e86d4e6d23f9097275c5bd49ed978755ff0fe \ + --hash=sha256:c414cbda77dbf13c3bc88b073a1a9f375c7b0cb5e115e15d4b73ec3a2fbc6f59 \ + --hash=sha256:c51edc3541e11fbe83f0c4d9412ef6c79f664a3745fab261457e84465ec9d5a8 \ + --hash=sha256:c5e69fd3eb0b409432b537fe3c6f44ac089c458ab6b78dcec14478422879ec5f \ + --hash=sha256:c918b7a1e26b4ab40409820ddccc5d49871a82329640f5005f73572d5eaa9b5e \ + --hash=sha256:c9bb87fdf2ab2370f21e4d5636e5317775e5d51ff32ebff2cf389f71b9b13750 \ + --hash=sha256:ca5b2028c2f7af4e13fb9fc29b28d0ce767c38c7facdf64f6c2cd040413055f1 \ + --hash=sha256:d0a07763776188b4db4c9c7fb1b8c494049f84659bb387b71c73bbc07f189e96 \ + --hash=sha256:d33a0021893ede5969876052796165bab6006559ab845fd7b515a30abdd990dc \ + --hash=sha256:d55588cba7553f0b6ec33130bc3e114b355570b45785cebdc9daed8c637dd440 \ + --hash=sha256:dac8e84fff5d27420f3c1e879ce9929108e873667ec87e0c8eeb413a5311adfe \ + --hash=sha256:eaef80eac3b4cfbdd6de53c6e108b4c534c21ae055d1dbea2de6b3b8ff3def38 \ + --hash=sha256:eb462f0e346fcf41a901a126b50f8781e9a474d3927930f3490f38a6e73b6950 \ + --hash=sha256:eb563dd3aea54c797adf513eeec819c4213d7dbfc311874eb4fd28d10f2ff0f2 \ + --hash=sha256:f273674b445bcb6e4409bf8d1be67bc4b58e8b46fd0d560055d515b8830063cd \ + --hash=sha256:f6442f0f0ff81775eaa5b05af8a0ffa1dda36e9cf6ec1e0d3d245e8564b684ce \ + --hash=sha256:fb168b5924bef397b5ba13aabd8cf5df7d3d93f10218d7b925e360d436863f66 \ + --hash=sha256:fbf8c2f00904eaf63ff37718eb13acf8e178cb940520e47b2f05027f5bb34ce3 \ + --hash=sha256:fe4ebef608553aff8deb845c7f4f1d0740ff76fa672c011cc0bacb2a00fbde86 # via # aws-sam-cli (setup.py) # cfn-lint @@ -761,110 +768,110 @@ rich==13.7.1 \ # via # aws-sam-cli (setup.py) # cookiecutter -rpds-py==0.19.1 \ - --hash=sha256:01227f8b3e6c8961490d869aa65c99653df80d2f0a7fde8c64ebddab2b9b02fd \ - --hash=sha256:08ce9c95a0b093b7aec75676b356a27879901488abc27e9d029273d280438505 \ - --hash=sha256:0b02dd77a2de6e49078c8937aadabe933ceac04b41c5dde5eca13a69f3cf144e \ - --hash=sha256:0d4b52811dcbc1aba08fd88d475f75b4f6db0984ba12275d9bed1a04b2cae9b5 \ - --hash=sha256:13e6d4840897d4e4e6b2aa1443e3a8eca92b0402182aafc5f4ca1f5e24f9270a \ - --hash=sha256:1a129c02b42d46758c87faeea21a9f574e1c858b9f358b6dd0bbd71d17713175 \ - --hash=sha256:1a8dfa125b60ec00c7c9baef945bb04abf8ac772d8ebefd79dae2a5f316d7850 \ - --hash=sha256:1c32e41de995f39b6b315d66c27dea3ef7f7c937c06caab4c6a79a5e09e2c415 \ - --hash=sha256:1d494887d40dc4dd0d5a71e9d07324e5c09c4383d93942d391727e7a40ff810b \ - --hash=sha256:1d4af2eb520d759f48f1073ad3caef997d1bfd910dc34e41261a595d3f038a94 \ - --hash=sha256:1fb93d3486f793d54a094e2bfd9cd97031f63fcb5bc18faeb3dd4b49a1c06523 \ - --hash=sha256:24f8ae92c7fae7c28d0fae9b52829235df83f34847aa8160a47eb229d9666c7b \ - --hash=sha256:24fc5a84777cb61692d17988989690d6f34f7f95968ac81398d67c0d0994a897 \ - --hash=sha256:26ab43b6d65d25b1a333c8d1b1c2f8399385ff683a35ab5e274ba7b8bb7dc61c \ - --hash=sha256:271accf41b02687cef26367c775ab220372ee0f4925591c6796e7c148c50cab5 \ - --hash=sha256:2ddd50f18ebc05ec29a0d9271e9dbe93997536da3546677f8ca00b76d477680c \ - --hash=sha256:31dd5794837f00b46f4096aa8ccaa5972f73a938982e32ed817bb520c465e520 \ - --hash=sha256:31e450840f2f27699d014cfc8865cc747184286b26d945bcea6042bb6aa4d26e \ - --hash=sha256:32e0db3d6e4f45601b58e4ac75c6f24afbf99818c647cc2066f3e4b192dabb1f \ - --hash=sha256:346557f5b1d8fd9966059b7a748fd79ac59f5752cd0e9498d6a40e3ac1c1875f \ - --hash=sha256:34bca66e2e3eabc8a19e9afe0d3e77789733c702c7c43cd008e953d5d1463fde \ - --hash=sha256:3511f6baf8438326e351097cecd137eb45c5f019944fe0fd0ae2fea2fd26be39 \ - --hash=sha256:35af5e4d5448fa179fd7fff0bba0fba51f876cd55212f96c8bbcecc5c684ae5c \ - --hash=sha256:3837c63dd6918a24de6c526277910e3766d8c2b1627c500b155f3eecad8fad65 \ - --hash=sha256:39d67896f7235b2c886fb1ee77b1491b77049dcef6fbf0f401e7b4cbed86bbd4 \ - --hash=sha256:3b823be829407393d84ee56dc849dbe3b31b6a326f388e171555b262e8456cc1 \ - --hash=sha256:3c73254c256081704dba0a333457e2fb815364018788f9b501efe7c5e0ada401 \ - --hash=sha256:3ddab996807c6b4227967fe1587febade4e48ac47bb0e2d3e7858bc621b1cace \ - --hash=sha256:3e1dc59a5e7bc7f44bd0c048681f5e05356e479c50be4f2c1a7089103f1621d5 \ - --hash=sha256:4383beb4a29935b8fa28aca8fa84c956bf545cb0c46307b091b8d312a9150e6a \ - --hash=sha256:4cc4bc73e53af8e7a42c8fd7923bbe35babacfa7394ae9240b3430b5dcf16b2a \ - --hash=sha256:4dd02e29c8cbed21a1875330b07246b71121a1c08e29f0ee3db5b4cfe16980c4 \ - --hash=sha256:4f580ae79d0b861dfd912494ab9d477bea535bfb4756a2269130b6607a21802e \ - --hash=sha256:53dbc35808c6faa2ce3e48571f8f74ef70802218554884787b86a30947842a14 \ - --hash=sha256:56313be667a837ff1ea3508cebb1ef6681d418fa2913a0635386cf29cff35165 \ - --hash=sha256:57863d16187995c10fe9cf911b897ed443ac68189179541734502353af33e693 \ - --hash=sha256:5953391af1405f968eb5701ebbb577ebc5ced8d0041406f9052638bafe52209d \ - --hash=sha256:5beffdbe766cfe4fb04f30644d822a1080b5359df7db3a63d30fa928375b2720 \ - --hash=sha256:5e360188b72f8080fefa3adfdcf3618604cc8173651c9754f189fece068d2a45 \ - --hash=sha256:5e58b61dcbb483a442c6239c3836696b79f2cd8e7eec11e12155d3f6f2d886d1 \ - --hash=sha256:69084fd29bfeff14816666c93a466e85414fe6b7d236cfc108a9c11afa6f7301 \ - --hash=sha256:6d1d7539043b2b31307f2c6c72957a97c839a88b2629a348ebabe5aa8b626d6b \ - --hash=sha256:6d8b735c4d162dc7d86a9cf3d717f14b6c73637a1f9cd57fe7e61002d9cb1972 \ - --hash=sha256:6ea961a674172ed2235d990d7edf85d15d8dfa23ab8575e48306371c070cda67 \ - --hash=sha256:71157f9db7f6bc6599a852852f3389343bea34315b4e6f109e5cbc97c1fb2963 \ - --hash=sha256:720f3108fb1bfa32e51db58b832898372eb5891e8472a8093008010911e324c5 \ - --hash=sha256:74129d5ffc4cde992d89d345f7f7d6758320e5d44a369d74d83493429dad2de5 \ - --hash=sha256:747251e428406b05fc86fee3904ee19550c4d2d19258cef274e2151f31ae9d38 \ - --hash=sha256:75130df05aae7a7ac171b3b5b24714cffeabd054ad2ebc18870b3aa4526eba23 \ - --hash=sha256:7b3661e6d4ba63a094138032c1356d557de5b3ea6fd3cca62a195f623e381c76 \ - --hash=sha256:7d5c7e32f3ee42f77d8ff1a10384b5cdcc2d37035e2e3320ded909aa192d32c3 \ - --hash=sha256:8124101e92c56827bebef084ff106e8ea11c743256149a95b9fd860d3a4f331f \ - --hash=sha256:81db2e7282cc0487f500d4db203edc57da81acde9e35f061d69ed983228ffe3b \ - --hash=sha256:840e18c38098221ea6201f091fc5d4de6128961d2930fbbc96806fb43f69aec1 \ - --hash=sha256:89cc8921a4a5028d6dd388c399fcd2eef232e7040345af3d5b16c04b91cf3c7e \ - --hash=sha256:8b32cd4ab6db50c875001ba4f5a6b30c0f42151aa1fbf9c2e7e3674893fb1dc4 \ - --hash=sha256:8df1c283e57c9cb4d271fdc1875f4a58a143a2d1698eb0d6b7c0d7d5f49c53a1 \ - --hash=sha256:902cf4739458852fe917104365ec0efbea7d29a15e4276c96a8d33e6ed8ec137 \ - --hash=sha256:97fbb77eaeb97591efdc654b8b5f3ccc066406ccfb3175b41382f221ecc216e8 \ - --hash=sha256:9c7042488165f7251dc7894cd533a875d2875af6d3b0e09eda9c4b334627ad1c \ - --hash=sha256:9e318e6786b1e750a62f90c6f7fa8b542102bdcf97c7c4de2a48b50b61bd36ec \ - --hash=sha256:a9421b23c85f361a133aa7c5e8ec757668f70343f4ed8fdb5a4a14abd5437244 \ - --hash=sha256:aaf71f95b21f9dc708123335df22e5a2fef6307e3e6f9ed773b2e0938cc4d491 \ - --hash=sha256:afedc35fe4b9e30ab240b208bb9dc8938cb4afe9187589e8d8d085e1aacb8309 \ - --hash=sha256:b5e28e56143750808c1c79c70a16519e9bc0a68b623197b96292b21b62d6055c \ - --hash=sha256:b82c9514c6d74b89a370c4060bdb80d2299bc6857e462e4a215b4ef7aa7b090e \ - --hash=sha256:b8f78398e67a7227aefa95f876481485403eb974b29e9dc38b307bb6eb2315ea \ - --hash=sha256:bbda75f245caecff8faa7e32ee94dfaa8312a3367397975527f29654cd17a6ed \ - --hash=sha256:bca34e913d27401bda2a6f390d0614049f5a95b3b11cd8eff80fe4ec340a1208 \ - --hash=sha256:bd04d8cab16cab5b0a9ffc7d10f0779cf1120ab16c3925404428f74a0a43205a \ - --hash=sha256:c149a652aeac4902ecff2dd93c3b2681c608bd5208c793c4a99404b3e1afc87c \ - --hash=sha256:c2087dbb76a87ec2c619253e021e4fb20d1a72580feeaa6892b0b3d955175a71 \ - --hash=sha256:c34f751bf67cab69638564eee34023909380ba3e0d8ee7f6fe473079bf93f09b \ - --hash=sha256:c6d20c8896c00775e6f62d8373aba32956aa0b850d02b5ec493f486c88e12859 \ - --hash=sha256:c7af6f7b80f687b33a4cdb0a785a5d4de1fb027a44c9a049d8eb67d5bfe8a687 \ - --hash=sha256:c7b07959866a6afb019abb9564d8a55046feb7a84506c74a6f197cbcdf8a208e \ - --hash=sha256:ca0dda0c5715efe2ab35bb83f813f681ebcd2840d8b1b92bfc6fe3ab382fae4a \ - --hash=sha256:cdb7eb3cf3deb3dd9e7b8749323b5d970052711f9e1e9f36364163627f96da58 \ - --hash=sha256:ce757c7c90d35719b38fa3d4ca55654a76a40716ee299b0865f2de21c146801c \ - --hash=sha256:d1fa67ef839bad3815124f5f57e48cd50ff392f4911a9f3cf449d66fa3df62a5 \ - --hash=sha256:d2dbd8f4990d4788cb122f63bf000357533f34860d269c1a8e90ae362090ff3a \ - --hash=sha256:d4ec0046facab83012d821b33cead742a35b54575c4edfb7ed7445f63441835f \ - --hash=sha256:dbceedcf4a9329cc665452db1aaf0845b85c666e4885b92ee0cddb1dbf7e052a \ - --hash=sha256:dc733d35f861f8d78abfaf54035461e10423422999b360966bf1c443cbc42705 \ - --hash=sha256:dd635c2c4043222d80d80ca1ac4530a633102a9f2ad12252183bcf338c1b9474 \ - --hash=sha256:de1f7cd5b6b351e1afd7568bdab94934d656abe273d66cda0ceea43bbc02a0c2 \ - --hash=sha256:df7c841813f6265e636fe548a49664c77af31ddfa0085515326342a751a6ba51 \ - --hash=sha256:e0f9d268b19e8f61bf42a1da48276bcd05f7ab5560311f541d22557f8227b866 \ - --hash=sha256:e2d66eb41ffca6cc3c91d8387509d27ba73ad28371ef90255c50cb51f8953301 \ - --hash=sha256:e429fc517a1c5e2a70d576077231538a98d59a45dfc552d1ac45a132844e6dfb \ - --hash=sha256:e4d2b88efe65544a7d5121b0c3b003ebba92bfede2ea3577ce548b69c5235185 \ - --hash=sha256:e76c902d229a3aa9d5ceb813e1cbcc69bf5bda44c80d574ff1ac1fa3136dea71 \ - --hash=sha256:ef07a0a1d254eeb16455d839cef6e8c2ed127f47f014bbda64a58b5482b6c836 \ - --hash=sha256:f09529d2332264a902688031a83c19de8fda5eb5881e44233286b9c9ec91856d \ - --hash=sha256:f0a6d4a93d2a05daec7cb885157c97bbb0be4da739d6f9dfb02e101eb40921cd \ - --hash=sha256:f0cf2a0dbb5987da4bd92a7ca727eadb225581dd9681365beba9accbe5308f7d \ - --hash=sha256:f2671cb47e50a97f419a02cd1e0c339b31de017b033186358db92f4d8e2e17d8 \ - --hash=sha256:f35b34a5184d5e0cc360b61664c1c06e866aab077b5a7c538a3e20c8fcdbf90b \ - --hash=sha256:f3d73022990ab0c8b172cce57c69fd9a89c24fd473a5e79cbce92df87e3d9c48 \ - --hash=sha256:f5b8353ea1a4d7dfb59a7f45c04df66ecfd363bb5b35f33b11ea579111d4655f \ - --hash=sha256:f809a17cc78bd331e137caa25262b507225854073fd319e987bd216bed911b7c \ - --hash=sha256:f9bc4161bd3b970cd6a6fcda70583ad4afd10f2750609fb1f3ca9505050d4ef3 \ - --hash=sha256:fdf4890cda3b59170009d012fca3294c00140e7f2abe1910e6a730809d0f3f9b +rpds-py==0.20.0 \ + --hash=sha256:06db23d43f26478303e954c34c75182356ca9aa7797d22c5345b16871ab9c45c \ + --hash=sha256:0e13e6952ef264c40587d510ad676a988df19adea20444c2b295e536457bc585 \ + --hash=sha256:11ef6ce74616342888b69878d45e9f779b95d4bd48b382a229fe624a409b72c5 \ + --hash=sha256:1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6 \ + --hash=sha256:18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef \ + --hash=sha256:1e0f80b739e5a8f54837be5d5c924483996b603d5502bfff79bf33da06164ee2 \ + --hash=sha256:1e5f3cd7397c8f86c8cc72d5a791071431c108edd79872cdd96e00abd8497d29 \ + --hash=sha256:220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318 \ + --hash=sha256:22e6c9976e38f4d8c4a63bd8a8edac5307dffd3ee7e6026d97f3cc3a2dc02a0b \ + --hash=sha256:238a2d5b1cad28cdc6ed15faf93a998336eb041c4e440dd7f902528b8891b399 \ + --hash=sha256:2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739 \ + --hash=sha256:28527c685f237c05445efec62426d285e47a58fb05ba0090a4340b73ecda6dee \ + --hash=sha256:2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174 \ + --hash=sha256:338ca4539aad4ce70a656e5187a3a31c5204f261aef9f6ab50e50bcdffaf050a \ + --hash=sha256:39ed0d010457a78f54090fafb5d108501b5aa5604cc22408fc1c0c77eac14344 \ + --hash=sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2 \ + --hash=sha256:3d2b1ad682a3dfda2a4e8ad8572f3100f95fad98cb99faf37ff0ddfe9cbf9d03 \ + --hash=sha256:3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5 \ + --hash=sha256:3fde368e9140312b6e8b6c09fb9f8c8c2f00999d1823403ae90cc00480221b22 \ + --hash=sha256:40ce74fc86ee4645d0a225498d091d8bc61f39b709ebef8204cb8b5a464d3c0e \ + --hash=sha256:49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96 \ + --hash=sha256:4a1f1d51eccb7e6c32ae89243cb352389228ea62f89cd80823ea7dd1b98e0b91 \ + --hash=sha256:4b16aa0107ecb512b568244ef461f27697164d9a68d8b35090e9b0c1c8b27752 \ + --hash=sha256:4f1ed4749a08379555cebf4650453f14452eaa9c43d0a95c49db50c18b7da075 \ + --hash=sha256:4fe84294c7019456e56d93e8ababdad5a329cd25975be749c3f5f558abb48253 \ + --hash=sha256:50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee \ + --hash=sha256:514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad \ + --hash=sha256:54b43a2b07db18314669092bb2de584524d1ef414588780261e31e85846c26a5 \ + --hash=sha256:55fea87029cded5df854ca7e192ec7bdb7ecd1d9a3f63d5c4eb09148acf4a7ce \ + --hash=sha256:569b3ea770c2717b730b61998b6c54996adee3cef69fc28d444f3e7920313cf7 \ + --hash=sha256:56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b \ + --hash=sha256:57eb94a8c16ab08fef6404301c38318e2c5a32216bf5de453e2714c964c125c8 \ + --hash=sha256:5a35df9f5548fd79cb2f52d27182108c3e6641a4feb0f39067911bf2adaa3e57 \ + --hash=sha256:5a8c94dad2e45324fc74dce25e1645d4d14df9a4e54a30fa0ae8bad9a63928e3 \ + --hash=sha256:5b4f105deeffa28bbcdff6c49b34e74903139afa690e35d2d9e3c2c2fba18cec \ + --hash=sha256:5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209 \ + --hash=sha256:614fdafe9f5f19c63ea02817fa4861c606a59a604a77c8cdef5aa01d28b97921 \ + --hash=sha256:617c7357272c67696fd052811e352ac54ed1d9b49ab370261a80d3b6ce385045 \ + --hash=sha256:65794e4048ee837494aea3c21a28ad5fc080994dfba5b036cf84de37f7ad5074 \ + --hash=sha256:6632f2d04f15d1bd6fe0eedd3b86d9061b836ddca4c03d5cf5c7e9e6b7c14580 \ + --hash=sha256:6c8ef2ebf76df43f5750b46851ed1cdf8f109d7787ca40035fe19fbdc1acc5a7 \ + --hash=sha256:758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5 \ + --hash=sha256:7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3 \ + --hash=sha256:89c19a494bf3ad08c1da49445cc5d13d8fefc265f48ee7e7556839acdacf69d0 \ + --hash=sha256:8a86a9b96070674fc88b6f9f71a97d2c1d3e5165574615d1f9168ecba4cecb24 \ + --hash=sha256:8bc7690f7caee50b04a79bf017a8d020c1f48c2a1077ffe172abec59870f1139 \ + --hash=sha256:8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db \ + --hash=sha256:9426133526f69fcaba6e42146b4e12d6bc6c839b8b555097020e2b78ce908dcc \ + --hash=sha256:9824fb430c9cf9af743cf7aaf6707bf14323fb51ee74425c380f4c846ea70789 \ + --hash=sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f \ + --hash=sha256:9bc2d153989e3216b0559251b0c260cfd168ec78b1fac33dd485750a228db5a2 \ + --hash=sha256:9d35cef91e59ebbeaa45214861874bc6f19eb35de96db73e467a8358d701a96c \ + --hash=sha256:a1862d2d7ce1674cffa6d186d53ca95c6e17ed2b06b3f4c476173565c862d232 \ + --hash=sha256:a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6 \ + --hash=sha256:aa7f429242aae2947246587d2964fad750b79e8c233a2367f71b554e9447949c \ + --hash=sha256:aa9a0521aeca7d4941499a73ad7d4f8ffa3d1affc50b9ea11d992cd7eff18a29 \ + --hash=sha256:ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489 \ + --hash=sha256:ae94bd0b2f02c28e199e9bc51485d0c5601f58780636185660f86bf80c89af94 \ + --hash=sha256:af0fc424a5842a11e28956e69395fbbeab2c97c42253169d87e90aac2886d751 \ + --hash=sha256:b2a5db5397d82fa847e4c624b0c98fe59d2d9b7cf0ce6de09e4d2e80f8f5b3f2 \ + --hash=sha256:b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda \ + --hash=sha256:b74b25f024b421d5859d156750ea9a65651793d51b76a2e9238c05c9d5f203a9 \ + --hash=sha256:b7f19250ceef892adf27f0399b9e5afad019288e9be756d6919cb58892129f51 \ + --hash=sha256:b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c \ + --hash=sha256:b8c00a3b1e70c1d3891f0db1b05292747f0dbcfb49c43f9244d04c70fbc40eb8 \ + --hash=sha256:bb273176be34a746bdac0b0d7e4e2c467323d13640b736c4c477881a3220a989 \ + --hash=sha256:c3c20f0ddeb6e29126d45f89206b8291352b8c5b44384e78a6499d68b52ae511 \ + --hash=sha256:c3e130fd0ec56cb76eb49ef52faead8ff09d13f4527e9b0c400307ff72b408e1 \ + --hash=sha256:c52d3f2f82b763a24ef52f5d24358553e8403ce05f893b5347098014f2d9eff2 \ + --hash=sha256:c6377e647bbfd0a0b159fe557f2c6c602c159fc752fa316572f012fc0bf67150 \ + --hash=sha256:c638144ce971df84650d3ed0096e2ae7af8e62ecbbb7b201c8935c370df00a2c \ + --hash=sha256:ce9845054c13696f7af7f2b353e6b4f676dab1b4b215d7fe5e05c6f8bb06f965 \ + --hash=sha256:cf258ede5bc22a45c8e726b29835b9303c285ab46fc7c3a4cc770736b5304c9f \ + --hash=sha256:d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58 \ + --hash=sha256:d0b67d87bb45ed1cd020e8fbf2307d449b68abc45402fe1a4ac9e46c3c8b192b \ + --hash=sha256:d20277fd62e1b992a50c43f13fbe13277a31f8c9f70d59759c88f644d66c619f \ + --hash=sha256:d454b8749b4bd70dd0a79f428731ee263fa6995f83ccb8bada706e8d1d3ff89d \ + --hash=sha256:d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821 \ + --hash=sha256:d72278a30111e5b5525c1dd96120d9e958464316f55adb030433ea905866f4de \ + --hash=sha256:d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121 \ + --hash=sha256:d807dc2051abe041b6649681dce568f8e10668e3c1c6543ebae58f2d7e617855 \ + --hash=sha256:dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272 \ + --hash=sha256:dcedf0b42bcb4cfff4101d7771a10532415a6106062f005ab97d1d0ab5681c60 \ + --hash=sha256:deb62214c42a261cb3eb04d474f7155279c1a8a8c30ac89b7dcb1721d92c3c02 \ + --hash=sha256:def7400461c3a3f26e49078302e1c1b38f6752342c77e3cf72ce91ca69fb1bc1 \ + --hash=sha256:df3de6b7726b52966edf29663e57306b23ef775faf0ac01a3e9f4012a24a4140 \ + --hash=sha256:e1940dae14e715e2e02dfd5b0f64a52e8374a517a1e531ad9412319dc3ac7879 \ + --hash=sha256:e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940 \ + --hash=sha256:e6900ecdd50ce0facf703f7a00df12374b74bbc8ad9fe0f6559947fb20f82364 \ + --hash=sha256:ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4 \ + --hash=sha256:eb851b7df9dda52dc1415ebee12362047ce771fc36914586b2e9fcbd7d293b3e \ + --hash=sha256:ec31a99ca63bf3cd7f1a5ac9fe95c5e2d060d3c768a09bc1d16e235840861420 \ + --hash=sha256:f0475242f447cc6cb8a9dd486d68b2ef7fbee84427124c232bff5f63b1fe11e5 \ + --hash=sha256:f2fbf7db2012d4876fb0d66b5b9ba6591197b0f165db8d99371d976546472a24 \ + --hash=sha256:f60012a73aa396be721558caa3a6fd49b3dd0033d1675c6d59c4502e870fcf0c \ + --hash=sha256:f8e604fe73ba048c06085beaf51147eaec7df856824bfe7b98657cf436623daf \ + --hash=sha256:f90a4cd061914a60bd51c68bcb4357086991bd0bb93d8aa66a6da7701370708f \ + --hash=sha256:f918a1a130a6dfe1d7fe0f105064141342e7dd1611f2e6a21cd2f5c8cb1cfb3e \ + --hash=sha256:fa518bcd7600c584bf42e6617ee8132869e877db2f76bcdc281ec6a4113a53ab \ + --hash=sha256:faefcc78f53a88f3076b7f8be0a8f8d35133a3ecf7f3770895c25f8813460f08 \ + --hash=sha256:fcaeb7b57f1a1e071ebd748984359fef83ecb026325b9d4ca847c95bc7311c92 \ + --hash=sha256:fd2d84f40633bc475ef2d5490b9c19543fbf18596dcb1b291e3a12ea5d722f7a \ + --hash=sha256:fdfc3a892927458d98f3d55428ae46b921d1f7543b89382fdb483f5640daaec8 # via # jsonschema # referencing @@ -928,19 +935,13 @@ s3transfer==0.10.2 \ --hash=sha256:0711534e9356d3cc692fdde846b4a1e4b0cb6519971860796e6bc4c7aea00ef6 \ --hash=sha256:eca1c20de70a39daee580aef4986996620f365c4e0fda6a86100231d62f1bf69 # via boto3 -sarif-om==1.0.4 \ - --hash=sha256:539ef47a662329b1c8502388ad92457425e95dc0aaaf995fe46f4984c4771911 \ - --hash=sha256:cd5f416b3083e00d402a92e449a7ff67af46f11241073eea0461802a3b5aef98 - # via cfn-lint six==1.16.0 \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 - # via - # junit-xml - # python-dateutil -sympy==1.13.1 \ - --hash=sha256:9cebf7e04ff162015ce31c9c6c9144daa34a93bd082f54fd8f12deca4f47515f \ - --hash=sha256:db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + # via python-dateutil +sympy==1.13.2 \ + --hash=sha256:401449d84d07be9d0c7a46a64bd54fe097667d5e7181bfe67ec777be9e01cb13 \ + --hash=sha256:c51d75517712f1aed280d4ce58506a4a88d635d6b5dd48b39102a7ae1f3fcfe9 # via cfn-lint text-unidecode==1.3 \ --hash=sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8 \ @@ -969,6 +970,7 @@ typing-extensions==4.12.2 \ # aws-sam-cli (setup.py) # aws-sam-translator # boto3-stubs + # cfn-lint # mypy-boto3-apigateway # mypy-boto3-cloudformation # mypy-boto3-ecr @@ -1002,47 +1004,50 @@ urllib3==1.26.19 \ # botocore # docker # requests -watchdog==4.0.1 \ - --hash=sha256:0144c0ea9997b92615af1d94afc0c217e07ce2c14912c7b1a5731776329fcfc7 \ - --hash=sha256:03e70d2df2258fb6cb0e95bbdbe06c16e608af94a3ffbd2b90c3f1e83eb10767 \ - --hash=sha256:093b23e6906a8b97051191a4a0c73a77ecc958121d42346274c6af6520dec175 \ - --hash=sha256:123587af84260c991dc5f62a6e7ef3d1c57dfddc99faacee508c71d287248459 \ - --hash=sha256:17e32f147d8bf9657e0922c0940bcde863b894cd871dbb694beb6704cfbd2fb5 \ - --hash=sha256:206afc3d964f9a233e6ad34618ec60b9837d0582b500b63687e34011e15bb429 \ - --hash=sha256:4107ac5ab936a63952dea2a46a734a23230aa2f6f9db1291bf171dac3ebd53c6 \ - --hash=sha256:4513ec234c68b14d4161440e07f995f231be21a09329051e67a2118a7a612d2d \ - --hash=sha256:611be3904f9843f0529c35a3ff3fd617449463cb4b73b1633950b3d97fa4bfb7 \ - --hash=sha256:62c613ad689ddcb11707f030e722fa929f322ef7e4f18f5335d2b73c61a85c28 \ - --hash=sha256:667f3c579e813fcbad1b784db7a1aaa96524bed53437e119f6a2f5de4db04235 \ - --hash=sha256:6e8c70d2cd745daec2a08734d9f63092b793ad97612470a0ee4cbb8f5f705c57 \ - --hash=sha256:7577b3c43e5909623149f76b099ac49a1a01ca4e167d1785c76eb52fa585745a \ - --hash=sha256:998d2be6976a0ee3a81fb8e2777900c28641fb5bfbd0c84717d89bca0addcdc5 \ - --hash=sha256:a3c2c317a8fb53e5b3d25790553796105501a235343f5d2bf23bb8649c2c8709 \ - --hash=sha256:ab998f567ebdf6b1da7dc1e5accfaa7c6992244629c0fdaef062f43249bd8dee \ - --hash=sha256:ac7041b385f04c047fcc2951dc001671dee1b7e0615cde772e84b01fbf68ee84 \ - --hash=sha256:bca36be5707e81b9e6ce3208d92d95540d4ca244c006b61511753583c81c70dd \ - --hash=sha256:c9904904b6564d4ee8a1ed820db76185a3c96e05560c776c79a6ce5ab71888ba \ - --hash=sha256:cad0bbd66cd59fc474b4a4376bc5ac3fc698723510cbb64091c2a793b18654db \ - --hash=sha256:d10a681c9a1d5a77e75c48a3b8e1a9f2ae2928eda463e8d33660437705659682 \ - --hash=sha256:d4925e4bf7b9bddd1c3de13c9b8a2cdb89a468f640e66fbfabaf735bd85b3e35 \ - --hash=sha256:d7b9f5f3299e8dd230880b6c55504a1f69cf1e4316275d1b215ebdd8187ec88d \ - --hash=sha256:da2dfdaa8006eb6a71051795856bedd97e5b03e57da96f98e375682c48850645 \ - --hash=sha256:dddba7ca1c807045323b6af4ff80f5ddc4d654c8bce8317dde1bd96b128ed253 \ - --hash=sha256:e7921319fe4430b11278d924ef66d4daa469fafb1da679a2e48c935fa27af193 \ - --hash=sha256:e93f451f2dfa433d97765ca2634628b789b49ba8b504fdde5837cdcf25fdb53b \ - --hash=sha256:eebaacf674fa25511e8867028d281e602ee6500045b57f43b08778082f7f8b44 \ - --hash=sha256:ef0107bbb6a55f5be727cfc2ef945d5676b97bffb8425650dadbb184be9f9a2b \ - --hash=sha256:f0de0f284248ab40188f23380b03b59126d1479cd59940f2a34f8852db710625 \ - --hash=sha256:f27279d060e2ab24c0aa98363ff906d2386aa6c4dc2f1a374655d4e02a6c5e5e \ - --hash=sha256:f8affdf3c0f0466e69f5b3917cdd042f89c8c63aebdb9f7c078996f607cdb0f5 +watchdog==4.0.2 \ + --hash=sha256:0b4359067d30d5b864e09c8597b112fe0a0a59321a0f331498b013fb097406b4 \ + --hash=sha256:0d8a7e523ef03757a5aa29f591437d64d0d894635f8a50f370fe37f913ce4e19 \ + --hash=sha256:0e83619a2d5d436a7e58a1aea957a3c1ccbf9782c43c0b4fed80580e5e4acd1a \ + --hash=sha256:10b6683df70d340ac3279eff0b2766813f00f35a1d37515d2c99959ada8f05fa \ + --hash=sha256:132937547a716027bd5714383dfc40dc66c26769f1ce8a72a859d6a48f371f3a \ + --hash=sha256:1cdcfd8142f604630deef34722d695fb455d04ab7cfe9963055df1fc69e6727a \ + --hash=sha256:2d468028a77b42cc685ed694a7a550a8d1771bb05193ba7b24006b8241a571a1 \ + --hash=sha256:32be97f3b75693a93c683787a87a0dc8db98bb84701539954eef991fb35f5fbc \ + --hash=sha256:770eef5372f146997638d737c9a3c597a3b41037cfbc5c41538fc27c09c3a3f9 \ + --hash=sha256:7c7d4bf585ad501c5f6c980e7be9c4f15604c7cc150e942d82083b31a7548930 \ + --hash=sha256:88456d65f207b39f1981bf772e473799fcdc10801062c36fd5ad9f9d1d463a73 \ + --hash=sha256:914285126ad0b6eb2258bbbcb7b288d9dfd655ae88fa28945be05a7b475a800b \ + --hash=sha256:936acba76d636f70db8f3c66e76aa6cb5136a936fc2a5088b9ce1c7a3508fc83 \ + --hash=sha256:980b71510f59c884d684b3663d46e7a14b457c9611c481e5cef08f4dd022eed7 \ + --hash=sha256:984306dc4720da5498b16fc037b36ac443816125a3705dfde4fd90652d8028ef \ + --hash=sha256:a2cffa171445b0efa0726c561eca9a27d00a1f2b83846dbd5a4f639c4f8ca8e1 \ + --hash=sha256:aa160781cafff2719b663c8a506156e9289d111d80f3387cf3af49cedee1f040 \ + --hash=sha256:b2c45f6e1e57ebb4687690c05bc3a2c1fb6ab260550c4290b8abb1335e0fd08b \ + --hash=sha256:b4dfbb6c49221be4535623ea4474a4d6ee0a9cef4a80b20c28db4d858b64e270 \ + --hash=sha256:baececaa8edff42cd16558a639a9b0ddf425f93d892e8392a56bf904f5eff22c \ + --hash=sha256:bcfd02377be80ef3b6bc4ce481ef3959640458d6feaae0bd43dd90a43da90a7d \ + --hash=sha256:c0b14488bd336c5b1845cee83d3e631a1f8b4e9c5091ec539406e4a324f882d8 \ + --hash=sha256:c100d09ac72a8a08ddbf0629ddfa0b8ee41740f9051429baa8e31bb903ad7508 \ + --hash=sha256:c344453ef3bf875a535b0488e3ad28e341adbd5a9ffb0f7d62cefacc8824ef2b \ + --hash=sha256:c50f148b31b03fbadd6d0b5980e38b558046b127dc483e5e4505fcef250f9503 \ + --hash=sha256:c82253cfc9be68e3e49282831afad2c1f6593af80c0daf1287f6a92657986757 \ + --hash=sha256:cd67c7df93eb58f360c43802acc945fa8da70c675b6fa37a241e17ca698ca49b \ + --hash=sha256:d7ab624ff2f663f98cd03c8b7eedc09375a911794dfea6bf2a359fcc266bff29 \ + --hash=sha256:e252f8ca942a870f38cf785aef420285431311652d871409a64e2a0a52a2174c \ + --hash=sha256:ede7f010f2239b97cc79e6cb3c249e72962404ae3865860855d5cbe708b0fd22 \ + --hash=sha256:eeea812f38536a0aa859972d50c76e37f4456474b02bd93674d1947cf1e39578 \ + --hash=sha256:f15edcae3830ff20e55d1f4e743e92970c847bcddc8b7509bcd172aa04de506e \ + --hash=sha256:f5315a8c8dd6dd9425b974515081fc0aadca1d1d61e078d2246509fd756141ee \ + --hash=sha256:f6ee8dedd255087bc7fe82adf046f0b75479b989185fb0bdf9a98b612170eac7 \ + --hash=sha256:f7c739888c20f99824f7aa9d31ac8a97353e22d0c0e54703a547a218f6637eb3 # via aws-sam-cli (setup.py) werkzeug==3.0.3 \ --hash=sha256:097e5bfda9f0aba8da6b8545146def481d06aa7d3266e7448e2cccf67dd8bd18 \ --hash=sha256:fc9645dc43e03e4d630d23143a04a7f947a9a3b5727cd535fdfe155a17cc48c8 # via flask -wheel==0.43.0 \ - --hash=sha256:465ef92c69fa5c5da2d1cf8ac40559a8c940886afcef87dcf14b9470862f1d85 \ - --hash=sha256:55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81 +wheel==0.44.0 \ + --hash=sha256:2376a90c98cc337d18623527a97c31797bd02bad0033d41547043a1cbfbe448f \ + --hash=sha256:a29c3f2817e95ab89aa4660681ad547c0e9547f20e75b0562fe7723c9a2a9d49 # via aws-lambda-builders # The following packages are considered to be unsafe in a requirements file: diff --git a/samcli/__init__.py b/samcli/__init__.py index 0a7d0e0984..73898ab79b 100644 --- a/samcli/__init__.py +++ b/samcli/__init__.py @@ -2,4 +2,4 @@ SAM CLI version """ -__version__ = "1.121.0" +__version__ = "1.122.0" diff --git a/samcli/commands/validate/validate.py b/samcli/commands/validate/validate.py index db0a130b24..cf317b8bfe 100644 --- a/samcli/commands/validate/validate.py +++ b/samcli/commands/validate/validate.py @@ -2,7 +2,9 @@ CLI Command for Validating a SAM Template """ +import logging import os +from dataclasses import dataclass import boto3 import click @@ -16,7 +18,7 @@ from samcli.commands._utils.cdk_support_decorators import unsupported_command_cdk from samcli.commands._utils.command_exception_handler import command_exception_handler from samcli.commands._utils.options import template_option_without_build -from samcli.commands.exceptions import LinterRuleMatchedException +from samcli.commands.exceptions import LinterRuleMatchedException, UserException from samcli.commands.validate.core.command import ValidateCommand from samcli.lib.telemetry.event import EventTracker from samcli.lib.telemetry.metric import track_command @@ -26,6 +28,14 @@ Verify and Lint an AWS SAM Template being valid. """ +CNT_LINT_LOGGER_NAME = "cfnlint" + + +@dataclass +class SamTemplate: + serialized: str + deserialized: dict + @click.command( "validate", @@ -71,14 +81,14 @@ def do_cli(ctx, template, lint): from samcli.commands.validate.lib.exceptions import InvalidSamDocumentException from samcli.lib.translate.sam_template_validator import SamTemplateValidator + sam_template = _read_sam_file(template) + if lint: - _lint(ctx, template) + _lint(ctx, sam_template.serialized, template) else: - sam_template = _read_sam_file(template) - iam_client = boto3.client("iam") validator = SamTemplateValidator( - sam_template, ManagedPolicyLoader(iam_client), profile=ctx.profile, region=ctx.region + sam_template.deserialized, ManagedPolicyLoader(iam_client), profile=ctx.profile, region=ctx.region ) try: @@ -103,7 +113,7 @@ def do_cli(ctx, template, lint): ) -def _read_sam_file(template): +def _read_sam_file(template) -> SamTemplate: """ Reads the file (json and yaml supported) provided and returns the dictionary representation of the file. @@ -120,12 +130,13 @@ def _read_sam_file(template): raise SamTemplateNotFoundException("Template at {} is not found".format(template)) with click.open_file(template, "r", encoding="utf-8") as sam_file: - sam_template = yaml_parse(sam_file.read()) + template_string = sam_file.read() + sam_template = yaml_parse(template_string) - return sam_template + return SamTemplate(serialized=template_string, deserialized=sam_template) -def _lint(ctx: Context, template: str) -> None: +def _lint(ctx: Context, template: str, template_path: str) -> None: """ Parses provided SAM template and maps errors from CloudFormation template back to SAM template. @@ -139,52 +150,40 @@ def _lint(ctx: Context, template: str) -> None: ctx Click context object template - Path to the template file - + Contents of sam template as a string + template_path + Path to the sam template """ - import logging - - import cfnlint.core # type: ignore - - from samcli.commands.exceptions import UserException + from cfnlint.api import ManualArgs, lint + from cfnlint.runner import InvalidRegionException - cfn_lint_logger = logging.getLogger("cfnlint") + cfn_lint_logger = logging.getLogger(CNT_LINT_LOGGER_NAME) cfn_lint_logger.propagate = False + EventTracker.track_event("UsedFeature", "CFNLint") - try: - lint_args = [template] - if ctx.debug: - lint_args.append("--debug") - if ctx.region: - lint_args.append("--region") - lint_args.append(ctx.region) - - (args, filenames, formatter) = cfnlint.core.get_args_filenames(lint_args) - cfn_lint_logger.setLevel(logging.WARNING) - matches = list(cfnlint.core.get_matches(filenames, args)) - if not matches: - click.secho("{} is a valid SAM Template".format(template), fg="green") - return - - rules = cfnlint.core.get_used_rules() - matches_output = formatter.print_matches(matches, rules, filenames) - - if matches_output: - click.secho(matches_output) - - raise LinterRuleMatchedException( - "Linting failed. At least one linting rule was matched to the provided template." - ) + linter_config = {} + if ctx.region: + linter_config["regions"] = [ctx.region] + if ctx.debug: + cfn_lint_logger.propagate = True + cfn_lint_logger.setLevel(logging.DEBUG) - except cfnlint.core.InvalidRegionException as e: - raise UserException( - "AWS Region was not found. Please configure your region through the --region option", - wrapped_from=e.__class__.__name__, - ) from e - except cfnlint.core.CfnLintExitException as lint_error: + config = ManualArgs(**linter_config) + + try: + matches = lint(template, config=config) + except InvalidRegionException as ex: raise UserException( - lint_error, - wrapped_from=lint_error.__class__.__name__, - ) from lint_error + f"AWS Region was not found. Please configure your region through the --region option.\n{ex}", + wrapped_from=ex.__class__.__name__, + ) from ex + + if not matches: + click.secho("{} is a valid SAM Template".format(template_path), fg="green") + return + + click.secho(matches) + + raise LinterRuleMatchedException("Linting failed. At least one linting rule was matched to the provided template.") diff --git a/samcli/lib/build/app_builder.py b/samcli/lib/build/app_builder.py index 71124a6f30..8300a721f8 100644 --- a/samcli/lib/build/app_builder.py +++ b/samcli/lib/build/app_builder.py @@ -412,7 +412,7 @@ def _build_lambda_image(self, function_name: str, metadata: Dict, architecture: docker_tag = "-".join([docker_tag, docker_build_args["SAM_BUILD_MODE"]]) if isinstance(docker_build_args, dict): - LOG.info("Setting DockerBuildArgs: %s for %s function", docker_build_args, function_name) + LOG.info("Setting DockerBuildArgs for %s function", function_name) build_args = { "path": str(docker_context_dir), diff --git a/samcli/lib/build/build_graph.py b/samcli/lib/build/build_graph.py index 78085ad4d3..5a3ecf8e1d 100644 --- a/samcli/lib/build/build_graph.py +++ b/samcli/lib/build/build_graph.py @@ -648,10 +648,14 @@ def _validate_functions(self) -> None: raise InvalidBuildGraphException("Build definition doesn't have any function definition to build") def __str__(self) -> str: + metadata = self.metadata.copy() + if "DockerBuildArgs" in metadata: + del metadata["DockerBuildArgs"] + return ( "BuildDefinition(" f"{self.runtime}, {self.codeuri}, {self.packagetype}, {self.source_hash}, " - f"{self.uuid}, {self.metadata}, {self.env_vars}, {self.architecture}, " + f"{self.uuid}, {metadata}, {self.env_vars}, {self.architecture}, " f"{[f.functionname for f in self.functions]})" ) diff --git a/samcli/lib/build/build_strategy.py b/samcli/lib/build/build_strategy.py index dbbf03a64b..87b412b41c 100644 --- a/samcli/lib/build/build_strategy.py +++ b/samcli/lib/build/build_strategy.py @@ -146,10 +146,9 @@ def build_single_function_definition(self, build_definition: FunctionBuildDefini """ function_build_results = {} LOG.info( - "Building codeuri: %s runtime: %s metadata: %s architecture: %s functions: %s", + "Building codeuri: %s runtime: %s architecture: %s functions: %s", build_definition.codeuri, build_definition.runtime, - build_definition.metadata, build_definition.architecture, build_definition.get_resource_full_paths(), ) diff --git a/samcli/lib/intrinsic_resolver/intrinsic_property_resolver.py b/samcli/lib/intrinsic_resolver/intrinsic_property_resolver.py index 1fee887de7..667b222a93 100644 --- a/samcli/lib/intrinsic_resolver/intrinsic_property_resolver.py +++ b/samcli/lib/intrinsic_resolver/intrinsic_property_resolver.py @@ -492,7 +492,7 @@ def handle_find_in_map(self, intrinsic_value, ignore_errors): ) second_level_value = top_level_value.get(second_level_key) - verify_intrinsic_type_str( + verify_non_null( second_level_value, IntrinsicResolver.FN_FIND_IN_MAP, message="The SecondLevelKey is missing in the Mappings dictionary in Fn::FindInMap " diff --git a/samcli/lib/providers/provider.py b/samcli/lib/providers/provider.py index 8fc32200b4..d9033785fb 100644 --- a/samcli/lib/providers/provider.py +++ b/samcli/lib/providers/provider.py @@ -168,6 +168,16 @@ def architecture(self) -> str: ) return str(arch_list[0]) + def __str__(self) -> str: + metadata = None if not self.metadata else self.metadata.copy() + if metadata and "DockerBuildArgs" in metadata: + del metadata["DockerBuildArgs"] + + copy = self._asdict() + if metadata: + copy["metadata"] = metadata + return f"Function({copy})" + class ResourcesToBuildCollector: def __init__(self) -> None: diff --git a/samcli/lib/utils/osutils.py b/samcli/lib/utils/osutils.py index 27430bfc62..f891c725ad 100644 --- a/samcli/lib/utils/osutils.py +++ b/samcli/lib/utils/osutils.py @@ -2,6 +2,7 @@ Common OS utilities """ +import errno import io import logging import os @@ -11,7 +12,7 @@ import tempfile from contextlib import contextmanager from pathlib import Path -from typing import List, Optional, Union +from typing import List, Optional, Union, cast LOG = logging.getLogger(__name__) @@ -90,11 +91,11 @@ def stdout() -> io.TextIOWrapper: Byte stream of Stdout """ # ensure stdout is utf8 - sys.stdout.reconfigure(encoding="utf-8") # type:ignore[attr-defined] - # Note(jfuss): sys.stdout is a type typing.TextIO but are initialized to - # io.TextIOWrapper. To make mypy and typing play well, tell mypy to ignore. - return sys.stdout # type:ignore[return-value] + stdout_text_io = cast(io.TextIOWrapper, sys.stdout) + stdout_text_io.reconfigure(encoding="utf-8") + + return stdout_text_io def stderr() -> io.TextIOWrapper: @@ -107,11 +108,10 @@ def stderr() -> io.TextIOWrapper: Byte stream of stderr """ # ensure stderr is utf8 - sys.stderr.reconfigure(encoding="utf-8") # type:ignore[attr-defined] + stderr_text_io = cast(io.TextIOWrapper, sys.stderr) + stderr_text_io.reconfigure(encoding="utf-8") - # Note(jfuss): sys.stderr is a type typing.TextIO but are initialized to - # io.TextIOWrapper. To make mypy and typing play well, tell mypy to ignore. - return sys.stderr # type:ignore[return-value] + return stderr_text_io def remove(path): @@ -179,7 +179,15 @@ def copytree(source, destination, ignore=None): if os.path.isdir(new_source): copytree(new_source, new_destination, ignore=ignore) else: - shutil.copy2(new_source, new_destination) + try: + shutil.copy2(new_source, new_destination) + except OSError as e: + if e.errno != errno.EINVAL: + raise e + + # Symlinks do not get copied for Windows using shutil.copy2, which is why + # they are handled separately here. + create_symlink_or_copy(new_source, new_destination) def convert_files_to_unix_line_endings(path: str, target_files: Optional[List[str]] = None) -> None: diff --git a/samcli/runtime_config.json b/samcli/runtime_config.json index cdaff679e1..a1eea0feac 100644 --- a/samcli/runtime_config.json +++ b/samcli/runtime_config.json @@ -1,3 +1,3 @@ { - "app_template_repo_commit": "dc3e2d63332d1dac1557581c06ed323a0aab1d58" + "app_template_repo_commit": "dd7c7bb7fe7d08c041259b1129249b3394133f03" } diff --git a/tests/integration/buildcmd/build_integ_base.py b/tests/integration/buildcmd/build_integ_base.py index e946564ad4..5613ecc527 100644 --- a/tests/integration/buildcmd/build_integ_base.py +++ b/tests/integration/buildcmd/build_integ_base.py @@ -17,19 +17,19 @@ import pytest from parameterized import parameterized_class -from samcli.commands.build.utils import MountMode from samcli.lib.utils import osutils -from samcli.lib.utils.architecture import ARM64, X86_64, has_runtime_multi_arch_image +from samcli.lib.utils.architecture import ARM64, X86_64 from samcli.local.docker.lambda_build_container import LambdaBuildContainer from samcli.yamlhelper import yaml_parse from tests.testing_utils import ( IS_WINDOWS, + CommandResult, run_command, SKIP_DOCKER_TESTS, SKIP_DOCKER_MESSAGE, SKIP_DOCKER_BUILD, get_sam_command, - runtime_supported_by_docker, + run_command_with_input, ) LOG = logging.getLogger(__name__) @@ -379,7 +379,7 @@ def _test_with_default_package_json( ) expected = {"body": '{"message":"hello world!"}', "statusCode": 200} - if not SKIP_DOCKER_TESTS and architecture == X86_64 and runtime_supported_by_docker(runtime): + if not SKIP_DOCKER_TESTS and architecture == X86_64: # ARM64 is not supported yet for invoking self._verify_invoke_built_function( self.built_template, self.FUNCTION_LOGICAL_ID, self._make_parameter_override_arg(overrides), expected @@ -398,7 +398,7 @@ def _test_with_various_properties(self, overrides, runtime): run_command(cmdlist, cwd=self.working_dir) expected = {"body": '{"message":"hello world!"}', "statusCode": 200} - if not SKIP_DOCKER_TESTS and overrides["Architectures"] == X86_64 and runtime_supported_by_docker(runtime): + if not SKIP_DOCKER_TESTS and overrides["Architectures"] == X86_64: # ARM64 is not supported yet for invoking self._verify_invoke_built_function( self.built_template, self.FUNCTION_LOGICAL_ID, self._make_parameter_override_arg(overrides), expected @@ -472,7 +472,7 @@ def _test_with_default_package_json(self, runtime, use_container, relative_path, ) expected = {"body": '{"message":"hello world!"}', "statusCode": 200} - if not SKIP_DOCKER_TESTS and self.TEST_INVOKE and runtime_supported_by_docker(runtime): + if not SKIP_DOCKER_TESTS and self.TEST_INVOKE: self._verify_invoke_built_function( self.built_template, self.FUNCTION_LOGICAL_ID, self._make_parameter_override_arg(overrides), expected ) @@ -559,7 +559,7 @@ def _test_with_go(self, runtime, code_uri, mode, relative_path, architecture=Non ) expected = "{'message': 'Hello World'}" - if not SKIP_DOCKER_TESTS and architecture == X86_64 and runtime_supported_by_docker(runtime): + if not SKIP_DOCKER_TESTS and architecture == X86_64: # ARM64 is not supported yet for invoking self._verify_invoke_built_function( self.built_template, self.FUNCTION_LOGICAL_ID, self._make_parameter_override_arg(overrides), expected @@ -664,7 +664,7 @@ def _test_with_building_java( # If we are testing in the container, invoke the function as well. Otherwise we cannot guarantee docker is on appveyor if use_container: expected = "Hello World" - if not SKIP_DOCKER_TESTS and runtime_supported_by_docker(runtime): + if not SKIP_DOCKER_TESTS: self._verify_invoke_built_function( self.built_template, self.FUNCTION_LOGICAL_ID, @@ -759,7 +759,7 @@ def _test_with_default_requirements( ) expected = {"pi": "3.14"} - if not SKIP_DOCKER_TESTS and runtime_supported_by_docker(runtime): + if not SKIP_DOCKER_TESTS: self._verify_invoke_built_function( self.built_template, self.FUNCTION_LOGICAL_ID, @@ -833,7 +833,7 @@ def _test_with_Makefile( expected = "2.23.0" # Building was done with a makefile, but invoke should be checked with corresponding python image. overrides["Runtime"] = self._get_python_version() - if not SKIP_DOCKER_TESTS and runtime_supported_by_docker(runtime): + if not SKIP_DOCKER_TESTS: self._verify_invoke_built_function( self.built_template, self.FUNCTION_LOGICAL_ID, self._make_parameter_override_arg(overrides), expected ) @@ -921,7 +921,7 @@ def _verify_process_code_and_output(self, command_result): # check HelloWorld and HelloMars functions are built in the same build self.assertRegex( command_result.stderr.decode("utf-8"), - "Building codeuri: .* runtime: .* metadata: .* functions: " "HelloWorldFunction, HelloMarsFunction", + "Building codeuri: .* runtime: .* functions: " "HelloWorldFunction, HelloMarsFunction", ) @@ -959,7 +959,7 @@ def _verify_process_code_and_output(self, command_result, function_full_paths): for function_full_path in function_full_paths: self.assertRegex( command_result.stderr.decode("utf-8"), - f"Building codeuri: .* runtime: .* metadata: .* functions: .*{function_full_path}.*", + f"Building codeuri: .* runtime: .* functions: .*{function_full_path}.*", ) def _verify_invoke_built_functions(self, template_path, overrides, function_and_expected): @@ -1004,7 +1004,7 @@ def _verify_process_code_and_output(self, command_result, function_full_paths, l for function_full_path in function_full_paths: self.assertRegex( command_result.stderr.decode("utf-8"), - f"Building codeuri: .* runtime: .* metadata: .* functions:.*{function_full_path}.*", + f"Building codeuri: .* runtime: .* functions:.*{function_full_path}.*", ) self.assertIn( f"Building layer '{layer_full_path}'", @@ -1120,12 +1120,7 @@ def _test_with_rust_cargo_lambda( self.default_build_dir, self.FUNCTION_LOGICAL_ID, self.EXPECTED_FILES_PROJECT_MANIFEST ) - if ( - expected_invoke_result - and not SKIP_DOCKER_TESTS - and architecture == X86_64 - and runtime_supported_by_docker(runtime) - ): + if expected_invoke_result and not SKIP_DOCKER_TESTS and architecture == X86_64: # ARM64 is not supported yet for local invoke self._verify_invoke_built_function( self.built_template, @@ -1154,3 +1149,100 @@ def _verify_built_artifact(self, build_dir, function_logical_id, expected_files) all_artifacts = set(os.listdir(str(resource_artifact_dir))) actual_files = all_artifacts.intersection(expected_files) self.assertEqual(actual_files, expected_files) + + +@pytest.mark.dotnet +class BuildIntegDotnetBase(BuildIntegBase): + FUNCTION_LOGICAL_ID = "Function" + EXPECTED_FILES_PROJECT_MANIFEST = { + "Amazon.Lambda.APIGatewayEvents.dll", + "Amazon.Lambda.Core.dll", + "HelloWorld.runtimeconfig.json", + "Amazon.Lambda.Serialization.Json.dll", + "Newtonsoft.Json.dll", + "HelloWorld.deps.json", + "HelloWorld.dll", + } + + EXPECTED_FILES_PROJECT_MANIFEST_PROVIDED = { + "bootstrap", + } + + def validate_build_command(self, overrides, mode, mount_mode=None, use_container=False, input=None) -> None: + do_use_container = mount_mode != None or use_container + + cmdlist = self.get_command_list( + use_container=do_use_container, parameter_overrides=overrides, mount_with=mount_mode + ) + + if do_use_container: + cmdlist += ["--container-env-var", "DOTNET_CLI_HOME=/tmp/dotnet"] + cmdlist += ["--container-env-var", "XDG_DATA_HOME=/tmp/xdg"] + + LOG.info("Running with SAM_BUILD_MODE={}".format(mode)) + + newenv = os.environ.copy() + if mode: + newenv["SAM_BUILD_MODE"] = mode + + if input: + command_result = run_command_with_input(cmdlist, input.encode(), cwd=self.working_dir, env=newenv) + else: + command_result = run_command(cmdlist, cwd=self.working_dir, env=newenv) + + self.assertEqual(command_result.process.returncode, 0) + + def validate_invoke_command(self, overrides, runtime): + expected = "{'message': 'Hello World'}" + + self._verify_invoke_built_function( + self.built_template, self.FUNCTION_LOGICAL_ID, self._make_parameter_override_arg(overrides), expected + ) + self.verify_docker_container_cleanedup(runtime) + + def validate_build_artifacts(self, expected_manifest): + self._verify_built_artifact( + self.default_build_dir, + self.FUNCTION_LOGICAL_ID, + expected_manifest, + ) + + self._verify_built_properties() + + def _verify_built_properties(self): + self._verify_resource_property( + str(self.built_template), + "OtherRelativePathResource", + "BodyS3Location", + os.path.relpath( + os.path.normpath(os.path.join(str(self.test_data_path), "SomeRelativePath")), + str(self.default_build_dir), + ), + ) + + self._verify_resource_property( + str(self.built_template), + "GlueResource", + "Command.ScriptLocation", + os.path.relpath( + os.path.normpath(os.path.join(str(self.test_data_path), "SomeRelativePath")), + str(self.default_build_dir), + ), + ) + + def _verify_built_artifact(self, build_dir, function_logical_id, expected_files): + self.assertTrue(build_dir.exists(), "Build directory should be created") + + build_dir_files = os.listdir(str(build_dir)) + self.assertIn("template.yaml", build_dir_files) + self.assertIn(function_logical_id, build_dir_files) + + template_path = build_dir.joinpath("template.yaml") + resource_artifact_dir = build_dir.joinpath(function_logical_id) + + # Make sure the template has correct CodeUri for resource + self._verify_resource_property(str(template_path), function_logical_id, "CodeUri", function_logical_id) + + all_artifacts = set(os.listdir(str(resource_artifact_dir))) + actual_files = all_artifacts.intersection(expected_files) + self.assertEqual(actual_files, expected_files) diff --git a/tests/integration/buildcmd/test_build_cmd.py b/tests/integration/buildcmd/test_build_cmd.py index 4133ccdf17..5ac4147fe9 100644 --- a/tests/integration/buildcmd/test_build_cmd.py +++ b/tests/integration/buildcmd/test_build_cmd.py @@ -13,7 +13,6 @@ import pytest from parameterized import parameterized, parameterized_class -from samcli.commands.build.utils import MountMode from samcli.lib.utils import osutils from samcli.yamlhelper import yaml_parse from tests.testing_utils import ( @@ -26,24 +25,17 @@ SKIP_DOCKER_TESTS, SKIP_DOCKER_BUILD, SKIP_DOCKER_MESSAGE, - run_command_with_input, UpdatableSARTemplate, - runtime_supported_by_docker, - RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG, ) -from .build_integ_base import ( +from tests.integration.buildcmd.build_integ_base import ( BuildIntegBase, DedupBuildIntegBase, CachedBuildIntegBase, BuildIntegRubyBase, NestedBuildIntegBase, IntrinsicIntegBase, - BuildIntegNodeBase, BuildIntegGoBase, - BuildIntegProvidedBase, BuildIntegPythonBase, - BuildIntegJavaBase, - BuildIntegEsbuildBase, ) @@ -126,1330 +118,220 @@ def test_load_success(self): (not RUN_BY_CANARY and not CI_OVERRIDE), "Skip build tests on windows when running in CI unless overridden", ) -@pytest.mark.python -class TestBuildCommand_PythonFunctions_Images(BuildIntegBase): - template = "template_image.yaml" - - EXPECTED_FILES_PROJECT_MANIFEST: Set[str] = set() - - FUNCTION_LOGICAL_ID_IMAGE = "ImageFunction" - - @parameterized.expand([("3.8", False), ("3.9", False), ("3.10", False), ("3.11", False), ("3.12", False)]) - def test_with_default_requirements(self, runtime, use_container): - if IS_WINDOWS and not runtime_supported_by_docker(f"python{runtime}"): - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) - _tag = uuid4().hex - overrides = { - "Runtime": runtime, - "Handler": "main.handler", - "DockerFile": "Dockerfile", - "Tag": _tag, - } - cmdlist = self.get_command_list(use_container=use_container, parameter_overrides=overrides) - - command_result = run_command(cmdlist, cwd=self.working_dir) - self.assertEqual(command_result.process.returncode, 0) - - self._verify_image_build_artifact( - self.built_template, - self.FUNCTION_LOGICAL_ID_IMAGE, - "ImageUri", - f"{self.FUNCTION_LOGICAL_ID_IMAGE.lower()}:{_tag}", - ) - - expected = {"pi": "3.14"} - self._verify_invoke_built_function( - self.built_template, self.FUNCTION_LOGICAL_ID_IMAGE, self._make_parameter_override_arg(overrides), expected - ) - - @parameterized.expand( - [ - ("3.8", False), - ("3.9", False), - ("3.10", False), - ("3.11", False), - ("3.12", False), - ] - ) - def test_with_dockerfile_extension(self, runtime, use_container): - if not runtime_supported_by_docker(f"python{runtime}") and IS_WINDOWS: - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) - - _tag = uuid4().hex - overrides = { - "Runtime": runtime, - "Handler": "main.handler", - "DockerFile": "Dockerfile.production", - "Tag": _tag, - } - cmdlist = self.get_command_list(use_container=use_container, parameter_overrides=overrides) - - command_result = run_command(cmdlist, cwd=self.working_dir) - self.assertEqual(command_result.process.returncode, 0) - - self._verify_image_build_artifact( - self.built_template, - self.FUNCTION_LOGICAL_ID_IMAGE, - "ImageUri", - f"{self.FUNCTION_LOGICAL_ID_IMAGE.lower()}:{_tag}", - ) - - expected = {"pi": "3.14"} - self._verify_invoke_built_function( - self.built_template, self.FUNCTION_LOGICAL_ID_IMAGE, self._make_parameter_override_arg(overrides), expected - ) - - def test_intermediate_container_deleted(self): - _tag = uuid4().hex - overrides = { - "Runtime": "3.9", - "Handler": "main.handler", - "DockerFile": "Dockerfile", - "Tag": _tag, - } - cmdlist = self.get_command_list(use_container=False, parameter_overrides=overrides) - - _num_of_containers_before_build = self.get_number_of_created_containers() - command_result = run_command(cmdlist, cwd=self.working_dir) - self.assertEqual(command_result.process.returncode, 0) - _num_of_containers_after_build = self.get_number_of_created_containers() - - self._verify_image_build_artifact( - self.built_template, - self.FUNCTION_LOGICAL_ID_IMAGE, - "ImageUri", - f"{self.FUNCTION_LOGICAL_ID_IMAGE.lower()}:{_tag}", - ) - - expected = {"pi": "3.14"} - self._verify_invoke_built_function( - self.built_template, self.FUNCTION_LOGICAL_ID_IMAGE, self._make_parameter_override_arg(overrides), expected - ) - - self.assertEqual( - _num_of_containers_before_build, _num_of_containers_after_build, "Intermediate containers are not removed" - ) - - -@skipIf( - # Hits public ECR pull limitation, move it to canary tests - (not RUN_BY_CANARY and not CI_OVERRIDE), - "Skip build tests on windows when running in CI unless overridden", -) -@pytest.mark.python -class TestBuildCommand_PythonFunctions_ImagesWithSharedCode(BuildIntegBase): - template = "template_images_with_shared_code.yaml" - - EXPECTED_FILES_PROJECT_MANIFEST: Set[str] = set() - - FUNCTION_LOGICAL_ID_IMAGE = "ImageFunction" - - @parameterized.expand( - [ - *[ - (runtime, "feature_phi/Dockerfile", {"phi": "1.62"}) - for runtime in ["3.8", "3.9", "3.10", "3.11", "3.12"] - ], - *[(runtime, "feature_pi/Dockerfile", {"pi": "3.14"}) for runtime in ["3.8", "3.9", "3.10", "3.11", "3.12"]], - ] - ) - def test_with_default_requirements(self, runtime, dockerfile, expected): - if IS_WINDOWS and not runtime_supported_by_docker(f"python{runtime}"): - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) - _tag = uuid4().hex - overrides = { - "Runtime": runtime, - "Handler": "main.handler", - "DockerFile": dockerfile, - "Tag": _tag, - } - cmdlist = self.get_command_list(use_container=False, parameter_overrides=overrides) - - command_result = run_command(cmdlist, cwd=self.working_dir) - self.assertEqual(command_result.process.returncode, 0) - - self._verify_image_build_artifact( - self.built_template, - self.FUNCTION_LOGICAL_ID_IMAGE, - "ImageUri", - f"{self.FUNCTION_LOGICAL_ID_IMAGE.lower()}:{_tag}", - ) - - self._verify_invoke_built_function( - self.built_template, self.FUNCTION_LOGICAL_ID_IMAGE, self._make_parameter_override_arg(overrides), expected - ) - - @parameterized.expand( - [ - ("feature_phi/Dockerfile", {"phi": "1.62"}), - ("feature_pi/Dockerfile", {"pi": "3.14"}), - ] - ) - def test_intermediate_container_deleted(self, dockerfile, expected): - _tag = uuid4().hex - overrides = { - "Runtime": "3.9", - "Handler": "main.handler", - "DockerFile": dockerfile, - "Tag": _tag, - } - cmdlist = self.get_command_list(use_container=False, parameter_overrides=overrides) - - _num_of_containers_before_build = self.get_number_of_created_containers() - command_result = run_command(cmdlist, cwd=self.working_dir) - self.assertEqual(command_result.process.returncode, 0) - _num_of_containers_after_build = self.get_number_of_created_containers() - - self._verify_image_build_artifact( - self.built_template, - self.FUNCTION_LOGICAL_ID_IMAGE, - "ImageUri", - f"{self.FUNCTION_LOGICAL_ID_IMAGE.lower()}:{_tag}", - ) - - self._verify_invoke_built_function( - self.built_template, self.FUNCTION_LOGICAL_ID_IMAGE, self._make_parameter_override_arg(overrides), expected - ) - - self.assertEqual( - _num_of_containers_before_build, _num_of_containers_after_build, "Intermediate containers are not removed" - ) - - @parameterized.expand( - [ - ("feature_phi\\Dockerfile", {"phi": "1.62"}), - ("feature_pi\\Dockerfile", {"pi": "3.14"}), - ] - ) - @skipIf(not IS_WINDOWS, "Skipping passing Windows path for dockerfile path on non Windows platform") - def test_windows_dockerfile_present_sub_dir(self, dockerfile, expected): - _tag = uuid4().hex - overrides = { - "Runtime": "3.9", - "Handler": "main.handler", - "DockerFile": dockerfile, - "Tag": _tag, - } - cmdlist = self.get_command_list(use_container=False, parameter_overrides=overrides) - - command_result = run_command(cmdlist, cwd=self.working_dir) - self.assertEqual(command_result.process.returncode, 0) - - self._verify_image_build_artifact( - self.built_template, - self.FUNCTION_LOGICAL_ID_IMAGE, - "ImageUri", - f"{self.FUNCTION_LOGICAL_ID_IMAGE.lower()}:{_tag}", - ) - - self._verify_invoke_built_function( - self.built_template, self.FUNCTION_LOGICAL_ID_IMAGE, self._make_parameter_override_arg(overrides), expected - ) - - -@skipIf( - # Hits public ECR pull limitation, move it to canary tests - ((not RUN_BY_CANARY) or (IS_WINDOWS and RUNNING_ON_CI) and not CI_OVERRIDE), - "Skip build tests on windows when running in CI unless overridden", -) -@parameterized_class( - ("template", "prop"), - [ - ("template_local_prebuilt_image.yaml", "ImageUri"), - ("template_cfn_local_prebuilt_image.yaml", "Code.ImageUri"), - ], -) -class TestSkipBuildingFunctionsWithLocalImageUri(BuildIntegBase): - EXPECTED_FILES_PROJECT_MANIFEST: Set[str] = set() - - FUNCTION_LOGICAL_ID_IMAGE = "ImageFunction" - - @parameterized.expand(["3.8", "3.9", "3.10", "3.11", "3.12"]) - def test_with_default_requirements(self, runtime): - _tag = uuid4().hex - image_uri = f"func:{_tag}" - docker_client = docker.from_env() - docker_client.images.build( - path=str(Path(self.test_data_path, "PythonImage")), - dockerfile="Dockerfile", - buildargs={"BASE_RUNTIME": runtime}, - tag=image_uri, - ) - overrides = { - "ImageUri": image_uri, - "Handler": "main.handler", - } - cmdlist = self.get_command_list(parameter_overrides=overrides) - - command_result = run_command(cmdlist, cwd=self.working_dir) - self.assertEqual(command_result.process.returncode, 0) - - self._verify_image_build_artifact( - self.built_template, - self.FUNCTION_LOGICAL_ID_IMAGE, - self.prop, - {"Ref": "ImageUri"}, - ) - - expected = {"pi": "3.14"} - self._verify_invoke_built_function( - self.built_template, self.FUNCTION_LOGICAL_ID_IMAGE, self._make_parameter_override_arg(overrides), expected - ) - - @skipIf( # Hits public ECR pull limitation, move it to canary tests ((not RUN_BY_CANARY) or (IS_WINDOWS and RUNNING_ON_CI) and not CI_OVERRIDE), "Skip build tests on windows when running in CI unless overridden", -) -@parameterized_class( - ("template", "SKIPPED_FUNCTION_LOGICAL_ID", "src_code_path", "src_code_prop", "metadata_key"), - [ - ("template_function_flagged_to_skip_build.yaml", "SkippedFunction", "PreBuiltPython", "CodeUri", None), - ("template_cfn_function_flagged_to_skip_build.yaml", "SkippedFunction", "PreBuiltPython", "Code", None), - ( - "cdk_v1_synthesized_template_python_function_construct.json", - "SkippedFunctionDA0220D7", - "asset.7023fd47c81480184154c6e0e870d6920c50e35d8fae977873016832e127ded9", - None, - "aws:asset:path", - ), - ( - "cdk_v1_synthesized_template_function_construct_with_skip_build_metadata.json", - "SkippedFunctionDA0220D7", - "asset.7023fd47c81480184154c6e0e870d6920c50e35d8fae977873016832e127ded9", - None, - "aws:asset:path", - ), - ( - "cdk_v2_synthesized_template_python_function_construct.json", - "SkippedFunctionDA0220D7", - "asset.7023fd47c81480184154c6e0e870d6920c50e35d8fae977873016832e127ded9", - None, - "aws:asset:path", - ), - ( - "cdk_v2_synthesized_template_function_construct_with_skip_build_metadata.json", - "RandomSpaceFunction4F8564D0", - "asset.7023fd47c81480184154c6e0e870d6920c50e35d8fae977873016832e127ded9", - None, - "aws:asset:path", - ), - ], -) -class TestSkipBuildingFlaggedFunctions(BuildIntegPythonBase): - template = "template_cfn_function_flagged_to_skip_build.yaml" - SKIPPED_FUNCTION_LOGICAL_ID = "SkippedFunction" - src_code_path = "PreBuiltPython" - src_code_prop = "Code" - metadata_key = None - - def test_with_default_requirements(self): - self._validate_skipped_built_function( - self.default_build_dir, - self.SKIPPED_FUNCTION_LOGICAL_ID, - self.test_data_path, - self.src_code_path, - self.src_code_prop, - self.metadata_key, - ) - - def _validate_skipped_built_function( - self, build_dir, skipped_function_logical_id, relative_path, src_code_path, src_code_prop, metadata_key - ): - cmdlist = self.get_command_list() - - command_result = run_command(cmdlist, cwd=self.working_dir) - self.assertEqual(command_result.process.returncode, 0) - - self.assertTrue(build_dir.exists(), "Build directory should be created") - - build_dir_files = os.listdir(str(build_dir)) - self.assertNotIn(skipped_function_logical_id, build_dir_files) - - expected_value = os.path.relpath( - os.path.normpath(os.path.join(str(relative_path), src_code_path)), - str(self.default_build_dir), - ) - - with open(self.built_template, "r") as fp: - template_dict = yaml_parse(fp.read()) - if src_code_prop: - self.assertEqual( - expected_value, - jmespath.search( - f"Resources.{skipped_function_logical_id}.Properties.{src_code_prop}", template_dict - ), - ) - if metadata_key: - metadata = jmespath.search(f"Resources.{skipped_function_logical_id}.Metadata", template_dict) - metadata = metadata if metadata else {} - self.assertEqual(expected_value, metadata.get(metadata_key, "")) - expected = "Hello World" - if not SKIP_DOCKER_TESTS: - self._verify_invoke_built_function( - self.built_template, skipped_function_logical_id, self._make_parameter_override_arg({}), expected - ) - - -@parameterized_class( - ( - "template", - "FUNCTION_LOGICAL_ID", - "overrides", - "runtime", - "codeuri", - "check_function_only", - "prop", - ), - [ - ("template.yaml", "Function", True, "python3.8", "Python", False, "CodeUri"), - ("template.yaml", "Function", True, "python3.9", "Python", False, "CodeUri"), - ("template.yaml", "Function", True, "python3.10", "Python", False, "CodeUri"), - ("template.yaml", "Function", True, "python3.11", "Python", False, "CodeUri"), - ("template.yaml", "Function", True, "python3.12", "Python", False, "CodeUri"), - ("template.yaml", "Function", True, "python3.8", "PythonPEP600", False, "CodeUri"), - ("template.yaml", "Function", True, "python3.9", "PythonPEP600", False, "CodeUri"), - ("template.yaml", "Function", True, "python3.10", "PythonPEP600", False, "CodeUri"), - ("template.yaml", "Function", True, "python3.11", "PythonPEP600", False, "CodeUri"), - ("template.yaml", "Function", True, "python3.12", "PythonPEP600", False, "CodeUri"), - ], -) -class TestBuildCommand_PythonFunctions_WithoutDocker(BuildIntegPythonBase): - overrides = True - runtime = "python3.9" - codeuri = "Python" - check_function_only = False - use_container = False - - def test_with_default_requirements(self): - self._test_with_default_requirements( - self.runtime, - self.codeuri, - self.use_container, - self.test_data_path, - do_override=self.overrides, - check_function_only=self.check_function_only, - ) - - -@skipIf(SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD, SKIP_DOCKER_MESSAGE) -@parameterized_class( - ( - "template", - "FUNCTION_LOGICAL_ID", - "overrides", - "runtime", - "codeuri", - "check_function_only", - "prop", - ), - [ - ("template.yaml", "Function", True, "python3.8", "Python", False, "CodeUri"), - ("template.yaml", "Function", True, "python3.9", "Python", False, "CodeUri"), - ("template.yaml", "Function", True, "python3.10", "Python", False, "CodeUri"), - ("template.yaml", "Function", True, "python3.11", "Python", False, "CodeUri"), - ("template.yaml", "Function", True, "python3.12", "Python", False, "CodeUri"), - ], -) -class TestBuildCommand_PythonFunctions_WithDocker(BuildIntegPythonBase): - overrides = True - runtime = "python3.9" - codeuri = "Python" - use_container = "use_container" - check_function_only = False - - def test_with_default_requirements(self): - if not runtime_supported_by_docker(self.runtime): - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) - self._test_with_default_requirements( - self.runtime, - self.codeuri, - self.use_container, - self.test_data_path, - do_override=self.overrides, - check_function_only=self.check_function_only, - ) - - -@skipIf( - # Hits public ECR pull limitation, move it to canary tests - SKIP_DOCKER_TESTS, - "Skip build tests that requires Docker in CI environment", -) -@parameterized_class( - ( - "template", - "FUNCTION_LOGICAL_ID", - "overrides", - "runtime", - "codeuri", - "use_container", - "check_function_only", - "prop", - ), - [ - ( - "cdk_v1_synthesized_template_zip_image_functions.json", - "RandomCitiesFunction5C47A2B8", - False, - None, - None, - False, - True, - "Code", - ), - ], -) -class TestBuildCommand_PythonFunctions_CDK(TestBuildCommand_PythonFunctions_WithoutDocker): - use_container = False - - def test_cdk_app_with_default_requirements(self): - self._test_with_default_requirements( - self.runtime, - self.codeuri, - self.use_container, - self.test_data_path, - do_override=self.overrides, - check_function_only=self.check_function_only, - ) - - -@skipIf( - # Hits public ECR pull limitation, move it to canary tests - SKIP_DOCKER_TESTS, - "Skip build tests that requires Docker in CI environment", -) -@parameterized_class( - ( - "template", - "FUNCTION_LOGICAL_ID", - "overrides", - "use_container", - "prop", - ), - [ - ( - "cdk_v2_synthesized_template_image_function_shared_code.json", - "TestLambdaFunctionC089708A", - False, - False, - "Code.ImageUri", - ), - ], -) -class TestBuildCommandCDKPythonImageFunctionSharedCode(BuildIntegPythonBase): - def test_cdk_app_with_default_requirements(self): - expected = "Hello World" - cmdlist = self.get_command_list(use_container=self.use_container) - command_result = run_command(cmdlist, cwd=self.working_dir) - self.assertEqual(command_result.process.returncode, 0) - - self._verify_image_build_artifact( - self.built_template, - self.FUNCTION_LOGICAL_ID, - self.prop, - f"{self.FUNCTION_LOGICAL_ID.lower()}:latest", - ) - - self._verify_invoke_built_function(self.built_template, self.FUNCTION_LOGICAL_ID, {}, expected) - - -class TestBuildCommand_PythonFunctions_With_Specified_Architecture(BuildIntegPythonBase): - template = "template_with_architecture.yaml" - - @parameterized.expand( - [ - ("python3.8", "Python", False, "x86_64"), - ("python3.9", "Python", False, "x86_64"), - ("python3.10", "Python", False, "x86_64"), - ("python3.11", "Python", False, "x86_64"), - ("python3.12", "Python", False, "x86_64"), - ("python3.8", "PythonPEP600", False, "x86_64"), - ("python3.9", "PythonPEP600", False, "x86_64"), - ("python3.10", "PythonPEP600", False, "x86_64"), - ("python3.11", "PythonPEP600", False, "x86_64"), - ("python3.12", "PythonPEP600", False, "x86_64"), - ("python3.8", "Python", "use_container", "x86_64"), - ("python3.9", "Python", "use_container", "x86_64"), - ("python3.10", "Python", "use_container", "x86_64"), - ("python3.11", "Python", "use_container", "x86_64"), - ("python3.12", "Python", "use_container", "x86_64"), - ] - ) - def test_with_default_requirements(self, runtime, codeuri, use_container, architecture): - if use_container and not runtime_supported_by_docker(runtime): - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) - self._test_with_default_requirements( - runtime, codeuri, use_container, self.test_data_path, architecture=architecture - ) - - def test_invalid_architecture(self): - overrides = {"Runtime": "python3.11", "Architectures": "fake"} - cmdlist = self.get_command_list(parameter_overrides=overrides) - process_execute = run_command(cmdlist, cwd=self.working_dir) - - self.assertEqual(1, process_execute.process.returncode) - - self.assertIn("Build Failed", str(process_execute.stdout)) - self.assertIn("Architecture fake is not supported", str(process_execute.stderr)) - - -class TestBuildCommand_ErrorCases(BuildIntegBase): - def test_unsupported_runtime(self): - overrides = {"Runtime": "unsupportedpython", "CodeUri": "Python"} - cmdlist = self.get_command_list(parameter_overrides=overrides) - - process_execute = run_command(cmdlist, cwd=self.working_dir) - self.assertEqual(1, process_execute.process.returncode) - - self.assertIn("Build Failed", str(process_execute.stdout)) - - -class TestBuildCommand_NodeFunctions(BuildIntegNodeBase): - @parameterized.expand( - [ - ("nodejs16.x", False), - ("nodejs18.x", False), - ("nodejs20.x", False), - ("nodejs16.x", "use_container"), - ("nodejs18.x", "use_container"), - ("nodejs20.x", "use_container"), - ] - ) - def test_building_default_package_json(self, runtime, use_container): - if use_container: - if SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD: - self.skipTest(SKIP_DOCKER_MESSAGE) - if not runtime_supported_by_docker(runtime): - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) - self._test_with_default_package_json(runtime, use_container, self.test_data_path) - - -class TestBuildCommand_NodeFunctions_With_External_Manifest(BuildIntegNodeBase): - CODE_URI = "Node_without_manifest" - TEST_INVOKE = True - MANIFEST_PATH = "npm_manifest/package.json" - - @parameterized.expand( - [ - ("nodejs16.x",), - ("nodejs18.x",), - ("nodejs20.x",), - ] - ) - def test_building_default_package_json(self, runtime): - self._test_with_default_package_json(runtime, False, self.test_data_path) - - -class TestBuildCommand_EsbuildFunctions(BuildIntegEsbuildBase): - template = "template_with_metadata_esbuild.yaml" - - @parameterized.expand( - [ - ("nodejs20.x", "Esbuild/Node", {"main.js", "main.js.map"}, "main.lambdaHandler", False, "x86_64"), - ("nodejs20.x", "Esbuild/TypeScript", {"app.js", "app.js.map"}, "app.lambdaHandler", False, "x86_64"), - # Keeping container tests as Node.js18 until our CI platform can run Node.js20 container tests - ("nodejs18.x", "Esbuild/Node", {"main.js", "main.js.map"}, "main.lambdaHandler", "use_container", "x86_64"), - ( - "nodejs18.x", - "Esbuild/TypeScript", - {"app.js", "app.js.map"}, - "app.lambdaHandler", - "use_container", - "x86_64", - ), - ] - ) - def test_building_default_package_json( - self, runtime, code_uri, expected_files, handler, use_container, architecture - ): - self._test_with_default_package_json(runtime, use_container, code_uri, expected_files, handler, architecture) - - -class TestBuildCommand_EsbuildFunctions_With_External_Manifest(BuildIntegEsbuildBase): - template = "template_with_metadata_esbuild.yaml" - MANIFEST_PATH = "Esbuild/npm_manifest/package.json" - - @parameterized.expand( - [ - ( - "nodejs20.x", - "Esbuild/Node_without_manifest", - {"main.js", "main.js.map"}, - "main.lambdaHandler", - False, - "x86_64", - ), - ( - "nodejs20.x", - "Esbuild/TypeScript_without_manifest", - {"app.js", "app.js.map"}, - "app.lambdaHandler", - False, - "x86_64", - ), - ] - ) - def test_building_default_package_json( - self, runtime, code_uri, expected_files, handler, use_container, architecture - ): - self._test_with_default_package_json(runtime, use_container, code_uri, expected_files, handler, architecture) - - -@skipIf( - ((IS_WINDOWS and RUNNING_ON_CI) and not CI_OVERRIDE), - "Skip build tests on windows when running in CI unless overridden", -) -@parameterized_class( - ("template",), - [ - ("esbuild_templates/template_with_metadata_node_options.yaml",), - ("esbuild_templates/template_with_metadata_global_node_options.yaml",), - ], -) -class TestBuildCommand_EsbuildFunctionProperties(BuildIntegEsbuildBase): - @parameterized.expand( - [ - ("nodejs16.x", "../Esbuild/TypeScript", "app.lambdaHandler", "x86_64"), - ("nodejs18.x", "../Esbuild/TypeScript", "app.lambdaHandler", "x86_64"), - ("nodejs20.x", "../Esbuild/TypeScript", "app.lambdaHandler", "x86_64"), - ("nodejs16.x", "../Esbuild/TypeScript", "nested/function/app.lambdaHandler", "x86_64"), - ("nodejs18.x", "../Esbuild/TypeScript", "nested/function/app.lambdaHandler", "x86_64"), - ("nodejs20.x", "../Esbuild/TypeScript", "nested/function/app.lambdaHandler", "x86_64"), - ] - ) - def test_environment_generates_sourcemap(self, runtime, code_uri, handler, architecture): - overrides = { - "runtime": runtime, - "code_uri": code_uri, - "handler": handler, - "architecture": architecture, - } - self._test_with_various_properties(overrides, runtime) - - -class TestBuildCommand_NodeFunctions_With_Specified_Architecture(BuildIntegNodeBase): - template = "template_with_architecture.yaml" - - @parameterized.expand( - [ - ("nodejs16.x", False, "x86_64"), - ("nodejs18.x", False, "x86_64"), - ("nodejs20.x", False, "x86_64"), - ("nodejs16.x", "use_container", "x86_64"), - ("nodejs18.x", "use_container", "x86_64"), - ] - ) - def test_building_default_package_json(self, runtime, use_container, architecture): - if use_container and not runtime_supported_by_docker(runtime): - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) - self._test_with_default_package_json(runtime, use_container, self.test_data_path, architecture) - - -class TestBuildCommand_RubyFunctions(BuildIntegRubyBase): - @parameterized.expand(["ruby3.2", "ruby3.3"]) - @skipIf(SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD, SKIP_DOCKER_MESSAGE) - def test_building_ruby_in_container(self, runtime): - if IS_WINDOWS and not runtime_supported_by_docker(runtime): - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) - self._test_with_default_gemfile(runtime, "use_container", "Ruby", self.test_data_path) - - @parameterized.expand(["ruby3.2"]) - def test_building_ruby_in_process(self, runtime): - self._test_with_default_gemfile(runtime, False, "Ruby", self.test_data_path) - - -class TestBuildCommand_RubyFunctions_With_Architecture(BuildIntegRubyBase): - template = "template_with_architecture.yaml" - - @parameterized.expand([("ruby3.2", "Ruby32"), ("ruby3.3", "Ruby33")]) - @skipIf(SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD, SKIP_DOCKER_MESSAGE) - def test_building_ruby_in_container_with_specified_architecture(self, runtime, codeuri): - if IS_WINDOWS and not runtime_supported_by_docker(runtime): - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) - self._test_with_default_gemfile(runtime, "use_container", codeuri, self.test_data_path, "x86_64") - - @parameterized.expand([("ruby3.2", "Ruby32"), ("ruby3.3", "Ruby33")]) - def test_building_ruby_in_process_with_specified_architecture(self, runtime, codeuri): - if IS_WINDOWS and not runtime_supported_by_docker(runtime): - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) - self._test_with_default_gemfile(runtime, False, codeuri, self.test_data_path, "x86_64") - - -class TestBuildCommand_RubyFunctionsWithGemfileInTheRoot(BuildIntegRubyBase): - """ - Tests use case where Gemfile will present in the root of the project folder. - This doesn't apply to containerized build, since it copies only the function folder to the container - """ - - @parameterized.expand([("ruby3.2"), ("ruby3.3")]) - def test_building_ruby_in_process_with_root_gemfile(self, runtime): - self._prepare_application_environment() - self._test_with_default_gemfile(runtime, False, "RubyWithRootGemfile", self.working_dir) - - def _prepare_application_environment(self): - """ - Create an application environment where Gemfile will be in the root folder of the app; - ├── RubyWithRootGemfile - │ └── app.rb - ├── Gemfile - └── template.yaml - """ - # copy gemfile to the root of the project - shutil.copyfile(Path(self.template_path).parent.joinpath("Gemfile"), Path(self.working_dir).joinpath("Gemfile")) - # copy function source code in its folder - osutils.copytree( - Path(self.template_path).parent.joinpath("RubyWithRootGemfile"), - Path(self.working_dir).joinpath("RubyWithRootGemfile"), - ) - # copy template to the root folder - shutil.copyfile(Path(self.template_path), Path(self.working_dir).joinpath("template.yaml")) - # update template path with new location - self.template_path = str(Path(self.working_dir).joinpath("template.yaml")) - - -class TestBuildCommand_Java(BuildIntegJavaBase): - @parameterized.expand( - [ - ( - "java8.al2", - "8", - BuildIntegJavaBase.USING_GRADLE_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java8.al2", - "8", - BuildIntegJavaBase.USING_GRADLEW_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java8.al2", - "8", - BuildIntegJavaBase.USING_GRADLE_KOTLIN_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java8.al2", - "8", - BuildIntegJavaBase.USING_MAVEN_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_MAVEN, - BuildIntegJavaBase.EXPECTED_MAVEN_DEPENDENCIES, - ), - ( - "java11", - "11", - BuildIntegJavaBase.USING_GRADLE_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java11", - "11", - BuildIntegJavaBase.USING_GRADLEW_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java11", - "11", - BuildIntegJavaBase.USING_GRADLE_KOTLIN_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java11", - "11", - BuildIntegJavaBase.USING_MAVEN_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_MAVEN, - BuildIntegJavaBase.EXPECTED_MAVEN_DEPENDENCIES, - ), - ( - "java17", - "17", - BuildIntegJavaBase.USING_GRADLE_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java17", - "17", - BuildIntegJavaBase.USING_GRADLEW_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java17", - "17", - BuildIntegJavaBase.USING_GRADLE_KOTLIN_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java17", - "17", - BuildIntegJavaBase.USING_MAVEN_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_MAVEN, - BuildIntegJavaBase.EXPECTED_MAVEN_DEPENDENCIES, - ), - ( - "java21", - "21", - BuildIntegJavaBase.USING_GRADLE_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java21", - "21", - BuildIntegJavaBase.USING_GRADLEW_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java21", - "21", - BuildIntegJavaBase.USING_GRADLE_KOTLIN_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java21", - "21", - BuildIntegJavaBase.USING_MAVEN_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_MAVEN, - BuildIntegJavaBase.EXPECTED_MAVEN_DEPENDENCIES, - ), - ] - ) - @skipIf(SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD, SKIP_DOCKER_MESSAGE) - def test_building_java_in_container( - self, runtime, runtime_version, code_path, expected_files, expected_dependencies - ): - if not runtime_supported_by_docker(runtime): - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) - self._test_with_building_java( - runtime, - os.path.join(code_path, runtime_version), - expected_files, - expected_dependencies, - "use_container", - self.test_data_path, - ) - - @parameterized.expand( - [ - ( - "java8.al2", - "8", - BuildIntegJavaBase.USING_GRADLE_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java8.al2", - "8", - BuildIntegJavaBase.USING_GRADLEW_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java8.al2", - "8", - BuildIntegJavaBase.USING_GRADLE_KOTLIN_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java8.al2", - "8", - BuildIntegJavaBase.USING_MAVEN_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_MAVEN, - BuildIntegJavaBase.EXPECTED_MAVEN_DEPENDENCIES, - ), - ( - "java11", - "11", - BuildIntegJavaBase.USING_GRADLE_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java11", - "11", - BuildIntegJavaBase.USING_GRADLEW_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java11", - "11", - BuildIntegJavaBase.USING_GRADLE_KOTLIN_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java11", - "11", - BuildIntegJavaBase.USING_MAVEN_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_MAVEN, - BuildIntegJavaBase.EXPECTED_MAVEN_DEPENDENCIES, - ), - ( - "java17", - "17", - BuildIntegJavaBase.USING_GRADLE_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java17", - "17", - BuildIntegJavaBase.USING_GRADLEW_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java17", - "17", - BuildIntegJavaBase.USING_GRADLE_KOTLIN_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java17", - "17", - BuildIntegJavaBase.USING_MAVEN_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_MAVEN, - BuildIntegJavaBase.EXPECTED_MAVEN_DEPENDENCIES, - ), - ( - "java21", - "21", - BuildIntegJavaBase.USING_GRADLE_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java21", - "21", - BuildIntegJavaBase.USING_GRADLEW_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java21", - "21", - BuildIntegJavaBase.USING_GRADLE_KOTLIN_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, - BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, - ), - ( - "java21", - "21", - BuildIntegJavaBase.USING_MAVEN_PATH, - BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_MAVEN, - BuildIntegJavaBase.EXPECTED_MAVEN_DEPENDENCIES, - ), - ] - ) - def test_building_java_in_process(self, runtime, runtime_version, code_path, expected_files, expected_dependencies): - self._test_with_building_java( - runtime, - os.path.join(code_path, runtime_version), - expected_files, - expected_dependencies, - False, - self.test_data_path, - ) - - -@pytest.mark.dotnet -class TestBuildCommand_Dotnet_cli_package(BuildIntegBase): - FUNCTION_LOGICAL_ID = "Function" - EXPECTED_FILES_PROJECT_MANIFEST = { - "Amazon.Lambda.APIGatewayEvents.dll", - "Amazon.Lambda.Core.dll", - "HelloWorld.runtimeconfig.json", - "Amazon.Lambda.Serialization.Json.dll", - "Newtonsoft.Json.dll", - "HelloWorld.deps.json", - "HelloWorld.dll", - } - - EXPECTED_FILES_PROJECT_MANIFEST_PROVIDED = { - "bootstrap", - } - - @parameterized.expand( - [ - ("dotnet6", "Dotnet6", None), - ("dotnet6", "Dotnet6", "debug"), - ("provided.al2", "Dotnet7", None), - ("dotnet8", "Dotnet8", None), - ("dotnet8", "Dotnet8", "debug"), - ] - ) - def test_dotnet_in_process(self, runtime, code_uri, mode, architecture="x86_64"): - # dotnet7 requires docker to build the function - if code_uri == "Dotnet7" and (SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD): - self.skipTest(SKIP_DOCKER_MESSAGE) - overrides = { - "Runtime": runtime, - "CodeUri": code_uri, - "Handler": "HelloWorld::HelloWorld.Function::FunctionHandler", - "Architectures": architecture, - } - - if runtime == "provided.al2": - self.template_path = self.template_path.replace("template.yaml", "template_build_method_dotnet_7.yaml") - - cmdlist = self.get_command_list(use_container=False, parameter_overrides=overrides) - LOG.info("Running with SAM_BUILD_MODE={}".format(mode)) - - newenv = os.environ.copy() - if mode: - newenv["SAM_BUILD_MODE"] = mode - - command_result = run_command(cmdlist, cwd=self.working_dir, env=newenv) - self.assertEqual(command_result.process.returncode, 0) - - if not runtime_supported_by_docker(runtime) and IS_WINDOWS: - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) - - 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 - ), - ) +) +@parameterized_class( + ("template", "prop"), + [ + ("template_local_prebuilt_image.yaml", "ImageUri"), + ("template_cfn_local_prebuilt_image.yaml", "Code.ImageUri"), + ], +) +class TestSkipBuildingFunctionsWithLocalImageUri(BuildIntegBase): + EXPECTED_FILES_PROJECT_MANIFEST: Set[str] = set() - self._verify_resource_property( - str(self.built_template), - "OtherRelativePathResource", - "BodyS3Location", - os.path.relpath( - os.path.normpath(os.path.join(str(self.test_data_path), "SomeRelativePath")), - str(self.default_build_dir), - ), - ) + FUNCTION_LOGICAL_ID_IMAGE = "ImageFunction" - self._verify_resource_property( - str(self.built_template), - "GlueResource", - "Command.ScriptLocation", - os.path.relpath( - os.path.normpath(os.path.join(str(self.test_data_path), "SomeRelativePath")), - str(self.default_build_dir), - ), + @parameterized.expand(["3.8", "3.9", "3.10", "3.11", "3.12"]) + def test_with_default_requirements(self, runtime): + _tag = uuid4().hex + image_uri = f"func:{_tag}" + docker_client = docker.from_env() + docker_client.images.build( + path=str(Path(self.test_data_path, "PythonImage")), + dockerfile="Dockerfile", + buildargs={"BASE_RUNTIME": runtime}, + tag=image_uri, ) - - expected = "{'message': 'Hello World'}" - if not SKIP_DOCKER_TESTS: - self._verify_invoke_built_function( - self.built_template, self.FUNCTION_LOGICAL_ID, self._make_parameter_override_arg(overrides), expected - ) - self.verify_docker_container_cleanedup(runtime) - - @parameterized.expand( - [ - ("dotnet6", "Dotnet6", None), - ("dotnet6", "Dotnet6", "debug"), - # force to run tests on arm64 machines may cause dotnet7 test failing - # because Native AOT Lambda functions require the host and lambda architectures to match - ("provided.al2", "Dotnet7", None), - ("dotnet8", "Dotnet8", None), - ("dotnet8", "Dotnet8", "debug"), - ] - ) - @skipIf(SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD, SKIP_DOCKER_MESSAGE) - def test_dotnet_in_container_mount_with_write_explicit(self, runtime, code_uri, mode, architecture="x86_64"): - if not runtime_supported_by_docker(runtime) and IS_WINDOWS: - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) - overrides = { - "Runtime": runtime, - "CodeUri": code_uri, - "Handler": "HelloWorld::HelloWorld.Function::FunctionHandler", - "Architectures": architecture, + "ImageUri": image_uri, + "Handler": "main.handler", } + cmdlist = self.get_command_list(parameter_overrides=overrides) - if runtime == "provided.al2": - self.template_path = self.template_path.replace("template.yaml", "template_build_method_dotnet_7.yaml") - - # test with explicit mount_with_write flag - cmdlist = self.get_command_list(use_container=True, parameter_overrides=overrides, mount_with=MountMode.WRITE) - # env vars needed for testing unless set by dotnet images on public.ecr.aws - cmdlist += ["--container-env-var", "DOTNET_CLI_HOME=/tmp/dotnet"] - cmdlist += ["--container-env-var", "XDG_DATA_HOME=/tmp/xdg"] - - LOG.info("Running with SAM_BUILD_MODE={}".format(mode)) - - newenv = os.environ.copy() - if mode: - newenv["SAM_BUILD_MODE"] = mode - - command_result = run_command(cmdlist, cwd=self.working_dir, env=newenv) + command_result = run_command(cmdlist, cwd=self.working_dir) self.assertEqual(command_result.process.returncode, 0) - 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._verify_image_build_artifact( + self.built_template, + self.FUNCTION_LOGICAL_ID_IMAGE, + self.prop, + {"Ref": "ImageUri"}, ) - self._verify_resource_property( - str(self.built_template), - "OtherRelativePathResource", - "BodyS3Location", - os.path.relpath( - os.path.normpath(os.path.join(str(self.test_data_path), "SomeRelativePath")), - str(self.default_build_dir), - ), + expected = {"pi": "3.14"} + self._verify_invoke_built_function( + self.built_template, self.FUNCTION_LOGICAL_ID_IMAGE, self._make_parameter_override_arg(overrides), expected ) - self._verify_resource_property( - str(self.built_template), - "GlueResource", - "Command.ScriptLocation", - os.path.relpath( - os.path.normpath(os.path.join(str(self.test_data_path), "SomeRelativePath")), - str(self.default_build_dir), - ), - ) - expected = "{'message': 'Hello World'}" - self._verify_invoke_built_function( - self.built_template, self.FUNCTION_LOGICAL_ID, self._make_parameter_override_arg(overrides), expected +@skipIf( + # Hits public ECR pull limitation, move it to canary tests + ((not RUN_BY_CANARY) or (IS_WINDOWS and RUNNING_ON_CI) and not CI_OVERRIDE), + "Skip build tests on windows when running in CI unless overridden", +) +@parameterized_class( + ("template", "SKIPPED_FUNCTION_LOGICAL_ID", "src_code_path", "src_code_prop", "metadata_key"), + [ + ("template_function_flagged_to_skip_build.yaml", "SkippedFunction", "PreBuiltPython", "CodeUri", None), + ("template_cfn_function_flagged_to_skip_build.yaml", "SkippedFunction", "PreBuiltPython", "Code", None), + ( + "cdk_v1_synthesized_template_python_function_construct.json", + "SkippedFunctionDA0220D7", + "asset.7023fd47c81480184154c6e0e870d6920c50e35d8fae977873016832e127ded9", + None, + "aws:asset:path", + ), + ( + "cdk_v1_synthesized_template_function_construct_with_skip_build_metadata.json", + "SkippedFunctionDA0220D7", + "asset.7023fd47c81480184154c6e0e870d6920c50e35d8fae977873016832e127ded9", + None, + "aws:asset:path", + ), + ( + "cdk_v2_synthesized_template_python_function_construct.json", + "SkippedFunctionDA0220D7", + "asset.7023fd47c81480184154c6e0e870d6920c50e35d8fae977873016832e127ded9", + None, + "aws:asset:path", + ), + ( + "cdk_v2_synthesized_template_function_construct_with_skip_build_metadata.json", + "RandomSpaceFunction4F8564D0", + "asset.7023fd47c81480184154c6e0e870d6920c50e35d8fae977873016832e127ded9", + None, + "aws:asset:path", + ), + ], +) +class TestSkipBuildingFlaggedFunctions(BuildIntegPythonBase): + template = "template_cfn_function_flagged_to_skip_build.yaml" + SKIPPED_FUNCTION_LOGICAL_ID = "SkippedFunction" + src_code_path = "PreBuiltPython" + src_code_prop = "Code" + metadata_key = None + + def test_with_default_requirements(self): + self._validate_skipped_built_function( + self.default_build_dir, + self.SKIPPED_FUNCTION_LOGICAL_ID, + self.test_data_path, + self.src_code_path, + self.src_code_prop, + self.metadata_key, ) - self.verify_docker_container_cleanedup(runtime) - @parameterized.expand( - [ - ("dotnet6", "Dotnet6", None), - ("dotnet6", "Dotnet6", "debug"), - # force to run tests on arm64 machines may cause dotnet7 test failing - # because Native AOT Lambda functions require the host and lambda architectures to match - ("provided.al2", "Dotnet7", None), - ("dotnet8", "Dotnet8", None), - ("dotnet8", "Dotnet8", "debug"), - ] - ) - @skipIf(SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD, SKIP_DOCKER_MESSAGE) - def test_dotnet_in_container_mount_with_write_interactive( - self, - runtime, - code_uri, - mode, - architecture="x86_64", + def _validate_skipped_built_function( + self, build_dir, skipped_function_logical_id, relative_path, src_code_path, src_code_prop, metadata_key ): - if not runtime_supported_by_docker(runtime) and IS_WINDOWS: - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) - - overrides = { - "Runtime": runtime, - "CodeUri": code_uri, - "Handler": "HelloWorld::HelloWorld.Function::FunctionHandler", - "Architectures": architecture, - } - - if runtime == "provided.al2": - self.template_path = self.template_path.replace("template.yaml", "template_build_method_dotnet_7.yaml") + cmdlist = self.get_command_list() - # test without explicit mount_with_write flag - cmdlist = self.get_command_list(use_container=True, parameter_overrides=overrides) - # env vars needed for testing unless set by dotnet images on public.ecr.aws - cmdlist += ["--container-env-var", "DOTNET_CLI_HOME=/tmp/dotnet"] - cmdlist += ["--container-env-var", "XDG_DATA_HOME=/tmp/xdg"] + command_result = run_command(cmdlist, cwd=self.working_dir) + self.assertEqual(command_result.process.returncode, 0) - LOG.info("Running with SAM_BUILD_MODE={}".format(mode)) + self.assertTrue(build_dir.exists(), "Build directory should be created") - # mock user input to mount with write - user_click_confirm_input = "y" - command_result = run_command_with_input(cmdlist, user_click_confirm_input.encode(), cwd=self.working_dir) - self.assertEqual(command_result.process.returncode, 0) + build_dir_files = os.listdir(str(build_dir)) + self.assertNotIn(skipped_function_logical_id, build_dir_files) - 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 - ), + expected_value = os.path.relpath( + os.path.normpath(os.path.join(str(relative_path), src_code_path)), + str(self.default_build_dir), ) - self._verify_resource_property( - str(self.built_template), - "OtherRelativePathResource", - "BodyS3Location", - os.path.relpath( - os.path.normpath(os.path.join(str(self.test_data_path), "SomeRelativePath")), - str(self.default_build_dir), - ), - ) + with open(self.built_template, "r") as fp: + template_dict = yaml_parse(fp.read()) + if src_code_prop: + self.assertEqual( + expected_value, + jmespath.search( + f"Resources.{skipped_function_logical_id}.Properties.{src_code_prop}", template_dict + ), + ) + if metadata_key: + metadata = jmespath.search(f"Resources.{skipped_function_logical_id}.Metadata", template_dict) + metadata = metadata if metadata else {} + self.assertEqual(expected_value, metadata.get(metadata_key, "")) + expected = "Hello World" + if not SKIP_DOCKER_TESTS: + self._verify_invoke_built_function( + self.built_template, skipped_function_logical_id, self._make_parameter_override_arg({}), expected + ) - self._verify_resource_property( - str(self.built_template), - "GlueResource", - "Command.ScriptLocation", - os.path.relpath( - os.path.normpath(os.path.join(str(self.test_data_path), "SomeRelativePath")), - str(self.default_build_dir), - ), - ) - expected = "{'message': 'Hello World'}" - self._verify_invoke_built_function( - self.built_template, self.FUNCTION_LOGICAL_ID, self._make_parameter_override_arg(overrides), expected - ) - self.verify_docker_container_cleanedup(runtime) +@pytest.mark.ruby +class TestBuildCommand_RubyFunctions(BuildIntegRubyBase): + @parameterized.expand([(False,), ("use_container",)]) + def test_building_ruby_3_2(self, use_container): + if use_container and SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD: + self.skipTest(SKIP_DOCKER_MESSAGE) + + self._test_with_default_gemfile("ruby3.2", use_container, "Ruby", self.test_data_path) - @parameterized.expand([("dotnet6", "Dotnet6"), ("dotnet8", "Dotnet8")]) + @parameterized.expand([("ruby3.3",)]) @skipIf(SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD, SKIP_DOCKER_MESSAGE) - def test_must_fail_on_container_mount_without_write_interactive(self, runtime, code_uri): - use_container = True - overrides = { - "Runtime": runtime, - "CodeUri": code_uri, - "Handler": "HelloWorld::HelloWorld.Function::FunctionHandler", - } - cmdlist = self.get_command_list(use_container=use_container, parameter_overrides=overrides) + @pytest.mark.al2023 + def test_building_ruby_al2023(self, runtime): + self._test_with_default_gemfile(runtime, "use_container", "Ruby", self.test_data_path) - # mock user input to not allow mounting with write - user_click_confirm_input = "N" - process_execute = run_command_with_input(cmdlist, user_click_confirm_input.encode()) - # Must error out, because mounting with write is not allowed - self.assertEqual(process_execute.process.returncode, 1) +class TestBuildCommand_RubyFunctions_With_Architecture(BuildIntegRubyBase): + template = "template_with_architecture.yaml" - def _verify_built_artifact(self, build_dir, function_logical_id, expected_files): - self.assertTrue(build_dir.exists(), "Build directory should be created") + @parameterized.expand([(False,), ("use_container",)]) + def test_building_ruby_3_2(self, use_container): + if use_container and SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD: + self.skipTest(SKIP_DOCKER_MESSAGE) + self._test_with_default_gemfile("ruby3.2", use_container, "Ruby32", self.test_data_path, "x86_64") - build_dir_files = os.listdir(str(build_dir)) - self.assertIn("template.yaml", build_dir_files) - self.assertIn(function_logical_id, build_dir_files) + @parameterized.expand([("ruby3.3", "Ruby33", False), ("ruby3.3", "Ruby33", True)]) + @skipIf(SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD, SKIP_DOCKER_MESSAGE) + @pytest.mark.al2023 + def test_building_ruby_al2023(self, runtime, codeuri, use_container): + self._test_with_default_gemfile(runtime, use_container, codeuri, self.test_data_path, "x86_64") - template_path = build_dir.joinpath("template.yaml") - resource_artifact_dir = build_dir.joinpath(function_logical_id) - # Make sure the template has correct CodeUri for resource - self._verify_resource_property(str(template_path), function_logical_id, "CodeUri", function_logical_id) +class TestBuildCommand_RubyFunctionsWithGemfileInTheRoot(BuildIntegRubyBase): + """ + Tests use case where Gemfile will present in the root of the project folder. + This doesn't apply to containerized build, since it copies only the function folder to the container + """ - all_artifacts = set(os.listdir(str(resource_artifact_dir))) - actual_files = all_artifacts.intersection(expected_files) - self.assertEqual(actual_files, expected_files) + @parameterized.expand([("ruby3.2"), ("ruby3.3")]) + def test_building_ruby_in_process_with_root_gemfile(self, runtime): + self._prepare_application_environment(runtime) + self._test_with_default_gemfile(runtime, False, "RubyWithRootGemfile", self.working_dir) + + def _prepare_application_environment(self, runtime): + """ + Create an application environment where Gemfile will be in the root folder of the app; + ├── .ruby-version + ├── RubyWithRootGemfile + │ └── app.rb + ├── Gemfile + └── template.yaml + """ + # copy .ruby-version to the root of the project + ruby_runtime_path = "Ruby32" if runtime == "ruby3.2" else "Ruby33" + shutil.copyfile( + Path(self.template_path).parent.joinpath(ruby_runtime_path, ".ruby-version"), + Path(self.working_dir).joinpath(".ruby-version"), + ) + # copy gemfile to the root of the project + shutil.copyfile(Path(self.template_path).parent.joinpath("Gemfile"), Path(self.working_dir).joinpath("Gemfile")) + # copy function source code in its folder + osutils.copytree( + Path(self.template_path).parent.joinpath("RubyWithRootGemfile"), + Path(self.working_dir).joinpath("RubyWithRootGemfile"), + ) + # copy template to the root folder + shutil.copyfile(Path(self.template_path), Path(self.working_dir).joinpath("template.yaml")) + # update template path with new location + self.template_path = str(Path(self.working_dir).joinpath("template.yaml")) class TestBuildCommand_Go_Modules(BuildIntegGoBase): @@ -1912,91 +794,6 @@ def _get_python_version(self): return "python{}.{}".format(sys.version_info.major, sys.version_info.minor) -@parameterized_class( - ("template", "is_nested_parent"), - [ - (os.path.join("nested-parent", "template-parent.yaml"), "is_nested_parent"), - ("template.yaml", False), - ], -) -class TestBuildCommand_ProvidedFunctions(BuildIntegProvidedBase): - # Test Suite for runtime: provided and where selection of the build workflow is implicitly makefile builder - # if the makefile is present. - @parameterized.expand( - [ - ("provided", False, None), - ("provided", "use_container", "Makefile-container"), - ("provided.al2", False, None), - ("provided.al2", "use_container", "Makefile-container"), - ("provided.al2023", False, None), - ("provided.al2023", "use_container", "Makefile-container"), - ] - ) - def test_building_Makefile(self, runtime, use_container, manifest): - if use_container: - if SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD: - self.skipTest(SKIP_DOCKER_MESSAGE) - if not runtime_supported_by_docker(runtime): - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) - self._test_with_Makefile(runtime, use_container, manifest) - - -@parameterized_class( - ("template", "is_nested_parent"), - [ - (os.path.join("nested-parent", "template-parent.yaml"), "is_nested_parent"), - ("template.yaml", False), - ], -) -class TestBuildCommand_ProvidedFunctions_With_Specified_Architecture(BuildIntegProvidedBase): - # Test Suite for runtime: provided and where selection of the build workflow is implicitly makefile builder - # if the makefile is present. - @parameterized.expand( - [ - ("provided", False, None, "x86_64"), - ("provided", "use_container", "Makefile-container", "x86_64"), - ("provided.al2", False, None, "x86_64"), - ("provided.al2", "use_container", "Makefile-container", "x86_64"), - ("provided.al2023", False, None, "x86_64"), - ("provided.al2023", "use_container", "Makefile-container", "x86_64"), - ] - ) - def test_building_Makefile(self, runtime, use_container, manifest, architecture): - if use_container and not runtime_supported_by_docker(runtime): - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) - self._test_with_Makefile(runtime, use_container, manifest, architecture) - - -@parameterized_class( - ("template", "code_uri", "is_nested_parent"), - [ - ("custom_build_with_custom_root_project_path.yaml", "empty_src_code", False), - ("custom_build_with_custom_make_file_path.yaml", "provided_src_code_without_makefile", False), - ("custom_build_with_custom_working_dir.yaml", "custom_working_dir_src_code", False), - ("custom_build_with_custom_root_project_path_and_custom_makefile_path.yaml", "empty_src_code", False), - ( - "custom_build_with_custom_root_project_path_custom_makefile_path_and_custom_working_dir.yaml", - "empty_src_code", - False, - ), - ], -) -class TestBuildCommand_ProvidedFunctionsWithCustomMetadata(BuildIntegProvidedBase): - # Test Suite for runtime: provided and where selection of the build workflow is implicitly makefile builder - # if the makefile is present. - @parameterized.expand( - [ - ("provided", False, None), - ("provided.al2", False, None), - ("provided.al2023", False, None), - ] - ) - def test_building_Makefile(self, runtime, use_container, manifest): - if use_container and not runtime_supported_by_docker(runtime): - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) - self._test_with_Makefile(runtime, use_container, manifest) - - @skipIf( ((IS_WINDOWS and RUNNING_ON_CI) and not CI_OVERRIDE), "Skip build tests on windows when running in CI unless overridden", diff --git a/tests/integration/buildcmd/test_build_cmd_arm64.py b/tests/integration/buildcmd/test_build_cmd_arm64.py index 403c6e269b..b1eb8acb7b 100644 --- a/tests/integration/buildcmd/test_build_cmd_arm64.py +++ b/tests/integration/buildcmd/test_build_cmd_arm64.py @@ -1,5 +1,6 @@ import os from unittest import skipIf +import pytest from parameterized import parameterized, parameterized_class @@ -22,11 +23,10 @@ CI_OVERRIDE, IS_WINDOWS, RUNNING_ON_CI, - runtime_supported_by_docker, - RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG, ) +@pytest.mark.python class TestBuildCommand_PythonFunctions_With_Specified_Architecture_arm64(BuildIntegPythonBase): template = "template_with_architecture.yaml" @@ -46,12 +46,18 @@ class TestBuildCommand_PythonFunctions_With_Specified_Architecture_arm64(BuildIn ("python3.9", "Python", "use_container"), ("python3.10", "Python", "use_container"), ("python3.11", "Python", "use_container"), - ("python3.12", "Python", "use_container"), ] ) def test_with_default_requirements(self, runtime, codeuri, use_container): - if use_container and not runtime_supported_by_docker(runtime): - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) + self._test_with_default_requirements(runtime, codeuri, use_container, self.test_data_path, architecture=ARM64) + + @parameterized.expand( + [ + ("python3.12", "Python", "use_container"), + ] + ) + @pytest.mark.al2023 + def test_with_default_requirements_al2023(self, runtime, codeuri, use_container): self._test_with_default_requirements(runtime, codeuri, use_container, self.test_data_path, architecture=ARM64) @@ -76,6 +82,7 @@ def test_building_default_package_json(self, runtime, code_uri, expected_files, self._test_with_default_package_json(runtime, use_container, code_uri, expected_files, handler, ARM64) +@pytest.mark.nodejs class TestBuildCommand_EsbuildFunctions_With_External_Manifest_arm64(BuildIntegEsbuildBase): template = "template_with_metadata_esbuild.yaml" MANIFEST_PATH = "Esbuild/npm_manifest/package.json" @@ -127,11 +134,10 @@ class TestBuildCommand_EsbuildFunctions_With_External_Manifest_arm64(BuildIntegE ] ) def test_building_default_package_json(self, runtime, code_uri, expected_files, handler, use_container): - if use_container and not runtime_supported_by_docker(runtime): - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) self._test_with_default_package_json(runtime, use_container, code_uri, expected_files, handler, ARM64) +@pytest.mark.nodejs class TestBuildCommand_NodeFunctions_With_Specified_Architecture_arm64(BuildIntegNodeBase): template = "template_with_architecture.yaml" @@ -142,12 +148,18 @@ class TestBuildCommand_NodeFunctions_With_Specified_Architecture_arm64(BuildInte ("nodejs20.x", False), ("nodejs16.x", "use_container"), ("nodejs18.x", "use_container"), - ("nodejs20.x", "use_container"), ] ) def test_building_default_package_json(self, runtime, use_container): - if use_container and not runtime_supported_by_docker(runtime): - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) + self._test_with_default_package_json(runtime, use_container, self.test_data_path, ARM64) + + @parameterized.expand( + [ + ("nodejs20.x", "use_container"), + ] + ) + @pytest.mark.al2023 + def test_building_default_package_json_al2023(self, runtime, use_container): self._test_with_default_package_json(runtime, use_container, self.test_data_path, ARM64) @@ -168,6 +180,7 @@ def test_building_ruby_in_process_with_specified_architecture(self, runtime, cod (IS_WINDOWS and not CI_OVERRIDE), "Skip build tests on windows when running in CI unless overridden", ) +@pytest.mark.java class TestBuildCommand_Java_With_Specified_Architecture_arm64(BuildIntegJavaBase): template = "template_with_architecture.yaml" @@ -257,6 +270,24 @@ class TestBuildCommand_Java_With_Specified_Architecture_arm64(BuildIntegJavaBase BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_MAVEN, BuildIntegJavaBase.EXPECTED_MAVEN_DEPENDENCIES, ), + ] + ) + @skipIf(SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD, SKIP_DOCKER_MESSAGE) + def test_building_java_in_container_with_arm64_architecture( + self, runtime, runtime_version, code_path, expected_files, expected_dependencies + ): + self._test_with_building_java( + runtime, + os.path.join(code_path, runtime_version), + expected_files, + expected_dependencies, + "use_container", + self.test_data_path, + ARM64, + ) + + @parameterized.expand( + [ ( "java21", "21", @@ -288,11 +319,10 @@ class TestBuildCommand_Java_With_Specified_Architecture_arm64(BuildIntegJavaBase ] ) @skipIf(SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD, SKIP_DOCKER_MESSAGE) - def test_building_java_in_container_with_arm64_architecture( + @pytest.mark.al2023 + def test_building_java_in_container_with_arm64_architecture_al2023( self, runtime, runtime_version, code_path, expected_files, expected_dependencies ): - if not runtime_supported_by_docker(runtime): - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) self._test_with_building_java( runtime, os.path.join(code_path, runtime_version), @@ -469,6 +499,11 @@ class TestBuildCommand_ProvidedFunctions_With_Specified_Architecture_arm64(Build False, None, ), + ( + "provided.al2023", + False, + None, + ), ( "provided", "use_container", @@ -484,11 +519,13 @@ class TestBuildCommand_ProvidedFunctions_With_Specified_Architecture_arm64(Build "use_container", "Makefile-container", ), - ( - "provided.al2023", - False, - None, - ), + ] + ) + def test_building_Makefile(self, runtime, use_container, manifest): + self._test_with_Makefile(runtime, use_container, manifest, ARM64) + + @parameterized.expand( + [ ( "provided.al2023", "use_container", @@ -496,9 +533,8 @@ class TestBuildCommand_ProvidedFunctions_With_Specified_Architecture_arm64(Build ), ] ) - def test_building_Makefile(self, runtime, use_container, manifest): - if use_container and not runtime_supported_by_docker(runtime): - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) + @pytest.mark.al2023 + def test_building_Makefile_al2023(self, runtime, use_container, manifest): self._test_with_Makefile(runtime, use_container, manifest, ARM64) @@ -507,6 +543,7 @@ def test_building_Makefile(self, runtime, use_container, manifest): "Skip build tests on windows when running in CI unless overridden", ) @rust_parameterized_class +@pytest.mark.provided class TestBuildCommand_Rust_arm64(BuildIntegRustBase): @parameterized.expand( [ @@ -517,8 +554,6 @@ class TestBuildCommand_Rust_arm64(BuildIntegRustBase): ] ) def test_build(self, runtime, build_mode, use_container): - if use_container and not runtime_supported_by_docker(runtime): - self.skipTest(RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG) self._test_with_rust_cargo_lambda( runtime=runtime, code_uri=self.code_uri, diff --git a/tests/integration/buildcmd/test_build_cmd_dotnet.py b/tests/integration/buildcmd/test_build_cmd_dotnet.py new file mode 100644 index 0000000000..bc9cd9b24c --- /dev/null +++ b/tests/integration/buildcmd/test_build_cmd_dotnet.py @@ -0,0 +1,168 @@ +import logging +from unittest import skipIf + +import pytest +from parameterized import parameterized + +from samcli.commands.build.utils import MountMode +from tests.testing_utils import ( + SKIP_DOCKER_TESTS, + SKIP_DOCKER_BUILD, + SKIP_DOCKER_MESSAGE, + run_command_with_input, +) +from tests.integration.buildcmd.build_integ_base import ( + BuildIntegDotnetBase, +) + + +LOG = logging.getLogger(__name__) + + +@pytest.mark.dotnet +class TestBuildCommand_Dotnet_cli_package(BuildIntegDotnetBase): + @parameterized.expand( + [ + ("provided.al2", "Dotnet7", None, None), + ("provided.al2", "Dotnet7", None, MountMode.WRITE), + ] + ) + @skipIf(SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD, SKIP_DOCKER_MESSAGE) + def test_dotnet_al2(self, runtime, code_uri, mode, mount_mode): + overrides = { + "Runtime": runtime, + "CodeUri": code_uri, + "Handler": "HelloWorld::HelloWorld.Function::FunctionHandler", + "Architectures": "x86_64", + } + + self.template_path = self.template_path.replace("template.yaml", "template_build_method_dotnet_7.yaml") + + self.validate_build_command(overrides, mode, mount_mode) + self.validate_build_artifacts(self.EXPECTED_FILES_PROJECT_MANIFEST_PROVIDED) + self.validate_invoke_command(overrides, runtime) + + @parameterized.expand( + [ + ("dotnet6", "Dotnet6", None, None), + ("dotnet6", "Dotnet6", None, MountMode.WRITE), + ("dotnet6", "Dotnet6", "debug", None), + ("dotnet6", "Dotnet6", "debug", MountMode.WRITE), + ] + ) + def test_dotnet_6(self, runtime, code_uri, mode, mount_mode): + if mount_mode and SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD: + self.skipTest(SKIP_DOCKER_MESSAGE) + + overrides = { + "Runtime": runtime, + "CodeUri": code_uri, + "Handler": "HelloWorld::HelloWorld.Function::FunctionHandler", + "Architectures": "x86_64", + } + + self.validate_build_command(overrides, mode, mount_mode) + self.validate_build_artifacts(self.EXPECTED_FILES_PROJECT_MANIFEST) + + if not SKIP_DOCKER_TESTS: + self.validate_invoke_command(overrides, runtime) + + @parameterized.expand( + [ + ("dotnet8", "Dotnet8", None, None), + ("dotnet8", "Dotnet8", None, MountMode.WRITE), + ("dotnet8", "Dotnet8", "debug", None), + ("dotnet8", "Dotnet8", "debug", MountMode.WRITE), + ] + ) + @skipIf(SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD, SKIP_DOCKER_MESSAGE) + @pytest.mark.al2023 + def test_dotnet_al2023(self, runtime, code_uri, mode, mount_mode): + overrides = { + "Runtime": runtime, + "CodeUri": code_uri, + "Handler": "HelloWorld::HelloWorld.Function::FunctionHandler", + "Architectures": "x86_64", + } + + self.validate_build_command(overrides, mode, mount_mode) + self.validate_build_artifacts(self.EXPECTED_FILES_PROJECT_MANIFEST) + self.validate_invoke_command(overrides, runtime) + + +@pytest.mark.dotnet +@skipIf(SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD, SKIP_DOCKER_MESSAGE) +class TestBuildCommand_Dotnet_cli_package_interactive(BuildIntegDotnetBase): + @parameterized.expand( + [ + ("provided.al2", "Dotnet7", None), + ] + ) + def test_dotnet_al2(self, runtime, code_uri, mode): + overrides = { + "Runtime": runtime, + "CodeUri": code_uri, + "Handler": "HelloWorld::HelloWorld.Function::FunctionHandler", + "Architectures": "x86_64", + } + + self.template_path = self.template_path.replace("template.yaml", "template_build_method_dotnet_7.yaml") + + self.validate_build_command(overrides, mode, use_container=True, input="y") + self.validate_build_artifacts(self.EXPECTED_FILES_PROJECT_MANIFEST_PROVIDED) + self.validate_invoke_command(overrides, runtime) + + @parameterized.expand( + [ + ("dotnet6", "Dotnet6", None), + ("dotnet6", "Dotnet6", "debug"), + ] + ) + def test_dotnet_6(self, runtime, code_uri, mode): + overrides = { + "Runtime": runtime, + "CodeUri": code_uri, + "Handler": "HelloWorld::HelloWorld.Function::FunctionHandler", + "Architectures": "x86_64", + } + + self.validate_build_command(overrides, mode, use_container=True, input="y") + self.validate_build_artifacts(self.EXPECTED_FILES_PROJECT_MANIFEST) + self.validate_invoke_command(overrides, runtime) + + @parameterized.expand( + [ + ("dotnet8", "Dotnet8", None), + ("dotnet8", "Dotnet8", "debug"), + ] + ) + @skipIf(SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD, SKIP_DOCKER_MESSAGE) + @pytest.mark.al2023 + def test_dotnet_al2023(self, runtime, code_uri, mode): + overrides = { + "Runtime": runtime, + "CodeUri": code_uri, + "Handler": "HelloWorld::HelloWorld.Function::FunctionHandler", + "Architectures": "x86_64", + } + + self.validate_build_command(overrides, mode, use_container=True, input="y") + self.validate_build_artifacts(self.EXPECTED_FILES_PROJECT_MANIFEST) + self.validate_invoke_command(overrides, runtime) + + @parameterized.expand([("dotnet6", "Dotnet6"), ("dotnet8", "Dotnet8")]) + def test_must_fail_on_container_mount_without_write_interactive(self, runtime, code_uri): + use_container = True + overrides = { + "Runtime": runtime, + "CodeUri": code_uri, + "Handler": "HelloWorld::HelloWorld.Function::FunctionHandler", + } + cmdlist = self.get_command_list(use_container=use_container, parameter_overrides=overrides) + + # mock user input to not allow mounting with write + user_click_confirm_input = "N" + process_execute = run_command_with_input(cmdlist, user_click_confirm_input.encode()) + + # Must error out, because mounting with write is not allowed + self.assertEqual(process_execute.process.returncode, 1) diff --git a/tests/integration/buildcmd/test_build_cmd_java.py b/tests/integration/buildcmd/test_build_cmd_java.py new file mode 100644 index 0000000000..2b4f0a29ec --- /dev/null +++ b/tests/integration/buildcmd/test_build_cmd_java.py @@ -0,0 +1,299 @@ +import logging +import os +from unittest import skipIf + +import pytest +from parameterized import parameterized +from tests.testing_utils import ( + RUNNING_ON_CI, + RUNNING_TEST_FOR_MASTER_ON_CI, + RUN_BY_CANARY, + SKIP_DOCKER_TESTS, + SKIP_DOCKER_BUILD, + SKIP_DOCKER_MESSAGE, +) +from tests.integration.buildcmd.build_integ_base import ( + BuildIntegJavaBase, +) + + +LOG = logging.getLogger(__name__) + +# SAR tests require credentials. This is to skip running the test where credentials are not available. +SKIP_SAR_TESTS = RUNNING_ON_CI and RUNNING_TEST_FOR_MASTER_ON_CI and not RUN_BY_CANARY + + +@pytest.mark.java +class TestBuildCommand_Java(BuildIntegJavaBase): + @parameterized.expand( + [ + ( + "java8.al2", + "8", + BuildIntegJavaBase.USING_GRADLE_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java8.al2", + "8", + BuildIntegJavaBase.USING_GRADLEW_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java8.al2", + "8", + BuildIntegJavaBase.USING_GRADLE_KOTLIN_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java8.al2", + "8", + BuildIntegJavaBase.USING_MAVEN_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_MAVEN, + BuildIntegJavaBase.EXPECTED_MAVEN_DEPENDENCIES, + ), + ( + "java11", + "11", + BuildIntegJavaBase.USING_GRADLE_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java11", + "11", + BuildIntegJavaBase.USING_GRADLEW_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java11", + "11", + BuildIntegJavaBase.USING_GRADLE_KOTLIN_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java11", + "11", + BuildIntegJavaBase.USING_MAVEN_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_MAVEN, + BuildIntegJavaBase.EXPECTED_MAVEN_DEPENDENCIES, + ), + ( + "java17", + "17", + BuildIntegJavaBase.USING_GRADLE_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java17", + "17", + BuildIntegJavaBase.USING_GRADLEW_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java17", + "17", + BuildIntegJavaBase.USING_GRADLE_KOTLIN_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java17", + "17", + BuildIntegJavaBase.USING_MAVEN_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_MAVEN, + BuildIntegJavaBase.EXPECTED_MAVEN_DEPENDENCIES, + ), + ] + ) + @skipIf(SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD, SKIP_DOCKER_MESSAGE) + def test_building_java_in_container( + self, runtime, runtime_version, code_path, expected_files, expected_dependencies + ): + self._test_with_building_java( + runtime, + os.path.join(code_path, runtime_version), + expected_files, + expected_dependencies, + "use_container", + self.test_data_path, + ) + + @parameterized.expand( + [ + ( + "java21", + "21", + BuildIntegJavaBase.USING_GRADLE_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java21", + "21", + BuildIntegJavaBase.USING_GRADLEW_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java21", + "21", + BuildIntegJavaBase.USING_GRADLE_KOTLIN_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java21", + "21", + BuildIntegJavaBase.USING_MAVEN_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_MAVEN, + BuildIntegJavaBase.EXPECTED_MAVEN_DEPENDENCIES, + ), + ] + ) + @skipIf(SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD, SKIP_DOCKER_MESSAGE) + @pytest.mark.al2023 + def test_building_java_in_container_al2023( + self, runtime, runtime_version, code_path, expected_files, expected_dependencies + ): + self._test_with_building_java( + runtime, + os.path.join(code_path, runtime_version), + expected_files, + expected_dependencies, + "use_container", + self.test_data_path, + ) + + @parameterized.expand( + [ + ( + "java8.al2", + "8", + BuildIntegJavaBase.USING_GRADLE_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java8.al2", + "8", + BuildIntegJavaBase.USING_GRADLEW_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java8.al2", + "8", + BuildIntegJavaBase.USING_GRADLE_KOTLIN_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java8.al2", + "8", + BuildIntegJavaBase.USING_MAVEN_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_MAVEN, + BuildIntegJavaBase.EXPECTED_MAVEN_DEPENDENCIES, + ), + ( + "java11", + "11", + BuildIntegJavaBase.USING_GRADLE_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java11", + "11", + BuildIntegJavaBase.USING_GRADLEW_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java11", + "11", + BuildIntegJavaBase.USING_GRADLE_KOTLIN_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java11", + "11", + BuildIntegJavaBase.USING_MAVEN_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_MAVEN, + BuildIntegJavaBase.EXPECTED_MAVEN_DEPENDENCIES, + ), + ( + "java17", + "17", + BuildIntegJavaBase.USING_GRADLE_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java17", + "17", + BuildIntegJavaBase.USING_GRADLEW_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java17", + "17", + BuildIntegJavaBase.USING_GRADLE_KOTLIN_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java17", + "17", + BuildIntegJavaBase.USING_MAVEN_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_MAVEN, + BuildIntegJavaBase.EXPECTED_MAVEN_DEPENDENCIES, + ), + ( + "java21", + "21", + BuildIntegJavaBase.USING_GRADLE_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java21", + "21", + BuildIntegJavaBase.USING_GRADLEW_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java21", + "21", + BuildIntegJavaBase.USING_GRADLE_KOTLIN_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_GRADLE, + BuildIntegJavaBase.EXPECTED_GRADLE_DEPENDENCIES, + ), + ( + "java21", + "21", + BuildIntegJavaBase.USING_MAVEN_PATH, + BuildIntegJavaBase.EXPECTED_FILES_PROJECT_MANIFEST_MAVEN, + BuildIntegJavaBase.EXPECTED_MAVEN_DEPENDENCIES, + ), + ] + ) + def test_building_java_in_process(self, runtime, runtime_version, code_path, expected_files, expected_dependencies): + self._test_with_building_java( + runtime, + os.path.join(code_path, runtime_version), + expected_files, + expected_dependencies, + False, + self.test_data_path, + ) diff --git a/tests/integration/buildcmd/test_build_cmd_node.py b/tests/integration/buildcmd/test_build_cmd_node.py new file mode 100644 index 0000000000..b649f87017 --- /dev/null +++ b/tests/integration/buildcmd/test_build_cmd_node.py @@ -0,0 +1,176 @@ +import logging +from unittest import skipIf +from parameterized import parameterized, parameterized_class +import pytest + +from tests.testing_utils import ( + IS_WINDOWS, + RUNNING_ON_CI, + RUNNING_TEST_FOR_MASTER_ON_CI, + RUN_BY_CANARY, + CI_OVERRIDE, +) +from tests.integration.buildcmd.build_integ_base import ( + BuildIntegNodeBase, + BuildIntegEsbuildBase, +) + + +LOG = logging.getLogger(__name__) + +# SAR tests require credentials. This is to skip running the test where credentials are not available. +SKIP_SAR_TESTS = RUNNING_ON_CI and RUNNING_TEST_FOR_MASTER_ON_CI and not RUN_BY_CANARY + + +@pytest.mark.nodejs +class TestBuildCommand_NodeFunctions_With_External_Manifest(BuildIntegNodeBase): + CODE_URI = "Node_without_manifest" + TEST_INVOKE = True + MANIFEST_PATH = "npm_manifest/package.json" + + @parameterized.expand( + [ + ("nodejs16.x",), + ("nodejs18.x",), + ] + ) + def test_building_default_package_json(self, runtime): + + self._test_with_default_package_json(runtime, False, self.test_data_path) + + @parameterized.expand( + [ + ("nodejs20.x",), + ] + ) + @pytest.mark.al2023 + def test_building_default_package_json_al2023(self, runtime): + self._test_with_default_package_json(runtime, False, self.test_data_path) + + +class TestBuildCommand_EsbuildFunctions(BuildIntegEsbuildBase): + template = "template_with_metadata_esbuild.yaml" + + @parameterized.expand( + [ + ("nodejs18.x", "Esbuild/Node", {"main.js", "main.js.map"}, "main.lambdaHandler", "use_container", "x86_64"), + ( + "nodejs18.x", + "Esbuild/TypeScript", + {"app.js", "app.js.map"}, + "app.lambdaHandler", + "use_container", + "x86_64", + ), + ] + ) + def test_building_default_package_json( + self, runtime, code_uri, expected_files, handler, use_container, architecture + ): + self._test_with_default_package_json(runtime, use_container, code_uri, expected_files, handler, architecture) + + @parameterized.expand( + [ + ("nodejs20.x", "Esbuild/Node", {"main.js", "main.js.map"}, "main.lambdaHandler", False, "x86_64"), + ("nodejs20.x", "Esbuild/TypeScript", {"app.js", "app.js.map"}, "app.lambdaHandler", False, "x86_64"), + ] + ) + @pytest.mark.al2023 + def test_building_default_package_json_al2023( + self, runtime, code_uri, expected_files, handler, use_container, architecture + ): + + self._test_with_default_package_json(runtime, use_container, code_uri, expected_files, handler, architecture) + + +class TestBuildCommand_EsbuildFunctions_With_External_Manifest(BuildIntegEsbuildBase): + template = "template_with_metadata_esbuild.yaml" + MANIFEST_PATH = "Esbuild/npm_manifest/package.json" + + @parameterized.expand( + [ + ( + "nodejs20.x", + "Esbuild/Node_without_manifest", + {"main.js", "main.js.map"}, + "main.lambdaHandler", + False, + "x86_64", + ), + ( + "nodejs20.x", + "Esbuild/TypeScript_without_manifest", + {"app.js", "app.js.map"}, + "app.lambdaHandler", + False, + "x86_64", + ), + ] + ) + @pytest.mark.al2023 + def test_building_default_package_json( + self, runtime, code_uri, expected_files, handler, use_container, architecture + ): + self._test_with_default_package_json(runtime, use_container, code_uri, expected_files, handler, architecture) + + +@skipIf( + ((IS_WINDOWS and RUNNING_ON_CI) and not CI_OVERRIDE), + "Skip build tests on windows when running in CI unless overridden", +) +@parameterized_class( + ("template",), + [ + ("esbuild_templates/template_with_metadata_node_options.yaml",), + ("esbuild_templates/template_with_metadata_global_node_options.yaml",), + ], +) +class TestBuildCommand_EsbuildFunctionProperties(BuildIntegEsbuildBase): + @parameterized.expand( + [ + ("nodejs16.x", "../Esbuild/TypeScript", "app.lambdaHandler", "x86_64"), + ("nodejs18.x", "../Esbuild/TypeScript", "app.lambdaHandler", "x86_64"), + ("nodejs16.x", "../Esbuild/TypeScript", "nested/function/app.lambdaHandler", "x86_64"), + ("nodejs18.x", "../Esbuild/TypeScript", "nested/function/app.lambdaHandler", "x86_64"), + ] + ) + def test_environment_generates_sourcemap(self, runtime, code_uri, handler, architecture): + overrides = { + "runtime": runtime, + "code_uri": code_uri, + "handler": handler, + "architecture": architecture, + } + self._test_with_various_properties(overrides, runtime) + + @parameterized.expand( + [ + ("nodejs20.x", "../Esbuild/TypeScript", "app.lambdaHandler", "x86_64"), + ("nodejs20.x", "../Esbuild/TypeScript", "nested/function/app.lambdaHandler", "x86_64"), + ] + ) + @pytest.mark.al2023 + def test_environment_generates_sourcemap_al2023(self, runtime, code_uri, handler, architecture): + overrides = { + "runtime": runtime, + "code_uri": code_uri, + "handler": handler, + "architecture": architecture, + } + self._test_with_various_properties(overrides, runtime) + + +class TestBuildCommand_NodeFunctions_With_Specified_Architecture(BuildIntegNodeBase): + template = "template_with_architecture.yaml" + + @parameterized.expand( + [ + ("nodejs16.x", False, "x86_64"), + ("nodejs18.x", False, "x86_64"), + ("nodejs16.x", "use_container", "x86_64"), + ("nodejs18.x", "use_container", "x86_64"), + ("nodejs20.x", False, "x86_64"), + ] + ) + def test_building_default_package_json(self, runtime, use_container, architecture): + self._test_with_default_package_json(runtime, use_container, self.test_data_path, architecture) diff --git a/tests/integration/buildcmd/test_build_cmd_provided.py b/tests/integration/buildcmd/test_build_cmd_provided.py new file mode 100644 index 0000000000..e072b938a6 --- /dev/null +++ b/tests/integration/buildcmd/test_build_cmd_provided.py @@ -0,0 +1,129 @@ +import logging +import os +import pytest +from parameterized import parameterized, parameterized_class + +from tests.testing_utils import ( + RUNNING_ON_CI, + RUNNING_TEST_FOR_MASTER_ON_CI, + RUN_BY_CANARY, + SKIP_DOCKER_TESTS, + SKIP_DOCKER_BUILD, + SKIP_DOCKER_MESSAGE, +) +from tests.integration.buildcmd.build_integ_base import ( + BuildIntegProvidedBase, +) + + +LOG = logging.getLogger(__name__) + +# SAR tests require credentials. This is to skip running the test where credentials are not available. +SKIP_SAR_TESTS = RUNNING_ON_CI and RUNNING_TEST_FOR_MASTER_ON_CI and not RUN_BY_CANARY + + +@parameterized_class( + ("template", "is_nested_parent"), + [ + (os.path.join("nested-parent", "template-parent.yaml"), "is_nested_parent"), + ("template.yaml", False), + ], +) +@pytest.mark.provided +class TestBuildCommand_ProvidedFunctions(BuildIntegProvidedBase): + # Test Suite for runtime: provided and where selection of the build workflow is implicitly makefile builder + # if the makefile is present. + @parameterized.expand( + [ + ("provided", False, None), + ("provided", "use_container", "Makefile-container"), + ("provided.al2", False, None), + ("provided.al2", "use_container", "Makefile-container"), + ] + ) + def test_building_Makefile(self, runtime, use_container, manifest): + if use_container: + if SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD: + self.skipTest(SKIP_DOCKER_MESSAGE) + self._test_with_Makefile(runtime, use_container, manifest) + + @parameterized.expand( + [ + ("provided.al2023", False, None), + ("provided.al2023", "use_container", "Makefile-container"), + ] + ) + @pytest.mark.al2023 + def test_building_Makefile_al2023(self, runtime, use_container, manifest): + if use_container: + if SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD: + self.skipTest(SKIP_DOCKER_MESSAGE) + self._test_with_Makefile(runtime, use_container, manifest) + + +@parameterized_class( + ("template", "is_nested_parent"), + [ + (os.path.join("nested-parent", "template-parent.yaml"), "is_nested_parent"), + ("template.yaml", False), + ], +) +class TestBuildCommand_ProvidedFunctions_With_Specified_Architecture(BuildIntegProvidedBase): + # Test Suite for runtime: provided and where selection of the build workflow is implicitly makefile builder + # if the makefile is present. + @parameterized.expand( + [ + ("provided", False, None, "x86_64"), + ("provided", "use_container", "Makefile-container", "x86_64"), + ("provided.al2", False, None, "x86_64"), + ("provided.al2", "use_container", "Makefile-container", "x86_64"), + ] + ) + def test_building_Makefile(self, runtime, use_container, manifest, architecture): + self._test_with_Makefile(runtime, use_container, manifest, architecture) + + @parameterized.expand( + [ + ("provided.al2023", False, None, "x86_64"), + ("provided.al2023", "use_container", "Makefile-container", "x86_64"), + ] + ) + @pytest.mark.al2023 + def test_building_Makefile_al2023(self, runtime, use_container, manifest, architecture): + self._test_with_Makefile(runtime, use_container, manifest, architecture) + + +@parameterized_class( + ("template", "code_uri", "is_nested_parent"), + [ + ("custom_build_with_custom_root_project_path.yaml", "empty_src_code", False), + ("custom_build_with_custom_make_file_path.yaml", "provided_src_code_without_makefile", False), + ("custom_build_with_custom_working_dir.yaml", "custom_working_dir_src_code", False), + ("custom_build_with_custom_root_project_path_and_custom_makefile_path.yaml", "empty_src_code", False), + ( + "custom_build_with_custom_root_project_path_custom_makefile_path_and_custom_working_dir.yaml", + "empty_src_code", + False, + ), + ], +) +class TestBuildCommand_ProvidedFunctionsWithCustomMetadata(BuildIntegProvidedBase): + # Test Suite for runtime: provided and where selection of the build workflow is implicitly makefile builder + # if the makefile is present. + @parameterized.expand( + [ + ("provided", False, None), + ("provided.al2", False, None), + ] + ) + def test_building_Makefile(self, runtime, use_container, manifest): + self._test_with_Makefile(runtime, use_container, manifest) + + @parameterized.expand( + [ + ("provided.al2023", False, None), + ] + ) + @pytest.mark.al2023 + def test_building_Makefile_al2023(self, runtime, use_container, manifest): + self._test_with_Makefile(runtime, use_container, manifest) diff --git a/tests/integration/buildcmd/test_build_cmd_python.py b/tests/integration/buildcmd/test_build_cmd_python.py new file mode 100644 index 0000000000..14ed540082 --- /dev/null +++ b/tests/integration/buildcmd/test_build_cmd_python.py @@ -0,0 +1,520 @@ +import logging +from typing import Set +from unittest import skipIf +from uuid import uuid4 + +import pytest +from parameterized import parameterized, parameterized_class + +from tests.testing_utils import ( + IS_WINDOWS, + RUNNING_ON_CI, + RUNNING_TEST_FOR_MASTER_ON_CI, + RUN_BY_CANARY, + CI_OVERRIDE, + run_command, + SKIP_DOCKER_TESTS, + SKIP_DOCKER_BUILD, + SKIP_DOCKER_MESSAGE, +) +from tests.integration.buildcmd.build_integ_base import ( + BuildIntegBase, + BuildIntegPythonBase, +) + + +LOG = logging.getLogger(__name__) + +# SAR tests require credentials. This is to skip running the test where credentials are not available. +SKIP_SAR_TESTS = RUNNING_ON_CI and RUNNING_TEST_FOR_MASTER_ON_CI and not RUN_BY_CANARY + + +@skipIf( + # Hits public ECR pull limitation, move it to canary tests + (not RUN_BY_CANARY and not CI_OVERRIDE), + "Skip build tests on windows when running in CI unless overridden", +) +@pytest.mark.python +class TestBuildCommand_PythonFunctions_Images(BuildIntegBase): + template = "template_image.yaml" + + EXPECTED_FILES_PROJECT_MANIFEST: Set[str] = set() + + FUNCTION_LOGICAL_ID_IMAGE = "ImageFunction" + + def _test_default_requirements_wrapper(self, runtime, dockerfile): + tag = uuid4().hex + overrides = { + "Runtime": runtime, + "Handler": "main.handler", + "DockerFile": dockerfile, + "Tag": tag, + } + cmdlist = self.get_command_list(use_container=False, parameter_overrides=overrides) + + command_result = run_command(cmdlist, cwd=self.working_dir) + self.assertEqual(command_result.process.returncode, 0) + + self._verify_image_build_artifact( + self.built_template, + self.FUNCTION_LOGICAL_ID_IMAGE, + "ImageUri", + f"{self.FUNCTION_LOGICAL_ID_IMAGE.lower()}:{tag}", + ) + + expected = {"pi": "3.14"} + self._verify_invoke_built_function( + self.built_template, self.FUNCTION_LOGICAL_ID_IMAGE, self._make_parameter_override_arg(overrides), expected + ) + + @parameterized.expand( + [ + *[(runtime, "Dockerfile") for runtime in ["3.8", "3.9", "3.10", "3.11"]], + *[(runtime, "Dockerfile.production") for runtime in ["3.8", "3.9", "3.10", "3.11"]], + ] + ) + def test_with_default_requirements(self, runtime, dockerfile): + self._test_default_requirements_wrapper(runtime, dockerfile) + + @parameterized.expand( + [ + *[(runtime, "Dockerfile") for runtime in ["3.12"]], + *[(runtime, "Dockerfile.production") for runtime in ["3.12"]], + ] + ) + @pytest.mark.al2023 + def test_with_default_requirements_al2023(self, runtime, dockerfile): + self._test_default_requirements_wrapper(runtime, dockerfile) + + def test_intermediate_container_deleted(self): + _tag = uuid4().hex + overrides = { + "Runtime": "3.9", + "Handler": "main.handler", + "DockerFile": "Dockerfile", + "Tag": _tag, + } + cmdlist = self.get_command_list(use_container=False, parameter_overrides=overrides) + + _num_of_containers_before_build = self.get_number_of_created_containers() + command_result = run_command(cmdlist, cwd=self.working_dir) + self.assertEqual(command_result.process.returncode, 0) + _num_of_containers_after_build = self.get_number_of_created_containers() + + self._verify_image_build_artifact( + self.built_template, + self.FUNCTION_LOGICAL_ID_IMAGE, + "ImageUri", + f"{self.FUNCTION_LOGICAL_ID_IMAGE.lower()}:{_tag}", + ) + + expected = {"pi": "3.14"} + self._verify_invoke_built_function( + self.built_template, self.FUNCTION_LOGICAL_ID_IMAGE, self._make_parameter_override_arg(overrides), expected + ) + + self.assertEqual( + _num_of_containers_before_build, _num_of_containers_after_build, "Intermediate containers are not removed" + ) + + +@skipIf( + # Hits public ECR pull limitation, move it to canary tests + (not RUN_BY_CANARY and not CI_OVERRIDE), + "Skip build tests on windows when running in CI unless overridden", +) +@pytest.mark.python +class TestBuildCommand_PythonFunctions_ImagesWithSharedCode(BuildIntegBase): + template = "template_images_with_shared_code.yaml" + + EXPECTED_FILES_PROJECT_MANIFEST: Set[str] = set() + + FUNCTION_LOGICAL_ID_IMAGE = "ImageFunction" + + def _test_default_requirements_wrapper(self, runtime, dockerfile, expected): + tag = uuid4().hex + overrides = { + "Runtime": runtime, + "Handler": "main.handler", + "DockerFile": dockerfile, + "Tag": tag, + } + + cmdlist = self.get_command_list(use_container=False, parameter_overrides=overrides) + + command_result = run_command(cmdlist, cwd=self.working_dir) + self.assertEqual(command_result.process.returncode, 0) + + self._verify_image_build_artifact( + self.built_template, + self.FUNCTION_LOGICAL_ID_IMAGE, + "ImageUri", + f"{self.FUNCTION_LOGICAL_ID_IMAGE.lower()}:{tag}", + ) + + self._verify_invoke_built_function( + self.built_template, self.FUNCTION_LOGICAL_ID_IMAGE, self._make_parameter_override_arg(overrides), expected + ) + + @parameterized.expand( + [ + *[(runtime, "feature_phi/Dockerfile", {"phi": "1.62"}) for runtime in ["3.8", "3.9", "3.10", "3.11"]], + *[(runtime, "feature_pi/Dockerfile", {"pi": "3.14"}) for runtime in ["3.8", "3.9", "3.10", "3.11"]], + ] + ) + def test_with_default_requirements(self, runtime, dockerfile, expected): + self._test_default_requirements_wrapper(runtime, dockerfile, expected) + + @parameterized.expand( + [ + *[(runtime, "feature_phi/Dockerfile", {"phi": "1.62"}) for runtime in ["3.12"]], + *[(runtime, "feature_pi/Dockerfile", {"pi": "3.14"}) for runtime in ["3.12"]], + ] + ) + @pytest.mark.al2023 + def test_with_default_requirements_al2023(self, runtime, dockerfile, expected): + self._test_default_requirements_wrapper(runtime, dockerfile, expected) + + @parameterized.expand( + [ + ("feature_phi/Dockerfile", {"phi": "1.62"}), + ("feature_pi/Dockerfile", {"pi": "3.14"}), + ] + ) + def test_intermediate_container_deleted(self, dockerfile, expected): + _tag = uuid4().hex + overrides = { + "Runtime": "3.9", + "Handler": "main.handler", + "DockerFile": dockerfile, + "Tag": _tag, + } + cmdlist = self.get_command_list(use_container=False, parameter_overrides=overrides) + + _num_of_containers_before_build = self.get_number_of_created_containers() + command_result = run_command(cmdlist, cwd=self.working_dir) + self.assertEqual(command_result.process.returncode, 0) + _num_of_containers_after_build = self.get_number_of_created_containers() + + self._verify_image_build_artifact( + self.built_template, + self.FUNCTION_LOGICAL_ID_IMAGE, + "ImageUri", + f"{self.FUNCTION_LOGICAL_ID_IMAGE.lower()}:{_tag}", + ) + + self._verify_invoke_built_function( + self.built_template, self.FUNCTION_LOGICAL_ID_IMAGE, self._make_parameter_override_arg(overrides), expected + ) + + self.assertEqual( + _num_of_containers_before_build, _num_of_containers_after_build, "Intermediate containers are not removed" + ) + + @parameterized.expand( + [ + ("feature_phi\\Dockerfile", {"phi": "1.62"}), + ("feature_pi\\Dockerfile", {"pi": "3.14"}), + ] + ) + @skipIf(not IS_WINDOWS, "Skipping passing Windows path for dockerfile path on non Windows platform") + def test_windows_dockerfile_present_sub_dir(self, dockerfile, expected): + _tag = uuid4().hex + overrides = { + "Runtime": "3.9", + "Handler": "main.handler", + "DockerFile": dockerfile, + "Tag": _tag, + } + cmdlist = self.get_command_list(use_container=False, parameter_overrides=overrides) + + command_result = run_command(cmdlist, cwd=self.working_dir) + self.assertEqual(command_result.process.returncode, 0) + + self._verify_image_build_artifact( + self.built_template, + self.FUNCTION_LOGICAL_ID_IMAGE, + "ImageUri", + f"{self.FUNCTION_LOGICAL_ID_IMAGE.lower()}:{_tag}", + ) + + self._verify_invoke_built_function( + self.built_template, self.FUNCTION_LOGICAL_ID_IMAGE, self._make_parameter_override_arg(overrides), expected + ) + + +# @skipIf( +# # Hits public ECR pull limitation, move it to canary tests +# ((not RUN_BY_CANARY) or (IS_WINDOWS and RUNNING_ON_CI) and not CI_OVERRIDE), +# "Skip build tests on windows when running in CI unless overridden", +# ) +@parameterized_class( + ("template", "prop"), + [ + ("template_local_prebuilt_image.yaml", "ImageUri"), + ("template_cfn_local_prebuilt_image.yaml", "Code.ImageUri"), + ], +) +@parameterized_class( + ( + "runtime", + "codeuri", + ), + [ + ("python3.8", "Python"), + ("python3.9", "Python"), + ("python3.10", "Python"), + ("python3.11", "Python"), + ("python3.8", "PythonPEP600"), + ("python3.9", "PythonPEP600"), + ("python3.10", "PythonPEP600"), + ("python3.11", "PythonPEP600"), + ], +) +class TestBuildCommand_PythonFunctions_WithoutDocker(BuildIntegPythonBase): + template = "template.yaml" + FUNCTION_LOGICAL_ID = "Function" + overrides = True + runtime = "python3.9" + codeuri = "Python" + check_function_only = False + use_container = False + prop = "CodeUri" + + def test_with_default_requirements(self): + self._test_with_default_requirements( + self.runtime, + self.codeuri, + self.use_container, + self.test_data_path, + do_override=self.overrides, + check_function_only=self.check_function_only, + ) + + +@parameterized_class( + ("template", "prop"), + [ + ("template_local_prebuilt_image.yaml", "ImageUri"), + ("template_cfn_local_prebuilt_image.yaml", "Code.ImageUri"), + ], +) +@parameterized_class( + ( + "runtime", + "codeuri", + ), + [ + ("python3.12", "Python"), + ("python3.12", "PythonPEP600"), + ], +) +@pytest.mark.al2023 +class TestBuildCommand_PythonFunctions_WithoutDocker_al2023(BuildIntegPythonBase): + template = "template.yaml" + FUNCTION_LOGICAL_ID = "Function" + overrides = True + runtime = "python3.9" + codeuri = "Python" + check_function_only = False + use_container = False + prop = "CodeUri" + + def test_with_default_requirements(self): + self._test_with_default_requirements( + self.runtime, + self.codeuri, + self.use_container, + self.test_data_path, + do_override=self.overrides, + check_function_only=self.check_function_only, + ) + + +@skipIf(SKIP_DOCKER_TESTS or SKIP_DOCKER_BUILD, SKIP_DOCKER_MESSAGE) +class TestBuildCommand_PythonFunctions_WithDocker(BuildIntegPythonBase): + template = "template.yaml" + FUNCTION_LOGICAL_ID = "Function" + overrides = True + codeuri = "Python" + use_container = "use_container" + check_function_only = False + prop = "CodeUri" + + @parameterized.expand( + [ + ("python3.8",), + ("python3.9",), + ("python3.10",), + ("python3.11",), + ] + ) + def test_with_default_requirements(self, runtime): + self._test_with_default_requirements( + runtime, + self.codeuri, + self.use_container, + self.test_data_path, + do_override=self.overrides, + check_function_only=self.check_function_only, + ) + + @parameterized.expand( + [ + ("python3.12",), + ] + ) + @pytest.mark.al2023 + def test_with_default_requirements_al2023(self, runtime): + self._test_with_default_requirements( + runtime, + self.codeuri, + self.use_container, + self.test_data_path, + do_override=self.overrides, + check_function_only=self.check_function_only, + ) + + +@skipIf( + # Hits public ECR pull limitation, move it to canary tests + SKIP_DOCKER_TESTS, + "Skip build tests that requires Docker in CI environment", +) +@parameterized_class( + ( + "template", + "FUNCTION_LOGICAL_ID", + "overrides", + "runtime", + "codeuri", + "use_container", + "check_function_only", + "prop", + ), + [ + ( + "cdk_v1_synthesized_template_zip_image_functions.json", + "RandomCitiesFunction5C47A2B8", + False, + None, + None, + False, + True, + "Code", + ), + ], +) +class TestBuildCommand_PythonFunctions_CDK(TestBuildCommand_PythonFunctions_WithoutDocker): + use_container = False + + def test_cdk_app_with_default_requirements(self): + self._test_with_default_requirements( + self.runtime, + self.codeuri, + self.use_container, + self.test_data_path, + do_override=self.overrides, + check_function_only=self.check_function_only, + ) + + +@skipIf( + # Hits public ECR pull limitation, move it to canary tests + SKIP_DOCKER_TESTS, + "Skip build tests that requires Docker in CI environment", +) +@parameterized_class( + ( + "template", + "FUNCTION_LOGICAL_ID", + "overrides", + "use_container", + "prop", + ), + [ + ( + "cdk_v2_synthesized_template_image_function_shared_code.json", + "TestLambdaFunctionC089708A", + False, + False, + "Code.ImageUri", + ), + ], +) +class TestBuildCommandCDKPythonImageFunctionSharedCode(BuildIntegPythonBase): + def test_cdk_app_with_default_requirements(self): + expected = "Hello World" + cmdlist = self.get_command_list(use_container=self.use_container) + command_result = run_command(cmdlist, cwd=self.working_dir) + self.assertEqual(command_result.process.returncode, 0) + + self._verify_image_build_artifact( + self.built_template, + self.FUNCTION_LOGICAL_ID, + self.prop, + f"{self.FUNCTION_LOGICAL_ID.lower()}:latest", + ) + + self._verify_invoke_built_function(self.built_template, self.FUNCTION_LOGICAL_ID, {}, expected) + + +class TestBuildCommand_PythonFunctions_With_Specified_Architecture(BuildIntegPythonBase): + template = "template_with_architecture.yaml" + + @parameterized.expand( + [ + ("python3.8", "Python", False, "x86_64"), + ("python3.9", "Python", False, "x86_64"), + ("python3.10", "Python", False, "x86_64"), + ("python3.11", "Python", False, "x86_64"), + ("python3.8", "PythonPEP600", False, "x86_64"), + ("python3.9", "PythonPEP600", False, "x86_64"), + ("python3.10", "PythonPEP600", False, "x86_64"), + ("python3.11", "PythonPEP600", False, "x86_64"), + ("python3.8", "Python", "use_container", "x86_64"), + ("python3.9", "Python", "use_container", "x86_64"), + ("python3.10", "Python", "use_container", "x86_64"), + ("python3.11", "Python", "use_container", "x86_64"), + ] + ) + def test_with_default_requirements(self, runtime, codeuri, use_container, architecture): + + self._test_with_default_requirements( + runtime, codeuri, use_container, self.test_data_path, architecture=architecture + ) + + @parameterized.expand( + [ + ("python3.12", "Python", False, "x86_64"), + ("python3.12", "PythonPEP600", False, "x86_64"), + ("python3.12", "Python", "use_container", "x86_64"), + ] + ) + @pytest.mark.al2023 + def test_with_default_requirements_al2023(self, runtime, codeuri, use_container, architecture): + + self._test_with_default_requirements( + runtime, codeuri, use_container, self.test_data_path, architecture=architecture + ) + + def test_invalid_architecture(self): + overrides = {"Runtime": "python3.11", "Architectures": "fake"} + cmdlist = self.get_command_list(parameter_overrides=overrides) + process_execute = run_command(cmdlist, cwd=self.working_dir) + + self.assertEqual(1, process_execute.process.returncode) + + self.assertIn("Build Failed", str(process_execute.stdout)) + self.assertIn("Architecture fake is not supported", str(process_execute.stderr)) + + +class TestBuildCommand_ErrorCases(BuildIntegBase): + def test_unsupported_runtime(self): + overrides = {"Runtime": "unsupportedpython", "CodeUri": "Python"} + cmdlist = self.get_command_list(parameter_overrides=overrides) + + process_execute = run_command(cmdlist, cwd=self.working_dir) + self.assertEqual(1, process_execute.process.returncode) + + self.assertIn("Build Failed", str(process_execute.stdout)) diff --git a/tests/integration/local/start_lambda/test_start_lambda.py b/tests/integration/local/start_lambda/test_start_lambda.py index 746211e4b4..f7243bdda8 100644 --- a/tests/integration/local/start_lambda/test_start_lambda.py +++ b/tests/integration/local/start_lambda/test_start_lambda.py @@ -286,6 +286,28 @@ def test_invoke_with_function_timeout(self, use_full_path): self.assertIsNone(response.get("FunctionError")) self.assertEqual(response.get("StatusCode"), 200) + @parameterized.expand([("False"), ("True")]) + @pytest.mark.flaky(reruns=3) + @pytest.mark.timeout(timeout=300, method="thread") + def test_invoke_with_function_timeout_using_lookup_value(self, use_full_path): + """ + This behavior does not match the actually Lambda Service. For functions that timeout, data returned like the + following: + {"errorMessage":" Task timed out after 5.00 seconds"} + + For Local Lambda's, however, timeouts are an interrupt on the thread that runs invokes the function. Since the + invoke is on a different thread, we do not (currently) have a way to communicate this back to the caller. So + when a timeout happens locally, we do not add the FunctionError: Unhandled to the response and have an empty + string as the data returned (because no data was found in stdout from the container). + """ + response = self.lambda_client.invoke( + FunctionName=f"{self.parent_path if use_full_path == 'True' else ''}TimeoutFunctionUsingLookupValue" + ) + + self.assertEqual(response.get("Payload").read().decode("utf-8"), "") + self.assertIsNone(response.get("FunctionError")) + self.assertEqual(response.get("StatusCode"), 200) + class TestWarmContainersBaseClass(StartLambdaIntegBaseClass): def setUp(self): diff --git a/tests/integration/testdata/buildcmd/Ruby/.ruby-version b/tests/integration/testdata/buildcmd/Ruby/.ruby-version new file mode 100644 index 0000000000..351227fca3 --- /dev/null +++ b/tests/integration/testdata/buildcmd/Ruby/.ruby-version @@ -0,0 +1 @@ +3.2.4 diff --git a/tests/integration/testdata/buildcmd/Ruby32/.ruby-version b/tests/integration/testdata/buildcmd/Ruby32/.ruby-version index 06eda28ac7..9b7a431d9f 100644 --- a/tests/integration/testdata/buildcmd/Ruby32/.ruby-version +++ b/tests/integration/testdata/buildcmd/Ruby32/.ruby-version @@ -1 +1 @@ -3.2.3 \ No newline at end of file +3.2.4 \ No newline at end of file diff --git a/tests/integration/testdata/buildcmd/Ruby33/.ruby-version b/tests/integration/testdata/buildcmd/Ruby33/.ruby-version index 0fa4ae4890..2c6109e5bb 100644 --- a/tests/integration/testdata/buildcmd/Ruby33/.ruby-version +++ b/tests/integration/testdata/buildcmd/Ruby33/.ruby-version @@ -1 +1 @@ -3.3.0 \ No newline at end of file +3.3.4 \ No newline at end of file diff --git a/tests/integration/testdata/invoke/template.yml b/tests/integration/testdata/invoke/template.yml index 30ab827a5d..76db225f5c 100644 --- a/tests/integration/testdata/invoke/template.yml +++ b/tests/integration/testdata/invoke/template.yml @@ -26,6 +26,11 @@ Parameters: Type: String Default: "2" +Mappings: + common: + LambdaFunction: + Timeout: 5 + Resources: HelloWorldServerlessFunction: Type: AWS::Serverless::Function @@ -58,6 +63,14 @@ Resources: CodeUri: . Timeout: 5 + TimeoutFunctionUsingLookupValue: + Type: AWS::Serverless::Function + Properties: + Handler: main.sleep_handler + Runtime: python3.9 + CodeUri: . + Timeout: !FindInMap [common, LambdaFunction, Timeout] + HelloWorldSleepFunction: Type: AWS::Serverless::Function Properties: diff --git a/tests/integration/testdata/sync/infra/after/Ruby/function/.ruby-version b/tests/integration/testdata/sync/infra/after/Ruby/function/.ruby-version index 06eda28ac7..9b7a431d9f 100644 --- a/tests/integration/testdata/sync/infra/after/Ruby/function/.ruby-version +++ b/tests/integration/testdata/sync/infra/after/Ruby/function/.ruby-version @@ -1 +1 @@ -3.2.3 \ No newline at end of file +3.2.4 \ No newline at end of file diff --git a/tests/integration/testdata/sync/infra/after/Ruby/layer/.ruby-version b/tests/integration/testdata/sync/infra/after/Ruby/layer/.ruby-version index 06eda28ac7..9b7a431d9f 100644 --- a/tests/integration/testdata/sync/infra/after/Ruby/layer/.ruby-version +++ b/tests/integration/testdata/sync/infra/after/Ruby/layer/.ruby-version @@ -1 +1 @@ -3.2.3 \ No newline at end of file +3.2.4 \ No newline at end of file diff --git a/tests/integration/testdata/sync/infra/before/Ruby/function/.ruby-version b/tests/integration/testdata/sync/infra/before/Ruby/function/.ruby-version index 06eda28ac7..9b7a431d9f 100644 --- a/tests/integration/testdata/sync/infra/before/Ruby/function/.ruby-version +++ b/tests/integration/testdata/sync/infra/before/Ruby/function/.ruby-version @@ -1 +1 @@ -3.2.3 \ No newline at end of file +3.2.4 \ No newline at end of file diff --git a/tests/integration/testdata/sync/infra/before/Ruby/layer/.ruby-version b/tests/integration/testdata/sync/infra/before/Ruby/layer/.ruby-version index 06eda28ac7..9b7a431d9f 100644 --- a/tests/integration/testdata/sync/infra/before/Ruby/layer/.ruby-version +++ b/tests/integration/testdata/sync/infra/before/Ruby/layer/.ruby-version @@ -1 +1 @@ -3.2.3 \ No newline at end of file +3.2.4 \ No newline at end of file diff --git a/tests/integration/validate/test_validate_command.py b/tests/integration/validate/test_validate_command.py index b74ded8f56..1b9ba31fc4 100644 --- a/tests/integration/validate/test_validate_command.py +++ b/tests/integration/validate/test_validate_command.py @@ -9,7 +9,7 @@ from enum import Enum, auto from pathlib import Path from typing import List, Optional -from unittest import TestCase +from unittest import TestCase, skip from unittest.case import skipIf from parameterized import parameterized @@ -155,7 +155,11 @@ def test_lint_deprecated_runtimes(self, runtime): output = command_result.stdout.decode("utf-8") self.assertEqual(command_result.process.returncode, 1) - self.assertRegex(output, f"W2531 Runtime \\({runtime}\\)") + self.assertRegex( + output, + f"\\[\\[W2531: Check if EOL Lambda Function Runtimes are used] " + f"\\(Runtime \\'{runtime}'\\ was deprecated on.*", + ) def test_lint_supported_runtimes(self): template = { @@ -223,7 +227,10 @@ def test_lint_error_invalid_region(self): command_result = run_command(self.command_list(lint=True, region="us-north-5", template_file=template_path)) output = command_result.stderr.decode("utf-8") - error_message = f"Error: AWS Region was not found. Please configure your region through the --region option" + error_message = ( + f"Error: AWS Region was not found. Please configure your region through the --region option.{os.linesep}" + f"Regions ['us-north-5'] are unsupported. Supported regions are" + ) self.assertIn(error_message, output) @@ -237,10 +244,10 @@ def test_lint_invalid_template(self): output = output.replace("\r", "") warning_message = ( - 'E0000 Duplicate found "HelloWorldFunction" (line 5)\n' - f'{os.path.join(test_data_path, "templateError.yaml")}:5:3\n\n' - 'E0000 Duplicate found "HelloWorldFunction" (line 12)\n' - f'{os.path.join(test_data_path, "templateError.yaml")}:12:3\n\n' + "[[E0000: Parsing error found when parsing the template] " + '(Duplicate found "HelloWorldFunction" (line 5)) matched 5, ' + "[E0000: Parsing error found when parsing the template] " + '(Duplicate found "HelloWorldFunction" (line 12)) matched 12]\n' ) self.assertIn(warning_message, output) diff --git a/tests/testing_utils.py b/tests/testing_utils.py index 37f04972cf..a8b0d56ab5 100644 --- a/tests/testing_utils.py +++ b/tests/testing_utils.py @@ -79,10 +79,10 @@ def run_command(command_list, cwd=None, env=None, timeout=TIMEOUT) -> CommandRes raise -def run_command_with_input(command_list, stdin_input, timeout=TIMEOUT, cwd=None) -> CommandResult: +def run_command_with_input(command_list, stdin_input, timeout=TIMEOUT, cwd=None, env=None) -> CommandResult: LOG.info("Running command: %s", " ".join(command_list)) LOG.info("With input: %s", stdin_input) - process_execute = Popen(command_list, cwd=cwd, stdout=PIPE, stderr=PIPE, stdin=PIPE) + process_execute = Popen(command_list, cwd=cwd, env=env, stdout=PIPE, stderr=PIPE, stdin=PIPE) try: stdout_data, stderr_data = process_execute.communicate(stdin_input, timeout=timeout) LOG.info(f"Stdout: {stdout_data.decode('utf-8')}") @@ -296,31 +296,6 @@ def __exit__(self, *args): self.clean() -RUNTIME_NOT_SUPPORTED_BY_DOCKER_MSG = "Runtime is not supported the installed Docker version." - - -def runtime_supported_by_docker(runtime: str) -> bool: - """ - To determine if a test ca on runtime and docker_version, in case the test is run in an environment with a very old version of docker - - Container test for AL2023-based runtimes (i.e. provided.al2023, java21, python3.12 and nodejs20.x as of 2023-12-01) requires docker 20.10.10+ - See: https://docs.docker.com/engine/release-notes/20.10/#201010 - - """ - al2023_based_runtimes = { - "provided.al2023", - "nodejs20.x", - "java21", - "python3.12", - "dotnet8", - "ruby3.3", - } - min_docker_version = "20.10.10" - return runtime not in al2023_based_runtimes or ( - runtime in al2023_based_runtimes and _version_gte(get_docker_version(), min_docker_version) - ) - - def _version_gte(version1: str, version2: str) -> bool: v1 = packaging.version.parse(version1) v2 = packaging.version.parse(version2) diff --git a/tests/unit/commands/validate/test_cli.py b/tests/unit/commands/validate/test_cli.py index c19f5d0377..f77a4711e9 100644 --- a/tests/unit/commands/validate/test_cli.py +++ b/tests/unit/commands/validate/test_cli.py @@ -4,12 +4,10 @@ from botocore.exceptions import NoCredentialsError -from cfnlint.core import CfnLintExitException, InvalidRegionException # type: ignore - from samcli.commands.exceptions import UserException, LinterRuleMatchedException from samcli.commands.local.cli_common.user_exceptions import SamTemplateNotFoundException, InvalidSamTemplateException from samcli.commands.validate.lib.exceptions import InvalidSamDocumentException -from samcli.commands.validate.validate import do_cli, _read_sam_file, _lint +from samcli.commands.validate.validate import do_cli, _read_sam_file, _lint, SamTemplate ctx_mock = namedtuple("ctx_mock", ["profile", "region"]) ctx_lint_mock = namedtuple("ctx_lint_mock", ["debug", "region"]) @@ -38,19 +36,19 @@ def test_file_parsed(self, path_exists_patch, click_patch, yaml_parse_patch): actual_template = _read_sam_file(template_path) - self.assertEqual(actual_template, {"a": "b"}) + self.assertEqual(actual_template.deserialized, {"a": "b"}) @patch("samcli.lib.translate.sam_template_validator.SamTemplateValidator") @patch("samcli.commands.validate.validate.click") @patch("samcli.commands.validate.validate._read_sam_file") @patch("boto3.client") - def test_template_fails_validation(self, patched_boto, read_sam_file_patch, click_patch, template_valiadator): + def test_template_fails_validation(self, patched_boto, read_sam_file_patch, click_patch, template_validator): template_path = "path_to_template" - read_sam_file_patch.return_value = {"a": "b"} + read_sam_file_patch.return_value = SamTemplate(deserialized={"a": "b"}, serialized="") get_translated_template_if_valid_mock = Mock() get_translated_template_if_valid_mock.get_translated_template_if_valid.side_effect = InvalidSamDocumentException - template_valiadator.return_value = get_translated_template_if_valid_mock + template_validator.return_value = get_translated_template_if_valid_mock with self.assertRaises(InvalidSamTemplateException): do_cli(ctx=ctx_mock(profile="profile", region="region"), template=template_path, lint=False) @@ -59,13 +57,13 @@ def test_template_fails_validation(self, patched_boto, read_sam_file_patch, clic @patch("samcli.commands.validate.validate.click") @patch("samcli.commands.validate.validate._read_sam_file") @patch("boto3.client") - def test_no_credentials_provided(self, patched_boto, read_sam_file_patch, click_patch, template_valiadator): + def test_no_credentials_provided(self, patched_boto, read_sam_file_patch, click_patch, template_validator): template_path = "path_to_template" - read_sam_file_patch.return_value = {"a": "b"} + read_sam_file_patch.return_value = SamTemplate(deserialized={"a": "b"}, serialized="") get_translated_template_if_valid_mock = Mock() get_translated_template_if_valid_mock.get_translated_template_if_valid.side_effect = NoCredentialsError - template_valiadator.return_value = get_translated_template_if_valid_mock + template_validator.return_value = get_translated_template_if_valid_mock with self.assertRaises(UserException): do_cli(ctx=ctx_mock(profile="profile", region="region"), template=template_path, lint=False) @@ -74,69 +72,55 @@ def test_no_credentials_provided(self, patched_boto, read_sam_file_patch, click_ @patch("samcli.commands.validate.validate.click") @patch("samcli.commands.validate.validate._read_sam_file") @patch("boto3.client") - def test_template_passes_validation(self, patched_boto, read_sam_file_patch, click_patch, template_valiadator): + def test_template_passes_validation(self, patched_boto, read_sam_file_patch, click_patch, template_validator): template_path = "path_to_template" - read_sam_file_patch.return_value = {"a": "b"} + read_sam_file_patch.return_value = SamTemplate(deserialized={"a": "b"}, serialized="") get_translated_template_if_valid_mock = Mock() get_translated_template_if_valid_mock.get_translated_template_if_valid.return_value = True - template_valiadator.return_value = get_translated_template_if_valid_mock + template_validator.return_value = get_translated_template_if_valid_mock do_cli(ctx=ctx_mock(profile="profile", region="region"), template=template_path, lint=False) + @patch("samcli.commands.validate.validate._read_sam_file") @patch("samcli.commands.validate.validate.click") @patch("samcli.commands.validate.validate._lint") - def test_lint_template_passes(self, click_patch, lint_patch): + def test_lint_template_passes(self, click_patch, lint_patch, read_sam_file_patch): template_path = "path_to_template" + read_sam_file_patch.return_value = SamTemplate(serialized="{}", deserialized={}) lint_patch.return_value = True do_cli(ctx=ctx_lint_mock(debug=False, region="region"), template=template_path, lint=True) - @patch("cfnlint.core.get_args_filenames") - @patch("cfnlint.core.get_matches") - @patch("samcli.commands.validate.validate.click") - def test_lint_invalid_region_argument_fails(self, click_patch, matches_patch, args_patch): - template_path = "path_to_template" - - args_patch.return_value = ("A", "B", "C") - - matches_patch.side_effect = InvalidRegionException - - with self.assertRaises(UserException): - _lint(ctx=ctx_lint_mock(debug=False, region="region"), template=template_path) - - @patch("cfnlint.core.get_args_filenames") - @patch("cfnlint.core.get_matches") + @patch("cfnlint.api.lint") @patch("samcli.commands.validate.validate.click") - def test_lint_exception_fails(self, click_patch, matches_patch, args_patch): - template_path = "path_to_template" - - args_patch.return_value = ("A", "B", "C") - - matches_patch.side_effect = CfnLintExitException - - with self.assertRaises(UserException): - _lint(ctx=ctx_lint_mock(debug=False, region="region"), template=template_path) - - @patch("samcli.commands.validate.validate.click") - def test_lint_event_recorded(self, click_patch): + def test_lint_event_recorded(self, click_patch, lint_patch): template_path = "path_to_template" + template_contents = "{}" with patch("samcli.lib.telemetry.event.EventTracker.track_event") as track_patch: with self.assertRaises(LinterRuleMatchedException): - _lint(ctx=ctx_lint_mock(debug=False, region="region"), template=template_path) + _lint( + ctx=ctx_lint_mock(debug=False, region="region"), + template=template_contents, + template_path=template_path, + ) track_patch.assert_called_with("UsedFeature", "CFNLint") - @patch("cfnlint.core.get_args_filenames") - @patch("cfnlint.core.get_matches") + @patch("cfnlint.api.lint") @patch("samcli.commands.validate.validate.click") - def test_linter_raises_exception_if_matches_found(self, click_patch, matches_patch, args_patch): + def test_linter_raises_exception_if_matches_found(self, click_patch, lint_patch): template_path = "path_to_template" - args_patch.return_value = ("A", "B", Mock()) - matches_patch.return_value = ["Failed rule A", "Failed rule B"] + template_contents = "{}" + + lint_patch.return_value = ["Failed rule A", "Failed rule B"] + with self.assertRaises(LinterRuleMatchedException) as ex: - _lint(ctx=ctx_lint_mock(debug=False, region="region"), template=template_path) + _lint( + ctx=ctx_lint_mock(debug=False, region="region"), template=template_contents, template_path=template_path + ) + self.assertEqual( ex.exception.message, "Linting failed. At least one linting rule was matched to the provided template." ) diff --git a/tests/unit/lib/intrinsic_resolver/test_intrinsic_resolver.py b/tests/unit/lib/intrinsic_resolver/test_intrinsic_resolver.py index e7d4be3b5f..22e58d7875 100644 --- a/tests/unit/lib/intrinsic_resolver/test_intrinsic_resolver.py +++ b/tests/unit/lib/intrinsic_resolver/test_intrinsic_resolver.py @@ -209,6 +209,7 @@ def setUp(self): "Basic": {"Test": {"key": "value"}}, "value": {"anotherkey": {"key": "result"}}, "result": {"value": {"key": "final"}}, + "NonStrValue": {"Test": {"key": 0}}, } } self.resolver = IntrinsicResolver(symbol_resolver=IntrinsicsSymbolTable(), template=template) @@ -218,6 +219,11 @@ def test_basic_find_in_map(self): result = self.resolver.intrinsic_property_resolver(intrinsic, True) self.assertEqual(result, "value") + def test_basic_find_in_map_with_non_string_value(self): + intrinsic = {"Fn::FindInMap": ["NonStrValue", "Test", "key"]} + result = self.resolver.intrinsic_property_resolver(intrinsic, True) + self.assertEqual(result, 0) + def test_nested_find_in_map(self): intrinsic_base_1 = {"Fn::FindInMap": ["Basic", "Test", "key"]} intrinsic_base_2 = {"Fn::FindInMap": [intrinsic_base_1, "anotherkey", "key"]} diff --git a/tests/unit/lib/utils/test_osutils.py b/tests/unit/lib/utils/test_osutils.py index 6f7a6cf4df..2e06ef7f4c 100644 --- a/tests/unit/lib/utils/test_osutils.py +++ b/tests/unit/lib/utils/test_osutils.py @@ -90,6 +90,69 @@ def test_must_delete_if_path_exist(self, patched_rmtree, patched_path): patched_rmtree.assert_called_with(mock_path_obj) +class Test_copytree(TestCase): + @patch("samcli.lib.utils.osutils.Path") + @patch("samcli.lib.utils.osutils.os") + @patch("samcli.lib.utils.osutils.shutil.copy2") + def test_must_copytree(self, patched_copy2, patched_os, patched_path): + source_path = "mock-source/path" + destination_path = "mock-destination/path" + mock_path_obj = Mock() + patched_path.exists.return_value = True + patched_os.path.return_value = mock_path_obj + + patched_os.path.join.side_effect = [source_path, destination_path] + patched_os.path.isdir.return_value = False + patched_os.listdir.return_value = ["mock-source-file1"] + osutils.copytree(source_path, destination_path) + + patched_os.path.join.assert_called() + patched_copy2.assert_called_with(source_path, destination_path) + + @patch("samcli.lib.utils.osutils.Path") + @patch("samcli.lib.utils.osutils.os") + @patch("samcli.lib.utils.osutils.shutil.copy2") + def test_copytree_throws_oserror_path_exists(self, patched_copy2, patched_os, patched_path): + source_path = "mock-source/path" + destination_path = "mock-destination/path" + mock_path_obj = Mock() + patched_path.exists.return_value = True + patched_os.path.return_value = mock_path_obj + patched_copy2.side_effect = OSError("mock-os-error") + + patched_os.path.join.side_effect = [source_path, destination_path] + patched_os.path.isdir.return_value = False + patched_os.listdir.return_value = ["mock-source-file1"] + with self.assertRaises(OSError): + osutils.copytree(source_path, destination_path) + + patched_os.path.join.assert_called() + patched_copy2.assert_called_with(source_path, destination_path) + + @patch("samcli.lib.utils.osutils.create_symlink_or_copy") + @patch("samcli.lib.utils.osutils.Path") + @patch("samcli.lib.utils.osutils.os") + @patch("samcli.lib.utils.osutils.shutil.copy2") + def test_copytree_symlink_copy_error_handling( + self, patched_copy2, patched_os, patched_path, patched_create_symlink_or_copy + ): + source_path = "mock-source/path" + destination_path = "mock-destination/path" + mock_path_obj = Mock() + patched_path.exists.return_value = True + patched_os.path.return_value = mock_path_obj + patched_copy2.side_effect = OSError(22, "mock-os-error") + + patched_os.path.join.side_effect = [source_path, destination_path] + patched_os.path.isdir.return_value = False + patched_os.listdir.return_value = ["mock-source-file1"] + osutils.copytree(source_path, destination_path) + + patched_os.path.join.assert_called() + patched_copy2.assert_called_with(source_path, destination_path) + patched_create_symlink_or_copy.assert_called_with(source_path, destination_path) + + class Test_create_symlink_or_copy(TestCase): @patch("samcli.lib.utils.osutils.Path") @patch("samcli.lib.utils.osutils.os")