Skip to content

Commit ddad859

Browse files
fix: Support ruff 0.12 (#1270)
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [ruff](https://docs.astral.sh/ruff) ([source](https://redirect.github.com/astral-sh/ruff), [changelog](https://redirect.github.com/astral-sh/ruff/blob/main/CHANGELOG.md)) | `>=0.2,<0.12` -> `>=0.2,<0.13` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/ruff/0.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/ruff/0.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/ruff/0.11.13/0.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/ruff/0.11.13/0.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>astral-sh/ruff (ruff)</summary> ### [`v0.12.0`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#0120) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.11.13...0.12.0) Check out the [blog post](https://astral.sh/blog/ruff-v0.12.0) for a migration guide and overview of the changes! ##### Breaking changes - **Detection of more syntax errors** Ruff now detects version-related syntax errors, such as the use of the `match` statement on Python versions before 3.10, and syntax errors emitted by CPython's compiler, such as irrefutable `match` patterns before the final `case` arm. - **New default Python version handling for syntax errors** Ruff will default to the *latest* supported Python version (3.13) when checking for the version-related syntax errors mentioned above to prevent false positives in projects without a Python version configured. The default in all other cases, like applying lint rules, is unchanged and remains at the minimum supported Python version (3.9). - **Updated f-string formatting** Ruff now formats multi-line f-strings with format specifiers to avoid adding a line break after the format specifier. This addresses a change to the Python grammar in version 3.13.4 that made such a line break a syntax error. - **`rust-toolchain.toml` is no longer included in source distributions** The `rust-toolchain.toml` is used to specify a higher Rust version than Ruff's minimum supported Rust version (MSRV) for development and building release artifacts. However, when present in source distributions, it would also cause downstream package maintainers to pull in the same Rust toolchain, even if their available toolchain was MSRV-compatible. ##### Removed Rules The following rules have been removed: - [`suspicious-xmle-tree-usage`](https://docs.astral.sh/ruff/rules/suspicious-xmle-tree-usage/) (`S320`) ##### Deprecated Rules The following rules have been deprecated: - [`pandas-df-variable-name`](https://docs.astral.sh/ruff/rules/pandas-df-variable-name/) ##### Stabilization The following rules have been stabilized and are no longer in preview: - [`for-loop-writes`](https://docs.astral.sh/ruff/rules/for-loop-writes) (`FURB122`) - [`check-and-remove-from-set`](https://docs.astral.sh/ruff/rules/check-and-remove-from-set) (`FURB132`) - [`verbose-decimal-constructor`](https://docs.astral.sh/ruff/rules/verbose-decimal-constructor) (`FURB157`) - [`fromisoformat-replace-z`](https://docs.astral.sh/ruff/rules/fromisoformat-replace-z) (`FURB162`) - [`int-on-sliced-str`](https://docs.astral.sh/ruff/rules/int-on-sliced-str) (`FURB166`) - [`exc-info-outside-except-handler`](https://docs.astral.sh/ruff/rules/exc-info-outside-except-handler) (`LOG014`) - [`import-outside-top-level`](https://docs.astral.sh/ruff/rules/import-outside-top-level) (`PLC0415`) - [`unnecessary-dict-index-lookup`](https://docs.astral.sh/ruff/rules/unnecessary-dict-index-lookup) (`PLR1733`) - [`nan-comparison`](https://docs.astral.sh/ruff/rules/nan-comparison) (`PLW0177`) - [`eq-without-hash`](https://docs.astral.sh/ruff/rules/eq-without-hash) (`PLW1641`) - [`pytest-parameter-with-default-argument`](https://docs.astral.sh/ruff/rules/pytest-parameter-with-default-argument) (`PT028`) - [`pytest-warns-too-broad`](https://docs.astral.sh/ruff/rules/pytest-warns-too-broad) (`PT030`) - [`pytest-warns-with-multiple-statements`](https://docs.astral.sh/ruff/rules/pytest-warns-with-multiple-statements) (`PT031`) - [`invalid-formatter-suppression-comment`](https://docs.astral.sh/ruff/rules/invalid-formatter-suppression-comment) (`RUF028`) - [`dataclass-enum`](https://docs.astral.sh/ruff/rules/dataclass-enum) (`RUF049`) - [`class-with-mixed-type-vars`](https://docs.astral.sh/ruff/rules/class-with-mixed-type-vars) (`RUF053`) - [`unnecessary-round`](https://docs.astral.sh/ruff/rules/unnecessary-round) (`RUF057`) - [`starmap-zip`](https://docs.astral.sh/ruff/rules/starmap-zip) (`RUF058`) - [`non-pep604-annotation-optional`](https://docs.astral.sh/ruff/rules/non-pep604-annotation-optional) (`UP045`) - [`non-pep695-generic-class`](https://docs.astral.sh/ruff/rules/non-pep695-generic-class) (`UP046`) - [`non-pep695-generic-function`](https://docs.astral.sh/ruff/rules/non-pep695-generic-function) (`UP047`) - [`private-type-parameter`](https://docs.astral.sh/ruff/rules/private-type-parameter) (`UP049`) The following behaviors have been stabilized: - \[`collection-literal-concatenation`] (`RUF005`) now recognizes slices, in addition to list literals and variables. - The fix for \[`readlines-in-for`] (`FURB129`) is now marked as always safe. - \[`if-else-block-instead-of-if-exp`] (`SIM108`) will now further simplify expressions to use `or` instead of an `if` expression, where possible. - \[`unused-noqa`] (`RUF100`) now checks for file-level `noqa` comments as well as inline comments. - \[`subprocess-without-shell-equals-true`] (`S603`) now accepts literal strings, as well as lists and tuples of literal strings, as trusted input. - \[`boolean-type-hint-positional-argument`] (`FBT001`) now applies to types that include `bool`, like `bool | int` or `typing.Optional[bool]`, in addition to plain `bool` annotations. - \[`non-pep604-annotation-union`] (`UP007`) has now been split into two rules. `UP007` now applies only to `typing.Union`, while \[`non-pep604-annotation-optional`] (`UP045`) checks for use of `typing.Optional`. `UP045` has also been stabilized in this release, but you may need to update existing `include`, `ignore`, or `noqa` settings to accommodate this change. ##### Preview features - \[`ruff`] Check for non-context-manager use of `pytest.raises`, `pytest.warns`, and `pytest.deprecated_call` (`RUF061`) ([#&#8203;17368](https://redirect.github.com/astral-sh/ruff/pull/17368)) - \[syntax-errors] Raise unsupported syntax error for template strings prior to Python 3.14 ([#&#8203;18664](https://redirect.github.com/astral-sh/ruff/pull/18664)) ##### Bug fixes - Add syntax error when conversion flag does not immediately follow exclamation mark ([#&#8203;18706](https://redirect.github.com/astral-sh/ruff/pull/18706)) - Add trailing space around `readlines` ([#&#8203;18542](https://redirect.github.com/astral-sh/ruff/pull/18542)) - Fix `\r` and `\r\n` handling in t- and f-string debug texts ([#&#8203;18673](https://redirect.github.com/astral-sh/ruff/pull/18673)) - Hug closing `}` when f-string expression has a format specifier ([#&#8203;18704](https://redirect.github.com/astral-sh/ruff/pull/18704)) - \[`flake8-pyi`] Avoid syntax error in the case of starred and keyword arguments (`PYI059`) ([#&#8203;18611](https://redirect.github.com/astral-sh/ruff/pull/18611)) - \[`flake8-return`] Fix `RET504` autofix generating a syntax error ([#&#8203;18428](https://redirect.github.com/astral-sh/ruff/pull/18428)) - \[`pep8-naming`] Suppress fix for `N804` and `N805` if the recommended name is already used ([#&#8203;18472](https://redirect.github.com/astral-sh/ruff/pull/18472)) - \[`pycodestyle`] Avoid causing a syntax error in expressions spanning multiple lines (`E731`) ([#&#8203;18479](https://redirect.github.com/astral-sh/ruff/pull/18479)) - \[`pyupgrade`] Suppress `UP008` if `super` is shadowed ([#&#8203;18688](https://redirect.github.com/astral-sh/ruff/pull/18688)) - \[`refurb`] Parenthesize lambda and ternary expressions (`FURB122`, `FURB142`) ([#&#8203;18592](https://redirect.github.com/astral-sh/ruff/pull/18592)) - \[`ruff`] Handle extra arguments to `deque` (`RUF037`) ([#&#8203;18614](https://redirect.github.com/astral-sh/ruff/pull/18614)) - \[`ruff`] Preserve parentheses around `deque` in fix for `unnecessary-empty-iterable-within-deque-call` (`RUF037`) ([#&#8203;18598](https://redirect.github.com/astral-sh/ruff/pull/18598)) - \[`ruff`] Validate arguments before offering a fix (`RUF056`) ([#&#8203;18631](https://redirect.github.com/astral-sh/ruff/pull/18631)) - \[`ruff`] Skip fix for `RUF059` if dummy name is already bound ([#&#8203;18509](https://redirect.github.com/astral-sh/ruff/pull/18509)) - \[`pylint`] Fix `PLW0128` to check assignment targets in square brackets and after asterisks ([#&#8203;18665](https://redirect.github.com/astral-sh/ruff/pull/18665)) ##### Rule changes - Fix false positive on mutations in `return` statements (`B909`) ([#&#8203;18408](https://redirect.github.com/astral-sh/ruff/pull/18408)) - Treat `ty:` comments as pragma comments ([#&#8203;18532](https://redirect.github.com/astral-sh/ruff/pull/18532)) - \[`flake8-pyi`] Apply `custom-typevar-for-self` to string annotations (`PYI019`) ([#&#8203;18311](https://redirect.github.com/astral-sh/ruff/pull/18311)) - \[`pyupgrade`] Don't offer a fix for `Optional[None]` (`UP007`, `UP045)` ([#&#8203;18545](https://redirect.github.com/astral-sh/ruff/pull/18545)) - \[`pyupgrade`] Fix `super(__class__, self)` detection (`UP008`) ([#&#8203;18478](https://redirect.github.com/astral-sh/ruff/pull/18478)) - \[`refurb`] Make the fix for `FURB163` unsafe for `log2`, `log10`, `*args`, and deleted comments ([#&#8203;18645](https://redirect.github.com/astral-sh/ruff/pull/18645)) ##### Server - Support cancellation requests ([#&#8203;18627](https://redirect.github.com/astral-sh/ruff/pull/18627)) ##### Documentation - Drop confusing second `*` from glob pattern example for `per-file-target-version` ([#&#8203;18709](https://redirect.github.com/astral-sh/ruff/pull/18709)) - Update Neovim configuration examples ([#&#8203;18491](https://redirect.github.com/astral-sh/ruff/pull/18491)) - \[`pylint`] De-emphasize `__hash__ = Parent.__hash__` (`PLW1641`) ([#&#8203;18613](https://redirect.github.com/astral-sh/ruff/pull/18613)) - \[`refurb`] Add a note about float literal handling (`FURB157`) ([#&#8203;18615](https://redirect.github.com/astral-sh/ruff/pull/18615)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/openapi-generators/openapi-python-client). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC41MC4wIiwidXBkYXRlZEluVmVyIjoiNDAuNTAuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Dylan Anthony <[email protected]> Co-authored-by: Dylan Anthony <[email protected]>
1 parent 57e9f86 commit ddad859

File tree

20 files changed

+66
-218
lines changed

20 files changed

+66
-218
lines changed

.github/workflows/checks.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,6 @@ jobs:
101101
- name: Run mypy
102102
run: pdm mypy --show-error-codes
103103

104-
- name: Lint
105-
run: pdm run ruff check .
106-
107104
- name: Run unit tests only # snapshots are expected to fail
108105
run: pdm unit_test
109106

openapi_python_client/cli.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,14 @@
66

77
import typer
88

9-
from openapi_python_client import MetaType
9+
from openapi_python_client import MetaType, __version__
1010
from openapi_python_client.config import Config, ConfigFile
1111
from openapi_python_client.parser.errors import ErrorLevel, GeneratorError, ParseError
1212

1313
app = typer.Typer(name="openapi-python-client")
1414

1515

1616
def _version_callback(value: bool) -> None:
17-
from openapi_python_client import __version__
18-
1917
if value:
2018
typer.echo(f"openapi-python-client version: {__version__}")
2119
raise typer.Exit()
@@ -153,7 +151,7 @@ def generate(
153151
),
154152
) -> None:
155153
"""Generate a new OpenAPI Client library"""
156-
from . import generate
154+
from . import generate # noqa: PLC0415
157155

158156
config = _process_config(
159157
url=url,

openapi_python_client/parser/properties/any.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def build(
3333

3434
@classmethod
3535
def convert_value(cls, value: Any) -> Value | None:
36-
from .string import StringProperty
36+
from .string import StringProperty # noqa: PLC0415
3737

3838
if value is None:
3939
return value

openapi_python_client/parser/properties/list_property.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def build(
5656
`(result, schemas)` where `schemas` is an updated version of the input named the same including any inner
5757
classes that were defined and `result` is either the `ListProperty` or a `PropertyError`.
5858
"""
59-
from . import property_from_data
59+
from . import property_from_data # noqa: PLC0415
6060

6161
if data.items is None and not data.prefixItems:
6262
return (

openapi_python_client/parser/properties/model_property.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,8 @@ def _process_properties( # noqa: PLR0912, PLR0911
242242
config: Config,
243243
roots: set[ReferencePath | utils.ClassName],
244244
) -> _PropertyData | PropertyError:
245-
from . import property_from_data
246-
from .merge_properties import merge_properties
245+
from . import property_from_data # noqa: PLC0415
246+
from .merge_properties import merge_properties # noqa: PLC0415
247247

248248
properties: dict[str, Property] = {}
249249
relative_imports: set[str] = set()
@@ -353,7 +353,7 @@ def _get_additional_properties(
353353
config: Config,
354354
roots: set[ReferencePath | utils.ClassName],
355355
) -> tuple[Property | None | PropertyError, Schemas]:
356-
from . import property_from_data
356+
from . import property_from_data # noqa: PLC0415
357357

358358
if schema_additional is None:
359359
return ANY_ADDITIONAL_PROPERTY, schemas

openapi_python_client/parser/properties/protocol.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ def to_docstring(self) -> str:
174174
@property
175175
def is_base_type(self) -> bool:
176176
"""Base types, represented by any other of `Property` than `ModelProperty` should not be quoted."""
177-
from . import ListProperty, ModelProperty, UnionProperty
177+
from . import ListProperty, ModelProperty, UnionProperty # noqa: PLC0415
178178

179179
return self.__class__.__name__ not in {
180180
ModelProperty.__name__,

openapi_python_client/parser/properties/schemas.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ def update_schemas_with_data(
118118
See Also:
119119
- https://swagger.io/docs/specification/using-ref/
120120
"""
121-
from . import property_from_data
121+
from . import property_from_data # noqa: PLC0415
122122

123123
prop: Union[PropertyError, Property]
124124
prop, schemas = property_from_data(

openapi_python_client/parser/properties/union.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def build(
4545
`(result, schemas)` where `schemas` is the updated version of the input `schemas` and `result` is the
4646
constructed `UnionProperty` or a `PropertyError` describing what went wrong.
4747
"""
48-
from . import property_from_data
48+
from . import property_from_data # noqa: PLC0415
4949

5050
sub_properties: list[PropertyProtocol] = []
5151

@@ -180,7 +180,7 @@ def get_lazy_imports(self, *, prefix: str) -> set[str]:
180180

181181
def validate_location(self, location: oai.ParameterLocation) -> ParseError | None:
182182
"""Returns an error if this type of property is not allowed in the given location"""
183-
from ..properties import Property
183+
from ..properties import Property # noqa: PLC0415
184184

185185
for inner_prop in self.inner_properties:
186186
if evolve(cast(Property, inner_prop), required=self.required).validate_location(location) is not None:

pdm.lock

Lines changed: 20 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ dependencies = [
1414
"python-dateutil>=2.8.1,<3.0.0",
1515
"httpx>=0.23.0,<0.29.0",
1616
"ruamel.yaml>=0.18.6,<0.19.0",
17-
"ruff>=0.2,<0.12",
17+
"ruff>=0.2,<0.13",
1818
"typing-extensions>=4.8.0,<5.0.0",
1919
]
2020
name = "openapi-python-client"

0 commit comments

Comments
 (0)