diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 585f4a7..19fce0a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -144,8 +144,10 @@ jobs: - name: Check with pip-audit # until https://github.com/astral-sh/ruff/issues/8277 + # TODO: Re-enable pip vulnerability checking when pip 25.3 is released (currently disabled for pip 25.2 due to GHSA-4xh5-x5gv-qwph) + # https://github.com/pypa/pip/issues/13607 run: - pdm run pip-audit --progress-spinner off --skip-editable --verbose + pdm run pip-audit --progress-spinner off --skip-editable --verbose --ignore-vuln GHSA-4xh5-x5gv-qwph - name: Check with ruff diff --git a/pyproject.toml b/pyproject.toml index 3cc58a2..cde93f1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -226,6 +226,8 @@ ignore = [ "ANN401", # Dynamically typed expressions (typing.Any) are disallowed "ASYNC210", # TODO Async functions should not call blocking HTTP methods "ASYNC230", # TODO Async functions should not open files with blocking methods like `open` + "ASYNC240", # TODO Async functions should not use os.path methods, use trio.Path or anyio.path + "ASYNC250", # TODO Blocking call to input() in async context "COM812", # Trailing comma missing "D1", # Missing docstring in ... "D200", # One-line docstring should fit on one line @@ -252,6 +254,7 @@ ignore = [ "PERF203", # `try`-`except` within a loop incurs performance overhead "RET504", # Unnecessary assignment to `...` before `return` statement "PLR6301", # Method `...` could be a function, class method, or static method + "PLR0913", # Too many arguments in function definition (needed to match parent signature) "PYI041", # Use `float` instead of `int | float` "SIM102", # Use a single `if` statement instead of nested `if` statements "SIM105", # Use `contextlib.suppress(TimeoutError)` instead of `try`-`except`-`pass` diff --git a/src/kleinanzeigen_bot/utils/pydantics.py b/src/kleinanzeigen_bot/utils/pydantics.py index f023cc0..2624363 100644 --- a/src/kleinanzeigen_bot/utils/pydantics.py +++ b/src/kleinanzeigen_bot/utils/pydantics.py @@ -2,7 +2,7 @@ # SPDX-License-Identifier: AGPL-3.0-or-later # SPDX-ArtifactOfProjectHomePage: https://github.com/Second-Hand-Friends/kleinanzeigen-bot/ from gettext import gettext as _ -from typing import Any, cast +from typing import Any, Literal, cast from pydantic import BaseModel, ValidationError from pydantic_core import InitErrorDetails @@ -23,6 +23,7 @@ class ContextualModel(BaseModel): obj:Any, *, strict:bool | None = None, + extra:Literal["allow", "ignore", "forbid"] | None = None, from_attributes:bool | None = None, context:Any | None = None, by_alias:bool | None = None, @@ -36,6 +37,7 @@ class ContextualModel(BaseModel): return super().model_validate( obj, strict = strict, + extra = extra, from_attributes = from_attributes, context = context, by_alias = by_alias,