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

[flake8-bugbear] Add autofix for B006 #6131

Merged
merged 11 commits into from
Aug 10, 2023
Merged

Conversation

qdegraaf
Copy link
Contributor

@qdegraaf qdegraaf commented Jul 27, 2023

Summary

Reopening of #4880

One open TODO as described in: #4880 (comment)

FYI @charliermarsh seeing as you commented you wanted to do final review and merge. @konstin @dhruvmanila @MichaReiser as previous reviewers.

Old Description

Summary

Adds an autofix for B006 turning mutable argument defaults into None and setting their original value back in the function body if still None at runtime like so:

def before(x=[]):
    pass
    
def after(x=None):
    if x is None:
        x = []
    pass

Test Plan

Added an extra test case to existing fixture with more indentation. Checked results for all old examples.

NOTE: Also adapted the jupyter notebook test as this checked for B006 as well.

Issue link

Closes: #4693

@github-actions
Copy link
Contributor

github-actions bot commented Jul 27, 2023

PR Check Results

Ecosystem

ℹ️ ecosystem check detected changes. (+44, -44, 0 error(s))

airflow (+10, -10)

- airflow/models/dag.py:2114:30: B006 Do not use mutable data structures for argument defaults
+ airflow/models/dag.py:2114:30: B006 [*] Do not use mutable data structures for argument defaults
- airflow/providers/amazon/aws/operators/lambda_function.py:76:24: B006 Do not use mutable data structures for argument defaults
+ airflow/providers/amazon/aws/operators/lambda_function.py:76:24: B006 [*] Do not use mutable data structures for argument defaults
- airflow/providers/amazon/aws/sensors/lambda_function.py:59:31: B006 Do not use mutable data structures for argument defaults
+ airflow/providers/amazon/aws/sensors/lambda_function.py:59:31: B006 [*] Do not use mutable data structures for argument defaults
- airflow/providers/amazon/aws/transfers/azure_blob_to_s3.py:93:33: B006 Do not use mutable data structures for argument defaults
+ airflow/providers/amazon/aws/transfers/azure_blob_to_s3.py:93:33: B006 [*] Do not use mutable data structures for argument defaults
- airflow/providers/amazon/aws/transfers/azure_blob_to_s3.py:94:31: B006 Do not use mutable data structures for argument defaults
+ airflow/providers/amazon/aws/transfers/azure_blob_to_s3.py:94:31: B006 [*] Do not use mutable data structures for argument defaults
- airflow/providers/amazon/aws/transfers/redshift_to_s3.py:106:42: B006 Do not use mutable data structures for argument defaults
+ airflow/providers/amazon/aws/transfers/redshift_to_s3.py:106:42: B006 [*] Do not use mutable data structures for argument defaults
- airflow/providers/amazon/aws/transfers/s3_to_redshift.py:99:42: B006 Do not use mutable data structures for argument defaults
+ airflow/providers/amazon/aws/transfers/s3_to_redshift.py:99:42: B006 [*] Do not use mutable data structures for argument defaults
- airflow/utils/event_scheduler.py:32:16: B006 Do not use mutable data structures for argument defaults
+ airflow/utils/event_scheduler.py:32:16: B006 [*] Do not use mutable data structures for argument defaults
- tests/api_connexion/endpoints/test_mapped_task_instance_endpoint.py:93:74: B006 Do not use mutable data structures for argument defaults
+ tests/api_connexion/endpoints/test_mapped_task_instance_endpoint.py:93:74: B006 [*] Do not use mutable data structures for argument defaults
- tests/conftest.py:721:25: B006 Do not use mutable data structures for argument defaults
+ tests/conftest.py:721:25: B006 [*] Do not use mutable data structures for argument defaults

bokeh (+34, -34)

- examples/interaction/js_callbacks/js_on_event.py:15:53: B006 Do not use mutable data structures for argument defaults
+ examples/interaction/js_callbacks/js_on_event.py:15:53: B006 [*] Do not use mutable data structures for argument defaults
- examples/server/app/events_app.py:16:35: B006 Do not use mutable data structures for argument defaults
+ examples/server/app/events_app.py:16:35: B006 [*] Do not use mutable data structures for argument defaults
- examples/server/app/events_app.py:38:28: B006 Do not use mutable data structures for argument defaults
+ examples/server/app/events_app.py:38:28: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/application/handlers/code.py:82:78: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/application/handlers/code.py:82:78: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/application/handlers/directory.py:110:65: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/application/handlers/directory.py:110:65: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/application/handlers/notebook.py:66:65: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/application/handlers/notebook.py:66:65: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/application/handlers/script.py:80:65: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/application/handlers/script.py:80:65: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/application/handlers/server_lifecycle.py:55:65: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/application/handlers/server_lifecycle.py:55:65: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/application/handlers/server_request_handler.py:57:65: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/application/handlers/server_request_handler.py:57:65: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/core/json_encoder.py:178:51: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/core/json_encoder.py:178:51: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/core/property/container.py:123:82: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/core/property/container.py:123:82: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/core/property/container.py:150:82: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/core/property/container.py:150:82: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/core/property/container.py:189:32: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/core/property/container.py:189:32: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/core/property/container.py:297:32: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/core/property/container.py:297:32: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/core/property/container.py:310:66: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/core/property/container.py:310:66: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/core/property/visual.py:133:32: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/core/property/visual.py:133:32: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/core/property/visual.py:92:32: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/core/property/visual.py:92:32: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/core/property/wrappers.py:404:37: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/core/property/wrappers.py:404:37: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/core/serialization.py:217:52: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/core/serialization.py:217:52: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/embed/bundle.py:108:46: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/embed/bundle.py:108:46: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/embed/bundle.py:108:70: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/embed/bundle.py:108:70: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/embed/bundle.py:109:36: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/embed/bundle.py:109:36: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/embed/bundle.py:109:61: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/embed/bundle.py:109:61: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/embed/bundle.py:109:82: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/embed/bundle.py:109:82: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/embed/elements.py:84:46: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/embed/elements.py:84:46: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/embed/server.py:130:114: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/embed/server.py:130:114: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/embed/standalone.py:299:52: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/embed/standalone.py:299:52: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/layouts.py:367:26: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/layouts.py:367:26: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/plotting/_renderer.py:144:56: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/plotting/_renderer.py:144:56: B006 [*] Do not use mutable data structures for argument defaults
- src/bokeh/plotting/_renderer.py:144:78: B006 Do not use mutable data structures for argument defaults
+ src/bokeh/plotting/_renderer.py:144:78: B006 [*] Do not use mutable data structures for argument defaults
- tests/support/util/examples.py:77:90: B006 Do not use mutable data structures for argument defaults
+ tests/support/util/examples.py:77:90: B006 [*] Do not use mutable data structures for argument defaults
- tests/unit/bokeh/models/_util_models.py:87:127: B006 Do not use mutable data structures for argument defaults
+ tests/unit/bokeh/models/_util_models.py:87:127: B006 [*] Do not use mutable data structures for argument defaults
- tests/unit/bokeh/server/_util_server.py:66:35: B006 Do not use mutable data structures for argument defaults
+ tests/unit/bokeh/server/_util_server.py:66:35: B006 [*] Do not use mutable data structures for argument defaults
- tests/unit/bokeh/test_events.py:43:35: B006 Do not use mutable data structures for argument defaults
+ tests/unit/bokeh/test_events.py:43:35: B006 [*] Do not use mutable data structures for argument defaults

Rules changed: 1
Rule Changes Additions Removals
B006 88 44 44

Benchmark

Linux

group                                      main                                   pr
-----                                      ----                                   --
formatter/large/dataset.py                 1.00      8.2±0.04ms     4.9 MB/sec    1.01      8.4±0.18ms     4.9 MB/sec
formatter/numpy/ctypeslib.py               1.00  1644.3±30.97µs    10.1 MB/sec    1.01  1653.8±18.73µs    10.1 MB/sec
formatter/numpy/globals.py                 1.00    186.9±6.73µs    15.8 MB/sec    1.01    187.9±6.92µs    15.7 MB/sec
formatter/pydantic/types.py                1.00      3.5±0.08ms     7.3 MB/sec    1.01      3.5±0.04ms     7.2 MB/sec
linter/all-rules/large/dataset.py          1.00     10.1±0.06ms     4.0 MB/sec    1.00     10.1±0.11ms     4.0 MB/sec
linter/all-rules/numpy/ctypeslib.py        1.00      2.7±0.01ms     6.1 MB/sec    1.00      2.7±0.01ms     6.1 MB/sec
linter/all-rules/numpy/globals.py          1.00    384.0±1.86µs     7.7 MB/sec    1.01    386.6±0.55µs     7.6 MB/sec
linter/all-rules/pydantic/types.py         1.00      5.3±0.06ms     4.8 MB/sec    1.00      5.3±0.03ms     4.8 MB/sec
linter/default-rules/large/dataset.py      1.00      5.3±0.02ms     7.7 MB/sec    1.00      5.3±0.05ms     7.7 MB/sec
linter/default-rules/numpy/ctypeslib.py    1.00  1149.4±12.89µs    14.5 MB/sec    1.00  1146.0±13.74µs    14.5 MB/sec
linter/default-rules/numpy/globals.py      1.01    134.1±4.61µs    22.0 MB/sec    1.00    133.1±2.69µs    22.2 MB/sec
linter/default-rules/pydantic/types.py     1.01      2.4±0.04ms    10.6 MB/sec    1.00      2.4±0.03ms    10.7 MB/sec

Windows

group                                      main                                   pr
-----                                      ----                                   --
formatter/large/dataset.py                 1.01     10.0±0.10ms     4.1 MB/sec    1.00      9.9±0.10ms     4.1 MB/sec
formatter/numpy/ctypeslib.py               1.00  1919.8±22.18µs     8.7 MB/sec    1.00  1910.8±23.09µs     8.7 MB/sec
formatter/numpy/globals.py                 1.00    213.9±6.06µs    13.8 MB/sec    1.00    214.5±9.59µs    13.8 MB/sec
formatter/pydantic/types.py                1.00      4.2±0.07ms     6.0 MB/sec    1.00      4.2±0.12ms     6.0 MB/sec
linter/all-rules/large/dataset.py          1.00     12.4±0.10ms     3.3 MB/sec    1.01     12.6±0.15ms     3.2 MB/sec
linter/all-rules/numpy/ctypeslib.py        1.00      3.4±0.03ms     4.9 MB/sec    1.00      3.4±0.04ms     4.8 MB/sec
linter/all-rules/numpy/globals.py          1.00    429.0±5.52µs     6.9 MB/sec    1.01    431.8±8.86µs     6.8 MB/sec
linter/all-rules/pydantic/types.py         1.00      6.5±0.06ms     3.9 MB/sec    1.00      6.5±0.08ms     3.9 MB/sec
linter/default-rules/large/dataset.py      1.00      6.8±0.06ms     6.0 MB/sec    1.00      6.8±0.16ms     6.0 MB/sec
linter/default-rules/numpy/ctypeslib.py    1.00  1411.9±17.78µs    11.8 MB/sec    1.00  1408.6±18.73µs    11.8 MB/sec
linter/default-rules/numpy/globals.py      1.01    163.2±3.37µs    18.1 MB/sec    1.00    161.6±2.84µs    18.3 MB/sec
linter/default-rules/pydantic/types.py     1.00      3.0±0.04ms     8.4 MB/sec    1.00      3.0±0.03ms     8.4 MB/sec

@MichaReiser MichaReiser added the rule Implementing or modifying a lint rule label Jul 28, 2023
@konstin
Copy link
Member

konstin commented Aug 10, 2023

I've rebased onto main

@konstin konstin enabled auto-merge (squash) August 10, 2023 10:57
@konstin konstin merged commit 50dab9c into astral-sh:main Aug 10, 2023
charliermarsh added a commit that referenced this pull request Aug 11, 2023
## Summary

Some follow-ups to #6131 to ensure
that fixes are inserted _after_ function docstrings, and that fixes are
robust to a bunch of edge cases.

## Test Plan

`cargo test`
durumu pushed a commit to durumu/ruff that referenced this pull request Aug 12, 2023
## Summary

Reopening of astral-sh#4880 

One open TODO as described in:
astral-sh#4880 (comment)

FYI @charliermarsh seeing as you commented you wanted to do final review
and merge. @konstin @dhruvmanila @MichaReiser as previous reviewers.

# Old Description
## Summary

Adds an autofix for B006 turning mutable argument defaults into None and
setting their original value back in the function body if still `None`
at runtime like so:
```python
def before(x=[]):
    pass
    
def after(x=None):
    if x is None:
        x = []
    pass
```

## Test Plan

Added an extra test case to existing fixture with more indentation.
Checked results for all old examples.

NOTE: Also adapted the jupyter notebook test as this checked for B006 as
well.

## Issue link

Closes: astral-sh#4693

---------

Co-authored-by: konstin <[email protected]>
durumu pushed a commit to durumu/ruff that referenced this pull request Aug 12, 2023
## Summary

Some follow-ups to astral-sh#6131 to ensure
that fixes are inserted _after_ function docstrings, and that fixes are
robust to a bunch of edge cases.

## Test Plan

`cargo test`
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://togithub.com/astral-sh/ruff),
[changelog](https://togithub.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://togithub.com/astral-sh/ruff/releases/tag/v0.0.285)

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

##### Rule changes

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

##### Settings

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

##### Bug Fixes

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

##### Playground

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

##### Performance

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

#### New Contributors

- [@&#8203;magic-akari](https://togithub.com/magic-akari) made their
first contribution in
[https://github.com/astral-sh/ruff/pull/6472](https://togithub.com/astral-sh/ruff/pull/6472)
- [@&#8203;durumu](https://togithub.com/durumu) made their first
contribution in
[https://github.com/astral-sh/ruff/pull/6378](https://togithub.com/astral-sh/ruff/pull/6378)
- [@&#8203;jamesbraza](https://togithub.com/jamesbraza) made their first
contribution in
[https://github.com/astral-sh/ruff/pull/6520](https://togithub.com/astral-sh/ruff/pull/6520)
- [@&#8203;takumaw](https://togithub.com/takumaw) made their first
contribution in
[https://github.com/astral-sh/ruff/pull/6533](https://togithub.com/astral-sh/ruff/pull/6533)
- [@&#8203;noklam](https://togithub.com/noklam) made their first
contribution in
[https://github.com/astral-sh/ruff/pull/6573](https://togithub.com/astral-sh/ruff/pull/6573)
- [@&#8203;Teraskull](https://togithub.com/Teraskull) made their first
contribution in
[https://github.com/astral-sh/ruff/pull/6605](https://togithub.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://togithub.com/astral-sh/ruff),
[changelog](https://togithub.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://togithub.com/astral-sh/ruff/releases/tag/v0.0.285)

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

##### Rule changes

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

##### Settings

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

##### Bug Fixes

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

##### Playground

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

##### Performance

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

#### New Contributors

- [@&#8203;magic-akari](https://togithub.com/magic-akari) made their
first contribution in
[https://github.com/astral-sh/ruff/pull/6472](https://togithub.com/astral-sh/ruff/pull/6472)
- [@&#8203;durumu](https://togithub.com/durumu) made their first
contribution in
[https://github.com/astral-sh/ruff/pull/6378](https://togithub.com/astral-sh/ruff/pull/6378)
- [@&#8203;jamesbraza](https://togithub.com/jamesbraza) made their first
contribution in
[https://github.com/astral-sh/ruff/pull/6520](https://togithub.com/astral-sh/ruff/pull/6520)
- [@&#8203;takumaw](https://togithub.com/takumaw) made their first
contribution in
[https://github.com/astral-sh/ruff/pull/6533](https://togithub.com/astral-sh/ruff/pull/6533)
- [@&#8203;noklam](https://togithub.com/noklam) made their first
contribution in
[https://github.com/astral-sh/ruff/pull/6573](https://togithub.com/astral-sh/ruff/pull/6573)
- [@&#8203;Teraskull](https://togithub.com/Teraskull) made their first
contribution in
[https://github.com/astral-sh/ruff/pull/6605](https://togithub.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>
@qdegraaf qdegraaf deleted the autofix/B006 branch August 29, 2023 18:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
rule Implementing or modifying a lint rule
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Autofix B006 (mutable-argument-default)
3 participants