diff --git a/.github/labeler.yml b/.github/labeler.yml index f3c758d9e3..223cf2cd5b 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -1,75 +1,109 @@ area/package: -- samcli/commands/package/* -- samcli/commands/package/**/* + - changed-files: + - any-glob-to-any-file: + - samcli/commands/package/* + - samcli/commands/package/**/* area/local/invoke: -- samcli/commands/local/invoke/* -- samcli/commands/local/invoke/**/* -- samcli/local/* -- samcli/local/**/* + - changed-files: + - any-glob-to-any-file: + - samcli/commands/local/invoke/* + - samcli/commands/local/invoke/**/* + - samcli/local/* + - samcli/local/**/* area/pipeline: -- samcli/commands/pipeline/* -- samcli/commands/pipeline/**/* + - changed-files: + - any-glob-to-any-file: + - samcli/commands/pipeline/* + - samcli/commands/pipeline/**/* area/deploy: -- samcli/commands/deploy/* -- samcli/commands/deploy/**/* + - changed-files: + - any-glob-to-any-file: + - samcli/commands/deploy/* + - samcli/commands/deploy/**/* area/local/start-api: -- samcli/commands/local/start-api/* -- samcli/commands/local/start-api/**/* -- samcli/local/* -- samcli/local/**/* + - changed-files: + - any-glob-to-any-file: + - samcli/commands/local/start-api/* + - samcli/commands/local/start-api/**/* + - samcli/local/* + - samcli/local/**/* area/local/start-invoke: -- samcli/commands/local/start-invoke/* -- samcli/commands/local/start-invoke/**/* -- samcli/local/* -- samcli/local/**/* + - changed-files: + - any-glob-to-any-file: + - samcli/commands/local/start-invoke/* + - samcli/commands/local/start-invoke/**/* + - samcli/local/* + - samcli/local/**/* area/local/generate-event: -- samcli/commands/local/generate-event/* -- samcli/commands/local/generate-event/**/* + - changed-files: + - any-glob-to-any-file: + - samcli/commands/local/generate-event/* + - samcli/commands/local/generate-event/**/* area/init: -- samcli/commands/init/* -- samcli/commands/init/**/* + - changed-files: + - any-glob-to-any-file: + - samcli/commands/init/* + - samcli/commands/init/**/* area/delete: -- samcli/commands/delete/* -- samcli/commands/delete/**/* + - changed-files: + - any-glob-to-any-file: + - samcli/commands/delete/* + - samcli/commands/delete/**/* area/integration-tests: -- test/integration/* -- test/integration/**/* + - changed-files: + - any-glob-to-any-file: + - test/integration/* + - test/integration/**/* area/publish: -- samcli/commands/publish/* -- samcli/commands/publish/**/* + - changed-files: + - any-glob-to-any-file: + - samcli/commands/publish/* + - samcli/commands/publish/**/* area/sync: -- samcli/commands/sync/* -- samcli/commands/sync/**/* + - changed-files: + - any-glob-to-any-file: + - samcli/commands/sync/* + - samcli/commands/sync/**/* area/validate: -- samcli/commands/validate/* -- samcli/commands/validate/**/* + - changed-files: + - any-glob-to-any-file: + - samcli/commands/validate/* + - samcli/commands/validate/**/* area/build: -- samcli/commands/build/* -- samcli/commands/build/**/* -- samcli/lib/build/* -- samcli/lib/build/**/* + - changed-files: + - any-glob-to-any-file: + - samcli/commands/build/* + - samcli/commands/build/**/* + - samcli/lib/build/* + - samcli/lib/build/**/* area/logs: -- samcli/commands/logs/* -- samcli/commands/logs/**/* + - changed-files: + - any-glob-to-any-file: + - samcli/commands/logs/* + - samcli/commands/logs/**/* area/traces: -- samcli/commands/traces/* -- samcli/commands/traces/**/* + - changed-files: + - any-glob-to-any-file: + - samcli/commands/traces/* + - samcli/commands/traces/**/* area/schema: -- schema/* -- schema/**/* + - changed-files: + - any-glob-to-any-file: + - schema/* + - schema/**/* diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 70a2233fce..1e341643b5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -60,7 +60,7 @@ jobs: - "3.11" steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v4 + - uses: actions/setup-python@v5 with: python-version: ${{ matrix.python }} - run: test -f "./.github/ISSUE_TEMPLATE/Bug_report.md" # prevent Bug_report.md from being renamed or deleted @@ -76,7 +76,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v4 + - uses: actions/setup-python@v5 name: Install Python 3.11 with: python-version: 3.11 @@ -132,7 +132,7 @@ jobs: - "tests/integration/docs" steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v4 + - uses: actions/setup-python@v5 with: # set last version as the one in matrix to make it default python-version: | @@ -218,7 +218,7 @@ jobs: - "3.11" steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v4 + - uses: actions/setup-python@v5 with: python-version: ${{ matrix.python }} - name: Init samdev @@ -240,7 +240,7 @@ jobs: - windows-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v4 + - uses: actions/setup-python@v5 with: # These are the versions of Python that correspond to the supported Lambda runtimes python-version: | diff --git a/.github/workflows/pr-labeler.yml b/.github/workflows/pr-labeler.yml index b5542d9693..ec1c181a37 100644 --- a/.github/workflows/pr-labeler.yml +++ b/.github/workflows/pr-labeler.yml @@ -9,7 +9,7 @@ jobs: pull-requests: write runs-on: ubuntu-latest steps: - - uses: actions/labeler@v4 + - uses: actions/labeler@v5 with: repo-token: "${{ secrets.GITHUB_TOKEN }}" apply-internal-external-label: @@ -27,7 +27,7 @@ jobs: 'aws-sam-cli-bot', 'hawflau', 'mndeveci', 'mildaniel', 'marekaiv', - 'lucashuy', 'hnnasit', 'jysheng123', 'bentvelj', 'sidhujus', dependabot[bot]' + 'lucashuy', 'hnnasit', 'jysheng123', 'bentvelj', 'sidhujus', 'dependabot[bot]' ] if (maintainers.includes(context.payload.sender.login)) { github.rest.issues.addLabels({ diff --git a/.github/workflows/update-reproducibles.yml b/.github/workflows/update-reproducibles.yml index 9101f28c7c..f2751a935a 100644 --- a/.github/workflows/update-reproducibles.yml +++ b/.github/workflows/update-reproducibles.yml @@ -33,7 +33,7 @@ jobs: - uses: actions/checkout@v4 with: ref: ${{ github.head_ref }} - - uses: actions/setup-python@v4 + - uses: actions/setup-python@v5 with: python-version: ${{ matrix.python }} - run: make ${{ matrix.target }} diff --git a/.github/workflows/validate_pyinstaller.yml b/.github/workflows/validate_pyinstaller.yml index f520675225..912b0b73dd 100644 --- a/.github/workflows/validate_pyinstaller.yml +++ b/.github/workflows/validate_pyinstaller.yml @@ -49,9 +49,9 @@ jobs: fail-fast: false steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v4 + - uses: actions/setup-python@v5 with: - python-version: "3.11" + python-version: "3.8" - name: Set up Go uses: actions/setup-go@v4 with: diff --git a/Makefile b/Makefile index 429effc02d..a5314e30e1 100644 --- a/Makefile +++ b/Makefile @@ -70,7 +70,7 @@ update-reproducible-linux-reqs: venv-update-reproducible-linux/bin/pip-compile --generate-hashes --allow-unsafe -o requirements/reproducible-linux.txt update-reproducible-mac-reqs: - python3.11 -m venv venv-update-reproducible-mac + python3.8 -m venv venv-update-reproducible-mac venv-update-reproducible-mac/bin/pip install --upgrade pip-tools pip venv-update-reproducible-mac/bin/pip install -r requirements/base.txt venv-update-reproducible-mac/bin/pip-compile --generate-hashes --allow-unsafe -o requirements/reproducible-mac.txt diff --git a/installer/pyinstaller/build-mac.sh b/installer/pyinstaller/build-mac.sh index 382991f412..f003274cae 100755 --- a/installer/pyinstaller/build-mac.sh +++ b/installer/pyinstaller/build-mac.sh @@ -30,11 +30,11 @@ if [ "$python_library_zip_filename" = "" ]; then fi if [ "$openssl_version" = "" ]; then - openssl_version="1.1.1t"; + openssl_version="1.1.1o"; fi if [ "$python_version" = "" ]; then - python_version="3.11.3"; + python_version="3.8.13"; fi if ! [ "$build_binary_name" = "" ]; then @@ -97,7 +97,7 @@ sudo make install cd .. echo "Installing Python Libraries" -/usr/local/bin/python3.11 -m venv venv +/usr/local/bin/python3.8 -m venv venv ./venv/bin/pip install --upgrade pip ./venv/bin/pip install -r src/requirements/reproducible-mac.txt diff --git a/requirements/base.txt b/requirements/base.txt index 29ff30021a..4df06a7349 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -28,7 +28,7 @@ regex!=2021.10.8 tzlocal==5.2 #Adding cfn-lint dependency for SAM validate -cfn-lint~=0.83.4 +cfn-lint~=0.83.5 # Type checking boto3 objects -boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.33.5 +boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray,sqs,kinesis]==1.34.0 diff --git a/requirements/pre-dev.txt b/requirements/pre-dev.txt index 680848f217..e89c4992b0 100644 --- a/requirements/pre-dev.txt +++ b/requirements/pre-dev.txt @@ -1 +1 @@ -ruff==0.1.7 +ruff==0.1.8 diff --git a/requirements/reproducible-linux.txt b/requirements/reproducible-linux.txt index 00eedcecb2..23ee4974c2 100644 --- a/requirements/reproducible-linux.txt +++ b/requirements/reproducible-linux.txt @@ -38,27 +38,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.33.5 \ - --hash=sha256:6a1d938bbf11518b1d17ca8186168f3ba2a0e8b2bf3c82cdd810ecb884627d2a \ - --hash=sha256:fcc24f62a1f512dd9b4a7a8af6f5fbfb3d69842a92aa2e79c2ca551ac49a4757 +boto3==1.34.0 \ + --hash=sha256:8b3c4d4e720c0ad706590c284b8f30c76de3472c1ce1bac610425f99bf6ab53b \ + --hash=sha256:c9b400529932ed4652304756528ab235c6730aa5d00cb4d9e4848ce460c82c16 # 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.33.5 \ - --hash=sha256:40d7a52e60d477822655938083be43a9097a405f1d748ce86f5233685e0cddcc \ - --hash=sha256:4f19917a817f5530c5a05924ff009929218664c75140f47fd57e3ba6d477ab48 +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.0 \ + --hash=sha256:39ad9a9ab399c012713a719d90feb1dee819d310f136a0c7d7fddc477d7f251e \ + --hash=sha256:477b7da7432ab26123324249411111f2350e0b5ef0418e7bc1124600c810ac41 # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.33.5 \ - --hash=sha256:aa4a5c7cf78a403280e50daba8966479e23577b4a5c20165f71fab7a9b405e99 \ - --hash=sha256:c165207fb33e8352191d6a2770bce9f9bf01c62f5149824c4295d7f49bf96746 +botocore==1.34.0 \ + --hash=sha256:6ec19f6c9f61c3df22fb3e083940ac7946a3d96128db1f370f10aea702bb157f \ + --hash=sha256:711b406de910585395466ca649bceeea87a04300ddf74d9a2e20727c7f27f2f1 # via # boto3 # s3transfer -botocore-stubs==1.33.5 \ - --hash=sha256:826147bc4134cffd5310c36065131e9955d434b30ddb0ccecb16fc66ea3461fd \ - --hash=sha256:af2d6f5a00c003df38bd28ac21a52d4d23cce9d5cc9f864656a85b569b88657c +botocore-stubs==1.34.0 \ + --hash=sha256:13698a763521622f89808ac618eafdb79df49614b4a80bb5ecf894adfb45ac37 \ + --hash=sha256:5e3a4e2d0bc65657e4205745478847df78b4d485f5c5c5af9764f01685cf0536 # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ @@ -118,9 +118,9 @@ cffi==1.16.0 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 # via cryptography -cfn-lint==0.83.4 \ - --hash=sha256:5e9409e950590c772696a5298fb1dde7d22ca2da431fc6b8dd2de96434a964b7 \ - --hash=sha256:fe386419ec2c92ffd795a9d1e1bea8131c9c8fae90e7a823f43da2fff82e9af7 +cfn-lint==0.83.5 \ + --hash=sha256:91145a94968f0f3c0095fcc4366602efb3b9f5eee413171845f298fa1227e0fa \ + --hash=sha256:97ed0b36f77defba9fe843d2401160c7bb2a81dd4478dd17859bac9f027da311 # via aws-sam-cli (setup.py) chardet==5.2.0 \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ @@ -388,61 +388,61 @@ mpmath==1.3.0 \ --hash=sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f \ --hash=sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c # via sympy -mypy-boto3-apigateway==1.33.0 \ - --hash=sha256:1f8eba3d043b591383101f8fd9675a6ee7f3c14d69dec26a51915ff3367f25ec \ - --hash=sha256:9281011f3207978e90c4763a25a472df5276ff36ac1b7f44faeea4a663153b8b +mypy-boto3-apigateway==1.34.0 \ + --hash=sha256:372ca74ede1442cb7d171a7cc0b64d92900cda258790f07b9cd9b92886ef92ef \ + --hash=sha256:3c724120971c74fb65a94eb7e4b92a3a4b28df6c70ca04a007072e6c73f6eda7 # via boto3-stubs -mypy-boto3-cloudformation==1.33.0 \ - --hash=sha256:e1c27b910ffce96ed0ae126e4c5755bdd90a56dc7548e543264334a35608df0a \ - --hash=sha256:f56659fa8d804017075e3fb27ac8df17cd6c9ea3f686d79832bf5add51eb2965 +mypy-boto3-cloudformation==1.34.0 \ + --hash=sha256:4e63a2bca1882971881d65983acd774c2fc636bbc5dc8c3e1f4a41c539cf3c90 \ + --hash=sha256:9b25df9ef15d9dc8e4e892cc07aa9343f15f2ed5eb7d33eb5eb65adfa63f538f # via boto3-stubs -mypy-boto3-ecr==1.33.0 \ - --hash=sha256:76b0a53f9826f5d52fd9242ace420f1d54db35dcccc391c5137480bfb68a1689 \ - --hash=sha256:a64e2d65bb4733a304656bac16ff5a217303b80545679b379a543690c4a143d0 +mypy-boto3-ecr==1.34.0 \ + --hash=sha256:3346c02c22b16068c9acc67d990e32060bf7cdaea5f3d43c50e44308fbbc3439 \ + --hash=sha256:b83fb0311e968a42d4ca821b006c18d4a3e3e364b8cebee758ea4fa97c5ac345 # via boto3-stubs -mypy-boto3-iam==1.33.0 \ - --hash=sha256:046ac8b0bf467145b037b8179cd3838eb218164ee81712511a9734412294e537 \ - --hash=sha256:7e6b7634eb4e1aa8dcbc6bd7e1d8d157e95353d3ef1c6ce79f3fd294fc5682cb +mypy-boto3-iam==1.34.0 \ + --hash=sha256:2485e753cfe138ece94bab1c4983d0db4dc76e25314d3ffdb9bde5c72ad1a92c \ + --hash=sha256:7edeac8ad54fc5f669d7d4b30fd9c744ed58c3ed36a55ad44179cf450d48e605 # via boto3-stubs -mypy-boto3-kinesis==1.33.0 \ - --hash=sha256:ccc84966fad632f7a1df3d8e62f52bb37fdf0218c9102b477e132875238f07d3 \ - --hash=sha256:cee6f4a447f09bc181ef31d11ad6f29694c5754c095e1637f75c441fca98a44f +mypy-boto3-kinesis==1.34.0 \ + --hash=sha256:1add81c53f6e36599e0c22e142024867759aaf2f4954bcb2baa21c284c852377 \ + --hash=sha256:f404e75badd5977e9f09741b769b8888854bdd411c631344686ab889efe98741 # via boto3-stubs -mypy-boto3-lambda==1.33.0 \ - --hash=sha256:10e0f04168f4064e89ba136218162003f1cb6826dcbfa95ca982d3cb792fc9f7 \ - --hash=sha256:beac0cb4b94f83a444242db16f601405bdfb6c15808c2c52720224d907e7af40 +mypy-boto3-lambda==1.34.0 \ + --hash=sha256:109a7e126e84d6da6cacf8ab5c7c6f2be022417fe7bfb7f9b019767d7034f73b \ + --hash=sha256:e74c0ce548da747a8c6e643c39dad8aa54d67e057f57740ec780a7e565590627 # via boto3-stubs -mypy-boto3-s3==1.33.2 \ - --hash=sha256:9d463df6def30de31a467d49ab92ff7795d46709d56eff6f52216a08bac27918 \ - --hash=sha256:f54a3ad3288f4e4719ebada3dde68c320507b0fc451d59bc68af7e6ab15cbdad +mypy-boto3-s3==1.34.0 \ + --hash=sha256:633876d2a96dbb924f9667084316c1759bff40c19a9a38313d5a4e825c5fc641 \ + --hash=sha256:7644a00e096ebb1c3292551059f64ff8329625dacd40827ced9481b14d64c733 # via boto3-stubs -mypy-boto3-schemas==1.33.0 \ - --hash=sha256:df11a93ec5b05d3eee53bcbf6bfa933fa3f5f28d5f19abdfa32d9380f9804e12 \ - --hash=sha256:f1a46e20b33b302fac92c1eec2c431c878ef27819fcf59aaa980e245451ee01e +mypy-boto3-schemas==1.34.0 \ + --hash=sha256:28c016609dcffc606bd8425ee92894c46e943ab77033e1ae46481f00c39b7f75 \ + --hash=sha256:3b25a71944192b0980c3bb5132deb7c06ee9b88580ed63f257fad97cf3bf2927 # via boto3-stubs -mypy-boto3-secretsmanager==1.33.0 \ - --hash=sha256:ea765e79988689a2cf6ba9307666aa8a3784f715b371b8fdebcb7694f4e92b9a \ - --hash=sha256:f0f1552ed294fd2f09ca38fd1af025149eeadde49500e0fca948ad1ada7d9c3f +mypy-boto3-secretsmanager==1.34.0 \ + --hash=sha256:d3b0c26f4264775a2505cbd4a73a4efd5c4a151d8fcdcf938683afb1bf717a32 \ + --hash=sha256:f7c1a99a28e650ac91834db69a8dabe6734f9ace92f1d7a2d366160a11401133 # via boto3-stubs -mypy-boto3-signer==1.33.0 \ - --hash=sha256:08e92afcddb155347b44c01b012c7587a109677466c56f27fe5c207d991c1368 \ - --hash=sha256:4b55bd3724a7544a49837f11f217c54a28374d7fedad59294f113d6525067025 +mypy-boto3-signer==1.34.0 \ + --hash=sha256:c11ed943ccd38ee54fc0ca90ed347ef770d695df49535eab96dd97fb3dbdc592 \ + --hash=sha256:cb008547249031e562302c5c66451b3a12d5c8c97b47b50de46e61669c7c2315 # via boto3-stubs -mypy-boto3-sqs==1.33.0 \ - --hash=sha256:81f4838e81cbb0c088a10e287922fdf6a3f317cbab6647993ab9dbd567c0e8fb \ - --hash=sha256:81f71d5f461e5e670d2ca93df92c93efdd7c29be33eabf8475df5f071e638583 +mypy-boto3-sqs==1.34.0 \ + --hash=sha256:0bf8995f58919ab295398100e72eaa7da898adcfd9d339a42f3c48ce473419d5 \ + --hash=sha256:94d8aea4ae75605f70e58e440d706e04d5c614101ddb2f0c73d306d776d10995 # via boto3-stubs -mypy-boto3-stepfunctions==1.33.0 \ - --hash=sha256:09d9a520ba870e368dbffc48771745908cb2f0c427f9b3faff5ce53719a9638d \ - --hash=sha256:b892ee2c08fdbb2da5967a5a59b4418cd8b15894ecfbf008e1aa4f407419f7b8 +mypy-boto3-stepfunctions==1.34.0 \ + --hash=sha256:06d2296cee750d17cb62171420eea4614f20f29be45ee361854f8b599a6e8110 \ + --hash=sha256:ecc1e674c1c89e0559e8dbf3fda81295642b13766db30d42968a986ae6a5e952 # via boto3-stubs -mypy-boto3-sts==1.33.3 \ - --hash=sha256:b82e9cd8ae9b94a7fb6447ff28bf4ac17a5298f13655dcb2ff9672b8a36193ad \ - --hash=sha256:d008d75486ab03d9042ccfbbe2ebd6aa3e03c8660d48dc68177ae5db54fbabf8 +mypy-boto3-sts==1.34.0 \ + --hash=sha256:3ba1875c2792b4f35fd918dca957ce09ad197beb7cfbda61f42144ffa9cda05d \ + --hash=sha256:b347e0a336d60162dd94074d9d10f614f2b09a455c9b42415850d54d676e2067 # via boto3-stubs -mypy-boto3-xray==1.33.0 \ - --hash=sha256:2c4154c8964021a5dcfe3bf0c9e0975667088fc1b41913cb02936f3adb5bd5cb \ - --hash=sha256:c75e6fc5b827ddb082d7d3794bd920e3f7103e066d8c97cccd4e684acc47bf3b +mypy-boto3-xray==1.34.0 \ + --hash=sha256:742de92c57efc3e14ef27d9a5bfd2f528f095acf11ff4198be2cba6bfee4c7a1 \ + --hash=sha256:f30785798022b7f0c114e851790af9b92cb4026ed28757e962d30fb4391af8e2 # via boto3-stubs networkx==3.2.1 \ --hash=sha256:9f1bb5cf3409bf324e0a722c20bdb4c20ee39bf1c30ce8ae499c8502b0b5e0c6 \ @@ -641,9 +641,9 @@ pyyaml==6.0.1 \ # aws-sam-cli (setup.py) # cfn-lint # cookiecutter -referencing==0.31.1 \ - --hash=sha256:81a1471c68c9d5e3831c30ad1dd9815c45b558e596653db751a2bfdd17b3b9ec \ - --hash=sha256:c19c4d006f1757e3dd75c4f784d38f8698d87b649c54f9ace14e5e8c9667c01d +referencing==0.32.0 \ + --hash=sha256:689e64fe121843dcfd57b71933318ef1f91188ffb45367332700a86ac8fd6161 \ + --hash=sha256:bdcd3efb936f82ff86f993093f6da7435c7de69a3b3a5a06678a6050184bee99 # via # jsonschema # jsonschema-specifications @@ -912,9 +912,9 @@ ruamel-yaml-clib==0.2.8 \ --hash=sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875 \ --hash=sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412 # via ruamel-yaml -s3transfer==0.8.2 \ - --hash=sha256:368ac6876a9e9ed91f6bc86581e319be08188dc60d50e0d56308ed5765446283 \ - --hash=sha256:c9e56cbe88b28d8e197cf841f1f0c130f246595e77ae5b5a05b69fe7cb83de76 +s3transfer==0.9.0 \ + --hash=sha256:01d4d2c35a016db8cb14f9a4d5e84c1f8c96e7ffc211422555eed45c11fa7eb1 \ + --hash=sha256:9e1b186ec8bb5907a1e82b51237091889a9973a2bb799a924bcd9f301ff79d3d # via boto3 sarif-om==1.0.4 \ --hash=sha256:539ef47a662329b1c8502388ad92457425e95dc0aaaf995fe46f4984c4771911 \ @@ -950,9 +950,9 @@ types-s3transfer==0.7.0 \ --hash=sha256:aca0f2486d0a3a5037cd5b8f3e20a4522a29579a8dd183281ff0aa1c4e2c8aa7 \ --hash=sha256:ae9ed9273465d9f43da8b96307383da410c6b59c3b2464c88d20b578768e97c6 # via boto3-stubs -typing-extensions==4.8.0 \ - --hash=sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0 \ - --hash=sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef +typing-extensions==4.9.0 \ + --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ + --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd # via # aws-sam-cli (setup.py) # aws-sam-translator @@ -1015,9 +1015,9 @@ watchdog==3.0.0 \ --hash=sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44 \ --hash=sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33 # via aws-sam-cli (setup.py) -websocket-client==1.6.4 \ - --hash=sha256:084072e0a7f5f347ef2ac3d8698a5e0b4ffbfcab607628cadabc650fc9a83a24 \ - --hash=sha256:b3324019b3c28572086c4a319f91d1dcd44e6e11cd340232978c684a7650d0df +websocket-client==1.7.0 \ + --hash=sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6 \ + --hash=sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588 # via docker werkzeug==3.0.1 \ --hash=sha256:507e811ecea72b18a404947aded4b3390e1db8f826b494d76550ef45bb3b1dcc \ diff --git a/requirements/reproducible-mac.txt b/requirements/reproducible-mac.txt index 15cd29e1a9..3082a8cc29 100644 --- a/requirements/reproducible-mac.txt +++ b/requirements/reproducible-mac.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.8 # by the following command: # # pip-compile --allow-unsafe --generate-hashes --output-file=requirements/reproducible-mac.txt @@ -30,6 +30,24 @@ aws-sam-translator==1.82.0 \ # via # aws-sam-cli (setup.py) # cfn-lint +backports-zoneinfo==0.2.1 \ + --hash=sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf \ + --hash=sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328 \ + --hash=sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546 \ + --hash=sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6 \ + --hash=sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570 \ + --hash=sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9 \ + --hash=sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7 \ + --hash=sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987 \ + --hash=sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722 \ + --hash=sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582 \ + --hash=sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc \ + --hash=sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b \ + --hash=sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1 \ + --hash=sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08 \ + --hash=sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac \ + --hash=sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2 + # via tzlocal binaryornot==0.4.4 \ --hash=sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061 \ --hash=sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4 @@ -38,27 +56,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.33.5 \ - --hash=sha256:6a1d938bbf11518b1d17ca8186168f3ba2a0e8b2bf3c82cdd810ecb884627d2a \ - --hash=sha256:fcc24f62a1f512dd9b4a7a8af6f5fbfb3d69842a92aa2e79c2ca551ac49a4757 +boto3==1.34.0 \ + --hash=sha256:8b3c4d4e720c0ad706590c284b8f30c76de3472c1ce1bac610425f99bf6ab53b \ + --hash=sha256:c9b400529932ed4652304756528ab235c6730aa5d00cb4d9e4848ce460c82c16 # 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.33.5 \ - --hash=sha256:40d7a52e60d477822655938083be43a9097a405f1d748ce86f5233685e0cddcc \ - --hash=sha256:4f19917a817f5530c5a05924ff009929218664c75140f47fd57e3ba6d477ab48 +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.0 \ + --hash=sha256:39ad9a9ab399c012713a719d90feb1dee819d310f136a0c7d7fddc477d7f251e \ + --hash=sha256:477b7da7432ab26123324249411111f2350e0b5ef0418e7bc1124600c810ac41 # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.33.5 \ - --hash=sha256:aa4a5c7cf78a403280e50daba8966479e23577b4a5c20165f71fab7a9b405e99 \ - --hash=sha256:c165207fb33e8352191d6a2770bce9f9bf01c62f5149824c4295d7f49bf96746 +botocore==1.34.0 \ + --hash=sha256:6ec19f6c9f61c3df22fb3e083940ac7946a3d96128db1f370f10aea702bb157f \ + --hash=sha256:711b406de910585395466ca649bceeea87a04300ddf74d9a2e20727c7f27f2f1 # via # boto3 # s3transfer -botocore-stubs==1.33.5 \ - --hash=sha256:826147bc4134cffd5310c36065131e9955d434b30ddb0ccecb16fc66ea3461fd \ - --hash=sha256:af2d6f5a00c003df38bd28ac21a52d4d23cce9d5cc9f864656a85b569b88657c +botocore-stubs==1.34.0 \ + --hash=sha256:13698a763521622f89808ac618eafdb79df49614b4a80bb5ecf894adfb45ac37 \ + --hash=sha256:5e3a4e2d0bc65657e4205745478847df78b4d485f5c5c5af9764f01685cf0536 # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ @@ -118,9 +136,9 @@ cffi==1.16.0 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 # via cryptography -cfn-lint==0.83.4 \ - --hash=sha256:5e9409e950590c772696a5298fb1dde7d22ca2da431fc6b8dd2de96434a964b7 \ - --hash=sha256:fe386419ec2c92ffd795a9d1e1bea8131c9c8fae90e7a823f43da2fff82e9af7 +cfn-lint==0.83.5 \ + --hash=sha256:91145a94968f0f3c0095fcc4366602efb3b9f5eee413171845f298fa1227e0fa \ + --hash=sha256:97ed0b36f77defba9fe843d2401160c7bb2a81dd4478dd17859bac9f027da311 # via aws-sam-cli (setup.py) chardet==5.2.0 \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ @@ -274,6 +292,16 @@ idna==3.6 \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f # via requests +importlib-metadata==6.8.0 \ + --hash=sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb \ + --hash=sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743 + # via flask +importlib-resources==6.1.1 \ + --hash=sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a \ + --hash=sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6 + # via + # jsonschema + # jsonschema-specifications itsdangerous==2.1.2 \ --hash=sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44 \ --hash=sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a @@ -388,61 +416,61 @@ mpmath==1.3.0 \ --hash=sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f \ --hash=sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c # via sympy -mypy-boto3-apigateway==1.33.0 \ - --hash=sha256:1f8eba3d043b591383101f8fd9675a6ee7f3c14d69dec26a51915ff3367f25ec \ - --hash=sha256:9281011f3207978e90c4763a25a472df5276ff36ac1b7f44faeea4a663153b8b +mypy-boto3-apigateway==1.34.0 \ + --hash=sha256:372ca74ede1442cb7d171a7cc0b64d92900cda258790f07b9cd9b92886ef92ef \ + --hash=sha256:3c724120971c74fb65a94eb7e4b92a3a4b28df6c70ca04a007072e6c73f6eda7 # via boto3-stubs -mypy-boto3-cloudformation==1.33.0 \ - --hash=sha256:e1c27b910ffce96ed0ae126e4c5755bdd90a56dc7548e543264334a35608df0a \ - --hash=sha256:f56659fa8d804017075e3fb27ac8df17cd6c9ea3f686d79832bf5add51eb2965 +mypy-boto3-cloudformation==1.34.0 \ + --hash=sha256:4e63a2bca1882971881d65983acd774c2fc636bbc5dc8c3e1f4a41c539cf3c90 \ + --hash=sha256:9b25df9ef15d9dc8e4e892cc07aa9343f15f2ed5eb7d33eb5eb65adfa63f538f # via boto3-stubs -mypy-boto3-ecr==1.33.0 \ - --hash=sha256:76b0a53f9826f5d52fd9242ace420f1d54db35dcccc391c5137480bfb68a1689 \ - --hash=sha256:a64e2d65bb4733a304656bac16ff5a217303b80545679b379a543690c4a143d0 +mypy-boto3-ecr==1.34.0 \ + --hash=sha256:3346c02c22b16068c9acc67d990e32060bf7cdaea5f3d43c50e44308fbbc3439 \ + --hash=sha256:b83fb0311e968a42d4ca821b006c18d4a3e3e364b8cebee758ea4fa97c5ac345 # via boto3-stubs -mypy-boto3-iam==1.33.0 \ - --hash=sha256:046ac8b0bf467145b037b8179cd3838eb218164ee81712511a9734412294e537 \ - --hash=sha256:7e6b7634eb4e1aa8dcbc6bd7e1d8d157e95353d3ef1c6ce79f3fd294fc5682cb +mypy-boto3-iam==1.34.0 \ + --hash=sha256:2485e753cfe138ece94bab1c4983d0db4dc76e25314d3ffdb9bde5c72ad1a92c \ + --hash=sha256:7edeac8ad54fc5f669d7d4b30fd9c744ed58c3ed36a55ad44179cf450d48e605 # via boto3-stubs -mypy-boto3-kinesis==1.33.0 \ - --hash=sha256:ccc84966fad632f7a1df3d8e62f52bb37fdf0218c9102b477e132875238f07d3 \ - --hash=sha256:cee6f4a447f09bc181ef31d11ad6f29694c5754c095e1637f75c441fca98a44f +mypy-boto3-kinesis==1.34.0 \ + --hash=sha256:1add81c53f6e36599e0c22e142024867759aaf2f4954bcb2baa21c284c852377 \ + --hash=sha256:f404e75badd5977e9f09741b769b8888854bdd411c631344686ab889efe98741 # via boto3-stubs -mypy-boto3-lambda==1.33.0 \ - --hash=sha256:10e0f04168f4064e89ba136218162003f1cb6826dcbfa95ca982d3cb792fc9f7 \ - --hash=sha256:beac0cb4b94f83a444242db16f601405bdfb6c15808c2c52720224d907e7af40 +mypy-boto3-lambda==1.34.0 \ + --hash=sha256:109a7e126e84d6da6cacf8ab5c7c6f2be022417fe7bfb7f9b019767d7034f73b \ + --hash=sha256:e74c0ce548da747a8c6e643c39dad8aa54d67e057f57740ec780a7e565590627 # via boto3-stubs -mypy-boto3-s3==1.33.2 \ - --hash=sha256:9d463df6def30de31a467d49ab92ff7795d46709d56eff6f52216a08bac27918 \ - --hash=sha256:f54a3ad3288f4e4719ebada3dde68c320507b0fc451d59bc68af7e6ab15cbdad +mypy-boto3-s3==1.34.0 \ + --hash=sha256:633876d2a96dbb924f9667084316c1759bff40c19a9a38313d5a4e825c5fc641 \ + --hash=sha256:7644a00e096ebb1c3292551059f64ff8329625dacd40827ced9481b14d64c733 # via boto3-stubs -mypy-boto3-schemas==1.33.0 \ - --hash=sha256:df11a93ec5b05d3eee53bcbf6bfa933fa3f5f28d5f19abdfa32d9380f9804e12 \ - --hash=sha256:f1a46e20b33b302fac92c1eec2c431c878ef27819fcf59aaa980e245451ee01e +mypy-boto3-schemas==1.34.0 \ + --hash=sha256:28c016609dcffc606bd8425ee92894c46e943ab77033e1ae46481f00c39b7f75 \ + --hash=sha256:3b25a71944192b0980c3bb5132deb7c06ee9b88580ed63f257fad97cf3bf2927 # via boto3-stubs -mypy-boto3-secretsmanager==1.33.0 \ - --hash=sha256:ea765e79988689a2cf6ba9307666aa8a3784f715b371b8fdebcb7694f4e92b9a \ - --hash=sha256:f0f1552ed294fd2f09ca38fd1af025149eeadde49500e0fca948ad1ada7d9c3f +mypy-boto3-secretsmanager==1.34.0 \ + --hash=sha256:d3b0c26f4264775a2505cbd4a73a4efd5c4a151d8fcdcf938683afb1bf717a32 \ + --hash=sha256:f7c1a99a28e650ac91834db69a8dabe6734f9ace92f1d7a2d366160a11401133 # via boto3-stubs -mypy-boto3-signer==1.33.0 \ - --hash=sha256:08e92afcddb155347b44c01b012c7587a109677466c56f27fe5c207d991c1368 \ - --hash=sha256:4b55bd3724a7544a49837f11f217c54a28374d7fedad59294f113d6525067025 +mypy-boto3-signer==1.34.0 \ + --hash=sha256:c11ed943ccd38ee54fc0ca90ed347ef770d695df49535eab96dd97fb3dbdc592 \ + --hash=sha256:cb008547249031e562302c5c66451b3a12d5c8c97b47b50de46e61669c7c2315 # via boto3-stubs -mypy-boto3-sqs==1.33.0 \ - --hash=sha256:81f4838e81cbb0c088a10e287922fdf6a3f317cbab6647993ab9dbd567c0e8fb \ - --hash=sha256:81f71d5f461e5e670d2ca93df92c93efdd7c29be33eabf8475df5f071e638583 +mypy-boto3-sqs==1.34.0 \ + --hash=sha256:0bf8995f58919ab295398100e72eaa7da898adcfd9d339a42f3c48ce473419d5 \ + --hash=sha256:94d8aea4ae75605f70e58e440d706e04d5c614101ddb2f0c73d306d776d10995 # via boto3-stubs -mypy-boto3-stepfunctions==1.33.0 \ - --hash=sha256:09d9a520ba870e368dbffc48771745908cb2f0c427f9b3faff5ce53719a9638d \ - --hash=sha256:b892ee2c08fdbb2da5967a5a59b4418cd8b15894ecfbf008e1aa4f407419f7b8 +mypy-boto3-stepfunctions==1.34.0 \ + --hash=sha256:06d2296cee750d17cb62171420eea4614f20f29be45ee361854f8b599a6e8110 \ + --hash=sha256:ecc1e674c1c89e0559e8dbf3fda81295642b13766db30d42968a986ae6a5e952 # via boto3-stubs -mypy-boto3-sts==1.33.3 \ - --hash=sha256:b82e9cd8ae9b94a7fb6447ff28bf4ac17a5298f13655dcb2ff9672b8a36193ad \ - --hash=sha256:d008d75486ab03d9042ccfbbe2ebd6aa3e03c8660d48dc68177ae5db54fbabf8 +mypy-boto3-sts==1.34.0 \ + --hash=sha256:3ba1875c2792b4f35fd918dca957ce09ad197beb7cfbda61f42144ffa9cda05d \ + --hash=sha256:b347e0a336d60162dd94074d9d10f614f2b09a455c9b42415850d54d676e2067 # via boto3-stubs -mypy-boto3-xray==1.33.0 \ - --hash=sha256:2c4154c8964021a5dcfe3bf0c9e0975667088fc1b41913cb02936f3adb5bd5cb \ - --hash=sha256:c75e6fc5b827ddb082d7d3794bd920e3f7103e066d8c97cccd4e684acc47bf3b +mypy-boto3-xray==1.34.0 \ + --hash=sha256:742de92c57efc3e14ef27d9a5bfd2f528f095acf11ff4198be2cba6bfee4c7a1 \ + --hash=sha256:f30785798022b7f0c114e851790af9b92cb4026ed28757e962d30fb4391af8e2 # via boto3-stubs networkx==3.1 \ --hash=sha256:4f33f68cb2afcf86f28a45f43efc27a9386b535d567d2127f8f61d51dec58d36 \ @@ -458,6 +486,10 @@ pbr==6.0.0 \ # via # jschema-to-python # sarif-om +pkgutil-resolve-name==1.3.10 \ + --hash=sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174 \ + --hash=sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e + # via jsonschema pycparser==2.21 \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 @@ -641,9 +673,9 @@ pyyaml==6.0.1 \ # aws-sam-cli (setup.py) # cfn-lint # cookiecutter -referencing==0.31.1 \ - --hash=sha256:81a1471c68c9d5e3831c30ad1dd9815c45b558e596653db751a2bfdd17b3b9ec \ - --hash=sha256:c19c4d006f1757e3dd75c4f784d38f8698d87b649c54f9ace14e5e8c9667c01d +referencing==0.32.0 \ + --hash=sha256:689e64fe121843dcfd57b71933318ef1f91188ffb45367332700a86ac8fd6161 \ + --hash=sha256:bdcd3efb936f82ff86f993093f6da7435c7de69a3b3a5a06678a6050184bee99 # via # jsonschema # jsonschema-specifications @@ -912,9 +944,9 @@ ruamel-yaml-clib==0.2.8 \ --hash=sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875 \ --hash=sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412 # via ruamel-yaml -s3transfer==0.8.2 \ - --hash=sha256:368ac6876a9e9ed91f6bc86581e319be08188dc60d50e0d56308ed5765446283 \ - --hash=sha256:c9e56cbe88b28d8e197cf841f1f0c130f246595e77ae5b5a05b69fe7cb83de76 +s3transfer==0.9.0 \ + --hash=sha256:01d4d2c35a016db8cb14f9a4d5e84c1f8c96e7ffc211422555eed45c11fa7eb1 \ + --hash=sha256:9e1b186ec8bb5907a1e82b51237091889a9973a2bb799a924bcd9f301ff79d3d # via boto3 sarif-om==1.0.4 \ --hash=sha256:539ef47a662329b1c8502388ad92457425e95dc0aaaf995fe46f4984c4771911 \ @@ -950,13 +982,15 @@ types-s3transfer==0.7.0 \ --hash=sha256:aca0f2486d0a3a5037cd5b8f3e20a4522a29579a8dd183281ff0aa1c4e2c8aa7 \ --hash=sha256:ae9ed9273465d9f43da8b96307383da410c6b59c3b2464c88d20b578768e97c6 # via boto3-stubs -typing-extensions==4.8.0 \ - --hash=sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0 \ - --hash=sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef +typing-extensions==4.9.0 \ + --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ + --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd # via + # annotated-types # aws-sam-cli (setup.py) # aws-sam-translator # boto3-stubs + # botocore-stubs # mypy-boto3-apigateway # mypy-boto3-cloudformation # mypy-boto3-ecr @@ -973,6 +1007,7 @@ typing-extensions==4.8.0 \ # mypy-boto3-xray # pydantic # pydantic-core + # rich tzlocal==5.2 \ --hash=sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8 \ --hash=sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e @@ -1015,9 +1050,9 @@ watchdog==3.0.0 \ --hash=sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44 \ --hash=sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33 # via aws-sam-cli (setup.py) -websocket-client==1.6.4 \ - --hash=sha256:084072e0a7f5f347ef2ac3d8698a5e0b4ffbfcab607628cadabc650fc9a83a24 \ - --hash=sha256:b3324019b3c28572086c4a319f91d1dcd44e6e11cd340232978c684a7650d0df +websocket-client==1.7.0 \ + --hash=sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6 \ + --hash=sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588 # via docker werkzeug==3.0.1 \ --hash=sha256:507e811ecea72b18a404947aded4b3390e1db8f826b494d76550ef45bb3b1dcc \ @@ -1027,6 +1062,12 @@ wheel==0.42.0 \ --hash=sha256:177f9c9b0d45c47873b619f5b650346d632cdc35fb5e4d25058e09c9e581433d \ --hash=sha256:c45be39f7882c9d34243236f2d63cbd58039e360f85d0913425fbd7ceea617a8 # via aws-lambda-builders +zipp==3.17.0 \ + --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ + --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 + # via + # importlib-metadata + # importlib-resources # The following packages are considered to be unsafe in a requirements file: setuptools==69.0.2 \ diff --git a/requirements/reproducible-win.txt b/requirements/reproducible-win.txt index 92aac957e7..64ae94737a 100644 --- a/requirements/reproducible-win.txt +++ b/requirements/reproducible-win.txt @@ -38,27 +38,27 @@ blinker==1.7.0 \ --hash=sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9 \ --hash=sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182 # via flask -boto3==1.33.5 \ - --hash=sha256:6a1d938bbf11518b1d17ca8186168f3ba2a0e8b2bf3c82cdd810ecb884627d2a \ - --hash=sha256:fcc24f62a1f512dd9b4a7a8af6f5fbfb3d69842a92aa2e79c2ca551ac49a4757 +boto3==1.34.0 \ + --hash=sha256:8b3c4d4e720c0ad706590c284b8f30c76de3472c1ce1bac610425f99bf6ab53b \ + --hash=sha256:c9b400529932ed4652304756528ab235c6730aa5d00cb4d9e4848ce460c82c16 # 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.33.5 \ - --hash=sha256:40d7a52e60d477822655938083be43a9097a405f1d748ce86f5233685e0cddcc \ - --hash=sha256:4f19917a817f5530c5a05924ff009929218664c75140f47fd57e3ba6d477ab48 +boto3-stubs[apigateway,cloudformation,ecr,iam,kinesis,lambda,s3,schemas,secretsmanager,signer,sqs,stepfunctions,sts,xray]==1.34.0 \ + --hash=sha256:39ad9a9ab399c012713a719d90feb1dee819d310f136a0c7d7fddc477d7f251e \ + --hash=sha256:477b7da7432ab26123324249411111f2350e0b5ef0418e7bc1124600c810ac41 # via # aws-sam-cli (setup.py) # boto3-stubs -botocore==1.33.5 \ - --hash=sha256:aa4a5c7cf78a403280e50daba8966479e23577b4a5c20165f71fab7a9b405e99 \ - --hash=sha256:c165207fb33e8352191d6a2770bce9f9bf01c62f5149824c4295d7f49bf96746 +botocore==1.34.0 \ + --hash=sha256:6ec19f6c9f61c3df22fb3e083940ac7946a3d96128db1f370f10aea702bb157f \ + --hash=sha256:711b406de910585395466ca649bceeea87a04300ddf74d9a2e20727c7f27f2f1 # via # boto3 # s3transfer -botocore-stubs==1.33.5 \ - --hash=sha256:826147bc4134cffd5310c36065131e9955d434b30ddb0ccecb16fc66ea3461fd \ - --hash=sha256:af2d6f5a00c003df38bd28ac21a52d4d23cce9d5cc9f864656a85b569b88657c +botocore-stubs==1.34.0 \ + --hash=sha256:13698a763521622f89808ac618eafdb79df49614b4a80bb5ecf894adfb45ac37 \ + --hash=sha256:5e3a4e2d0bc65657e4205745478847df78b4d485f5c5c5af9764f01685cf0536 # via boto3-stubs certifi==2023.11.17 \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ @@ -118,9 +118,9 @@ cffi==1.16.0 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 # via cryptography -cfn-lint==0.83.4 \ - --hash=sha256:5e9409e950590c772696a5298fb1dde7d22ca2da431fc6b8dd2de96434a964b7 \ - --hash=sha256:fe386419ec2c92ffd795a9d1e1bea8131c9c8fae90e7a823f43da2fff82e9af7 +cfn-lint==0.83.5 \ + --hash=sha256:91145a94968f0f3c0095fcc4366602efb3b9f5eee413171845f298fa1227e0fa \ + --hash=sha256:97ed0b36f77defba9fe843d2401160c7bb2a81dd4478dd17859bac9f027da311 # via aws-sam-cli (setup.py) chardet==5.2.0 \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ @@ -392,61 +392,61 @@ mpmath==1.3.0 \ --hash=sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f \ --hash=sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c # via sympy -mypy-boto3-apigateway==1.33.0 \ - --hash=sha256:1f8eba3d043b591383101f8fd9675a6ee7f3c14d69dec26a51915ff3367f25ec \ - --hash=sha256:9281011f3207978e90c4763a25a472df5276ff36ac1b7f44faeea4a663153b8b +mypy-boto3-apigateway==1.34.0 \ + --hash=sha256:372ca74ede1442cb7d171a7cc0b64d92900cda258790f07b9cd9b92886ef92ef \ + --hash=sha256:3c724120971c74fb65a94eb7e4b92a3a4b28df6c70ca04a007072e6c73f6eda7 # via boto3-stubs -mypy-boto3-cloudformation==1.33.0 \ - --hash=sha256:e1c27b910ffce96ed0ae126e4c5755bdd90a56dc7548e543264334a35608df0a \ - --hash=sha256:f56659fa8d804017075e3fb27ac8df17cd6c9ea3f686d79832bf5add51eb2965 +mypy-boto3-cloudformation==1.34.0 \ + --hash=sha256:4e63a2bca1882971881d65983acd774c2fc636bbc5dc8c3e1f4a41c539cf3c90 \ + --hash=sha256:9b25df9ef15d9dc8e4e892cc07aa9343f15f2ed5eb7d33eb5eb65adfa63f538f # via boto3-stubs -mypy-boto3-ecr==1.33.0 \ - --hash=sha256:76b0a53f9826f5d52fd9242ace420f1d54db35dcccc391c5137480bfb68a1689 \ - --hash=sha256:a64e2d65bb4733a304656bac16ff5a217303b80545679b379a543690c4a143d0 +mypy-boto3-ecr==1.34.0 \ + --hash=sha256:3346c02c22b16068c9acc67d990e32060bf7cdaea5f3d43c50e44308fbbc3439 \ + --hash=sha256:b83fb0311e968a42d4ca821b006c18d4a3e3e364b8cebee758ea4fa97c5ac345 # via boto3-stubs -mypy-boto3-iam==1.33.0 \ - --hash=sha256:046ac8b0bf467145b037b8179cd3838eb218164ee81712511a9734412294e537 \ - --hash=sha256:7e6b7634eb4e1aa8dcbc6bd7e1d8d157e95353d3ef1c6ce79f3fd294fc5682cb +mypy-boto3-iam==1.34.0 \ + --hash=sha256:2485e753cfe138ece94bab1c4983d0db4dc76e25314d3ffdb9bde5c72ad1a92c \ + --hash=sha256:7edeac8ad54fc5f669d7d4b30fd9c744ed58c3ed36a55ad44179cf450d48e605 # via boto3-stubs -mypy-boto3-kinesis==1.33.0 \ - --hash=sha256:ccc84966fad632f7a1df3d8e62f52bb37fdf0218c9102b477e132875238f07d3 \ - --hash=sha256:cee6f4a447f09bc181ef31d11ad6f29694c5754c095e1637f75c441fca98a44f +mypy-boto3-kinesis==1.34.0 \ + --hash=sha256:1add81c53f6e36599e0c22e142024867759aaf2f4954bcb2baa21c284c852377 \ + --hash=sha256:f404e75badd5977e9f09741b769b8888854bdd411c631344686ab889efe98741 # via boto3-stubs -mypy-boto3-lambda==1.33.0 \ - --hash=sha256:10e0f04168f4064e89ba136218162003f1cb6826dcbfa95ca982d3cb792fc9f7 \ - --hash=sha256:beac0cb4b94f83a444242db16f601405bdfb6c15808c2c52720224d907e7af40 +mypy-boto3-lambda==1.34.0 \ + --hash=sha256:109a7e126e84d6da6cacf8ab5c7c6f2be022417fe7bfb7f9b019767d7034f73b \ + --hash=sha256:e74c0ce548da747a8c6e643c39dad8aa54d67e057f57740ec780a7e565590627 # via boto3-stubs -mypy-boto3-s3==1.33.2 \ - --hash=sha256:9d463df6def30de31a467d49ab92ff7795d46709d56eff6f52216a08bac27918 \ - --hash=sha256:f54a3ad3288f4e4719ebada3dde68c320507b0fc451d59bc68af7e6ab15cbdad +mypy-boto3-s3==1.34.0 \ + --hash=sha256:633876d2a96dbb924f9667084316c1759bff40c19a9a38313d5a4e825c5fc641 \ + --hash=sha256:7644a00e096ebb1c3292551059f64ff8329625dacd40827ced9481b14d64c733 # via boto3-stubs -mypy-boto3-schemas==1.33.0 \ - --hash=sha256:df11a93ec5b05d3eee53bcbf6bfa933fa3f5f28d5f19abdfa32d9380f9804e12 \ - --hash=sha256:f1a46e20b33b302fac92c1eec2c431c878ef27819fcf59aaa980e245451ee01e +mypy-boto3-schemas==1.34.0 \ + --hash=sha256:28c016609dcffc606bd8425ee92894c46e943ab77033e1ae46481f00c39b7f75 \ + --hash=sha256:3b25a71944192b0980c3bb5132deb7c06ee9b88580ed63f257fad97cf3bf2927 # via boto3-stubs -mypy-boto3-secretsmanager==1.33.0 \ - --hash=sha256:ea765e79988689a2cf6ba9307666aa8a3784f715b371b8fdebcb7694f4e92b9a \ - --hash=sha256:f0f1552ed294fd2f09ca38fd1af025149eeadde49500e0fca948ad1ada7d9c3f +mypy-boto3-secretsmanager==1.34.0 \ + --hash=sha256:d3b0c26f4264775a2505cbd4a73a4efd5c4a151d8fcdcf938683afb1bf717a32 \ + --hash=sha256:f7c1a99a28e650ac91834db69a8dabe6734f9ace92f1d7a2d366160a11401133 # via boto3-stubs -mypy-boto3-signer==1.33.0 \ - --hash=sha256:08e92afcddb155347b44c01b012c7587a109677466c56f27fe5c207d991c1368 \ - --hash=sha256:4b55bd3724a7544a49837f11f217c54a28374d7fedad59294f113d6525067025 +mypy-boto3-signer==1.34.0 \ + --hash=sha256:c11ed943ccd38ee54fc0ca90ed347ef770d695df49535eab96dd97fb3dbdc592 \ + --hash=sha256:cb008547249031e562302c5c66451b3a12d5c8c97b47b50de46e61669c7c2315 # via boto3-stubs -mypy-boto3-sqs==1.33.0 \ - --hash=sha256:81f4838e81cbb0c088a10e287922fdf6a3f317cbab6647993ab9dbd567c0e8fb \ - --hash=sha256:81f71d5f461e5e670d2ca93df92c93efdd7c29be33eabf8475df5f071e638583 +mypy-boto3-sqs==1.34.0 \ + --hash=sha256:0bf8995f58919ab295398100e72eaa7da898adcfd9d339a42f3c48ce473419d5 \ + --hash=sha256:94d8aea4ae75605f70e58e440d706e04d5c614101ddb2f0c73d306d776d10995 # via boto3-stubs -mypy-boto3-stepfunctions==1.33.0 \ - --hash=sha256:09d9a520ba870e368dbffc48771745908cb2f0c427f9b3faff5ce53719a9638d \ - --hash=sha256:b892ee2c08fdbb2da5967a5a59b4418cd8b15894ecfbf008e1aa4f407419f7b8 +mypy-boto3-stepfunctions==1.34.0 \ + --hash=sha256:06d2296cee750d17cb62171420eea4614f20f29be45ee361854f8b599a6e8110 \ + --hash=sha256:ecc1e674c1c89e0559e8dbf3fda81295642b13766db30d42968a986ae6a5e952 # via boto3-stubs -mypy-boto3-sts==1.33.3 \ - --hash=sha256:b82e9cd8ae9b94a7fb6447ff28bf4ac17a5298f13655dcb2ff9672b8a36193ad \ - --hash=sha256:d008d75486ab03d9042ccfbbe2ebd6aa3e03c8660d48dc68177ae5db54fbabf8 +mypy-boto3-sts==1.34.0 \ + --hash=sha256:3ba1875c2792b4f35fd918dca957ce09ad197beb7cfbda61f42144ffa9cda05d \ + --hash=sha256:b347e0a336d60162dd94074d9d10f614f2b09a455c9b42415850d54d676e2067 # via boto3-stubs -mypy-boto3-xray==1.33.0 \ - --hash=sha256:2c4154c8964021a5dcfe3bf0c9e0975667088fc1b41913cb02936f3adb5bd5cb \ - --hash=sha256:c75e6fc5b827ddb082d7d3794bd920e3f7103e066d8c97cccd4e684acc47bf3b +mypy-boto3-xray==1.34.0 \ + --hash=sha256:742de92c57efc3e14ef27d9a5bfd2f528f095acf11ff4198be2cba6bfee4c7a1 \ + --hash=sha256:f30785798022b7f0c114e851790af9b92cb4026ed28757e962d30fb4391af8e2 # via boto3-stubs networkx==3.2.1 \ --hash=sha256:9f1bb5cf3409bf324e0a722c20bdb4c20ee39bf1c30ce8ae499c8502b0b5e0c6 \ @@ -661,9 +661,9 @@ pyyaml==6.0.1 \ # aws-sam-cli (setup.py) # cfn-lint # cookiecutter -referencing==0.31.1 \ - --hash=sha256:81a1471c68c9d5e3831c30ad1dd9815c45b558e596653db751a2bfdd17b3b9ec \ - --hash=sha256:c19c4d006f1757e3dd75c4f784d38f8698d87b649c54f9ace14e5e8c9667c01d +referencing==0.32.0 \ + --hash=sha256:689e64fe121843dcfd57b71933318ef1f91188ffb45367332700a86ac8fd6161 \ + --hash=sha256:bdcd3efb936f82ff86f993093f6da7435c7de69a3b3a5a06678a6050184bee99 # via # jsonschema # jsonschema-specifications @@ -932,9 +932,9 @@ ruamel-yaml-clib==0.2.8 \ --hash=sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875 \ --hash=sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412 # via ruamel-yaml -s3transfer==0.8.2 \ - --hash=sha256:368ac6876a9e9ed91f6bc86581e319be08188dc60d50e0d56308ed5765446283 \ - --hash=sha256:c9e56cbe88b28d8e197cf841f1f0c130f246595e77ae5b5a05b69fe7cb83de76 +s3transfer==0.9.0 \ + --hash=sha256:01d4d2c35a016db8cb14f9a4d5e84c1f8c96e7ffc211422555eed45c11fa7eb1 \ + --hash=sha256:9e1b186ec8bb5907a1e82b51237091889a9973a2bb799a924bcd9f301ff79d3d # via boto3 sarif-om==1.0.4 \ --hash=sha256:539ef47a662329b1c8502388ad92457425e95dc0aaaf995fe46f4984c4771911 \ @@ -970,9 +970,9 @@ types-s3transfer==0.7.0 \ --hash=sha256:aca0f2486d0a3a5037cd5b8f3e20a4522a29579a8dd183281ff0aa1c4e2c8aa7 \ --hash=sha256:ae9ed9273465d9f43da8b96307383da410c6b59c3b2464c88d20b578768e97c6 # via boto3-stubs -typing-extensions==4.8.0 \ - --hash=sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0 \ - --hash=sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef +typing-extensions==4.9.0 \ + --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ + --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd # via # aws-sam-cli (setup.py) # aws-sam-translator @@ -1039,9 +1039,9 @@ watchdog==3.0.0 \ --hash=sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44 \ --hash=sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33 # via aws-sam-cli (setup.py) -websocket-client==1.6.4 \ - --hash=sha256:084072e0a7f5f347ef2ac3d8698a5e0b4ffbfcab607628cadabc650fc9a83a24 \ - --hash=sha256:b3324019b3c28572086c4a319f91d1dcd44e6e11cd340232978c684a7650d0df +websocket-client==1.7.0 \ + --hash=sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6 \ + --hash=sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588 # via docker werkzeug==3.0.1 \ --hash=sha256:507e811ecea72b18a404947aded4b3390e1db8f826b494d76550ef45bb3b1dcc \ diff --git a/samcli/__init__.py b/samcli/__init__.py index 2f8f2a3c6d..ed98927f4e 100644 --- a/samcli/__init__.py +++ b/samcli/__init__.py @@ -2,4 +2,4 @@ SAM CLI version """ -__version__ = "1.104.0" +__version__ = "1.105.0" diff --git a/samcli/lib/sync/infra_sync_executor.py b/samcli/lib/sync/infra_sync_executor.py index 257194a70a..e5c48d44dd 100644 --- a/samcli/lib/sync/infra_sync_executor.py +++ b/samcli/lib/sync/infra_sync_executor.py @@ -6,7 +6,7 @@ import re from datetime import datetime from pathlib import Path -from typing import TYPE_CHECKING, Dict, Optional, Set +from typing import TYPE_CHECKING, Dict, List, Optional, Set, cast from uuid import uuid4 from boto3 import Session @@ -183,6 +183,7 @@ def execute_infra_sync(self, first_sync: bool = False) -> InfraSyncResult: self._package_context.output_template_file, self._package_context.template_file, self._deploy_context.stack_name, + self._build_context._parameter_overrides or {}, ): # We have a threshold on number of sync flows we initiate # If higher than the threshold, we perform infra sync to improve performance @@ -221,6 +222,7 @@ def _auto_skip_infra_sync( packaged_template_path: str, built_template_path: str, stack_name: str, + parameter_overrides: Optional[Dict[str, str]] = None, nested_prefix: Optional[str] = None, ) -> bool: """ @@ -236,6 +238,8 @@ def _auto_skip_infra_sync( The CloudFormation stack name that the template is deployed to nested_prefix: Optional[str] The nested stack stack name tree for child stack resources + parameter_overrides: Optional[Dict[str,str]] + Parameter overrides passed into sam sync in the form of { KEY1 : VALUE1, KEY2 : VALUE2 } Returns ------- @@ -243,6 +247,8 @@ def _auto_skip_infra_sync( Returns True if no template changes from last deployment Returns False if there are template differences """ + parameter_overrides = parameter_overrides or {} + current_template = self.get_template(packaged_template_path) current_built_template = self.get_template(built_template_path) @@ -272,6 +278,9 @@ def _auto_skip_infra_sync( LOG.debug("The current template is different from the last deployed version, we will not skip infra sync") return False + if not self._param_overrides_subset_of_stack_params(stack_name, parameter_overrides): + return False + # The recursive template check for Nested stacks for resource_logical_id in current_template.get("Resources", {}): resource_dict = current_template.get("Resources", {}).get(resource_logical_id, {}) @@ -327,7 +336,10 @@ def _auto_skip_infra_sync( resource_dict.get("Properties", {}).get(template_field), nested_template_location, stack_resource_detail.get("StackResourceDetail", {}).get("PhysicalResourceId", ""), - nested_prefix + resource_logical_id + "/" if nested_prefix else resource_logical_id + "/", + parameter_overrides={}, # Do not pass the same parameter overrides to the nested stack + nested_prefix=nested_prefix + resource_logical_id + "/" + if nested_prefix + else resource_logical_id + "/", ): return False @@ -502,6 +514,70 @@ def get_template(self, template_path: str) -> Optional[Dict]: return template + def _param_overrides_subset_of_stack_params(self, stack_name: str, param_overrides: Dict[str, str]) -> bool: + """ + Returns whether or not the supplied parameter overrides are a subset of the current stack parameters + + Parameters + ---------- + stack_name: str + + param_overrides: Dict[str, str] + Parameter overrides supplied by the sam sync command, taking the following format + e.g. {'Foo1': 'Bar1', 'Foo2': 'Bar2'} + + """ + + # Current stack parameters returned from describe_stacks, taking the following format + # e.g [{'ParameterKey': 'Foo1', 'ParameterValue': 'Bar1'}, {'ParameterKey': 'Foo2', 'ParameterValue': 'Bar2'}] + + try: + current_stack_params = self._get_stack_parameters(stack_name) + except ClientError as ex: + LOG.debug("Unable to fetch stack Parameters from stack with name %s", stack_name, exc_info=ex) + return False + + # We can flatten the current stack parameters into the same format as the parameter overrides + # This allows us to check if the parameter overrides are a direct subset of the current stack parameters + + flat_current_stack_parameters = {} + for param in current_stack_params: + flat_current_stack_parameters[param["ParameterKey"]] = param["ParameterValue"] + + # Check for parameter overrides being a subset of the current stack parameters + if not (param_overrides.items() <= flat_current_stack_parameters.items()): + LOG.debug("Detected changes between Parameter overrides and the current stack parameters.") + return False + + return True + + def _get_stack_parameters(self, stack_name: str) -> List[Dict[str, str]]: + """ + Returns the stack parameters for a given stack + + Parameters + ---------- + stack_name: str + The name of the stack + + Returns + ------- + List of Dicts in the form { 'ParameterKey': Foo, 'ParameterValue': Bar } + + """ + stacks = self._cfn_client.describe_stacks(StackName=stack_name).get("Stacks") + + if len(stacks) < 1: + LOG.info( + "Failed to pull stack details for stack with name %s, it may not yet be finished deploying.", stack_name + ) + return [] + + return cast( + List[Dict[str, str]], + stacks[0].get("Parameters", []), + ) + def _get_remote_template_data(self, template_path: str) -> Optional[Dict]: """ Get template dict from remote location diff --git a/samcli/lib/utils/preview_runtimes.py b/samcli/lib/utils/preview_runtimes.py index bdc4273b2c..a81f308e1d 100644 --- a/samcli/lib/utils/preview_runtimes.py +++ b/samcli/lib/utils/preview_runtimes.py @@ -4,4 +4,4 @@ """ from typing import Set -PREVIEW_RUNTIMES: Set[str] = {"python3.12", "dotnet8"} +PREVIEW_RUNTIMES: Set[str] = {"dotnet8"} diff --git a/samcli/runtime_config.json b/samcli/runtime_config.json index 65e3e0a148..9ceb81017c 100644 --- a/samcli/runtime_config.json +++ b/samcli/runtime_config.json @@ -1,3 +1,3 @@ { - "app_template_repo_commit": "1ef2886f061cdb6b245460078e3ba535465877dd" + "app_template_repo_commit": "4f2d39629050c935934a5024955a2e384b8260c5" } diff --git a/tests/unit/lib/sync/test_infra_sync_executor.py b/tests/unit/lib/sync/test_infra_sync_executor.py index 9142df482a..9c41dbeb65 100644 --- a/tests/unit/lib/sync/test_infra_sync_executor.py +++ b/tests/unit/lib/sync/test_infra_sync_executor.py @@ -518,6 +518,62 @@ def test_auto_skip_infra_sync_exception(self, session_mock, get_template_mock, l self.assertFalse(infra_sync_executor._auto_skip_infra_sync("path", "path2", "stack_name")) + # Test stack parameters are { 'Foo' : 'Bar', 'Apples' : 'Oranges' } + @parameterized.expand( + [ + ({"Foo": "Bar"}, True), # Subset + ({"Foo": "Bar", "Apples": "Oranges"}, True), # Equal + ({"Apples": "Oranges", "Foo": "Bar"}, True), # Equal, different order + ({"Foo": "Bar", "Apples": "Grapes"}, False), # One pair matches the other does not + ( + {"Foo": "Bar", "Apples": "Oranges", "Red": "Blue"}, + False, + ), # Overrides is a superset of current parameters + ] + ) + @patch("samcli.lib.sync.infra_sync_executor.is_local_path") + @patch("samcli.lib.sync.infra_sync_executor.get_template_data") + @patch("samcli.lib.sync.infra_sync_executor.Session") + def test_auto_skip_infra_sync_param_overrides( + self, param_overrides, expect_skip_infra_sync, session_mock, get_template_mock, local_path_mock + ): + built_template_dict = { + "Resources": { + "ServerlessFunction": {"Type": "AWS::Serverless::Function", "Properties": {"CodeUri": "local/"}} + } + } + packaged_template_dict = { + "Resources": { + "ServerlessFunction": {"Type": "AWS::Serverless::Function", "Properties": {"CodeUri": "https://s3_new"}} + } + } + + get_template_mock.side_effect = [packaged_template_dict, built_template_dict] + local_path_mock.return_value = True + + infra_sync_executor = InfraSyncExecutor( + self.build_context, self.package_context, self.deploy_context, self.sync_context + ) + infra_sync_executor._cfn_client.get_template.return_value = { + "TemplateBody": """{ + "Resources": { + "ServerlessFunction": {"Type": "AWS::Serverless::Function", "Properties": {"CodeUri": "https://s3"}} + } + }""" + } + + infra_sync_executor._get_stack_parameters = MagicMock() + + infra_sync_executor._get_stack_parameters.return_value = [ + {"ParameterKey": "Foo", "ParameterValue": "Bar"}, + {"ParameterKey": "Apples", "ParameterValue": "Oranges"}, + ] + + self.assertEqual( + infra_sync_executor._auto_skip_infra_sync("path", "path2", "stack_name", param_overrides), + expect_skip_infra_sync, + ) + @patch("samcli.lib.sync.infra_sync_executor.is_local_path") @patch("samcli.lib.sync.infra_sync_executor.Session") def test_sanitize_template(self, session_mock, local_path_mock):