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

Fix scoping of comprehensions within classes #4494

Merged
merged 1 commit into from
May 18, 2023

Conversation

charliermarsh
Copy link
Member

Summary

See the lengthy inline comment. It turns out that we're missing an edge case in how comprehensions-within-classes are handled. Pyflakes has the same behavior.

For more, see the PEP 709 follow-up discussion, or the linked issue (#4486).

Closes #4486.

@charliermarsh charliermarsh added the bug Something isn't working label May 18, 2023
@charliermarsh charliermarsh enabled auto-merge (squash) May 18, 2023 14:24
@charliermarsh charliermarsh merged commit 2fb312b into main May 18, 2023
@charliermarsh charliermarsh deleted the charlie/comprehension branch May 18, 2023 14:30
@github-actions
Copy link
Contributor

github-actions bot commented May 18, 2023

PR Check Results

Ecosystem

✅ ecosystem check detected no changes.

Benchmark

Linux

group                                      main                                   pr
-----                                      ----                                   --
linter/all-rules/large/dataset.py          1.00     14.0±0.05ms     2.9 MB/sec    1.00     14.0±0.04ms     2.9 MB/sec
linter/all-rules/numpy/ctypeslib.py        1.00      3.4±0.01ms     4.9 MB/sec    1.00      3.4±0.00ms     4.9 MB/sec
linter/all-rules/numpy/globals.py          1.00    424.3±0.44µs     7.0 MB/sec    1.01    426.7±1.15µs     6.9 MB/sec
linter/all-rules/pydantic/types.py         1.00      5.8±0.01ms     4.4 MB/sec    1.00      5.8±0.01ms     4.4 MB/sec
linter/default-rules/large/dataset.py      1.00      6.8±0.01ms     6.0 MB/sec    1.00      6.8±0.02ms     6.0 MB/sec
linter/default-rules/numpy/ctypeslib.py    1.00   1466.7±2.36µs    11.4 MB/sec    1.00   1469.9±2.34µs    11.3 MB/sec
linter/default-rules/numpy/globals.py      1.00    165.2±0.94µs    17.9 MB/sec    1.00    165.3±0.68µs    17.9 MB/sec
linter/default-rules/pydantic/types.py     1.00      3.0±0.01ms     8.4 MB/sec    1.01      3.1±0.01ms     8.3 MB/sec
parser/large/dataset.py                    1.00      5.4±0.01ms     7.6 MB/sec    1.00      5.4±0.00ms     7.6 MB/sec
parser/numpy/ctypeslib.py                  1.00   1059.0±0.52µs    15.7 MB/sec    1.00   1054.0±0.68µs    15.8 MB/sec
parser/numpy/globals.py                    1.01    109.2±4.74µs    27.0 MB/sec    1.00    108.3±0.38µs    27.2 MB/sec
parser/pydantic/types.py                   1.00      2.3±0.00ms    11.1 MB/sec    1.00      2.3±0.00ms    11.1 MB/sec

Windows

group                                      main                                   pr
-----                                      ----                                   --
linter/all-rules/large/dataset.py          1.01     17.6±0.20ms     2.3 MB/sec    1.00     17.5±0.32ms     2.3 MB/sec
linter/all-rules/numpy/ctypeslib.py        1.03      4.4±0.09ms     3.8 MB/sec    1.00      4.3±0.09ms     3.9 MB/sec
linter/all-rules/numpy/globals.py          1.00    507.5±8.51µs     5.8 MB/sec    1.01    513.0±8.25µs     5.8 MB/sec
linter/all-rules/pydantic/types.py         1.01      7.2±0.12ms     3.5 MB/sec    1.00      7.1±0.14ms     3.6 MB/sec
linter/default-rules/large/dataset.py      1.00      8.5±0.13ms     4.8 MB/sec    1.01      8.5±0.11ms     4.8 MB/sec
linter/default-rules/numpy/ctypeslib.py    1.00  1734.0±28.64µs     9.6 MB/sec    1.04  1807.4±28.45µs     9.2 MB/sec
linter/default-rules/numpy/globals.py      1.00    196.2±3.36µs    15.0 MB/sec    1.05    206.7±5.36µs    14.3 MB/sec
linter/default-rules/pydantic/types.py     1.00      3.7±0.04ms     6.8 MB/sec    1.04      3.9±0.48ms     6.5 MB/sec
parser/large/dataset.py                    1.00      6.7±0.07ms     6.0 MB/sec    1.01      6.8±0.07ms     6.0 MB/sec
parser/numpy/ctypeslib.py                  1.01  1292.7±27.21µs    12.9 MB/sec    1.00  1285.1±22.98µs    13.0 MB/sec
parser/numpy/globals.py                    1.00    131.9±2.01µs    22.4 MB/sec    1.00    132.6±3.01µs    22.3 MB/sec
parser/pydantic/types.py                   1.00      2.9±0.04ms     8.9 MB/sec    1.00      2.9±0.04ms     8.9 MB/sec

@zanieb
Copy link
Member

zanieb commented May 18, 2023

Woof this one just bit me last week — additional context in python/cpython#99295 too

I had to change something like

class Foo:
    a = 1
    b = [x for x in range(10) if x != a]   # a is not defined

to

class Foo:
    a = 1
    b = [x for x in set(range(10)) - {a}]

Might be a helpful case for ruff to detect and suggest! It would have saved me a lot of time to have a ref with details.

renovate bot added a commit to ixm-one/pytest-cmake-presets that referenced this pull request 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
[astral-sh/ruff#4427

##### Rules

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

##### Settings

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

##### Bug Fixes

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

#### New Contributors

- [@&#8203;TylerYep](https://togithub.com/TylerYep) made their first
contribution in
[astral-sh/ruff#3979
- [@&#8203;yanksyoon](https://togithub.com/yanksyoon) made their first
contribution in
[astral-sh/ruff#4428
- [@&#8203;bendoerry](https://togithub.com/bendoerry) made their first
contribution in
[astral-sh/ruff#4431
- [@&#8203;qdegraaf](https://togithub.com/qdegraaf) made their first
contribution in
[astral-sh/ruff#4432
- [@&#8203;jameslamb](https://togithub.com/jameslamb) made their first
contribution in
[astral-sh/ruff#4446
- [@&#8203;john-h-k](https://togithub.com/john-h-k) made their first
contribution in
[astral-sh/ruff#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 <bot@renovateapp.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate bot added a commit to allenporter/pyrainbird that referenced this pull request 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
[astral-sh/ruff#4427

##### Rules

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

##### Settings

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

##### Bug Fixes

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

#### New Contributors

- [@&#8203;TylerYep](https://togithub.com/TylerYep) made their first
contribution in
[astral-sh/ruff#3979
- [@&#8203;yanksyoon](https://togithub.com/yanksyoon) made their first
contribution in
[astral-sh/ruff#4428
- [@&#8203;bendoerry](https://togithub.com/bendoerry) made their first
contribution in
[astral-sh/ruff#4431
- [@&#8203;qdegraaf](https://togithub.com/qdegraaf) made their first
contribution in
[astral-sh/ruff#4432
- [@&#8203;jameslamb](https://togithub.com/jameslamb) made their first
contribution in
[astral-sh/ruff#4446
- [@&#8203;john-h-k](https://togithub.com/john-h-k) made their first
contribution in
[astral-sh/ruff#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>
renovate bot added a commit to allenporter/flux-local that referenced this pull request 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
[astral-sh/ruff#4427

##### Rules

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

##### Settings

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

##### Bug Fixes

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

#### New Contributors

- [@&#8203;TylerYep](https://togithub.com/TylerYep) made their first
contribution in
[astral-sh/ruff#3979
- [@&#8203;yanksyoon](https://togithub.com/yanksyoon) made their first
contribution in
[astral-sh/ruff#4428
- [@&#8203;bendoerry](https://togithub.com/bendoerry) made their first
contribution in
[astral-sh/ruff#4431
- [@&#8203;qdegraaf](https://togithub.com/qdegraaf) made their first
contribution in
[astral-sh/ruff#4432
- [@&#8203;jameslamb](https://togithub.com/jameslamb) made their first
contribution in
[astral-sh/ruff#4446
- [@&#8203;john-h-k](https://togithub.com/john-h-k) made their first
contribution in
[astral-sh/ruff#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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Ruff picks wrong scope for variable
2 participants