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

importer: skip whitespace between comments at start of file #6523

Merged
merged 1 commit into from
Aug 12, 2023

Conversation

durumu
Copy link
Contributor

@durumu durumu commented Aug 12, 2023

Summary

When adding an import, such as when fixing I002, ruff doesn't skip whitespace between comments, but isort does. See this issue for more detail: #6504

This change would fix that by skipping whitespace between comments in Insertion.start_of_file().

Test Plan

I added a new test, comments_and_newlines, to verify this behavior. I also ran cargo test and no existing tests broke. That being said, this is technically a breaking change, as it's possible that someone was relying on the previous behavior.

@github-actions
Copy link
Contributor

github-actions bot commented Aug 12, 2023

PR Check Results

Ecosystem

✅ ecosystem check detected no changes.

Benchmark

Linux

group                                      main                                   pr
-----                                      ----                                   --
formatter/large/dataset.py                 1.01      8.5±0.06ms     4.8 MB/sec    1.00      8.4±0.03ms     4.8 MB/sec
formatter/numpy/ctypeslib.py               1.01   1637.4±2.16µs    10.2 MB/sec    1.00  1623.1±13.78µs    10.3 MB/sec
formatter/numpy/globals.py                 1.00    172.8±0.42µs    17.1 MB/sec    1.00    172.0±0.47µs    17.2 MB/sec
formatter/pydantic/types.py                1.01      3.6±0.01ms     7.1 MB/sec    1.00      3.5±0.02ms     7.2 MB/sec
linter/all-rules/large/dataset.py          1.01     10.6±0.02ms     3.8 MB/sec    1.00     10.5±0.03ms     3.9 MB/sec
linter/all-rules/numpy/ctypeslib.py        1.02      2.9±0.01ms     5.7 MB/sec    1.00      2.9±0.00ms     5.8 MB/sec
linter/all-rules/numpy/globals.py          1.05    333.2±2.21µs     8.9 MB/sec    1.00    318.1±0.91µs     9.3 MB/sec
linter/all-rules/pydantic/types.py         1.13      5.5±0.02ms     4.6 MB/sec    1.00      4.9±0.01ms     5.2 MB/sec
linter/default-rules/large/dataset.py      1.03      5.6±0.01ms     7.3 MB/sec    1.00      5.4±0.06ms     7.5 MB/sec
linter/default-rules/numpy/ctypeslib.py    1.07   1190.4±2.18µs    14.0 MB/sec    1.00   1116.8±4.13µs    14.9 MB/sec
linter/default-rules/numpy/globals.py      1.09    124.7±0.26µs    23.7 MB/sec    1.00    114.5±0.78µs    25.8 MB/sec
linter/default-rules/pydantic/types.py     1.05      2.5±0.02ms    10.1 MB/sec    1.00      2.4±0.00ms    10.5 MB/sec

Windows

group                                      main                                   pr
-----                                      ----                                   --
formatter/large/dataset.py                 1.02     10.0±0.04ms     4.1 MB/sec    1.00      9.8±0.04ms     4.2 MB/sec
formatter/numpy/ctypeslib.py               1.01  1909.0±13.01µs     8.7 MB/sec    1.00  1882.1±41.19µs     8.8 MB/sec
formatter/numpy/globals.py                 1.00    196.1±2.63µs    15.0 MB/sec    1.02    199.3±7.25µs    14.8 MB/sec
formatter/pydantic/types.py                1.01      4.2±0.02ms     6.0 MB/sec    1.00      4.2±0.05ms     6.1 MB/sec
linter/all-rules/large/dataset.py          1.02     12.8±0.10ms     3.2 MB/sec    1.00     12.5±0.05ms     3.3 MB/sec
linter/all-rules/numpy/ctypeslib.py        1.02      3.6±0.01ms     4.7 MB/sec    1.00      3.5±0.02ms     4.8 MB/sec
linter/all-rules/numpy/globals.py          1.02    371.4±5.46µs     7.9 MB/sec    1.00    363.0±8.66µs     8.1 MB/sec
linter/all-rules/pydantic/types.py         1.13      6.6±0.04ms     3.9 MB/sec    1.00      5.8±0.06ms     4.4 MB/sec
linter/default-rules/large/dataset.py      1.03      6.9±0.08ms     5.9 MB/sec    1.00      6.7±0.03ms     6.1 MB/sec
linter/default-rules/numpy/ctypeslib.py    1.04   1441.4±8.34µs    11.6 MB/sec    1.00   1380.9±8.20µs    12.1 MB/sec
linter/default-rules/numpy/globals.py      1.04    148.3±1.39µs    19.9 MB/sec    1.00    143.2±1.45µs    20.6 MB/sec
linter/default-rules/pydantic/types.py     1.02      3.1±0.02ms     8.2 MB/sec    1.00      3.0±0.01ms     8.4 MB/sec

@durumu durumu changed the title importer: skip whitespace when checking for comments at start of file importer: skip whitespace between comments at start of file Aug 12, 2023
if trimmed_line.is_empty() {
continue;
}
if trimmed_line.starts_with('#') {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given:

# This is a comment

# This is a comment about this specific import
from sys import stdout

I guess we'd now do:

# This is a comment

# This is a comment about this specific import
from __future__ import annotations
from sys import stdout

I guess we arguably already had that problem, since given:

# This is a comment about this specific import
from sys import stdout

We already do:

# This is a comment about this specific import
from __future__ import annotations
from sys import stdout

I suppose we could modify the logic to only skip comments if the comments are followed by a blank line but that may be surprising -- I'm not sure. What do you think?

Copy link
Contributor Author

@durumu durumu Aug 12, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a good point. For what it's worth, isort -a "from __future__ import annotations" seems to do the same thing:

# This is a comment

# Comment about this import
from foo import bar

turns into:

# This is a comment

# Comment about this import
from __future__ import annotations

from foo import bar

That makes me inclined to think this case isn't too valuable to support. If we do want to support it, though, I do think your proposal of skipping comments if the comments are followed by a blank line is pretty reasonable and intuitive.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, thanks for looking into that. If isort has this behavior, then it seems reasonable to me to proceed as-is.

@charliermarsh charliermarsh added the isort Related to import sorting label Aug 12, 2023
@charliermarsh charliermarsh merged commit dbf003f into astral-sh:main Aug 12, 2023
renovate bot referenced this pull request in allenporter/pyrainbird Aug 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://beta.ruff.rs/docs)
([source](https://github.com/astral-sh/ruff),
[changelog](https://github.com/astral-sh/ruff/releases)) | `==0.0.284`
-> `==0.0.285` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/ruff/0.0.285?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/ruff/0.0.285?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/ruff/0.0.284/0.0.285?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/ruff/0.0.284/0.0.285?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>astral-sh/ruff (ruff)</summary>

###
[`v0.0.285`](https://github.com/astral-sh/ruff/releases/tag/v0.0.285)

[Compare
Source](https://github.com/astral-sh/ruff/compare/v0.0.284...v0.0.285)

#### What's Changed

##### New rules

- \[`flake8-pytest-style`] Implement `pytest-unittest-raises-assertion`
(`PT027`) by [@&#8203;harupy](https://github.com/harupy) in
[https://github.com/astral-sh/ruff/pull/6554](https://github.com/astral-sh/ruff/pull/6554)
- \[`flake8-pytest-style`] Implement
`pytest-duplicate-parametrize-test-cases` (`PT014`) by
[@&#8203;harupy](https://github.com/harupy) in
[https://github.com/astral-sh/ruff/pull/6598](https://github.com/astral-sh/ruff/pull/6598)
- \[`flake8-tidy-imports`] Implement `banned-module-level-imports`
(`TID253`) by [@&#8203;durumu](https://github.com/durumu) in
[https://github.com/astral-sh/ruff/pull/6378](https://github.com/astral-sh/ruff/pull/6378)
- \[`pylint`] Implement `bad-dunder-name` (`W3201`) (in the Ruff
nursery) by [@&#8203;LaBatata101](https://github.com/LaBatata101) in
[https://github.com/astral-sh/ruff/pull/6486](https://github.com/astral-sh/ruff/pull/6486)
- \[`pylint`] Implement `subprocess-run-check` (`W1510`) by
[@&#8203;tjkuson](https://github.com/tjkuson) in
[https://github.com/astral-sh/ruff/pull/6487](https://github.com/astral-sh/ruff/pull/6487)
- \[`ruff`] Implement `quadratic-list-summation` (`RUF017`) by
[@&#8203;evanrittenhouse](https://github.com/evanrittenhouse) in
[https://github.com/astral-sh/ruff/pull/6489](https://github.com/astral-sh/ruff/pull/6489)

##### Rule changes

- \[`flake8-bugbear`] Add autofix for `B006` by
[@&#8203;qdegraaf](https://github.com/qdegraaf) in
[https://github.com/astral-sh/ruff/pull/6131](https://github.com/astral-sh/ruff/pull/6131)
- \[`flake8-pyi`] Avoid applying `PYI055` to runtime-evaluated
annotations by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6457](https://github.com/astral-sh/ruff/pull/6457)
- \[`flake8-self`] Allow `os._exit` accesses in `SLF001` by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6490](https://github.com/astral-sh/ruff/pull/6490)
- \[`perflint`] Ignore `PERF203` if `try` contains loop control flow
statements by
[@&#8203;evanrittenhouse](https://github.com/evanrittenhouse) in
[https://github.com/astral-sh/ruff/pull/6536](https://github.com/astral-sh/ruff/pull/6536)
- \[`pylint`] Check for invalid format type specifiers in nested
replacements for `PLE1300` by
[@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6616](https://github.com/astral-sh/ruff/pull/6616)
- \[`tryceratops`] Omit `NotImplementedError` from `TRY003` by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6568](https://github.com/astral-sh/ruff/pull/6568)

##### Settings

- Respect `.ipynb` and `.pyi` sources when linting from stdin by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6628](https://github.com/astral-sh/ruff/pull/6628)
- Support glob patterns for `raises_require_match_for` and
`raises_require_match_for` by
[@&#8203;harupy](https://github.com/harupy) in
[https://github.com/astral-sh/ruff/pull/6635](https://github.com/astral-sh/ruff/pull/6635)

##### Bug Fixes

- Make `lambda-assignment` fix always-manual in class bodies by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6626](https://github.com/astral-sh/ruff/pull/6626)
- Fix counting of message arguments when msg is provided as a keyword by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6456](https://github.com/astral-sh/ruff/pull/6456)
- Add container types to `E721` by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6469](https://github.com/astral-sh/ruff/pull/6469)
- Respect scoping rules when identifying builtins by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6468](https://github.com/astral-sh/ruff/pull/6468)
- Respect tab width in line-length heuristic by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6491](https://github.com/astral-sh/ruff/pull/6491)
- Respect dummy-variable-rgx for unused bound exceptions by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6492](https://github.com/astral-sh/ruff/pull/6492)
- Fix detection of top-level imports with newlines in `E402` by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6526](https://github.com/astral-sh/ruff/pull/6526)
- Allow if-expression with dual string arms in `invalid-envvar-value` by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6538](https://github.com/astral-sh/ruff/pull/6538)
- Add deprecated unittest assertions to PT009 by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6572](https://github.com/astral-sh/ruff/pull/6572)
- Avoid unused argument rules when functions call `locals()` by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6578](https://github.com/astral-sh/ruff/pull/6578)
- Allow top-level `await` in Jupyter notebooks by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6607](https://github.com/astral-sh/ruff/pull/6607)
- Don't detect `pandas#values` for stores, deletes, or class accesses by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6631](https://github.com/astral-sh/ruff/pull/6631)
- Avoid removing parentheses in `E712` fix by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6575](https://github.com/astral-sh/ruff/pull/6575)
- Skip whitespace between comments at start of file e.g. for `I002` by
[@&#8203;durumu](https://github.com/durumu) in
[https://github.com/astral-sh/ruff/pull/6523](https://github.com/astral-sh/ruff/pull/6523)
- Add support for nested replacements inside format specifications e.g.
for `PLE1300` by [@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6616](https://github.com/astral-sh/ruff/pull/6616)

##### Playground

- Shared playground links now use short URLs by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6383](https://github.com/astral-sh/ruff/pull/6383)
- Fix possible JSON parse error on playground load by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6519](https://github.com/astral-sh/ruff/pull/6519)
- Fix unreachable panic in playground by
[@&#8203;MichaReiser](https://github.com/MichaReiser) in
[https://github.com/astral-sh/ruff/pull/6623](https://github.com/astral-sh/ruff/pull/6623)

##### Performance

- Improve tokenizer performance for ASCII only identifiers by
[@&#8203;MichaReiser](https://github.com/MichaReiser) in
[https://github.com/astral-sh/ruff/pull/6609](https://github.com/astral-sh/ruff/pull/6609)

#### New Contributors

- [@&#8203;magic-akari](https://github.com/magic-akari) made their
first contribution in
[https://github.com/astral-sh/ruff/pull/6472](https://github.com/astral-sh/ruff/pull/6472)
- [@&#8203;durumu](https://github.com/durumu) made their first
contribution in
[https://github.com/astral-sh/ruff/pull/6378](https://github.com/astral-sh/ruff/pull/6378)
- [@&#8203;jamesbraza](https://github.com/jamesbraza) made their first
contribution in
[https://github.com/astral-sh/ruff/pull/6520](https://github.com/astral-sh/ruff/pull/6520)
- [@&#8203;takumaw](https://github.com/takumaw) made their first
contribution in
[https://github.com/astral-sh/ruff/pull/6533](https://github.com/astral-sh/ruff/pull/6533)
- [@&#8203;noklam](https://github.com/noklam) made their first
contribution in
[https://github.com/astral-sh/ruff/pull/6573](https://github.com/astral-sh/ruff/pull/6573)
- [@&#8203;Teraskull](https://github.com/Teraskull) made their first
contribution in
[https://github.com/astral-sh/ruff/pull/6605](https://github.com/astral-sh/ruff/pull/6605)

**Full Changelog**:
astral-sh/ruff@v0.0.284...v0.0.285

</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://developer.mend.io/github/allenporter/pyrainbird).

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

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate bot referenced this pull request in allenporter/flux-local Aug 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://beta.ruff.rs/docs)
([source](https://github.com/astral-sh/ruff),
[changelog](https://github.com/astral-sh/ruff/releases)) | `==0.0.284`
-> `==0.0.285` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/ruff/0.0.285?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/ruff/0.0.285?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/ruff/0.0.284/0.0.285?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/ruff/0.0.284/0.0.285?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>astral-sh/ruff (ruff)</summary>

###
[`v0.0.285`](https://github.com/astral-sh/ruff/releases/tag/v0.0.285)

[Compare
Source](https://github.com/astral-sh/ruff/compare/v0.0.284...v0.0.285)

#### What's Changed

##### New rules

- \[`flake8-pytest-style`] Implement `pytest-unittest-raises-assertion`
(`PT027`) by [@&#8203;harupy](https://github.com/harupy) in
[https://github.com/astral-sh/ruff/pull/6554](https://github.com/astral-sh/ruff/pull/6554)
- \[`flake8-pytest-style`] Implement
`pytest-duplicate-parametrize-test-cases` (`PT014`) by
[@&#8203;harupy](https://github.com/harupy) in
[https://github.com/astral-sh/ruff/pull/6598](https://github.com/astral-sh/ruff/pull/6598)
- \[`flake8-tidy-imports`] Implement `banned-module-level-imports`
(`TID253`) by [@&#8203;durumu](https://github.com/durumu) in
[https://github.com/astral-sh/ruff/pull/6378](https://github.com/astral-sh/ruff/pull/6378)
- \[`pylint`] Implement `bad-dunder-name` (`W3201`) (in the Ruff
nursery) by [@&#8203;LaBatata101](https://github.com/LaBatata101) in
[https://github.com/astral-sh/ruff/pull/6486](https://github.com/astral-sh/ruff/pull/6486)
- \[`pylint`] Implement `subprocess-run-check` (`W1510`) by
[@&#8203;tjkuson](https://github.com/tjkuson) in
[https://github.com/astral-sh/ruff/pull/6487](https://github.com/astral-sh/ruff/pull/6487)
- \[`ruff`] Implement `quadratic-list-summation` (`RUF017`) by
[@&#8203;evanrittenhouse](https://github.com/evanrittenhouse) in
[https://github.com/astral-sh/ruff/pull/6489](https://github.com/astral-sh/ruff/pull/6489)

##### Rule changes

- \[`flake8-bugbear`] Add autofix for `B006` by
[@&#8203;qdegraaf](https://github.com/qdegraaf) in
[https://github.com/astral-sh/ruff/pull/6131](https://github.com/astral-sh/ruff/pull/6131)
- \[`flake8-pyi`] Avoid applying `PYI055` to runtime-evaluated
annotations by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6457](https://github.com/astral-sh/ruff/pull/6457)
- \[`flake8-self`] Allow `os._exit` accesses in `SLF001` by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6490](https://github.com/astral-sh/ruff/pull/6490)
- \[`perflint`] Ignore `PERF203` if `try` contains loop control flow
statements by
[@&#8203;evanrittenhouse](https://github.com/evanrittenhouse) in
[https://github.com/astral-sh/ruff/pull/6536](https://github.com/astral-sh/ruff/pull/6536)
- \[`pylint`] Check for invalid format type specifiers in nested
replacements for `PLE1300` by
[@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6616](https://github.com/astral-sh/ruff/pull/6616)
- \[`tryceratops`] Omit `NotImplementedError` from `TRY003` by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6568](https://github.com/astral-sh/ruff/pull/6568)

##### Settings

- Respect `.ipynb` and `.pyi` sources when linting from stdin by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6628](https://github.com/astral-sh/ruff/pull/6628)
- Support glob patterns for `raises_require_match_for` and
`raises_require_match_for` by
[@&#8203;harupy](https://github.com/harupy) in
[https://github.com/astral-sh/ruff/pull/6635](https://github.com/astral-sh/ruff/pull/6635)

##### Bug Fixes

- Make `lambda-assignment` fix always-manual in class bodies by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6626](https://github.com/astral-sh/ruff/pull/6626)
- Fix counting of message arguments when msg is provided as a keyword by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6456](https://github.com/astral-sh/ruff/pull/6456)
- Add container types to `E721` by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6469](https://github.com/astral-sh/ruff/pull/6469)
- Respect scoping rules when identifying builtins by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6468](https://github.com/astral-sh/ruff/pull/6468)
- Respect tab width in line-length heuristic by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6491](https://github.com/astral-sh/ruff/pull/6491)
- Respect dummy-variable-rgx for unused bound exceptions by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6492](https://github.com/astral-sh/ruff/pull/6492)
- Fix detection of top-level imports with newlines in `E402` by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6526](https://github.com/astral-sh/ruff/pull/6526)
- Allow if-expression with dual string arms in `invalid-envvar-value` by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6538](https://github.com/astral-sh/ruff/pull/6538)
- Add deprecated unittest assertions to PT009 by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6572](https://github.com/astral-sh/ruff/pull/6572)
- Avoid unused argument rules when functions call `locals()` by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6578](https://github.com/astral-sh/ruff/pull/6578)
- Allow top-level `await` in Jupyter notebooks by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6607](https://github.com/astral-sh/ruff/pull/6607)
- Don't detect `pandas#values` for stores, deletes, or class accesses by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6631](https://github.com/astral-sh/ruff/pull/6631)
- Avoid removing parentheses in `E712` fix by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6575](https://github.com/astral-sh/ruff/pull/6575)
- Skip whitespace between comments at start of file e.g. for `I002` by
[@&#8203;durumu](https://github.com/durumu) in
[https://github.com/astral-sh/ruff/pull/6523](https://github.com/astral-sh/ruff/pull/6523)
- Add support for nested replacements inside format specifications e.g.
for `PLE1300` by [@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6616](https://github.com/astral-sh/ruff/pull/6616)

##### Playground

- Shared playground links now use short URLs by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6383](https://github.com/astral-sh/ruff/pull/6383)
- Fix possible JSON parse error on playground load by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6519](https://github.com/astral-sh/ruff/pull/6519)
- Fix unreachable panic in playground by
[@&#8203;MichaReiser](https://github.com/MichaReiser) in
[https://github.com/astral-sh/ruff/pull/6623](https://github.com/astral-sh/ruff/pull/6623)

##### Performance

- Improve tokenizer performance for ASCII only identifiers by
[@&#8203;MichaReiser](https://github.com/MichaReiser) in
[https://github.com/astral-sh/ruff/pull/6609](https://github.com/astral-sh/ruff/pull/6609)

#### New Contributors

- [@&#8203;magic-akari](https://github.com/magic-akari) made their
first contribution in
[https://github.com/astral-sh/ruff/pull/6472](https://github.com/astral-sh/ruff/pull/6472)
- [@&#8203;durumu](https://github.com/durumu) made their first
contribution in
[https://github.com/astral-sh/ruff/pull/6378](https://github.com/astral-sh/ruff/pull/6378)
- [@&#8203;jamesbraza](https://github.com/jamesbraza) made their first
contribution in
[https://github.com/astral-sh/ruff/pull/6520](https://github.com/astral-sh/ruff/pull/6520)
- [@&#8203;takumaw](https://github.com/takumaw) made their first
contribution in
[https://github.com/astral-sh/ruff/pull/6533](https://github.com/astral-sh/ruff/pull/6533)
- [@&#8203;noklam](https://github.com/noklam) made their first
contribution in
[https://github.com/astral-sh/ruff/pull/6573](https://github.com/astral-sh/ruff/pull/6573)
- [@&#8203;Teraskull](https://github.com/Teraskull) made their first
contribution in
[https://github.com/astral-sh/ruff/pull/6605](https://github.com/astral-sh/ruff/pull/6605)

**Full Changelog**:
astral-sh/ruff@v0.0.284...v0.0.285

</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://developer.mend.io/github/allenporter/flux-local).

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

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
isort Related to import sorting
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants