Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pyupgrade] Remove keep-runtime-typing setting #4427

Merged
merged 1 commit into from
May 14, 2023
Merged

Conversation

charliermarsh
Copy link
Member

Summary

This was implemented "by accident" before realizing that it's exactly equivalent to turning off two of our rules. (Pyupgrade doesn't have a generic mechanism for turning off individual rules, and so has dedicated flags for them.)

@charliermarsh charliermarsh added breaking Breaking API change configuration Related to settings and configuration labels May 14, 2023
@charliermarsh charliermarsh changed the title Remove keep-runtime-typing setting [pyupgrade] Remove keep-runtime-typing setting May 14, 2023
@charliermarsh charliermarsh enabled auto-merge (squash) May 14, 2023 03:10
@charliermarsh charliermarsh merged commit a69451f into main May 14, 2023
@charliermarsh charliermarsh deleted the charlie/pep branch May 14, 2023 03:12
@github-actions
Copy link
Contributor

github-actions bot commented May 14, 2023

PR Check Results

Ecosystem

✅ ecosystem check detected no changes.

Benchmark

Linux

group                                      main                                   pr
-----                                      ----                                   --
linter/all-rules/large/dataset.py          1.00     13.6±0.03ms     3.0 MB/sec    1.00     13.6±0.03ms     3.0 MB/sec
linter/all-rules/numpy/ctypeslib.py        1.00      3.4±0.01ms     5.0 MB/sec    1.00      3.3±0.01ms     5.0 MB/sec
linter/all-rules/numpy/globals.py          1.00    415.9±0.55µs     7.1 MB/sec    1.00    414.4±1.01µs     7.1 MB/sec
linter/all-rules/pydantic/types.py         1.00      5.7±0.02ms     4.5 MB/sec    1.00      5.7±0.01ms     4.5 MB/sec
linter/default-rules/large/dataset.py      1.01      6.7±0.01ms     6.1 MB/sec    1.00      6.7±0.01ms     6.1 MB/sec
linter/default-rules/numpy/ctypeslib.py    1.01   1442.8±2.45µs    11.5 MB/sec    1.00   1434.8±3.53µs    11.6 MB/sec
linter/default-rules/numpy/globals.py      1.00    160.2±0.29µs    18.4 MB/sec    1.00    160.6±2.70µs    18.4 MB/sec
linter/default-rules/pydantic/types.py     1.00      3.0±0.01ms     8.5 MB/sec    1.00      3.0±0.01ms     8.5 MB/sec
parser/large/dataset.py                    1.00      5.4±0.00ms     7.5 MB/sec    1.00      5.4±0.00ms     7.5 MB/sec
parser/numpy/ctypeslib.py                  1.00   1053.2±1.31µs    15.8 MB/sec    1.00   1057.7±0.73µs    15.7 MB/sec
parser/numpy/globals.py                    1.00    106.9±0.35µs    27.6 MB/sec    1.01    107.5±0.32µs    27.5 MB/sec
parser/pydantic/types.py                   1.00      2.3±0.00ms    11.0 MB/sec    1.00      2.3±0.00ms    11.0 MB/sec

Windows

group                                      main                                   pr
-----                                      ----                                   --
linter/all-rules/large/dataset.py          1.01     16.3±0.14ms     2.5 MB/sec    1.00     16.1±0.20ms     2.5 MB/sec
linter/all-rules/numpy/ctypeslib.py        1.01      4.1±0.06ms     4.0 MB/sec    1.00      4.1±0.04ms     4.1 MB/sec
linter/all-rules/numpy/globals.py          1.00   482.4±10.04µs     6.1 MB/sec    1.00    481.0±5.68µs     6.1 MB/sec
linter/all-rules/pydantic/types.py         1.00      6.8±0.06ms     3.8 MB/sec    1.00      6.8±0.09ms     3.8 MB/sec
linter/default-rules/large/dataset.py      1.00      8.0±0.06ms     5.1 MB/sec    1.00      8.0±0.06ms     5.1 MB/sec
linter/default-rules/numpy/ctypeslib.py    1.00  1683.0±13.39µs     9.9 MB/sec    1.01  1695.3±23.83µs     9.8 MB/sec
linter/default-rules/numpy/globals.py      1.00    188.2±2.78µs    15.7 MB/sec    1.01    189.8±3.72µs    15.5 MB/sec
linter/default-rules/pydantic/types.py     1.00      3.6±0.04ms     7.1 MB/sec    1.00      3.6±0.04ms     7.1 MB/sec
parser/large/dataset.py                    1.00      6.6±0.04ms     6.2 MB/sec    1.00      6.6±0.06ms     6.1 MB/sec
parser/numpy/ctypeslib.py                  1.00  1260.6±13.24µs    13.2 MB/sec    1.00  1261.9±14.90µs    13.2 MB/sec
parser/numpy/globals.py                    1.00    129.0±1.84µs    22.9 MB/sec    1.00    129.5±1.78µs    22.8 MB/sec
parser/pydantic/types.py                   1.00      2.8±0.03ms     9.1 MB/sec    1.00      2.8±0.03ms     9.1 MB/sec

renovate bot referenced this pull request in ixm-one/pytest-cmake-presets May 19, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [ruff](https://togithub.com/charliermarsh/ruff)
([changelog](https://togithub.com/charliermarsh/ruff/releases)) |
`^0.0.267` -> `^0.0.269` |
[![age](https://badges.renovateapi.com/packages/pypi/ruff/0.0.269/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/pypi/ruff/0.0.269/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/pypi/ruff/0.0.269/compatibility-slim/0.0.267)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/pypi/ruff/0.0.269/confidence-slim/0.0.267)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>charliermarsh/ruff</summary>

###
[`v0.0.269`](https://togithub.com/charliermarsh/ruff/releases/tag/v0.0.269)

[Compare
Source](https://togithub.com/charliermarsh/ruff/compare/v0.0.267...v0.0.269)

<!-- Release notes generated using configuration in .github/release.yml
at main -->

#### What's Changed

(This is a rerelease of `v0.0.268`, which didn't make it to PyPI due to
user error. As such, the release notes are copied below.)

##### `pycodestyle`

This release includes optimized implementations of a large portion of
`pycodestyle`, for those that use Ruff without an autoformatter.

In this initial release, the rules are being introduced under a
"nursery" flag, which requires that users explicitly select them (e.g.,
`select = ["E111"]`); in other words, these rules are not yet enabled
via `select = ["E"]`.

If you're interested in testing the `pycodestyle` rules, you can enable
them via:

```toml
select = [
    "E111", "E112", "E113", "E114", "E115", "E116", "E117",
    "E201", "E202", "E203", "E211", "E221", "E222", "E223",
    "E224", "E225", "E226", "E227", "E228", "E231", "E251",
    "E252", "E261", "E262", "E265", "E266", "E271", "E272",
    "E273", "E274", "E275",
]
```

These rules will be included as part of the `E` category in a future
release.

##### Breaking Changes

- \[`pyupgrade`] Remove `keep-runtime-typing` setting by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4427](https://togithub.com/charliermarsh/ruff/pull/4427)

##### Rules

- \[`pylint`] Add `duplicate-bases` rule by
[@&#8203;alonme](https://togithub.com/alonme) in
[https://github.com/charliermarsh/ruff/pull/4411](https://togithub.com/charliermarsh/ruff/pull/4411)
- \[`pylint`] Fix `PLW3301` auto-fix with generators by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4412](https://togithub.com/charliermarsh/ruff/pull/4412)
- \[`flake8-async`] Implement flake8-async plugin by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4432](https://togithub.com/charliermarsh/ruff/pull/4432)
- \[`pyupgrade`] Enable automatic rewrites of `typing.Deque` and
`typing.DefaultDict` by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4420](https://togithub.com/charliermarsh/ruff/pull/4420)
- \[`flake8-pyi`] Implement `unannotated-assignment-in-stub` (`PY052`)
by [@&#8203;sladyn98](https://togithub.com/sladyn98) in
[https://github.com/charliermarsh/ruff/pull/4293](https://togithub.com/charliermarsh/ruff/pull/4293)
- \[`tryceratops`] Implement TRY302 - `raise` after `except` by
[@&#8203;john-h-k](https://togithub.com/john-h-k) in
[https://github.com/charliermarsh/ruff/pull/4461](https://togithub.com/charliermarsh/ruff/pull/4461)
- \[`flake8-bandit`] Improve SQL injection detection logic (`S608`) by
[@&#8203;scop](https://togithub.com/scop) in
[https://github.com/charliermarsh/ruff/pull/4499](https://togithub.com/charliermarsh/ruff/pull/4499)
- \[`flake8-todos`] Implement `flake8_todos` by
[@&#8203;evanrittenhouse](https://togithub.com/evanrittenhouse) in
[https://github.com/charliermarsh/ruff/pull/3921](https://togithub.com/charliermarsh/ruff/pull/3921)
- \[`flake8-future-annotations`] Implement `flake8-future-annotations`
FA100 by [@&#8203;TylerYep](https://togithub.com/TylerYep) in
[https://github.com/charliermarsh/ruff/pull/3979](https://togithub.com/charliermarsh/ruff/pull/3979)
- Enable `pycodestyle` rules by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/3689](https://togithub.com/charliermarsh/ruff/pull/3689)
- Enable `pycodestyle` rules under new "nursery" category by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4407](https://togithub.com/charliermarsh/ruff/pull/4407)

##### Settings

- Merge subsettings when extending configurations by
[@&#8203;bendoerry](https://togithub.com/bendoerry) in
[https://github.com/charliermarsh/ruff/pull/4431](https://togithub.com/charliermarsh/ruff/pull/4431)

##### Bug Fixes

- Extend multi-line noqa directives to start-of-line by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4490](https://togithub.com/charliermarsh/ruff/pull/4490)
- Fix scoping of comprehensions within classes by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4494](https://togithub.com/charliermarsh/ruff/pull/4494)
- Enable autofix for split-assertions at top level by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4405](https://togithub.com/charliermarsh/ruff/pull/4405)
- Ignore ANN401 for overridden methods by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4409](https://togithub.com/charliermarsh/ruff/pull/4409)
- Fix `RUF010` autofix within f-strings by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4423](https://togithub.com/charliermarsh/ruff/pull/4423)
- Update C419 to be a suggested fix by
[@&#8203;madkinsz](https://togithub.com/madkinsz) in
[https://github.com/charliermarsh/ruff/pull/4424](https://togithub.com/charliermarsh/ruff/pull/4424)
- Fix expected-indentation errors with end-of-line comments by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4438](https://togithub.com/charliermarsh/ruff/pull/4438)
- Emit non-logical newlines for "empty" lines by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4444](https://togithub.com/charliermarsh/ruff/pull/4444)
- Avoid emitting empty logical lines by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4452](https://togithub.com/charliermarsh/ruff/pull/4452)
- Avoid flagging missing whitespace for decorators by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4454](https://togithub.com/charliermarsh/ruff/pull/4454)
- Remove special-casing for whitespace-around-@&#8203; by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4458](https://togithub.com/charliermarsh/ruff/pull/4458)
- Avoid triggering `pd#at` and friends on non-subscripts by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4474](https://togithub.com/charliermarsh/ruff/pull/4474)
- Include precise tokens for extraneous-whitespace diagnostics by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4471](https://togithub.com/charliermarsh/ruff/pull/4471)
- Allow shebang comments at start-of-file by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4473](https://togithub.com/charliermarsh/ruff/pull/4473)
- Bring pycodestyle rules into full compatibility (on SciPy) by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4472](https://togithub.com/charliermarsh/ruff/pull/4472)
- Invert quote-style when generating code within f-strings by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4487](https://togithub.com/charliermarsh/ruff/pull/4487)
- Fix COM812 false positive in string subscript by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4493](https://togithub.com/charliermarsh/ruff/pull/4493)
- Overhaul sdist handling by
[@&#8203;konstin](https://togithub.com/konstin) in
[https://github.com/charliermarsh/ruff/pull/4439](https://togithub.com/charliermarsh/ruff/pull/4439)

#### New Contributors

- [@&#8203;TylerYep](https://togithub.com/TylerYep) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/3979](https://togithub.com/charliermarsh/ruff/pull/3979)
- [@&#8203;yanksyoon](https://togithub.com/yanksyoon) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4428](https://togithub.com/charliermarsh/ruff/pull/4428)
- [@&#8203;bendoerry](https://togithub.com/bendoerry) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4431](https://togithub.com/charliermarsh/ruff/pull/4431)
- [@&#8203;qdegraaf](https://togithub.com/qdegraaf) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4432](https://togithub.com/charliermarsh/ruff/pull/4432)
- [@&#8203;jameslamb](https://togithub.com/jameslamb) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4446](https://togithub.com/charliermarsh/ruff/pull/4446)
- [@&#8203;john-h-k](https://togithub.com/john-h-k) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4461](https://togithub.com/charliermarsh/ruff/pull/4461)

**Full Changelog**:
astral-sh/ruff@v0.0.267...v0.0.269

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **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 has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://app.renovatebot.com/dashboard#github/ixm-one/pytest-cmake-presets).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS45NS4xIiwidXBkYXRlZEluVmVyIjoiMzUuOTUuMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Signed-off-by: Renovate Bot <[email protected]>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@layday
Copy link

layday commented May 19, 2023

I don't think the two mechanisms are exactly equivalent. The benefit of having a stand-alone setting for it is that the rules will take effect immediately upon bumping the minimum supported Python version, whereas now the user will have to remember to un-exclude the rules they've been forced to exclude for runtime typing compatibility, and the burden of tracking compatibility per Python version will have fallen on them.

@charliermarsh
Copy link
Member Author

@layday - I understand that perspective, but these rules already take the minimum compatible version into account (and/or the required presence of from __future__ import annotations), so I don't believe users should have to consider their own minimum supported version at all when enabling or disabling them, or toggling the keep-runtime-typing settings. There was more discussion of this here (#3174), long ago -- but, e.g., the only reason to turn these rules off or set keep-runtime-typing = true would be if you had some application behavior that depended on the availability of runtime typing, and in that case, it seems like changing the Python version would be irrelevant to whether that decision changed.

As implemented in Ruff, this setting was exactly equivalent to enabling and disabling these rules. But I'm happy to continue discussing or reconsider if you have an example of where this would cause problems.

renovate bot referenced this pull request in allenporter/pyrainbird May 20, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [ruff](https://togithub.com/charliermarsh/ruff)
([changelog](https://togithub.com/charliermarsh/ruff/releases)) |
`==0.0.267` -> `==0.0.269` |
[![age](https://badges.renovateapi.com/packages/pypi/ruff/0.0.269/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/pypi/ruff/0.0.269/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/pypi/ruff/0.0.269/compatibility-slim/0.0.267)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/pypi/ruff/0.0.269/confidence-slim/0.0.267)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>charliermarsh/ruff</summary>

###
[`v0.0.269`](https://togithub.com/charliermarsh/ruff/releases/tag/v0.0.269)

[Compare
Source](https://togithub.com/charliermarsh/ruff/compare/v0.0.267...v0.0.269)

<!-- Release notes generated using configuration in .github/release.yml
at main -->

#### What's Changed

(This is a rerelease of `v0.0.268`, which didn't make it to PyPI due to
user error. As such, the release notes are copied below.)

##### `pycodestyle`

This release includes optimized implementations of a large portion of
`pycodestyle`, for those that use Ruff without an autoformatter.

In this initial release, the rules are being introduced under a
"nursery" flag, which requires that users explicitly select them (e.g.,
`select = ["E111"]`); in other words, these rules are not yet enabled
via `select = ["E"]`.

If you're interested in testing the `pycodestyle` rules, you can enable
them via:

```toml
select = [
    "E111", "E112", "E113", "E114", "E115", "E116", "E117",
    "E201", "E202", "E203", "E211", "E221", "E222", "E223",
    "E224", "E225", "E226", "E227", "E228", "E231", "E251",
    "E252", "E261", "E262", "E265", "E266", "E271", "E272",
    "E273", "E274", "E275",
]
```

These rules will be included as part of the `E` category in a future
release.

##### Breaking Changes

- \[`pyupgrade`] Remove `keep-runtime-typing` setting by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4427](https://togithub.com/charliermarsh/ruff/pull/4427)

##### Rules

- \[`pylint`] Add `duplicate-bases` rule by
[@&#8203;alonme](https://togithub.com/alonme) in
[https://github.com/charliermarsh/ruff/pull/4411](https://togithub.com/charliermarsh/ruff/pull/4411)
- \[`pylint`] Fix `PLW3301` auto-fix with generators by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4412](https://togithub.com/charliermarsh/ruff/pull/4412)
- \[`flake8-async`] Implement flake8-async plugin by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4432](https://togithub.com/charliermarsh/ruff/pull/4432)
- \[`pyupgrade`] Enable automatic rewrites of `typing.Deque` and
`typing.DefaultDict` by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4420](https://togithub.com/charliermarsh/ruff/pull/4420)
- \[`flake8-pyi`] Implement `unannotated-assignment-in-stub` (`PY052`)
by [@&#8203;sladyn98](https://togithub.com/sladyn98) in
[https://github.com/charliermarsh/ruff/pull/4293](https://togithub.com/charliermarsh/ruff/pull/4293)
- \[`tryceratops`] Implement TRY302 - `raise` after `except` by
[@&#8203;john-h-k](https://togithub.com/john-h-k) in
[https://github.com/charliermarsh/ruff/pull/4461](https://togithub.com/charliermarsh/ruff/pull/4461)
- \[`flake8-bandit`] Improve SQL injection detection logic (`S608`) by
[@&#8203;scop](https://togithub.com/scop) in
[https://github.com/charliermarsh/ruff/pull/4499](https://togithub.com/charliermarsh/ruff/pull/4499)
- \[`flake8-todos`] Implement `flake8_todos` by
[@&#8203;evanrittenhouse](https://togithub.com/evanrittenhouse) in
[https://github.com/charliermarsh/ruff/pull/3921](https://togithub.com/charliermarsh/ruff/pull/3921)
- \[`flake8-future-annotations`] Implement `flake8-future-annotations`
FA100 by [@&#8203;TylerYep](https://togithub.com/TylerYep) in
[https://github.com/charliermarsh/ruff/pull/3979](https://togithub.com/charliermarsh/ruff/pull/3979)
- Enable `pycodestyle` rules by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/3689](https://togithub.com/charliermarsh/ruff/pull/3689)
- Enable `pycodestyle` rules under new "nursery" category by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4407](https://togithub.com/charliermarsh/ruff/pull/4407)

##### Settings

- Merge subsettings when extending configurations by
[@&#8203;bendoerry](https://togithub.com/bendoerry) in
[https://github.com/charliermarsh/ruff/pull/4431](https://togithub.com/charliermarsh/ruff/pull/4431)

##### Bug Fixes

- Extend multi-line noqa directives to start-of-line by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4490](https://togithub.com/charliermarsh/ruff/pull/4490)
- Fix scoping of comprehensions within classes by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4494](https://togithub.com/charliermarsh/ruff/pull/4494)
- Enable autofix for split-assertions at top level by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4405](https://togithub.com/charliermarsh/ruff/pull/4405)
- Ignore ANN401 for overridden methods by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4409](https://togithub.com/charliermarsh/ruff/pull/4409)
- Fix `RUF010` autofix within f-strings by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4423](https://togithub.com/charliermarsh/ruff/pull/4423)
- Update C419 to be a suggested fix by
[@&#8203;madkinsz](https://togithub.com/madkinsz) in
[https://github.com/charliermarsh/ruff/pull/4424](https://togithub.com/charliermarsh/ruff/pull/4424)
- Fix expected-indentation errors with end-of-line comments by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4438](https://togithub.com/charliermarsh/ruff/pull/4438)
- Emit non-logical newlines for "empty" lines by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4444](https://togithub.com/charliermarsh/ruff/pull/4444)
- Avoid emitting empty logical lines by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4452](https://togithub.com/charliermarsh/ruff/pull/4452)
- Avoid flagging missing whitespace for decorators by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4454](https://togithub.com/charliermarsh/ruff/pull/4454)
- Remove special-casing for whitespace-around-@&#8203; by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4458](https://togithub.com/charliermarsh/ruff/pull/4458)
- Avoid triggering `pd#at` and friends on non-subscripts by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4474](https://togithub.com/charliermarsh/ruff/pull/4474)
- Include precise tokens for extraneous-whitespace diagnostics by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4471](https://togithub.com/charliermarsh/ruff/pull/4471)
- Allow shebang comments at start-of-file by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4473](https://togithub.com/charliermarsh/ruff/pull/4473)
- Bring pycodestyle rules into full compatibility (on SciPy) by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4472](https://togithub.com/charliermarsh/ruff/pull/4472)
- Invert quote-style when generating code within f-strings by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4487](https://togithub.com/charliermarsh/ruff/pull/4487)
- Fix COM812 false positive in string subscript by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4493](https://togithub.com/charliermarsh/ruff/pull/4493)
- Overhaul sdist handling by
[@&#8203;konstin](https://togithub.com/konstin) in
[https://github.com/charliermarsh/ruff/pull/4439](https://togithub.com/charliermarsh/ruff/pull/4439)

#### New Contributors

- [@&#8203;TylerYep](https://togithub.com/TylerYep) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/3979](https://togithub.com/charliermarsh/ruff/pull/3979)
- [@&#8203;yanksyoon](https://togithub.com/yanksyoon) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4428](https://togithub.com/charliermarsh/ruff/pull/4428)
- [@&#8203;bendoerry](https://togithub.com/bendoerry) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4431](https://togithub.com/charliermarsh/ruff/pull/4431)
- [@&#8203;qdegraaf](https://togithub.com/qdegraaf) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4432](https://togithub.com/charliermarsh/ruff/pull/4432)
- [@&#8203;jameslamb](https://togithub.com/jameslamb) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4446](https://togithub.com/charliermarsh/ruff/pull/4446)
- [@&#8203;john-h-k](https://togithub.com/john-h-k) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4461](https://togithub.com/charliermarsh/ruff/pull/4461)

**Full Changelog**:
astral-sh/ruff@v0.0.267...v0.0.269

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, 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 has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://app.renovatebot.com/dashboard#github/allenporter/pyrainbird).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS45NS4xIiwidXBkYXRlZEluVmVyIjoiMzUuOTUuMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@layday
Copy link

layday commented May 20, 2023

[...] would be if you had some application behavior that depended on the availability of runtime typing, and in that case, it seems like changing the Python version would be irrelevant to whether that decision changed.

Ah, but the assumption is that the application is able to handle these new typing constructs at runtime, the only limitation being the lowest Python version that it supports, i.e. that evaluating stringified annotations does not raise.

As implemented in Ruff, this setting was exactly equivalent to enabling and disabling these rules.

To clarify, bumping target-version to 3.10 would not have enabled either of these rules?

renovate bot referenced this pull request in allenporter/flux-local May 20, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [ruff](https://togithub.com/charliermarsh/ruff)
([changelog](https://togithub.com/charliermarsh/ruff/releases)) |
`==0.0.267` -> `==0.0.269` |
[![age](https://badges.renovateapi.com/packages/pypi/ruff/0.0.269/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/pypi/ruff/0.0.269/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/pypi/ruff/0.0.269/compatibility-slim/0.0.267)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/pypi/ruff/0.0.269/confidence-slim/0.0.267)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>charliermarsh/ruff</summary>

###
[`v0.0.269`](https://togithub.com/charliermarsh/ruff/releases/tag/v0.0.269)

[Compare
Source](https://togithub.com/charliermarsh/ruff/compare/v0.0.267...v0.0.269)

<!-- Release notes generated using configuration in .github/release.yml
at main -->

#### What's Changed

(This is a rerelease of `v0.0.268`, which didn't make it to PyPI due to
user error. As such, the release notes are copied below.)

##### `pycodestyle`

This release includes optimized implementations of a large portion of
`pycodestyle`, for those that use Ruff without an autoformatter.

In this initial release, the rules are being introduced under a
"nursery" flag, which requires that users explicitly select them (e.g.,
`select = ["E111"]`); in other words, these rules are not yet enabled
via `select = ["E"]`.

If you're interested in testing the `pycodestyle` rules, you can enable
them via:

```toml
select = [
    "E111", "E112", "E113", "E114", "E115", "E116", "E117",
    "E201", "E202", "E203", "E211", "E221", "E222", "E223",
    "E224", "E225", "E226", "E227", "E228", "E231", "E251",
    "E252", "E261", "E262", "E265", "E266", "E271", "E272",
    "E273", "E274", "E275",
]
```

These rules will be included as part of the `E` category in a future
release.

##### Breaking Changes

- \[`pyupgrade`] Remove `keep-runtime-typing` setting by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4427](https://togithub.com/charliermarsh/ruff/pull/4427)

##### Rules

- \[`pylint`] Add `duplicate-bases` rule by
[@&#8203;alonme](https://togithub.com/alonme) in
[https://github.com/charliermarsh/ruff/pull/4411](https://togithub.com/charliermarsh/ruff/pull/4411)
- \[`pylint`] Fix `PLW3301` auto-fix with generators by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4412](https://togithub.com/charliermarsh/ruff/pull/4412)
- \[`flake8-async`] Implement flake8-async plugin by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4432](https://togithub.com/charliermarsh/ruff/pull/4432)
- \[`pyupgrade`] Enable automatic rewrites of `typing.Deque` and
`typing.DefaultDict` by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4420](https://togithub.com/charliermarsh/ruff/pull/4420)
- \[`flake8-pyi`] Implement `unannotated-assignment-in-stub` (`PY052`)
by [@&#8203;sladyn98](https://togithub.com/sladyn98) in
[https://github.com/charliermarsh/ruff/pull/4293](https://togithub.com/charliermarsh/ruff/pull/4293)
- \[`tryceratops`] Implement TRY302 - `raise` after `except` by
[@&#8203;john-h-k](https://togithub.com/john-h-k) in
[https://github.com/charliermarsh/ruff/pull/4461](https://togithub.com/charliermarsh/ruff/pull/4461)
- \[`flake8-bandit`] Improve SQL injection detection logic (`S608`) by
[@&#8203;scop](https://togithub.com/scop) in
[https://github.com/charliermarsh/ruff/pull/4499](https://togithub.com/charliermarsh/ruff/pull/4499)
- \[`flake8-todos`] Implement `flake8_todos` by
[@&#8203;evanrittenhouse](https://togithub.com/evanrittenhouse) in
[https://github.com/charliermarsh/ruff/pull/3921](https://togithub.com/charliermarsh/ruff/pull/3921)
- \[`flake8-future-annotations`] Implement `flake8-future-annotations`
FA100 by [@&#8203;TylerYep](https://togithub.com/TylerYep) in
[https://github.com/charliermarsh/ruff/pull/3979](https://togithub.com/charliermarsh/ruff/pull/3979)
- Enable `pycodestyle` rules by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/3689](https://togithub.com/charliermarsh/ruff/pull/3689)
- Enable `pycodestyle` rules under new "nursery" category by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4407](https://togithub.com/charliermarsh/ruff/pull/4407)

##### Settings

- Merge subsettings when extending configurations by
[@&#8203;bendoerry](https://togithub.com/bendoerry) in
[https://github.com/charliermarsh/ruff/pull/4431](https://togithub.com/charliermarsh/ruff/pull/4431)

##### Bug Fixes

- Extend multi-line noqa directives to start-of-line by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4490](https://togithub.com/charliermarsh/ruff/pull/4490)
- Fix scoping of comprehensions within classes by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4494](https://togithub.com/charliermarsh/ruff/pull/4494)
- Enable autofix for split-assertions at top level by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4405](https://togithub.com/charliermarsh/ruff/pull/4405)
- Ignore ANN401 for overridden methods by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4409](https://togithub.com/charliermarsh/ruff/pull/4409)
- Fix `RUF010` autofix within f-strings by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4423](https://togithub.com/charliermarsh/ruff/pull/4423)
- Update C419 to be a suggested fix by
[@&#8203;madkinsz](https://togithub.com/madkinsz) in
[https://github.com/charliermarsh/ruff/pull/4424](https://togithub.com/charliermarsh/ruff/pull/4424)
- Fix expected-indentation errors with end-of-line comments by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4438](https://togithub.com/charliermarsh/ruff/pull/4438)
- Emit non-logical newlines for "empty" lines by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4444](https://togithub.com/charliermarsh/ruff/pull/4444)
- Avoid emitting empty logical lines by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4452](https://togithub.com/charliermarsh/ruff/pull/4452)
- Avoid flagging missing whitespace for decorators by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4454](https://togithub.com/charliermarsh/ruff/pull/4454)
- Remove special-casing for whitespace-around-@&#8203; by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4458](https://togithub.com/charliermarsh/ruff/pull/4458)
- Avoid triggering `pd#at` and friends on non-subscripts by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4474](https://togithub.com/charliermarsh/ruff/pull/4474)
- Include precise tokens for extraneous-whitespace diagnostics by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4471](https://togithub.com/charliermarsh/ruff/pull/4471)
- Allow shebang comments at start-of-file by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4473](https://togithub.com/charliermarsh/ruff/pull/4473)
- Bring pycodestyle rules into full compatibility (on SciPy) by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4472](https://togithub.com/charliermarsh/ruff/pull/4472)
- Invert quote-style when generating code within f-strings by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4487](https://togithub.com/charliermarsh/ruff/pull/4487)
- Fix COM812 false positive in string subscript by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4493](https://togithub.com/charliermarsh/ruff/pull/4493)
- Overhaul sdist handling by
[@&#8203;konstin](https://togithub.com/konstin) in
[https://github.com/charliermarsh/ruff/pull/4439](https://togithub.com/charliermarsh/ruff/pull/4439)

#### New Contributors

- [@&#8203;TylerYep](https://togithub.com/TylerYep) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/3979](https://togithub.com/charliermarsh/ruff/pull/3979)
- [@&#8203;yanksyoon](https://togithub.com/yanksyoon) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4428](https://togithub.com/charliermarsh/ruff/pull/4428)
- [@&#8203;bendoerry](https://togithub.com/bendoerry) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4431](https://togithub.com/charliermarsh/ruff/pull/4431)
- [@&#8203;qdegraaf](https://togithub.com/qdegraaf) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4432](https://togithub.com/charliermarsh/ruff/pull/4432)
- [@&#8203;jameslamb](https://togithub.com/jameslamb) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4446](https://togithub.com/charliermarsh/ruff/pull/4446)
- [@&#8203;john-h-k](https://togithub.com/john-h-k) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4461](https://togithub.com/charliermarsh/ruff/pull/4461)

**Full Changelog**:
astral-sh/ruff@v0.0.267...v0.0.269

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, 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 has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://app.renovatebot.com/dashboard#github/allenporter/flux-local).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS45Ni4zIiwidXBkYXRlZEluVmVyIjoiMzUuOTYuMyIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@charliermarsh
Copy link
Member Author

To clarify, bumping target-version to 3.10 would not have enabled either of these rules?

That's correct. It used to only affect the pre-3.10 branch, but I changed it in #2449. I may have misunderstood the motivation for the flag, and it's possible that our enforcement of it was incorrect, though I still don't fully understand why it exists. It seems like the example of a case in which users want to use this flag is on pre-3.9 code like:

from __future__ import annotations
import pydantic

class User(pydantic.BaseModel):
    first_name: str | None = None
    last_name: str | None = None

But in this case, why is __future__ annotations enabled? Is it not unsafe to use __future__ annotations at all if you're relying on runtime typing in this way?

@JacobHayes
Copy link

One might also use from __future__ import annotations to make recursive or cyclic type hints nicer, eg:

from __future__ import annotations

import pydantic

class User(pydantic.BaseModel):
    friends: list[User]

(here's a non-contrived example)


This may be fairly minor, but if there are future syntax incompatible typing PEPs introduced other than PEP 585 and PEP 604, one other difference is that users (as opposed to ruff) will need to be responsible for updating their configs when making ruff updates in order to keep runtime typing.

tekumara added a commit to seek-oss/aec that referenced this pull request May 28, 2023
includes updates to address the breaking change in
astral-sh/ruff#4427 and fixes for the now
enabled rules:
- UP006 (non-pep585-annotation)
- UP007 (non-pep604-annotation)
charliermarsh added a commit that referenced this pull request Jul 3, 2023
## Summary

This PR reverts #4427. See the included documentation for a detailed
explanation.

Closes #5434.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
breaking Breaking API change configuration Related to settings and configuration
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants