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

Ignore PERF203 if try contains loop control flow statements #6536

Conversation

evanrittenhouse
Copy link
Contributor

Summary

Fixes #6535

Test Plan

cargo t

@github-actions
Copy link
Contributor

github-actions bot commented Aug 13, 2023

PR Check Results

Ecosystem

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

airflow (+0, -13)

- airflow/models/variable.py:280:13: PERF203 `try`-`except` within a loop incurs performance overhead
- airflow/providers/amazon/aws/log/s3_task_handler.py:221:13: PERF203 `try`-`except` within a loop incurs performance overhead
- airflow/providers/amazon/aws/operators/redshift_cluster.py:499:13: PERF203 `try`-`except` within a loop incurs performance overhead
- airflow/providers/amazon/aws/operators/redshift_cluster.py:587:13: PERF203 `try`-`except` within a loop incurs performance overhead
- airflow/providers/amazon/aws/operators/redshift_cluster.py:680:13: PERF203 `try`-`except` within a loop incurs performance overhead
- airflow/providers/amazon/aws/triggers/emr.py:85:21: PERF203 `try`-`except` within a loop incurs performance overhead
- airflow/providers/google/cloud/hooks/compute_ssh.py:260:13: PERF203 `try`-`except` within a loop incurs performance overhead
- airflow/providers/google/cloud/hooks/datafusion.py:375:13: PERF203 `try`-`except` within a loop incurs performance overhead
- airflow/providers_manager.py:640:13: PERF203 `try`-`except` within a loop incurs performance overhead
- airflow/utils/file.py:323:9: PERF203 `try`-`except` within a loop incurs performance overhead
- dev/breeze/src/airflow_breeze/utils/confirm.py:90:9: PERF203 `try`-`except` within a loop incurs performance overhead
- dev/breeze/src/airflow_breeze/utils/kubernetes_utils.py:99:9: PERF203 `try`-`except` within a loop incurs performance overhead
- dev/breeze/src/airflow_breeze/utils/selective_checks.py:210:9: PERF203 `try`-`except` within a loop incurs performance overhead

bokeh (+0, -1)

- tests/support/plugins/file_server.py:89:13: PERF203 `try`-`except` within a loop incurs performance overhead

zulip (+0, -5)

- scripts/lib/supervisor.py:17:13: PERF203 `try`-`except` within a loop incurs performance overhead
- scripts/lib/zulip_tools.py:224:9: PERF203 `try`-`except` within a loop incurs performance overhead
- zerver/lib/rate_limiter.py:462:17: PERF203 `try`-`except` within a loop incurs performance overhead
- zerver/migrations/0037_disallow_null_string_id.py:23:17: PERF203 `try`-`except` within a loop incurs performance overhead
- zerver/worker/queue_processors.py:664:13: PERF203 `try`-`except` within a loop incurs performance overhead

Rules changed: 1
Rule Changes Additions Removals
PERF203 19 0 19

Benchmark

Linux

group                                      main                                    pr
-----                                      ----                                    --
formatter/large/dataset.py                 1.00      3.8±0.22ms    10.7 MB/sec     2.26      8.6±0.46ms     4.7 MB/sec
formatter/numpy/ctypeslib.py               1.00   770.1±45.46µs    21.6 MB/sec     2.16  1660.8±82.57µs    10.0 MB/sec
formatter/numpy/globals.py                 1.00     76.9±6.14µs    38.4 MB/sec     2.49    191.4±8.47µs    15.4 MB/sec
formatter/pydantic/types.py                1.00  1530.3±100.55µs    16.7 MB/sec    2.44      3.7±0.34ms     6.8 MB/sec
linter/all-rules/large/dataset.py          1.00     11.6±0.49ms     3.5 MB/sec     1.03     11.9±0.49ms     3.4 MB/sec
linter/all-rules/numpy/ctypeslib.py        1.00      3.0±0.13ms     5.5 MB/sec     1.05      3.2±0.17ms     5.2 MB/sec
linter/all-rules/numpy/globals.py          1.00   435.1±32.98µs     6.8 MB/sec     1.02   446.0±24.02µs     6.6 MB/sec
linter/all-rules/pydantic/types.py         1.00      5.8±0.20ms     4.4 MB/sec     1.07      6.2±0.25ms     4.1 MB/sec
linter/default-rules/large/dataset.py      1.00      5.8±0.24ms     7.0 MB/sec     1.09      6.3±0.21ms     6.4 MB/sec
linter/default-rules/numpy/ctypeslib.py    1.00  1311.6±90.21µs    12.7 MB/sec     1.03  1354.4±65.29µs    12.3 MB/sec
linter/default-rules/numpy/globals.py      1.00    156.1±8.23µs    18.9 MB/sec     1.03    161.6±8.19µs    18.3 MB/sec
linter/default-rules/pydantic/types.py     1.00      2.7±0.14ms     9.5 MB/sec     1.04      2.8±0.14ms     9.1 MB/sec

Windows

group                                      main                                   pr
-----                                      ----                                   --
formatter/large/dataset.py                 1.00      5.5±0.36ms     7.4 MB/sec    2.49     13.7±0.72ms     3.0 MB/sec
formatter/numpy/ctypeslib.py               1.00  1017.8±71.03µs    16.4 MB/sec    2.63      2.7±0.15ms     6.2 MB/sec
formatter/numpy/globals.py                 1.00    101.8±7.03µs    29.0 MB/sec    2.88   293.4±16.75µs    10.1 MB/sec
formatter/pydantic/types.py                1.00      2.1±0.12ms    11.9 MB/sec    2.70      5.8±0.28ms     4.4 MB/sec
linter/all-rules/large/dataset.py          1.00     17.7±0.74ms     2.3 MB/sec    1.02     18.0±0.90ms     2.3 MB/sec
linter/all-rules/numpy/ctypeslib.py        1.02      4.9±0.17ms     3.4 MB/sec    1.00      4.8±0.25ms     3.5 MB/sec
linter/all-rules/numpy/globals.py          1.05  625.3±101.85µs     4.7 MB/sec    1.00   598.2±29.46µs     4.9 MB/sec
linter/all-rules/pydantic/types.py         1.01      9.1±0.39ms     2.8 MB/sec    1.00      9.0±0.53ms     2.8 MB/sec
linter/default-rules/large/dataset.py      1.00      9.7±0.37ms     4.2 MB/sec    1.00      9.7±0.48ms     4.2 MB/sec
linter/default-rules/numpy/ctypeslib.py    1.00      2.0±0.11ms     8.2 MB/sec    1.00      2.0±0.07ms     8.2 MB/sec
linter/default-rules/numpy/globals.py      1.01   259.6±18.82µs    11.4 MB/sec    1.00   256.5±17.30µs    11.5 MB/sec
linter/default-rules/pydantic/types.py     1.03      4.5±0.18ms     5.7 MB/sec    1.00      4.3±0.22ms     5.9 MB/sec

@charliermarsh charliermarsh force-pushed the evanrittenhouse/perf203_loop_control_flow branch from 7501e9f to 14f222f Compare August 14, 2023 20:39
@charliermarsh charliermarsh force-pushed the evanrittenhouse/perf203_loop_control_flow branch from 14f222f to c13f86a Compare August 14, 2023 20:40
@charliermarsh charliermarsh enabled auto-merge (squash) August 14, 2023 20:41
@charliermarsh charliermarsh merged commit 1a52b54 into astral-sh:main Aug 14, 2023
16 checks passed
@evanrittenhouse evanrittenhouse deleted the evanrittenhouse/perf203_loop_control_flow branch August 14, 2023 23:18
@evanrittenhouse
Copy link
Contributor Author

@charliermarsh Just wondering - why implement a Visitor here?

@charliermarsh
Copy link
Member

@evanrittenhouse - Good q. We need to recurse through the body -- as-is, we were only looking at top-level statements, so it'd miss cases like:

try:
  x = 1
  if True:
    break
except:
  pass

The alternative was to use any_over_body, but we actually don't want to recurse into functions within the try body, so a custom visitor seemed simplest.

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

##### Rule changes

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

##### Settings

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

##### Bug Fixes

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

##### Playground

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

##### Performance

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

#### New Contributors

- [@&#8203;magic-akari](https://togithub.com/magic-akari) made their
first contribution in
[astral-sh/ruff#6472
- [@&#8203;durumu](https://togithub.com/durumu) made their first
contribution in
[astral-sh/ruff#6378
- [@&#8203;jamesbraza](https://togithub.com/jamesbraza) made their first
contribution in
[astral-sh/ruff#6520
- [@&#8203;takumaw](https://togithub.com/takumaw) made their first
contribution in
[astral-sh/ruff#6533
- [@&#8203;noklam](https://togithub.com/noklam) made their first
contribution in
[astral-sh/ruff#6573
- [@&#8203;Teraskull](https://togithub.com/Teraskull) made their first
contribution in
[astral-sh/ruff#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 added a commit to allenporter/flux-local that referenced this pull request 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
[astral-sh/ruff#6554
- \[`flake8-pytest-style`] Implement
`pytest-duplicate-parametrize-test-cases` (`PT014`) by
[@&#8203;harupy](https://togithub.com/harupy) in
[astral-sh/ruff#6598
- \[`flake8-tidy-imports`] Implement `banned-module-level-imports`
(`TID253`) by [@&#8203;durumu](https://togithub.com/durumu) in
[astral-sh/ruff#6378
- \[`pylint`] Implement `bad-dunder-name` (`W3201`) (in the Ruff
nursery) by [@&#8203;LaBatata101](https://togithub.com/LaBatata101) in
[astral-sh/ruff#6486
- \[`pylint`] Implement `subprocess-run-check` (`W1510`) by
[@&#8203;tjkuson](https://togithub.com/tjkuson) in
[astral-sh/ruff#6487
- \[`ruff`] Implement `quadratic-list-summation` (`RUF017`) by
[@&#8203;evanrittenhouse](https://togithub.com/evanrittenhouse) in
[astral-sh/ruff#6489

##### Rule changes

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

##### Settings

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

##### Bug Fixes

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

##### Playground

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

##### Performance

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

#### New Contributors

- [@&#8203;magic-akari](https://togithub.com/magic-akari) made their
first contribution in
[astral-sh/ruff#6472
- [@&#8203;durumu](https://togithub.com/durumu) made their first
contribution in
[astral-sh/ruff#6378
- [@&#8203;jamesbraza](https://togithub.com/jamesbraza) made their first
contribution in
[astral-sh/ruff#6520
- [@&#8203;takumaw](https://togithub.com/takumaw) made their first
contribution in
[astral-sh/ruff#6533
- [@&#8203;noklam](https://togithub.com/noklam) made their first
contribution in
[astral-sh/ruff#6573
- [@&#8203;Teraskull](https://togithub.com/Teraskull) made their first
contribution in
[astral-sh/ruff#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
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

PERF203 should only trigger if loop control flow isn't in the try block
2 participants