-
Notifications
You must be signed in to change notification settings - Fork 391
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(parser): add support for Pydantic v2 (#2733)
* pydantic v2: initial tests * pydantic v2: comment * pydantic v2: new workflow * pydantic v2: comment * pydantic v2: mypy fix * pydantic v2: fix v2 compability * pydantic v2: fix last things * pydantic v2: improving comments * pydantic v2: addressing Heitor's feedback * pydantic v2: creating pydantic v2 specific test * pydantic v2: using fixture to clean the code * pydanticv2: reverting Optional fields * Removing the validators. Pydantic bug was fixed Signed-off-by: Cavalcante Damascena <lcdama@b0be8355743f.ant.amazon.com> * Adding pytest ignore messages for Pydantic v2 Signed-off-by: Cavalcante Damascena <lcdama@b0be8355743f.ant.amazon.com> * Adding pytest ignore messages for Pydantic v2 Signed-off-by: Cavalcante Damascena <lcdama@b0be8355743f.ant.amazon.com> * pydanticv2: removing duplicated workflow + disabling warning * pydanticv2: adding documentation * Adding cache to disable pydantic warnings Signed-off-by: Cavalcante Damascena <lcdama@b0be8355743f.ant.amazon.com> * Adjusting workflow Signed-off-by: Cavalcante Damascena <lcdama@b0be8355743f.ant.amazon.com> * Addressing Heitor's feedback Signed-off-by: Cavalcante Damascena <lcdama@b0be8355743f.ant.amazon.com> * Removed codecov upload Signed-off-by: Cavalcante Damascena <lcdama@b0be8355743f.ant.amazon.com> --------- Signed-off-by: Cavalcante Damascena <lcdama@b0be8355743f.ant.amazon.com> Co-authored-by: Cavalcante Damascena <lcdama@b0be8355743f.ant.amazon.com>
- Loading branch information
1 parent
1dd46b6
commit 021076e
Showing
27 changed files
with
299 additions
and
106 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
name: Code quality - Pydanticv2 | ||
|
||
# PROCESS | ||
# | ||
# 1. Install all dependencies and spin off containers for all supported Python versions | ||
# 2. Run code formatters and linters (various checks) for code standard | ||
# 3. Run static typing checker for potential bugs | ||
# 4. Run entire test suite for regressions except end-to-end (unit, functional, performance) | ||
# 5. Run static analysis (in addition to CodeQL) for common insecure code practices | ||
# 6. Run complexity baseline to avoid error-prone bugs and keep maintenance lower | ||
# 7. Collect and report on test coverage | ||
|
||
# USAGE | ||
# | ||
# Always triggered on new PRs, PR changes and PR merge. | ||
|
||
|
||
on: | ||
pull_request: | ||
paths: | ||
- "aws_lambda_powertools/**" | ||
- "tests/**" | ||
- "pyproject.toml" | ||
- "poetry.lock" | ||
- "mypy.ini" | ||
branches: | ||
- develop | ||
push: | ||
paths: | ||
- "aws_lambda_powertools/**" | ||
- "tests/**" | ||
- "pyproject.toml" | ||
- "poetry.lock" | ||
- "mypy.ini" | ||
branches: | ||
- develop | ||
|
||
permissions: | ||
contents: read | ||
|
||
jobs: | ||
quality_check: | ||
runs-on: ubuntu-latest | ||
strategy: | ||
max-parallel: 4 | ||
matrix: | ||
python-version: ["3.7", "3.8", "3.9", "3.10"] | ||
env: | ||
PYTHON: "${{ matrix.python-version }}" | ||
permissions: | ||
contents: read # checkout code only | ||
steps: | ||
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 | ||
- name: Install poetry | ||
run: pipx install poetry | ||
- name: Set up Python ${{ matrix.python-version }} | ||
uses: actions/setup-python@bd6b4b6205c4dbad673328db7b31b7fab9e241c0 # v4.6.1 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
cache: "poetry" | ||
- name: Removing dev dependencies locked to Pydantic v1 | ||
run: poetry remove cfn-lint | ||
- name: Replacing Pydantic v1 with v2 > 2.0.3 | ||
run: poetry add "pydantic=^2.0.3" | ||
- name: Install dependencies | ||
run: make dev | ||
- name: Formatting and Linting | ||
run: make lint | ||
- name: Static type checking | ||
run: make mypy | ||
- name: Test with pytest | ||
run: make test | ||
- name: Security baseline | ||
run: make security-baseline | ||
- name: Complexity baseline | ||
run: make complexity-baseline |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
import functools | ||
|
||
|
||
@functools.lru_cache(maxsize=None) | ||
def disable_pydantic_v2_warning(): | ||
""" | ||
Disables the Pydantic version 2 warning by filtering out the related warnings. | ||
This function checks the version of Pydantic currently installed and if it is version 2, | ||
it filters out the PydanticDeprecationWarning and PydanticDeprecatedSince20 warnings | ||
to suppress them. | ||
Since we only need to run the code once, we are using lru_cache to improve performance. | ||
Note: This function assumes that Pydantic is installed. | ||
Usage: | ||
disable_pydantic_v2_warning() | ||
""" | ||
try: | ||
from pydantic import __version__ | ||
|
||
version = __version__.split(".") | ||
|
||
if int(version[0]) == 2: | ||
import warnings | ||
|
||
from pydantic import PydanticDeprecatedSince20, PydanticDeprecationWarning | ||
|
||
warnings.filterwarnings("ignore", category=PydanticDeprecationWarning) | ||
warnings.filterwarnings("ignore", category=PydanticDeprecatedSince20) | ||
|
||
except ImportError: | ||
pass |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.