Skip to content

Commit

Permalink
feat: Generate sam deploy schema (#5504)
Browse files Browse the repository at this point in the history
* chore: use amazon ecr credential helper in windows appveyor (#5446)

* chore: bump version to 1.90.0 (#5448)

* fix: Handler path mapping for layer-wrapped esbuild functions (#5450)

* fix: Layer wrapping esbuild function handlers

* Remove unused import

* Use nodejs18 in tests

* fix: fix macos reproducable task and gh actions (#5455)

* feat(sync): support build-image option (#5441)

* feat(sync): support build-image option

* chore: adding build image option on help option

* fix: Avoid Certain Depedendency Version (#5460)

* Avoid broken click version

* Pin boto3 and jsonschema

* Update reproducible reqs

* Ignore deprecation warnings in pytest

* Pin jsonschema

* Fix broken e2e test (#5459)

* add pip check after all pip install in pyinstaller scripts (#5463)

* add pip check after all pip install in pyinstaller scripts

* update pyinstaller build scripts to explicitly print executed commands

* chore: fix typo in help text of `pipeline bootstrap` (#5467)

* chore: update aws-sam-translator to 1.71.0 (#5462)

Co-authored-by: GitHub Action <action@github.com>

* chore(deps): bump cryptography from 41.0.0 to 41.0.1 in /requirements (#5473)

Bumps [cryptography](https://github.com/pyca/cryptography) from 41.0.0 to 41.0.1.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/41.0.0...41.0.1)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix: E2E test can't find esbuild binary (#5476)

* fix(invoke): Write in UTF-8 string instead of bytes (#5427)

* Revert "Revert "fix(invoke): Write in UTF-8 string instead of bytes. (#5232)" (#5401)"

This reverts commit 7b7c54c59ad15ad90fd558d640daefa5142115d7.

* Add typing and fix issues found in the reverted commit

* Update of comments

* handle pr feedback

---------

Co-authored-by: Jacob Fuss <jfuss@users.noreply.github.com>

* feat: Add remote invoke implementation for step functions (#5458)

* Added remote invoke implementation for step functions

* Added type hints and changed datetime conversion

* Add unit tests

* Updated logic for supported services

* Removed step functions from supported services

* Updated method doc string

* Address comments

* Add a unit test for checking supported executors

* Remove Any typing and replace with specific type

* fix: use images.build rather than low level build API to catch errors (#5399)

* fix: use container.build rather than low level build API to catch errors

* use specific exception type rather than catching all

* fix unit tests

* add unit tests

* add integration tests

* fix messaging

* Swap params

* Relax document version check for authorizers (#5477)

* fix: use StringIO instead of BytesIO with StreamWriter (#5485)

* fix: use stringio in ECRUploader

* add typing for inner stream instance

* chore: Update dependabot config (#5491)

* feat: Support YAML file formats for config files (#5469)

* feat: Abstract SamConfig (#5208)

* Abstract SamConfig and decouple TOML logic

* Fix documentation and comments

* Generalize exception for FileManager

* Remove FileManager logic to its own file

* Fix bug in setting a default FileManager

* Implement requested changes
This includes additional logging messages, as well as explicitly requiring file extensions

* Include supported extensions in log call

* Implement requested changes

* Update docstrings

* Refactor changes to preserve TOML comments

* Allow file document to update properly

* Remove duplicate data
Since TOMLDocument wraps a Python dictionary anyway, we don't need the separate information

* Add put comment for FileManager

* Implement requested changes

* Format files according to standard

* Implement helper method for dict-like to TOMLDocument

---------

Co-authored-by: Leonardo Gama <leogama@amazon.com>

* feat: Add YAML config file option (#5253)

* Abstract SamConfig and decouple TOML logic

* Fix documentation and comments

* Generalize exception for FileManager

* Remove FileManager logic to its own file

* Fix bug in setting a default FileManager

* Implement requested changes
This includes additional logging messages, as well as explicitly requiring file extensions

* Include supported extensions in log call

* Implement requested changes

* Update docstrings

* Refactor changes to preserve TOML comments

* Allow file document to update properly

* Remove duplicate data
Since TOMLDocument wraps a Python dictionary anyway, we don't need the separate information

* Add put comment for FileManager

* Implement requested changes

* Format files according to standard

* Implement helper method for dict-like to TOMLDocument

* Implement YamlFileManager

* Redefine YAML locally in class

* Update YAML-cast method

* Format correctly

---------

Co-authored-by: Leonardo Gama <leogama@amazon.com>

* feat: Add JSON config file option (#5264)

* Add JsonFileManager

* Implement requested changes

* Remove unused line in test

---------

Co-authored-by: Leonardo Gama <leogama@amazon.com>

* chore: Refactor TomlProvider to ConfigProvider (#5273)

Also, update docstrings to be in NumPy/SciPy format

Co-authored-by: Leonardo Gama <leogama@amazon.com>

* feat: Add hierarchy for samconfig filetypes (#5297)

* Add hierarchy for samconfig default filetypes

* Formatting and fixing tests

* Implement requested changes

* Fix logic to properly allow default name

* Fix linting issue

* Fix failing Windows test

* Update default config name in guided config

---------

Co-authored-by: Leonardo Gama <leogama@amazon.com>

* feat: Track config file extension (#5315)

* Add tracker for config file extensions

* Repair broken integration tests

* Clean up metric sort logic

* Implement requested changes

* Add Event unit tests

* Fix formatting

---------

Co-authored-by: Leonardo Gama <leogama@amazon.com>

* feat: Add and fix samconfig integration tests (#5371)

* Add samconfig integration tests

* Add config checks to guided deploy integration tests

* Fix failing integration test on Windows

* *Actually* fix failing Windows integration test

* Implement requested changes

* Fix logging imports

* Implement requested changes

* Fix bug comparing ParameterSource enum

---------

Co-authored-by: Leonardo Gama <leogama@amazon.com>

* feat: Fix message when no config file is found (#5394)

* Fix message when no config file found

* Formatting

---------

Co-authored-by: Leonardo Gama <leogama@amazon.com>

* chore: Rebase config project to develop (#5406)

* fix: fix the hardcoded number of stages printed in logs. (#5210)

* feat: Linking Authorizers to Lambda functions using the invocation URI (#5196)

* Link authorizer to lambda function invoke URI

* Updated doc string

* Updated exception messages back

* Added check for one element in reference list

* Updated empty ref list check to not block

* Updated log message

* Fix long line lint error

---------

Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>

* chore(deps-dev): bump parameterized from 0.8.1 to 0.9.0 in /requirements (#5214)

Bumps [parameterized](https://github.com/wolever/parameterized) from 0.8.1 to 0.9.0.
- [Changelog](https://github.com/wolever/parameterized/blob/master/CHANGELOG.txt)
- [Commits](https://github.com/wolever/parameterized/compare/v0.8.1...v0.9.0)

---
updated-dependencies:
- dependency-name: parameterized
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump filelock from 3.10.7 to 3.12.0 in /requirements (#5213)

Bumps [filelock](https://github.com/tox-dev/py-filelock) from 3.10.7 to 3.12.0.
- [Release notes](https://github.com/tox-dev/py-filelock/releases)
- [Changelog](https://github.com/tox-dev/py-filelock/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/py-filelock/compare/3.10.7...3.12.0)

---
updated-dependencies:
- dependency-name: filelock
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump attrs from 22.2.0 to 23.1.0 in /requirements (#5212)

Bumps [attrs](https://github.com/python-attrs/attrs) from 22.2.0 to 23.1.0.
- [Release notes](https://github.com/python-attrs/attrs/releases)
- [Changelog](https://github.com/python-attrs/attrs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/python-attrs/attrs/compare/22.2.0...23.1.0)

---
updated-dependencies:
- dependency-name: attrs
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: update SAM CLI with latest App Templates commit hash (#5211)

* feat: updating app templates repo hash with (a34f563f067e13df3eb350d36461b99397b6cda6)

* dummy change to trigger checks

* revert dummy commit

---------

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>

* fix: fix failing Terraform integration test cases (#5218)

* fix: fix the failing terraform integration test cases

* fix: fix the resource address while accessing the module config resources

* fix: fix checking the experimental log integration test cases

* chore: bump version to 1.85.0 (#5226)

* chore: use the SAR Application created in testing accounts (#5221)

* chore: update aws_lambda_builders to 1.32.0 (#5215)

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>

* feat: Added linking Gateway Method to Lambda Authorizer (#5228)

* Added linking method to authorizer

* Fixed docstring spelling mistake

---------

Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>

* feat: Return early during linking if no destination resources are found (#5220)

* Returns during linking if no destination resources are found

* Updated comment to correctly reflect state

* Cleaned extra word

---------

Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>

* chore: Strengthen wording on "no Auth" during deploy (#5231)

Co-authored-by: Jacob Fuss <jfuss@users.noreply.github.com>
Co-authored-by: Sriram Madapusi Vasudevan <3770774+sriram-mv@users.noreply.github.com>

* feat: Link Lambda Authorizer to Rest API (#5219)

* Link RestApiId property for Lambda Authorizers

* Updated docstring

* Format files

---------

Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>

* feat: updating app templates repo hash with (9ee7db342025a42023882960b23ebfcde1d87422) (#5242)

Co-authored-by: GitHub Action <action@github.com>

* fix: handle edge cases with function sync flow in sam sync command (#5222)

* fix: handle special cases for function sync flow

* update with unit tests

* add integration tests

* set ADL to false

* fix update file methods

* address comments

* address comments to instantiate FunctionBuildInfo in the beginning

* chore: Upgrade Mac installer to Py3.11 (#5223)

* chore: Upgrade Mac installer to Py3.11

* Remove python in mac installer build process

* Update hardcoded python version in build-mac.sh

---------

Co-authored-by: Jacob Fuss <jfuss@users.noreply.github.com>

* feat: updating app templates repo hash with (66f4a230d1c939a0c3f7b5647710c694c3a486f7) (#5245)

Co-authored-by: GitHub Action <action@github.com>

* Revert "chore: Upgrade Mac installer to Py3.11 (#5223)" (#5252)

This reverts commit 5954042d0bced7fea329c06930f021915ed9b746.

* fix: add 3.11 to classifiers and upgrade Docker (#5225)

* fix: add 3.11 to classifiers

- update dependencies, need to nail down the versions.

* Pin dev dependencies and handle excluding folders for mypy

* Remove unneeded type: ignores

* Fix name-match mypy errors

* Fix empty-body error from mypy

* Fix mypy errors by ignoring and get pytest to run/pass

* Force mypy to not fail hopefully

* Remove unneeded assignment

* Update pinned requirements file

---------

Co-authored-by: Jacob Fuss <jfuss@users.noreply.github.com>
Co-authored-by: Jacob Fuss <32497805+jfuss@users.noreply.github.com>

* fix: fix build and deploy SAR integration test cases (#5244)

* fix: fix build SAR integration test cases

* add comments to the UpdatableSARTemplate class usage.

* fix black check

* chore(deps): bump markupsafe from 2.1.2 to 2.1.3 in /requirements (#5257)

Bumps [markupsafe](https://github.com/pallets/markupsafe) from 2.1.2 to 2.1.3.
- [Release notes](https://github.com/pallets/markupsafe/releases)
- [Changelog](https://github.com/pallets/markupsafe/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/markupsafe/compare/2.1.2...2.1.3)

---
updated-dependencies:
- dependency-name: markupsafe
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump pydantic from 1.10.7 to 1.10.8 in /requirements (#5258)

Bumps [pydantic](https://github.com/pydantic/pydantic) from 1.10.7 to 1.10.8.
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/v1.10.8/HISTORY.md)
- [Commits](https://github.com/pydantic/pydantic/compare/v1.10.7...v1.10.8)

---
updated-dependencies:
- dependency-name: pydantic
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: Add click command for cloud invoke command (#5238)

* Add custom click option for cloud invoke called parameter

* Added more error handling to executors and updated output-format enum to use auto

* Add new CLI command for cloud invoke

* Update samcli/commands/remote_invoke/invoke/cli.py

Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com>

* Update samcli/commands/remote_invoke/invoke/cli.py

Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com>

* Update samcli/commands/remote_invoke/cloud.py

Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com>

* Update samcli/cli/types.py

Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com>

* Address feedback

* Moved all command options to be handled by click configuration

* Updated validation function doc-string

* Updated debug logs in types.py

* Changed remote_invoke dir to cloud and updated log level for validation

* Address feedback

---------

Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com>

* chore(deps-dev): bump boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray] (#5256)

Bumps [boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray]](https://github.com/youtype/mypy_boto3_builder) from 1.26.131 to 1.26.146.
- [Release notes](https://github.com/youtype/mypy_boto3_builder/releases)
- [Commits](https://github.com/youtype/mypy_boto3_builder/commits)

---
updated-dependencies:
- dependency-name: boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray]
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* pin pytest-metadata to avoid its breaking change (#5261)

* chore: update aws_lambda_builders to 1.33.0 (#5262)

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Daniel Mil <84205762+mildaniel@users.noreply.github.com>

* chore: Add python3.11 to canaries (#5263)

* chore: Add python3.11 to canaries

* Remove python3.9

* Artifact export for GraphQLApi (#5250)

* Artifact export for GraphQLApi

* format

* docstrings

* fix unit tests

* fix mypy issues

* improve search method signature

* chore: bump version to 1.86.0 (#5266)

* fix: add constant str for enums to support deepcopy operation (#5265)

* fix: add constant str for enums to support deepcopy operation

* add unit tests

* formatting

* update automated updates gha to force restart of status checks (#5269)

* integration tests for graphql resource package (#5271)

* Revert "fix: add 3.11 to classifiers and upgrade Docker (#5225)"

This reverts commit b51d6617340853d891469ff7a4dcc5bb88175389.

* chore: bump version to 1.86.1

* chore: Upgrade Docker-py/ Support Py3.11 for running tests (#5279)

* fix: add 3.11 to classifiers and upgrade Docker (#5225)

* fix: add 3.11 to classifiers

- update dependencies, need to nail down the versions.

* Pin dev dependencies and handle excluding folders for mypy

* Remove unneeded type: ignores

* Fix name-match mypy errors

* Fix empty-body error from mypy

* Fix mypy errors by ignoring and get pytest to run/pass

* Force mypy to not fail hopefully

* Remove unneeded assignment

* Update pinned requirements file

---------

Co-authored-by: Jacob Fuss <jfuss@users.noreply.github.com>
Co-authored-by: Jacob Fuss <32497805+jfuss@users.noreply.github.com>

* chore: Force version on docker and allow unit test to run when docker not running

In order for the docker.from_env() not to fail when docker is not installed/running,
we force the min version on client creation. This was the default behavior in 4.X of
docker-py but not longer in the latest version.

---------

Co-authored-by: Sriram Madapusi Vasudevan <3770774+sriram-mv@users.noreply.github.com>
Co-authored-by: Jacob Fuss <jfuss@users.noreply.github.com>

* test: GHA to Execute Test without Docker Running (#5290)

* test: Test without Docker running

* Add build test

* Run install

* Remove success condition

* Add continue on error

* Add continue on error

* Separate tests

* Fix test name

* Require new test

* Address comments

* Attempt to parameterize for windows

* Attempt to parameterize for windows

* Attempt to parameterize for windows

* Set samdev in environment

* Move skip to top of test class

* fix: remove ruby3.2 from preview runtimes (#5296)

* fix: remove ruby3.2 from preview runtimes

* update {} with set()

* Fix: Force docker version to match 4.2's default version (#5305)

Co-authored-by: Jacob Fuss <jfuss@users.noreply.github.com>

* chore: cleanup appveyor definitions for not running jobs which is already run with GHA & add docker info/version commands (#5306)

* chore: remove redundant tests and setup from appveyor definitions

* add/update docker info and docker version commands

* add 3.11 and macos to GHAs

* add some explanations to Windows section

* fix: Fix failing tests on Python3.11 (#5317)

* chore(deps): bump cryptography from 39.0.2 to 41.0.0 in /requirements (#5251)

* chore(deps): bump cryptography from 39.0.2 to 41.0.0 in /requirements

Bumps [cryptography](https://github.com/pyca/cryptography) from 39.0.2 to 41.0.0.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/39.0.2...41.0.0)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump pyopenssl version to support newer cryptography lib

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Lucas <12496191+lucashuy@users.noreply.github.com>
Co-authored-by: Jacob Fuss <32497805+jfuss@users.noreply.github.com>
Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com>

* add sleep between close and reopen (#5320)

* GraphQLApi support for `sam deploy` (#5294)

* GraphQLApi support for `sam deploy`

* unit tests and format fixes

* fix: Update Arn parsing logic and fix some edge cases/bug fixes for remote invoke (#5295)

* Fix some edge cases and bug fixes for remote invoke and update Arn parsing logic

* Address feedback

* Add unit test for s3 with no region/accoint_id provided

* Renamed command to sam remote invoke

* chore: update aws_lambda_builders to 1.34.0 (#5343)

* chore: update aws_lambda_builders to 1.34.0

* Update base.txt

---------

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>

* test: test building npm and Typescript projects using external manifest file. (#5283)

* test: test building npm and Typescript projects using external manifest file.

* fix mypy issues

* remove node 12.x, and add the new node versions

* run make format

* chore(deps-dev): bump ruff from 0.0.261 to 0.0.272 in /requirements (#5337)

Bumps [ruff](https://github.com/charliermarsh/ruff) from 0.0.261 to 0.0.272.
- [Release notes](https://github.com/charliermarsh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/BREAKING_CHANGES.md)
- [Commits](https://github.com/charliermarsh/ruff/compare/v0.0.261...v0.0.272)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump pytest-cov from 4.0.0 to 4.1.0 in /requirements (#5335)

Bumps [pytest-cov](https://github.com/pytest-dev/pytest-cov) from 4.0.0 to 4.1.0.
- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-cov/compare/v4.0.0...v4.1.0)

---
updated-dependencies:
- dependency-name: pytest-cov
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: add lambda streaming support for remote invoke (#5307)

* feat: support response streaming with remote invoke

* add invoker and mappers

* Update output formatting of stream response

* add unit tests

* fix formatting

* Add docs

* address comments

* formatting

* move is_function_invoke_mode_response_stream into lambda invoke executors and add/update string constants

* chore: bump version to 1.87.0

* Revert app templates gha (#5356)

* Revert "add sleep between close and reopen (#5320)"

This reverts commit 5be690c88d580cfeee7731f549c75ed7543f47c5.

* Revert "update automated updates gha to force restart of status checks (#5269)"

This reverts commit deb212bc21eda2be0290e9a30f296aa74331e6c3.

* refactor: make remote invoke reactive to display results as soon as they are available (#5359)

* refactor: make remote invoke reactive to display results as soon as they are available

* addressed the comments

* refactor init_clients in sam delete (#5360)

* refactor init_clients in sam delete

* remove unused line

* use client_provider

* fix broken tests

* Update samcli/commands/delete/delete_context.py

Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com>

* add telemetry

* fix format

---------

Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com>

* chore: update aws-sam-translator to 1.69.0 (#5370)

Co-authored-by: GitHub Action <action@github.com>

* feat: sam remote invoke help text and UX fixes (#5366)

* Improve remote invoke help text and fix some UX bugs

* Updated help text for parameter option

* Updated test class name

* Updated test method name

* Updated help text for output-format and event-file

* Address feedback

* Updated help text for parameter option

* Changed --output-format name to output and the values to text/json

* Handle empty event for lambda and read from stdin when - is passed for event-file

* chore: temporary pin python version to 3.7.16 (#5384)

* chore: temporary pin python version to 3.7.16

* fix github action syntax error

* Updated cfn-lint to support ruby3.2 in validate (#5375)

* Remove unneeded test cases (#5374)

* Remove unneeded test cases

* Removing the two integ test cases as there is already coverage in unit test for cases that no region is specified

* feat: updating app templates repo hash with (67f28fd83477e0e15b394f995afb33b2053b4074) (#5362)

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com>

* test: Integration tests for remote invoke on regular lambda functions (#5382)

* Created base integ glass for remote invoke tests

* Add integration tests for invoking lambda functions

* make black

* Moved tearDownClass to base class

* Removed tearDown class from inherited classes and updated lambda fn timeout

* Remove the check to skip appveyor tests on master branch

* feat: Make remote invoke command available (#5381)

* Enabled remote invoke command and updated docs link

* Created base integ glass for remote invoke tests

* Added end2end integ tests for remote invoke

* make black

* Moved tearDownClass to base class

* Remove the check to skip appveyor tests on master branch

* test: Remote invoke integration tests for response stream configured lambda functions  (#5383)

* Created base integ glass for remote invoke tests

* Add integration tests for invoking response streaming lambda fns

* make black

* Moved tearDownClass to base class

* Moved tearDownClass method to base class and removed architectures from template file

* Remove the check to skip appveyor tests on master branch

* chore: bump version to 1.88.0 (#5393)

* chore: fix issues with appveyor ubuntu setup #5395

* chore: remove deprecated runtime dotnetcore3.1 (#5091)

* chore: remove deprecated runtime dotnetcore3.1

* apply pr comments

* fix(invoke): Write in UTF-8 string instead of bytes. (#5232)

* fix(invoke): Write in UTF-8 string instead of bytes.

It appears that we were using sys.stdout.buffer to support python2
and python3 at the same time. Switching to just write to sys.stdout
allows us to write a utf-8 encoding string. When using sys.stdout.buffer,
we can only write bytes and I couldn't get the correct UTF8 encoded
string to print correctly.

* Fix ruff errors

* Update log_streamer.py to remove encoding

* More updates to make everything work better in general

* Fix with ruff again

* Explictingly write to stream for building images

* More patching writes

* More patching

* Fix long line

* Use mock over io.string

* More fixing of tests

* Assert mock instead of data directly

* More small edits in test

* Verify through calls instead of value

* run make black

* Fix when we flush to match pervious behavior and output

* add integration tests

* run make black

---------

Co-authored-by: Jacob Fuss <jfuss@users.noreply.github.com>
Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com>

* Revert "fix(invoke): Write in UTF-8 string instead of bytes. (#5232)" (#5401)

This reverts commit 97104eac05c47aec1c7db62cb98cd050c7656d3d.

* Add sanity check script and use it in pyinstaller GHA (#5400)

* Add sanity check script and use it in pyinstaller GHA

* set pipefail in sanity-check.sh

* Make CI_OVERRIDE a global env var in the GHA workflow

* setup go in GHA

* disable telemetry

* Update script to check binary existence and to fix an issue in go build

* Resolve changes

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>
Co-authored-by: Lucas <12496191+lucashuy@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Jacob Fuss <32497805+jfuss@users.noreply.github.com>
Co-authored-by: Jacob Fuss <jfuss@users.noreply.github.com>
Co-authored-by: Sriram Madapusi Vasudevan <3770774+sriram-mv@users.noreply.github.com>
Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com>
Co-authored-by: Wing Fung Lau <4760060+hawflau@users.noreply.github.com>
Co-authored-by: hnnasit <84355507+hnnasit@users.noreply.github.com>
Co-authored-by: Daniel Mil <84205762+mildaniel@users.noreply.github.com>
Co-authored-by: Slava Senchenko <sencslav@amazon.com>
Co-authored-by: Leonardo Gama <leogama@amazon.com>

* Disable JSON file extension support (#5426)

Co-authored-by: Leonardo Gama <leogama@amazon.com>

* feat: Repair and refine tests (#5431)

* Fix failing integration test

* Add FileManager check for array param

---------

Co-authored-by: Leonardo Gama <leogama@amazon.com>

* chore: Update feat/config-files branch with changes from develop (#5466)

* fix: fix the hardcoded number of stages printed in logs. (#5210)

* feat: Linking Authorizers to Lambda functions using the invocation URI (#5196)

* Link authorizer to lambda function invoke URI

* Updated doc string

* Updated exception messages back

* Added check for one element in reference list

* Updated empty ref list check to not block

* Updated log message

* Fix long line lint error

---------

Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>

* chore(deps-dev): bump parameterized from 0.8.1 to 0.9.0 in /requirements (#5214)

Bumps [parameterized](https://github.com/wolever/parameterized) from 0.8.1 to 0.9.0.
- [Changelog](https://github.com/wolever/parameterized/blob/master/CHANGELOG.txt)
- [Commits](https://github.com/wolever/parameterized/compare/v0.8.1...v0.9.0)

---
updated-dependencies:
- dependency-name: parameterized
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump filelock from 3.10.7 to 3.12.0 in /requirements (#5213)

Bumps [filelock](https://github.com/tox-dev/py-filelock) from 3.10.7 to 3.12.0.
- [Release notes](https://github.com/tox-dev/py-filelock/releases)
- [Changelog](https://github.com/tox-dev/py-filelock/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/py-filelock/compare/3.10.7...3.12.0)

---
updated-dependencies:
- dependency-name: filelock
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump attrs from 22.2.0 to 23.1.0 in /requirements (#5212)

Bumps [attrs](https://github.com/python-attrs/attrs) from 22.2.0 to 23.1.0.
- [Release notes](https://github.com/python-attrs/attrs/releases)
- [Changelog](https://github.com/python-attrs/attrs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/python-attrs/attrs/compare/22.2.0...23.1.0)

---
updated-dependencies:
- dependency-name: attrs
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: update SAM CLI with latest App Templates commit hash (#5211)

* feat: updating app templates repo hash with (a34f563f067e13df3eb350d36461b99397b6cda6)

* dummy change to trigger checks

* revert dummy commit

---------

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>

* fix: fix failing Terraform integration test cases (#5218)

* fix: fix the failing terraform integration test cases

* fix: fix the resource address while accessing the module config resources

* fix: fix checking the experimental log integration test cases

* chore: bump version to 1.85.0 (#5226)

* chore: use the SAR Application created in testing accounts (#5221)

* chore: update aws_lambda_builders to 1.32.0 (#5215)

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>

* feat: Added linking Gateway Method to Lambda Authorizer (#5228)

* Added linking method to authorizer

* Fixed docstring spelling mistake

---------

Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>

* feat: Return early during linking if no destination resources are found (#5220)

* Returns during linking if no destination resources are found

* Updated comment to correctly reflect state

* Cleaned extra word

---------

Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>

* chore: Strengthen wording on "no Auth" during deploy (#5231)

Co-authored-by: Jacob Fuss <jfuss@users.noreply.github.com>
Co-authored-by: Sriram Madapusi Vasudevan <3770774+sriram-mv@users.noreply.github.com>

* feat: Link Lambda Authorizer to Rest API (#5219)

* Link RestApiId property for Lambda Authorizers

* Updated docstring

* Format files

---------

Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>

* feat: updating app templates repo hash with (9ee7db342025a42023882960b23ebfcde1d87422) (#5242)

Co-authored-by: GitHub Action <action@github.com>

* fix: handle edge cases with function sync flow in sam sync command (#5222)

* fix: handle special cases for function sync flow

* update with unit tests

* add integration tests

* set ADL to false

* fix update file methods

* address comments

* address comments to instantiate FunctionBuildInfo in the beginning

* chore: Upgrade Mac installer to Py3.11 (#5223)

* chore: Upgrade Mac installer to Py3.11

* Remove python in mac installer build process

* Update hardcoded python version in build-mac.sh

---------

Co-authored-by: Jacob Fuss <jfuss@users.noreply.github.com>

* feat: updating app templates repo hash with (66f4a230d1c939a0c3f7b5647710c694c3a486f7) (#5245)

Co-authored-by: GitHub Action <action@github.com>

* Revert "chore: Upgrade Mac installer to Py3.11 (#5223)" (#5252)

This reverts commit 5954042d0bced7fea329c06930f021915ed9b746.

* fix: add 3.11 to classifiers and upgrade Docker (#5225)

* fix: add 3.11 to classifiers

- update dependencies, need to nail down the versions.

* Pin dev dependencies and handle excluding folders for mypy

* Remove unneeded type: ignores

* Fix name-match mypy errors

* Fix empty-body error from mypy

* Fix mypy errors by ignoring and get pytest to run/pass

* Force mypy to not fail hopefully

* Remove unneeded assignment

* Update pinned requirements file

---------

Co-authored-by: Jacob Fuss <jfuss@users.noreply.github.com>
Co-authored-by: Jacob Fuss <32497805+jfuss@users.noreply.github.com>

* fix: fix build and deploy SAR integration test cases (#5244)

* fix: fix build SAR integration test cases

* add comments to the UpdatableSARTemplate class usage.

* fix black check

* chore(deps): bump markupsafe from 2.1.2 to 2.1.3 in /requirements (#5257)

Bumps [markupsafe](https://github.com/pallets/markupsafe) from 2.1.2 to 2.1.3.
- [Release notes](https://github.com/pallets/markupsafe/releases)
- [Changelog](https://github.com/pallets/markupsafe/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/markupsafe/compare/2.1.2...2.1.3)

---
updated-dependencies:
- dependency-name: markupsafe
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump pydantic from 1.10.7 to 1.10.8 in /requirements (#5258)

Bumps [pydantic](https://github.com/pydantic/pydantic) from 1.10.7 to 1.10.8.
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/v1.10.8/HISTORY.md)
- [Commits](https://github.com/pydantic/pydantic/compare/v1.10.7...v1.10.8)

---
updated-dependencies:
- dependency-name: pydantic
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: Add click command for cloud invoke command (#5238)

* Add custom click option for cloud invoke called parameter

* Added more error handling to executors and updated output-format enum to use auto

* Add new CLI command for cloud invoke

* Update samcli/commands/remote_invoke/invoke/cli.py

Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com>

* Update samcli/commands/remote_invoke/invoke/cli.py

Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com>

* Update samcli/commands/remote_invoke/cloud.py

Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com>

* Update samcli/cli/types.py

Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com>

* Address feedback

* Moved all command options to be handled by click configuration

* Updated validation function doc-string

* Updated debug logs in types.py

* Changed remote_invoke dir to cloud and updated log level for validation

* Address feedback

---------

Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com>

* chore(deps-dev): bump boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray] (#5256)

Bumps [boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray]](https://github.com/youtype/mypy_boto3_builder) from 1.26.131 to 1.26.146.
- [Release notes](https://github.com/youtype/mypy_boto3_builder/releases)
- [Commits](https://github.com/youtype/mypy_boto3_builder/commits)

---
updated-dependencies:
- dependency-name: boto3-stubs[apigateway,cloudformation,ecr,iam,lambda,s3,schemas,secretsmanager,signer,stepfunctions,sts,xray]
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* pin pytest-metadata to avoid its breaking change (#5261)

* chore: update aws_lambda_builders to 1.33.0 (#5262)

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Daniel Mil <84205762+mildaniel@users.noreply.github.com>

* chore: Add python3.11 to canaries (#5263)

* chore: Add python3.11 to canaries

* Remove python3.9

* Artifact export for GraphQLApi (#5250)

* Artifact export for GraphQLApi

* format

* docstrings

* fix unit tests

* fix mypy issues

* improve search method signature

* chore: bump version to 1.86.0 (#5266)

* fix: add constant str for enums to support deepcopy operation (#5265)

* fix: add constant str for enums to support deepcopy operation

* add unit tests

* formatting

* update automated updates gha to force restart of status checks (#5269)

* integration tests for graphql resource package (#5271)

* Revert "fix: add 3.11 to classifiers and upgrade Docker (#5225)"

This reverts commit b51d6617340853d891469ff7a4dcc5bb88175389.

* chore: bump version to 1.86.1

* chore: Upgrade Docker-py/ Support Py3.11 for running tests (#5279)

* fix: add 3.11 to classifiers and upgrade Docker (#5225)

* fix: add 3.11 to classifiers

- update dependencies, need to nail down the versions.

* Pin dev dependencies and handle excluding folders for mypy

* Remove unneeded type: ignores

* Fix name-match mypy errors

* Fix empty-body error from mypy

* Fix mypy errors by ignoring and get pytest to run/pass

* Force mypy to not fail hopefully

* Remove unneeded assignment

* Update pinned requirements file

---------

Co-authored-by: Jacob Fuss <jfuss@users.noreply.github.com>
Co-authored-by: Jacob Fuss <32497805+jfuss@users.noreply.github.com>

* chore: Force version on docker and allow unit test to run when docker not running

In order for the docker.from_env() not to fail when docker is not installed/running,
we force the min version on client creation. This was the default behavior in 4.X of
docker-py but not longer in the latest version.

---------

Co-authored-by: Sriram Madapusi Vasudevan <3770774+sriram-mv@users.noreply.github.com>
Co-authored-by: Jacob Fuss <jfuss@users.noreply.github.com>

* test: GHA to Execute Test without Docker Running (#5290)

* test: Test without Docker running

* Add build test

* Run install

* Remove success condition

* Add continue on error

* Add continue on error

* Separate tests

* Fix test name

* Require new test

* Address comments

* Attempt to parameterize for windows

* Attempt to parameterize for windows

* Attempt to parameterize for windows

* Set samdev in environment

* Move skip to top of test class

* fix: remove ruby3.2 from preview runtimes (#5296)

* fix: remove ruby3.2 from preview runtimes

* update {} with set()

* Fix: Force docker version to match 4.2's default version (#5305)

Co-authored-by: Jacob Fuss <jfuss@users.noreply.github.com>

* chore: cleanup appveyor definitions for not running jobs which is already run with GHA & add docker info/version commands (#5306)

* chore: remove redundant tests and setup from appveyor definitions

* add/update docker info and docker version commands

* add 3.11 and macos to GHAs

* add some explanations to Windows section

* fix: Fix failing tests on Python3.11 (#5317)

* chore(deps): bump cryptography from 39.0.2 to 41.0.0 in /requirements (#5251)

* chore(deps): bump cryptography from 39.0.2 to 41.0.0 in /requirements

Bumps [cryptography](https://github.com/pyca/cryptography) from 39.0.2 to 41.0.0.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/39.0.2...41.0.0)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump pyopenssl version to support newer cryptography lib

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Lucas <12496191+lucashuy@users.noreply.github.com>
Co-authored-by: Jacob Fuss <32497805+jfuss@users.noreply.github.com>
Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com>

* add sleep between close and reopen (#5320)

* GraphQLApi support for `sam deploy` (#5294)

* GraphQLApi support for `sam deploy`

* unit tests and format fixes

* fix: Update Arn parsing logic and fix some edge cases/bug fixes for remote invoke (#5295)

* Fix some edge cases and bug fixes for remote invoke and update Arn parsing logic

* Address feedback

* Add unit test for s3 with no region/accoint_id provided

* Renamed command to sam remote invoke

* chore: update aws_lambda_builders to 1.34.0 (#5343)

* chore: update aws_lambda_builders to 1.34.0

* Update base.txt

---------

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>

* test: test building npm and Typescript projects using external manifest file. (#5283)

* test: test building npm and Typescript projects using external manifest file.

* fix mypy issues

* remove node 12.x, and add the new node versions

* run make format

* chore(deps-dev): bump ruff from 0.0.261 to 0.0.272 in /requirements (#5337)

Bumps [ruff](https://github.com/charliermarsh/ruff) from 0.0.261 to 0.0.272.
- [Release notes](https://github.com/charliermarsh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/BREAKING_CHANGES.md)
- [Commits](https://github.com/charliermarsh/ruff/compare/v0.0.261...v0.0.272)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump pytest-cov from 4.0.0 to 4.1.0 in /requirements (#5335)

Bumps [pytest-cov](https://github.com/pytest-dev/pytest-cov) from 4.0.0 to 4.1.0.
- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-cov/compare/v4.0.0...v4.1.0)

---
updated-dependencies:
- dependency-name: pytest-cov
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: add lambda streaming support for remote invoke (#5307)

* feat: support response streaming with remote invoke

* add invoker and mappers

* Update output formatting of stream response

* add unit tests

* fix formatting

* Add docs

* address comments

* formatting

* move is_function_invoke_mode_response_stream into lambda invoke executors and add/update string constants

* chore: bump version to 1.87.0

* Revert app templates gha (#5356)

* Revert "add sleep between close and reopen (#5320)"

This reverts commit 5be690c88d580cfeee7731f549c75ed7543f47c5.

* Revert "update automated updates gha to force restart of status checks (#5269)"

This reverts commit deb212bc21eda2be0290e9a30f296aa74331e6c3.

* refactor: make remote invoke reactive to display results as soon as they are available (#5359)

* refactor: make remote invoke reactive to display results as soon as they are available

* addressed the comments

* refactor init_clients in sam delete (#5360)

* refactor init_clients in sam delete

* remove unused line

* use client_provider

* fix broken tests

* Update samcli/commands/delete/delete_context.py

Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com>

* add telemetry

* fix format

---------

Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com>

* chore: update aws-sam-translator to 1.69.0 (#5370)

Co-authored-by: GitHub Action <action@github.com>

* feat: sam remote invoke help text and UX fixes (#5366)

* Improve remote invoke help text and fix some UX bugs

* Updated help text for parameter option

* Updated test class name

* Updated test method name

* Updated help text for output-format and event-file

* Address feedback

* Updated help text for parameter option

* Changed --output-format name to output and the values to text/json

* Handle empty event for lambda and read from stdin when - is passed for event-file

* chore: temporary pin python version to 3.7.16 (#5384)

* chore: temporary pin python version to 3.7.16

* fix github action syntax error

* Updated cfn-lint to support ruby3.2 in validate (#5375)

* Remove unneeded test cases (#5374)

* Remove unneeded test cases

* Removing the two integ test cases as there is already coverage in unit test for cases that no region is specified

* feat: updating app templates repo hash with (67f28fd83477e0e15b394f995afb33b2053b4074) (#5362)

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com>

* test: Integration tests for remote invoke on regular lambda functions (#5382)

* Created base integ glass for remote invoke tests

* Add integration tests for invoking lambda functions

* make black

* Moved tearDownClass to base class

* Removed tearDown class from inherited classes and updated lambda fn timeout

* Remove the check to skip appveyor tests on master branch

* feat: Make remote invoke command available (#5381)

* Enabled remote invoke command and updated docs link

* Created base integ glass for remote invoke tests

* Added end2end integ tests for remote invoke

* make black

* Moved tearDownClass to base class

* Remove the check to skip appveyor tests on master branch

* test: Remote invoke integration tests for response stream configured lambda functions  (#5383)

* Created base integ glass for remote invoke tests

* Add integration tests for invoking response streaming lambda fns

* make black

* Moved tearDownClass to base class

* Moved tearDownClass method to base class and removed architectures from template file

* Remove the check to skip appveyor tests on master branch

* chore: bump version to 1.88.0 (#5393)

* chore: fix issues with appveyor ubuntu setup #5395

* chore: remove deprecated runtime dotnetcore3.1 (#5091)

* chore: remove deprecated runtime dotnetcore3.1

* apply pr comments

* fix(invoke): Write in UTF-8 string instead of bytes. (#5232)

* fix(invoke): Write in UTF-8 string instead of bytes.

It appears that we were using sys.stdout.buffer to support python2
and python3 at the same time. Switching to just write to sys.stdout
allows us to write a utf-8 encoding string. When using sys.stdout.buffer,
we can only write bytes and I couldn't get the correct UTF8 encoded
string to print correctly.

* Fix ruff errors

* Update log_streamer.py to remove encoding

* More updates to make everything work better in general

* Fix with ruff again

* Explictingly write to stream for building images

* More patching writes

* More patching

* Fix long line

* Use mock over io.string

* More fixing of tests

* Assert mock instead of data directly

* More small edits in test

* Verify through calls instead of value

* run make black

* Fix when we flush to match pervious behavior and output

* add integration tests

* run make black

---------

Co-authored-by: Jacob Fuss <jfuss@users.noreply.github.com>
Co-authored-by: Mehmet Nuri Deveci <5735811+mndeveci@users.noreply.github.com>

* Revert "fix(invoke): Write in UTF-8 string instead of bytes. (#5232)" (#5401)

This reverts commit 97104eac05c47aec1c7db62cb98cd050c7656d3d.

* Add sanity check script and use it in pyinstaller GHA (#5400)

* Add sanity check script and use it in pyinstaller GHA

* set pipefail in sanity-check.sh

* Make CI_OVERRIDE a global env var in the GHA workflow

* setup go in GHA

* disable telemetry

* Update script to check binary existence and to fix an issue in go build

* chore: update aws-sam-translator to 1.70.0 (#5402)

Co-authored-by: GitHub Action <action@github.com>

* Version bump to 1.89.0 (#5420)

* chore(docs): updated readme with additional resources (#5349)

* chore: updated gitignore to ignore tmp scratch directory
used by dotnet tests

* chore: update readme to include additional workshop resources and missing Powertools links.
Fixed formatting

---------

Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>

* chore(deps): bump actions/setup-go from 3 to 4 (#5418)

Bumps [actions/setup-go](https://github.com/actions/setup-go) from 3 to 4.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sriram Madapusi Vasudevan <3770774+sriram-mv@users.noreply.github.com>

* chore(deps-dev): bump filelock from 3.12.0 to 3.12.2 in /requirements (#5378)

Bumps [filelock](https://github.com/tox-dev/py-filelock) from 3.12.0 to 3.12.2.
- [Release notes](https://github.com/tox-dev/py-filelock/releases)
- [Changelog](https://github.com/tox-dev/py-filelock/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/py-filelock/compare/3.12.0...3.12.2)

---
updated-dependencies:
- dependency-name: filelock
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: updating app templates repo hash with (bb905c379830c3d8edbc196bda731076549028e3) (#5398)

Co-authored-by: GitHub Action <action@github.com>

* fix: add a table for package help text. (#5298)

* fix: add a table for package help text.

* Update samcli/commands/package/core/command.py

Co-authored-by: Daniel Mil <84205762+mildaniel@users.noreply.github.com>

* tests: fix strings in package help text

* fix: PR comments

* fix: PR comments.

---------

Co-authored-by: Daniel Mil <84205762+mildaniel@users.noreply.github.com>

* fix: Handle BROKEN_PIPE_ERROR (#5386)

* Handle pywintypes pipe exception

* Moved exception checking to check for winerror

* Use decorator and added unit tests

* Added failure test case

* make format

* Added more context/comments

* fix: remove circular dependency by moving parse_s3 method to its own util file (#5430)

* fix: remove circular dependency by moving parse_s3 method to its own util file

* add missing unit tests file

* chore(deps): bump sympy from 1.10.1 to 1.12 in /requirements (#5338)

Bumps [sympy](https://github.com/sympy/sympy) from 1.10.1 to 1.12.
- [Release notes](https://github.com/sympy/sympy/releases)
- [Commits](https://github.com/sympy/sympy/compare/sympy-1.10.1...sympy-1.12)

---
updated-dependencies:
- dependency-name: sympy
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: hnnasit <84355507+hnnasit@users.noreply.github.com>

* chore(deps): bump websocket-client from 1.5.1 to 1.6.1 in /requirements (#5417)

Bumps [websocket-client](https://github.com/websocket-client/websocket-client) from 1.5.1 to 1.6.1.
- [Release notes](https://github.com/websocket-client/websocket-client/releases)
- [Changelog](https://github.com/websocket-client/websocket-client/blob/master/ChangeLog)
- [Commits](https://github.com/websocket-client/websocket-client/compare/v1.5.1...v1.6.1)

---
updated-dependencies:
- dependency-name: websocket-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump ruamel-yaml from 0.17.21 to 0.17.32 in /requirements (#5376)

* chore(deps): bump ruamel-yaml from 0.17.21 to 0.17.32 in /requirements

Bumps [ruamel-yaml](https://sourceforge.net/p/ruamel-yaml/code/ci/default/tree) from 0.17.21 to 0.17.32.

---
updated-dependencies:
- dependency-name: ruamel-yaml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Pin ruamel-yaml-clib version

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: hnnasit <84355507+hnnasit@users.noreply.github.com>
Co-authored-by: Haresh Nasit <hnnasit@amazon.com>

* Updated package formatter to import package options instead of deploy (#5433)

Co-authored-by: Sriram Madapusi Vasudevan <3770774+sriram-mv@users.noreply.github.com>

* chore(deps): bump importlib-metadata in /requirements (#5437)

Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 6.1.0 to 6.7.0.
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v6.1.0...v6.7.0)

---
updated-dependencies:
- dependency-name: importlib-metadata
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: `sam logs` help text (#5397)

* feat: `sam logs` help text

* fix: make ruff happy

* fix: address comments

* feat: enable terraform support for local start-api command (#5389)

* feat: Enable hook-name and skip-prepare-infra flagf for sam local start-api (#5217)

* Enable hook-name flag for sam local start-api

* Format files

* test: Terraform local start-api integration tests base (#5240)

* feat: update SAM CLI with latest App Templates commit hash (#5211)

* feat: updating app templates repo hash with (a34f563f067e13df3eb350d36461b99397b6cda6)

* dummy change to trigger checks

* revert dummy commit

---------

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>

* Enable hook-name flag for sam local start-api

* Format files

* fix: fix failing Terraform integration test cases (#5218)

* fix: fix the failing terraform integration test cases

* fix: fix the resource address while accessing the module config resources

* fix: fix checking the experimental log integration test cases

* chore: bump version to 1.85.0 (#5226)

* chore: use the SAR Application created in testing accounts (#5221)

* chore: update aws_lambda_builders to 1.32.0 (#5215)

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>

* feat: Added linking Gateway Method to Lambda Authorizer (#5228)

* Added linking method to authorizer

* Fixed docstring spelling mistake

---------

Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>

* feat: Return early during linking if no destination resources are found (#5220)

* Returns during linking if no destination resources are found

* Updated comment to correctly reflect state

* Cleaned extra word

---------

Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>

* chore: Strengthen wording on "no Auth" during deploy (#5231)

Co-authored-by: Jacob Fuss <jfuss@users.noreply.github.com>
Co-authored-by: Sriram Madapusi Vasudevan <3770774+sriram-mv@users.noreply.github.com>

* feat: Link Lambda Authorizer to Rest API (#5219)

* Link RestApiId property for Lambda Authorizers

* Updated docstring

* Format files

---------

Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>

* Terraform start-api integration tests

* Add test files

* Uncomment skip

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Mohamed Elasmar <71043312+moelasmar@users.noreply.github.com>
Co-authored-by: Lucas <12496191+lucashuy@users.noreply.github.com>
Co-authored-by: Jacob Fuss <32497805+jfuss@users.noreply.github.com>
Co-authored-by: Jacob Fuss <jfuss@users.noreply.github.com>
Co-authored-by: Sriram Madapusi Vasudevan <3770774+sriram-mv@users.noreply.github.com>

* feat: Added OpenApi body integration testing and updated property builder (#5291)

* Added OpenApi body integration testing and updated property builder

* Added more test cases

* Changed tearDown to tearDownClass

* Updated JSON body parser to handle parsing errors and added unit tests

* Removed V1 references

* feat: Terraform Authorizer resource testing (#5270)

* Added authorizer project

* Added project files

* Removed extra print

* Add request based authorizer testing

* test: Test the unsupported limitations for local start api (#5309)

* test: Test the unsupported limitations for local start api

* fix lint issues

* apply pr comments

* fix: Bug Bash UX Issues (#5387)

* Fix bug bash UX issues

* Fix beta warning printing extra characters

* Fix authorizer logging

---------

Co-authored-by: Daniel Mil <84205762+mildaniel@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Lucas <12496191+lucashuy@users.noreply.github.com>
Co-authored-by: Jacob Fuss <32497805+jfuss@users.noreply.github.com>
Co-authored-by: Jacob Fuss <jfuss@users.noreply.github.com>
Co-authored-by: Sriram Madapusi Vasudevan <3770774+sriram-mv@users.noreply.github.com>

* Updated warning message about missing function in template (#5347)

Co-authored-by: Wing Fung Lau <4760060+hawflau@users.noreply.github.com>

* chore(deps-dev): bump types-pywin32 in /requirements (#5436)

Bumps [types-pywin32](https://github.com/python/typeshed) from 306.0.0.0 to 306.0.0.2.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pywin32
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: use latest python version (#5439)

* chore: remove the CDK SAM CLI integration testing and depend on the same test cases defined in CDK repo (#5410)

* chore: fix CDK Appveyor job and deprecate testing CDK V1

* move CDK testing to GH Actions

* fix spelling mistake

* run only on aws-sam-cli repo

* delete Appveyor Iac integration job

* change cron schedule

* update lambda functions to only use py3.9

* test on my github repo

* run the GH action only on aws-sam-cli repo

* update lambda functions to only use py3.9

* test on my github repo

* run the GH action only on aws-sam-cli repo

* chore: remove the CDK SAM CLI integration testing and depend on the same test cases defined in CDK repo.

* chore: use amazon ecr credential helper in windows appveyor (#5446)

* chore: bump version to 1.90.0 (#5448)

* fix: Handler path mapping for layer-wrapped esbuild functions (#5450)

* fix: Layer wrapping esbuild function handlers

* Remove unused import

* Use nodejs18 in tests

* fix: fix macos reproducable task and gh actions (#5455)

* feat(sync): support build-image option (#5441)

* feat(sync): support build-image option

* chore: adding build image option on help option

* fix: Avoid Certain Depedendency Version (#5460)

* Avoid broken click version

* Pin boto3 and jsonschema

* Update reproducible reqs

* Ignore deprecation warnings in pytest

* Pin jsonschema

* feat: Abstract SamConfig (#5208)

* Abstract SamConfig and decouple TOML logic

* Fix documentation and comments

* Generalize exception for FileManager

* Remove FileManager logic to its own file

* Fix bug in setting a default FileManager

* Implement requested changes
This includes additional logging messages, as well as explicitly requiring file extensions

* Include supported extensions in log call

* Implement requested changes

* Update docstrings

* Refactor changes to preserve TOML comments

* …
  • Loading branch information
21 people committed Jul 14, 2023
1 parent 2ba0b72 commit 0d2318d
Show file tree
Hide file tree
Showing 2 changed files with 179 additions and 5 deletions.
164 changes: 162 additions & 2 deletions schema/samcli.json
Original file line number Diff line number Diff line change
Expand Up @@ -143,9 +143,169 @@
"properties": {
"parameters": {
"title": "Parameters for the deploy command",
"description": "Available parameters for the deploy command:\n",
"description": "Available parameters for the deploy command:\n* guided:\nSpecify this flag to allow SAM CLI to guide you through the deployment using guided prompts.\n* template_file:\nAWS SAM template which references built artifacts for resources in the template. (if applicable)\n* no_execute_changeset:\nIndicates whether to execute the change set. Specify this flag to view stack changes before executing the change set.\n* fail_on_empty_changeset:\nSpecify whether AWS SAM CLI should return a non-zero exit code if there are no changes to be made to the stack. Defaults to a non-zero exit code.\n* confirm_changeset:\nPrompt to confirm if the computed changeset is to be deployed by SAM CLI.\n* disable_rollback:\nPreserves the state of previously provisioned resources when an operation fails.\n* on_failure:\nProvide an action to determine what will happen when a stack fails to create. Three actions are available:\n\n- ROLLBACK: This will rollback a stack to a previous known good state.\n\n- DELETE: The stack will rollback to a previous state if one exists, otherwise the stack will be deleted.\n\n- DO_NOTHING: The stack will not rollback or delete, this is the same as disabling rollback.\n\nDefault behaviour is ROLLBACK.\n\n\n\nThis option is mutually exclusive with --disable-rollback/--no-disable-rollback. You can provide\n--on-failure or --disable-rollback/--no-disable-rollback but not both at the same time.\n* stack_name:\nName of the AWS CloudFormation stack.\n* s3_bucket:\nAWS S3 bucket where artifacts referenced in the template are uploaded.\n* image_repository:\nAWS ECR repository URI where artifacts referenced in the template are uploaded.\n* image_repositories:\nMapping of Function Logical ID to AWS ECR Repository URI.\n\nExample: Function_Logical_ID=ECR_Repo_Uri\nThis option can be specified multiple times.\n* force_upload:\nIndicates whether to override existing files in the S3 bucket. Specify this flag to upload artifacts even if they match existing artifacts in the S3 bucket.\n* s3_prefix:\nPrefix name that is added to the artifact's name when it is uploaded to the AWS S3 bucket.\n* kms_key_id:\nThe ID of an AWS KMS key that is used to encrypt artifacts that are at rest in the AWS S3 bucket.\n* role_arn:\nARN of an IAM role that AWS Cloudformation assumes when executing a deployment change set.\n* use_json:\nIndicates whether to use JSON as the format for the output AWS CloudFormation template. YAML is used by default.\n* resolve_s3:\nAutomatically resolve AWS S3 bucket for non-guided deployments. Enabling this option will also create a managed default AWS S3 bucket for you. If one does not provide a --s3-bucket value, the managed bucket will be used. Do not use --guided with this option.\n* resolve_image_repos:\nAutomatically create and delete ECR repositories for image-based functions in non-guided deployments. A companion stack containing ECR repos for each function will be deployed along with the template stack. Automatically created image repositories will be deleted if the corresponding functions are removed.\n* metadata:\nMap of metadata to attach to ALL the artifacts that are referenced in the template.\n* notification_arns:\nARNs of SNS topics that AWS Cloudformation associates with the stack.\n* tags:\nList of tags to associate with the stack.\n* parameter_overrides:\nString that contains AWS CloudFormation parameter overrides encoded as key=value pairs.\n* signing_profiles:\nA string that contains Code Sign configuration parameters as FunctionOrLayerNameToSign=SigningProfileName:SigningProfileOwner Since signing profile owner is optional, it could also be written as FunctionOrLayerNameToSign=SigningProfileName\n* no_progressbar:\nDoes not showcase a progress bar when uploading artifacts to S3 and pushing docker images to ECR\n* capabilities:\nList of capabilities that one must specify before AWS Cloudformation can create certain stacks.\n\nAccepted Values: CAPABILITY_IAM, CAPABILITY_NAMED_IAM, CAPABILITY_RESOURCE_POLICY, CAPABILITY_AUTO_EXPAND.\n\nLearn more at: https://docs.aws.amazon.com/serverlessrepo/latest/devguide/acknowledging-application-capabilities.html\n* profile:\nSelect a specific profile from your credential file to get AWS credentials.\n* region:\nSet the AWS Region of the service. (e.g. us-east-1)\n* beta_features:\nEnable/Disable beta features.\n* debug:\nTurn on debug logging to print debug message generated by AWS SAM CLI and display timestamps.",
"type": "object",
"properties": {}
"properties": {
"guided": {
"title": "guided",
"type": "boolean",
"description": "Specify this flag to allow SAM CLI to guide you through the deployment using guided prompts."
},
"template_file": {
"title": "template_file",
"type": "string",
"description": "AWS SAM template which references built artifacts for resources in the template. (if applicable)",
"default": "template.[yaml|yml|json]"
},
"no_execute_changeset": {
"title": "no_execute_changeset",
"type": "boolean",
"description": "Indicates whether to execute the change set. Specify this flag to view stack changes before executing the change set."
},
"fail_on_empty_changeset": {
"title": "fail_on_empty_changeset",
"type": "boolean",
"description": "Specify whether AWS SAM CLI should return a non-zero exit code if there are no changes to be made to the stack. Defaults to a non-zero exit code.",
"default": true
},
"confirm_changeset": {
"title": "confirm_changeset",
"type": "boolean",
"description": "Prompt to confirm if the computed changeset is to be deployed by SAM CLI."
},
"disable_rollback": {
"title": "disable_rollback",
"type": "boolean",
"description": "Preserves the state of previously provisioned resources when an operation fails."
},
"on_failure": {
"title": "on_failure",
"type": "string",
"description": "Provide an action to determine what will happen when a stack fails to create. Three actions are available:\n\n- ROLLBACK: This will rollback a stack to a previous known good state.\n\n- DELETE: The stack will rollback to a previous state if one exists, otherwise the stack will be deleted.\n\n- DO_NOTHING: The stack will not rollback or delete, this is the same as disabling rollback.\n\nDefault behaviour is ROLLBACK.\n\n\n\nThis option is mutually exclusive with --disable-rollback/--no-disable-rollback. You can provide\n--on-failure or --disable-rollback/--no-disable-rollback but not both at the same time.",
"default": "ROLLBACK",
"enum": [
"ROLLBACK",
"DELETE",
"DO_NOTHING"
]
},
"stack_name": {
"title": "stack_name",
"type": "string",
"description": "Name of the AWS CloudFormation stack."
},
"s3_bucket": {
"title": "s3_bucket",
"type": "string",
"description": "AWS S3 bucket where artifacts referenced in the template are uploaded."
},
"image_repository": {
"title": "image_repository",
"type": "string",
"description": "AWS ECR repository URI where artifacts referenced in the template are uploaded."
},
"image_repositories": {
"title": "image_repositories",
"type": "string",
"description": "Mapping of Function Logical ID to AWS ECR Repository URI.\n\nExample: Function_Logical_ID=ECR_Repo_Uri\nThis option can be specified multiple times."
},
"force_upload": {
"title": "force_upload",
"type": "boolean",
"description": "Indicates whether to override existing files in the S3 bucket. Specify this flag to upload artifacts even if they match existing artifacts in the S3 bucket."
},
"s3_prefix": {
"title": "s3_prefix",
"type": "string",
"description": "Prefix name that is added to the artifact's name when it is uploaded to the AWS S3 bucket."
},
"kms_key_id": {
"title": "kms_key_id",
"type": "string",
"description": "The ID of an AWS KMS key that is used to encrypt artifacts that are at rest in the AWS S3 bucket."
},
"role_arn": {
"title": "role_arn",
"type": "string",
"description": "ARN of an IAM role that AWS Cloudformation assumes when executing a deployment change set."
},
"use_json": {
"title": "use_json",
"type": "boolean",
"description": "Indicates whether to use JSON as the format for the output AWS CloudFormation template. YAML is used by default."
},
"resolve_s3": {
"title": "resolve_s3",
"type": "boolean",
"description": "Automatically resolve AWS S3 bucket for non-guided deployments. Enabling this option will also create a managed default AWS S3 bucket for you. If one does not provide a --s3-bucket value, the managed bucket will be used. Do not use --guided with this option."
},
"resolve_image_repos": {
"title": "resolve_image_repos",
"type": "boolean",
"description": "Automatically create and delete ECR repositories for image-based functions in non-guided deployments. A companion stack containing ECR repos for each function will be deployed along with the template stack. Automatically created image repositories will be deleted if the corresponding functions are removed."
},
"metadata": {
"title": "metadata",
"type": "string",
"description": "Map of metadata to attach to ALL the artifacts that are referenced in the template."
},
"notification_arns": {
"title": "notification_arns",
"type": "array",
"description": "ARNs of SNS topics that AWS Cloudformation associates with the stack.",
"items": {
"type": "string"
}
},
"tags": {
"title": "tags",
"type": "string",
"description": "List of tags to associate with the stack."
},
"parameter_overrides": {
"title": "parameter_overrides",
"type": "string",
"description": "String that contains AWS CloudFormation parameter overrides encoded as key=value pairs."
},
"signing_profiles": {
"title": "signing_profiles",
"type": "string",
"description": "A string that contains Code Sign configuration parameters as FunctionOrLayerNameToSign=SigningProfileName:SigningProfileOwner Since signing profile owner is optional, it could also be written as FunctionOrLayerNameToSign=SigningProfileName"
},
"no_progressbar": {
"title": "no_progressbar",
"type": "boolean",
"description": "Does not showcase a progress bar when uploading artifacts to S3 and pushing docker images to ECR"
},
"capabilities": {
"title": "capabilities",
"type": "array",
"description": "List of capabilities that one must specify before AWS Cloudformation can create certain stacks.\n\nAccepted Values: CAPABILITY_IAM, CAPABILITY_NAMED_IAM, CAPABILITY_RESOURCE_POLICY, CAPABILITY_AUTO_EXPAND.\n\nLearn more at: https://docs.aws.amazon.com/serverlessrepo/latest/devguide/acknowledging-application-capabilities.html",
"items": {
"type": "string"
}
},
"profile": {
"title": "profile",
"type": "string",
"description": "Select a specific profile from your credential file to get AWS credentials."
},
"region": {
"title": "region",
"type": "string",
"description": "Set the AWS Region of the service. (e.g. us-east-1)"
},
"beta_features": {
"title": "beta_features",
"type": "boolean",
"description": "Enable/Disable beta features."
},
"debug": {
"title": "debug",
"type": "boolean",
"description": "Turn on debug logging to print debug message generated by AWS SAM CLI and display timestamps."
}
}
}
},
"required": [
Expand Down
20 changes: 17 additions & 3 deletions schema/schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,17 @@ class SamCliParameterSchema:
type: str
description: str = ""
default: Optional[Any] = None
items: Optional[str] = None
choices: Optional[Any] = None

def to_schema(self) -> Dict[str, Any]:
"""Return the JSON schema representation of the SAM CLI parameter."""
param = {}
param: Dict[str, Any] = {}
param.update({"title": self.name, "type": self.type, "description": self.description})
if self.default:
param.update({"default": self.default})
if self.items:
param.update({"items": {"type": self.items}})
if self.choices:
param.update({"enum": self.choices})
return param
Expand Down Expand Up @@ -136,7 +139,10 @@ def format_param(param: click.core.Option) -> SamCliParameterSchema:
formatted_param_type = param_type or "string"

formatted_param: SamCliParameterSchema = SamCliParameterSchema(
param.name or "", formatted_param_type, clean_text(param.help or "")
param.name or "",
formatted_param_type,
clean_text(param.help or ""),
items="string" if formatted_param_type == "array" else None,
)

if param.default:
Expand All @@ -150,7 +156,15 @@ def format_param(param: click.core.Option) -> SamCliParameterSchema:

def get_params_from_command(cli) -> List[SamCliParameterSchema]:
"""Given a CLI object, return a list of all parameters in that CLI, formatted as SamCliParameterSchema objects."""
return [format_param(param) for param in cli.params if param.name and isinstance(param, click.core.Option)]
params_to_exclude = [
"config_env", # shouldn't allow different environment from where the config is being read from
"config_file", # shouldn't allow reading another file within current file
]
return [
format_param(param)
for param in cli.params
if param.name and isinstance(param, click.core.Option) and param.name not in params_to_exclude
]


def retrieve_command_structure(package_name: str) -> List[SamCliCommandSchema]:
Expand Down

0 comments on commit 0d2318d

Please sign in to comment.