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

Avoid enforcing native-literals rule within nested f-strings #4488

Merged
merged 2 commits into from
Jun 2, 2023

Conversation

charliermarsh
Copy link
Member

@charliermarsh charliermarsh commented May 18, 2023

Summary

The permitted grammar within a nested f-string is really hard to work with. For example, there's typically no way to include quotation marks, unless one of the surrounding strings is triple-quoted? Or something like that. So, again, for example, our rule that flags usages of str() can run into problems when it sees f"{f'{str()}'}" -- there's no way to rewrite str() as "" or ''.

This PR turns off that rule specifically within nested f-strings.

@charliermarsh charliermarsh force-pushed the charlie/nested-f-string branch from 3f59ab1 to 22e67be Compare May 18, 2023 03:00
@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.27ms     2.9 MB/sec    1.00     14.0±0.29ms     2.9 MB/sec
linter/all-rules/numpy/ctypeslib.py        1.00      3.4±0.12ms     4.9 MB/sec    1.00      3.4±0.18ms     4.9 MB/sec
linter/all-rules/numpy/globals.py          1.01   435.5±10.13µs     6.8 MB/sec    1.00   432.4±16.64µs     6.8 MB/sec
linter/all-rules/pydantic/types.py         1.00      5.9±0.13ms     4.3 MB/sec    1.01      5.9±0.20ms     4.3 MB/sec
linter/default-rules/large/dataset.py      1.02      6.8±0.23ms     6.0 MB/sec    1.00      6.7±0.19ms     6.1 MB/sec
linter/default-rules/numpy/ctypeslib.py    1.00  1477.7±46.73µs    11.3 MB/sec    1.01  1490.7±62.35µs    11.2 MB/sec
linter/default-rules/numpy/globals.py      1.00    175.3±5.07µs    16.8 MB/sec    1.03   180.8±12.00µs    16.3 MB/sec
linter/default-rules/pydantic/types.py     1.01      3.1±0.10ms     8.2 MB/sec    1.00      3.1±0.11ms     8.3 MB/sec
parser/large/dataset.py                    1.02      5.4±0.13ms     7.6 MB/sec    1.00      5.2±0.15ms     7.8 MB/sec
parser/numpy/ctypeslib.py                  1.02  1047.7±22.71µs    15.9 MB/sec    1.00  1027.2±29.96µs    16.2 MB/sec
parser/numpy/globals.py                    1.05    108.1±4.80µs    27.3 MB/sec    1.00    103.4±3.50µs    28.5 MB/sec
parser/pydantic/types.py                   1.03      2.3±0.07ms    11.0 MB/sec    1.00      2.2±0.07ms    11.4 MB/sec

Windows

group                                      main                                   pr
-----                                      ----                                   --
linter/all-rules/large/dataset.py          1.00     17.3±0.74ms     2.4 MB/sec    1.02     17.6±0.31ms     2.3 MB/sec
linter/all-rules/numpy/ctypeslib.py        1.00      4.3±0.13ms     3.9 MB/sec    1.01      4.4±0.11ms     3.8 MB/sec
linter/all-rules/numpy/globals.py          1.00   510.4±20.36µs     5.8 MB/sec    1.01   515.3±20.77µs     5.7 MB/sec
linter/all-rules/pydantic/types.py         1.00      7.2±0.25ms     3.5 MB/sec    1.02      7.3±0.17ms     3.5 MB/sec
linter/default-rules/large/dataset.py      1.00      8.5±0.26ms     4.8 MB/sec    1.10      9.4±0.28ms     4.3 MB/sec
linter/default-rules/numpy/ctypeslib.py    1.00  1802.5±57.31µs     9.2 MB/sec    1.08  1942.4±67.37µs     8.6 MB/sec
linter/default-rules/numpy/globals.py      1.00   211.3±11.44µs    14.0 MB/sec    1.06   224.7±15.55µs    13.1 MB/sec
linter/default-rules/pydantic/types.py     1.00      3.9±0.10ms     6.6 MB/sec    1.08      4.2±0.15ms     6.1 MB/sec
parser/large/dataset.py                    1.01      6.7±0.12ms     6.1 MB/sec    1.00      6.7±0.13ms     6.1 MB/sec
parser/numpy/ctypeslib.py                  1.00  1254.2±32.48µs    13.3 MB/sec    1.01  1262.4±53.73µs    13.2 MB/sec
parser/numpy/globals.py                    1.02    129.0±6.44µs    22.9 MB/sec    1.00    127.0±3.90µs    23.2 MB/sec
parser/pydantic/types.py                   1.01      2.9±0.09ms     8.9 MB/sec    1.00      2.8±0.08ms     9.0 MB/sec

@MichaReiser
Copy link
Member

This is a pretty bad fix, since we'll still end up using unparse_expr within nested f-strings to format some diagnostics, which means we'll show users code and suggestions that won't quite work. But, our options are pretty limited here.

That seems like a good use case for the Applicability::Manual

@charliermarsh
Copy link
Member Author

Would this require that we go through every rule and add a check for ctx.in_nested_f_string(), and use the appropriate applicability method if so?

@MichaReiser
Copy link
Member

Would this require that we go through every rule and add a check for ctx.in_nested_f_string(), and use the appropriate applicability method if so?

Hmm yeah. That sounds annoying and very fragile

@charliermarsh charliermarsh force-pushed the charlie/f-string-quote branch from 867c7bd to 2d1b3a7 Compare May 18, 2023 14:25
Base automatically changed from charlie/f-string-quote to main May 18, 2023 14:33
@charliermarsh charliermarsh force-pushed the charlie/nested-f-string branch from 22e67be to fd16d65 Compare May 18, 2023 15:01
pub fn patch(&self, code: Rule) -> bool {
self.settings.rules.should_fix(code)
self.settings.rules.should_fix(code) && !self.ctx.in_nested_f_string()
Copy link
Member

Choose a reason for hiding this comment

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

Adding additional logic here is problematic because we might now no-longer generate fixes for rules that are otherwise marked as AutofixKind::Always.

Copy link
Member Author

Choose a reason for hiding this comment

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

Yeah. I'm not sure how else to enforce this though. Any ideas? :/

Copy link
Member

Choose a reason for hiding this comment

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

Not really. The most ideal solution in my view would be to automatically downgrade all fixes to Manual but this is hard today because ruff has no centralized logic collecting all diagnostics (every rule has the liberty to manipulate the diagnostics vec).

Copy link
Member

@konstin konstin left a comment

Choose a reason for hiding this comment

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

I checked 3 of the remaining autofix errors and it seems none of them were f-string related 🎉

@@ -115,13 +115,12 @@ impl<'a> Checker<'a> {
}

impl<'a> Checker<'a> {
/// Return `true` if a patch should be generated under the given autofix
/// `Mode`.
/// Return `true` if a patch should be generated for a given [`Rule`].
Copy link
Member

Choose a reason for hiding this comment

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

non specific nit, is there a reason why we always do backticks inside links?

@T-256
Copy link
Contributor

T-256 commented May 19, 2023

One note to add here is that most of these will valid syntax with PEP 701 implemented, currently targeted for python 3.12, i.e. we could very ambitiously allow autofixes in f-strings for projects with minimum python version 3.12.

Originally posted by @konstin in #4324 (comment)

@charliermarsh charliermarsh changed the title Avoid autofixing within nested f-strings Avoid enforcing native-literals rule within nested f-strings Jun 2, 2023
@charliermarsh charliermarsh force-pushed the charlie/nested-f-string branch from fd16d65 to d0103ef Compare June 2, 2023 03:52
@charliermarsh charliermarsh enabled auto-merge (squash) June 2, 2023 03:53
@charliermarsh charliermarsh merged commit ea3cbcc into main Jun 2, 2023
@charliermarsh charliermarsh deleted the charlie/nested-f-string branch June 2, 2023 04:00
renovate bot referenced this pull request in ixm-one/pytest-cmake-presets Jun 7, 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.270` -> `^0.0.271` |
[![age](https://badges.renovateapi.com/packages/pypi/ruff/0.0.271/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/pypi/ruff/0.0.271/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/pypi/ruff/0.0.271/compatibility-slim/0.0.270)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/pypi/ruff/0.0.271/confidence-slim/0.0.270)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

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

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

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

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

#### What's Changed

##### Rules

- Add autofix for flake8-type-checking by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4742](https://togithub.com/charliermarsh/ruff/pull/4742)
- \[`airflow`] Add AIR001: task variable name should be same as task_id
arg by [@&#8203;jlaneve](https://togithub.com/jlaneve) in
[https://github.com/charliermarsh/ruff/pull/4687](https://togithub.com/charliermarsh/ruff/pull/4687)
- \[`flake8-bandit`] Implement S609, linux_commands_wildcard_injection
by [@&#8203;scop](https://togithub.com/scop) in
[https://github.com/charliermarsh/ruff/pull/4504](https://togithub.com/charliermarsh/ruff/pull/4504)
- \[`flake8-bugbear`] Move duplicate-value rule to flake8-bugbear by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4882](https://togithub.com/charliermarsh/ruff/pull/4882)
- \[`flake8-fixme`] Implement `flake8_fixme` and refactor
`TodoDirective` by
[@&#8203;evanrittenhouse](https://togithub.com/evanrittenhouse) in
[https://github.com/charliermarsh/ruff/pull/4681](https://togithub.com/charliermarsh/ruff/pull/4681)
- \[`flake8-future-annotations`] Implement `FA102` by
[@&#8203;akx](https://togithub.com/akx) in
[https://github.com/charliermarsh/ruff/pull/4702](https://togithub.com/charliermarsh/ruff/pull/4702)
- \[`flake8-pyi`] Add PYI024 for `flake8-pyi` plugin by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4756](https://togithub.com/charliermarsh/ruff/pull/4756)
- \[`flake8-pyi`] Add PYI034 for `flake8-pyi` plugin by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4764](https://togithub.com/charliermarsh/ruff/pull/4764)
- \[`flake8-pyi`] Add `PYI032` rule with autofix by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4695](https://togithub.com/charliermarsh/ruff/pull/4695)
- \[`flake8-pyi`] Add autofix for PYI010 by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4634](https://togithub.com/charliermarsh/ruff/pull/4634)
- \[`flake8-pyi`] Implement PYI029 by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4851](https://togithub.com/charliermarsh/ruff/pull/4851)
- \[`flake8-pyi`] Implement PYI035 by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4820](https://togithub.com/charliermarsh/ruff/pull/4820)
- \[`flake8-pyi`] Implement PYI048 for `flake8-pyi` plugin by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4645](https://togithub.com/charliermarsh/ruff/pull/4645)
- \[`flake8-pyi`] Implement PYI053 by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4770](https://togithub.com/charliermarsh/ruff/pull/4770)
- \[`flake8-pyi`] Implement PYI054 by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4775](https://togithub.com/charliermarsh/ruff/pull/4775)
- \[`flake8-pyi`] Implement `PYI025` by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4791](https://togithub.com/charliermarsh/ruff/pull/4791)
- \[`flake8-pyi`] Implement `PYI045` by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4700](https://togithub.com/charliermarsh/ruff/pull/4700)
- \[`pylint`] Add Pylint rule `C0208` (`use-sequence-for-iteration`) as
`PLC0208` (`iteration-over-set`) by
[@&#8203;tjkuson](https://togithub.com/tjkuson) in
[https://github.com/charliermarsh/ruff/pull/4706](https://togithub.com/charliermarsh/ruff/pull/4706)
- \[`pylint`] Add autofix for `PLR1701` (repeated-isinstance-calls) by
[@&#8203;dhruvmanila](https://togithub.com/dhruvmanila) in
[https://github.com/charliermarsh/ruff/pull/4792](https://togithub.com/charliermarsh/ruff/pull/4792)
- \[`pylint`] Implement Pylint's `yield-inside-async-function` rule
(`PLE1700`) by [@&#8203;chanman3388](https://togithub.com/chanman3388)
in
[https://github.com/charliermarsh/ruff/pull/4668](https://togithub.com/charliermarsh/ruff/pull/4668)
- \[`pylint`] implement E307 for pylint invalid str return type by
[@&#8203;Ryang20718](https://togithub.com/Ryang20718) in
[https://github.com/charliermarsh/ruff/pull/4854](https://togithub.com/charliermarsh/ruff/pull/4854)
- \[`ruff`] Lint pyproject.toml by
[@&#8203;konstin](https://togithub.com/konstin) in
[https://github.com/charliermarsh/ruff/pull/4496](https://togithub.com/charliermarsh/ruff/pull/4496)
- \[`tryceratops`] Ignore error calls with `exc_info` in TRY400 by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4797](https://togithub.com/charliermarsh/ruff/pull/4797)

##### Settings

- Add `pyflakes.extend-generics` setting by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4677](https://togithub.com/charliermarsh/ruff/pull/4677)

##### Bug Fixes

- Fix PLW3301 false positive single argument nested min/max by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4683](https://togithub.com/charliermarsh/ruff/pull/4683)
- Handle dotted alias imports to check for implicit imports by
[@&#8203;dhruvmanila](https://togithub.com/dhruvmanila) in
[https://github.com/charliermarsh/ruff/pull/4685](https://togithub.com/charliermarsh/ruff/pull/4685)
- Flag empty strings in flake8-errmsg rules by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4745](https://togithub.com/charliermarsh/ruff/pull/4745)
- Exclude function definition from too-many-statements rule by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4794](https://togithub.com/charliermarsh/ruff/pull/4794)
- Preserve quotes in F523 fixer by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4836](https://togithub.com/charliermarsh/ruff/pull/4836)
- Fix round-tripping of nested functions by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4875](https://togithub.com/charliermarsh/ruff/pull/4875)
- Avoid early-exit in explicit-f-string-type-conversion by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4886](https://togithub.com/charliermarsh/ruff/pull/4886)
- Avoid no-op fix for nested with expressions by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4906](https://togithub.com/charliermarsh/ruff/pull/4906)
- Fix UP036 auto-fix error by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4679](https://togithub.com/charliermarsh/ruff/pull/4679)
- Use class name as range for `B024` by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4647](https://togithub.com/charliermarsh/ruff/pull/4647)
- Change TODO directive detection to work with multiple pound signs on
the same line by
[@&#8203;evanrittenhouse](https://togithub.com/evanrittenhouse) in
[https://github.com/charliermarsh/ruff/pull/4558](https://togithub.com/charliermarsh/ruff/pull/4558)
- Allow more immutable funcs for RUF009 by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4660](https://togithub.com/charliermarsh/ruff/pull/4660)
- Avoid using typing-imported symbols for runtime edits by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4649](https://togithub.com/charliermarsh/ruff/pull/4649)
- Fix `async for` formatting by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4675](https://togithub.com/charliermarsh/ruff/pull/4675)
- Ignore **setattr** in FBT003 by
[@&#8203;alexfikl](https://togithub.com/alexfikl) in
[https://github.com/charliermarsh/ruff/pull/4752](https://togithub.com/charliermarsh/ruff/pull/4752)
- Include ImportError in non-fixable try-catch imports by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4793](https://togithub.com/charliermarsh/ruff/pull/4793)
- Avoid extra newline between diagnostics in grouped mode by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4776](https://togithub.com/charliermarsh/ruff/pull/4776)
- Avoid enforcing native-literals rule within nested f-strings by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4488](https://togithub.com/charliermarsh/ruff/pull/4488)
- Respect mixed variable assignment in RET504 by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4835](https://togithub.com/charliermarsh/ruff/pull/4835)
- Make FLY002 autofix into a constant string instead of an f-string if
all `join()` arguments are strings by
[@&#8203;evanrittenhouse](https://togithub.com/evanrittenhouse) in
[https://github.com/charliermarsh/ruff/pull/4834](https://togithub.com/charliermarsh/ruff/pull/4834)
- Add some exceptions for FBT003
([#&#8203;3247](https://togithub.com/charliermarsh/ruff/issues/3247)) by
[@&#8203;allisonkarlitskaya](https://togithub.com/allisonkarlitskaya) in
[https://github.com/charliermarsh/ruff/pull/4867](https://togithub.com/charliermarsh/ruff/pull/4867)
- Avoid running RUF100 rules when code contains syntax errors by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4869](https://togithub.com/charliermarsh/ruff/pull/4869)
- Avoid index-out-of-bands panic for positional placeholders by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4872](https://togithub.com/charliermarsh/ruff/pull/4872)
- Remove destructive fixes for F523 by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4883](https://togithub.com/charliermarsh/ruff/pull/4883)
- Respect shadowed exports in `__all__` by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4885](https://togithub.com/charliermarsh/ruff/pull/4885)
- Track symbol deletions separately from bindings by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4888](https://togithub.com/charliermarsh/ruff/pull/4888)
- Change fixable_set to include RuleSelector::All/Nursery by
[@&#8203;evanrittenhouse](https://togithub.com/evanrittenhouse) in
[https://github.com/charliermarsh/ruff/pull/4852](https://togithub.com/charliermarsh/ruff/pull/4852)

#### New Contributors

- [@&#8203;bersbersbers](https://togithub.com/bersbersbers) made their
first contribution in
[https://github.com/charliermarsh/ruff/pull/4644](https://togithub.com/charliermarsh/ruff/pull/4644)
- [@&#8203;jlaneve](https://togithub.com/jlaneve) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4690](https://togithub.com/charliermarsh/ruff/pull/4690)
- [@&#8203;suharnikov](https://togithub.com/suharnikov) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4678](https://togithub.com/charliermarsh/ruff/pull/4678)
- [@&#8203;alexfikl](https://togithub.com/alexfikl) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4752](https://togithub.com/charliermarsh/ruff/pull/4752)
- [@&#8203;allisonkarlitskaya](https://togithub.com/allisonkarlitskaya)
made their first contribution in
[https://github.com/charliermarsh/ruff/pull/4867](https://togithub.com/charliermarsh/ruff/pull/4867)
- [@&#8203;Ryang20718](https://togithub.com/Ryang20718) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4854](https://togithub.com/charliermarsh/ruff/pull/4854)
- [@&#8203;addisoncrump](https://togithub.com/addisoncrump) made their
first contribution in
[https://github.com/charliermarsh/ruff/pull/4893](https://togithub.com/charliermarsh/ruff/pull/4893)

**Full Changelog**:
astral-sh/ruff@v0.0.270...v0.0.271

</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:eyJjcmVhdGVkSW5WZXIiOiIzNS4xMTAuMCIsInVwZGF0ZWRJblZlciI6IjM1LjExMC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
jankatins referenced this pull request in jankatins/pr-workflow-example Jun 8, 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.270` -> `0.0.272` |
[![age](https://badges.renovateapi.com/packages/pypi/ruff/0.0.272/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/pypi/ruff/0.0.272/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/pypi/ruff/0.0.272/compatibility-slim/0.0.270)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/pypi/ruff/0.0.272/confidence-slim/0.0.270)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

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

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

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

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

#### What's Changed

##### Breaking Changes

- Move flake8-fixme rules to FIX prefix by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4917](https://togithub.com/charliermarsh/ruff/pull/4917)

##### Rules

- \[`flake8-pyi`] Implement PYI050 by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4884](https://togithub.com/charliermarsh/ruff/pull/4884)

##### Bug Fixes

- Avoid attributing runtime references to module-level imports by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4942](https://togithub.com/charliermarsh/ruff/pull/4942)
- Skip class scopes when resolving nonlocal references by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4943](https://togithub.com/charliermarsh/ruff/pull/4943)
- Apply `dict.get` fix before ternary rewrite by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4944](https://togithub.com/charliermarsh/ruff/pull/4944)
- Handle implicit string concatenations in conversion-flag rewrites by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4947](https://togithub.com/charliermarsh/ruff/pull/4947)
- Make `C413` fix as suggested for `reversed` call by
[@&#8203;dhruvmanila](https://togithub.com/dhruvmanila) in
[https://github.com/charliermarsh/ruff/pull/4891](https://togithub.com/charliermarsh/ruff/pull/4891)
- ignore if using infinite iterators in `B905` by
[@&#8203;kyoto7250](https://togithub.com/kyoto7250) in
[https://github.com/charliermarsh/ruff/pull/4914](https://togithub.com/charliermarsh/ruff/pull/4914)

**Full Changelog**:
astral-sh/ruff@v0.0.271...v0.0.272

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

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

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

#### What's Changed

##### Rules

- Add autofix for flake8-type-checking by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4742](https://togithub.com/charliermarsh/ruff/pull/4742)
- \[`airflow`] Add AIR001: task variable name should be same as task_id
arg by [@&#8203;jlaneve](https://togithub.com/jlaneve) in
[https://github.com/charliermarsh/ruff/pull/4687](https://togithub.com/charliermarsh/ruff/pull/4687)
- \[`flake8-bandit`] Implement S609, linux_commands_wildcard_injection
by [@&#8203;scop](https://togithub.com/scop) in
[https://github.com/charliermarsh/ruff/pull/4504](https://togithub.com/charliermarsh/ruff/pull/4504)
- \[`flake8-bugbear`] Move duplicate-value rule to flake8-bugbear by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4882](https://togithub.com/charliermarsh/ruff/pull/4882)
- \[`flake8-fixme`] Implement `flake8_fixme` and refactor
`TodoDirective` by
[@&#8203;evanrittenhouse](https://togithub.com/evanrittenhouse) in
[https://github.com/charliermarsh/ruff/pull/4681](https://togithub.com/charliermarsh/ruff/pull/4681)
- \[`flake8-future-annotations`] Implement `FA102` by
[@&#8203;akx](https://togithub.com/akx) in
[https://github.com/charliermarsh/ruff/pull/4702](https://togithub.com/charliermarsh/ruff/pull/4702)
- \[`flake8-pyi`] Add PYI024 for `flake8-pyi` plugin by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4756](https://togithub.com/charliermarsh/ruff/pull/4756)
- \[`flake8-pyi`] Add PYI034 for `flake8-pyi` plugin by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4764](https://togithub.com/charliermarsh/ruff/pull/4764)
- \[`flake8-pyi`] Add `PYI032` rule with autofix by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4695](https://togithub.com/charliermarsh/ruff/pull/4695)
- \[`flake8-pyi`] Add autofix for PYI010 by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4634](https://togithub.com/charliermarsh/ruff/pull/4634)
- \[`flake8-pyi`] Implement PYI029 by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4851](https://togithub.com/charliermarsh/ruff/pull/4851)
- \[`flake8-pyi`] Implement PYI035 by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4820](https://togithub.com/charliermarsh/ruff/pull/4820)
- \[`flake8-pyi`] Implement PYI048 for `flake8-pyi` plugin by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4645](https://togithub.com/charliermarsh/ruff/pull/4645)
- \[`flake8-pyi`] Implement PYI053 by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4770](https://togithub.com/charliermarsh/ruff/pull/4770)
- \[`flake8-pyi`] Implement PYI054 by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4775](https://togithub.com/charliermarsh/ruff/pull/4775)
- \[`flake8-pyi`] Implement `PYI025` by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4791](https://togithub.com/charliermarsh/ruff/pull/4791)
- \[`flake8-pyi`] Implement `PYI045` by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4700](https://togithub.com/charliermarsh/ruff/pull/4700)
- \[`pylint`] Add Pylint rule `C0208` (`use-sequence-for-iteration`) as
`PLC0208` (`iteration-over-set`) by
[@&#8203;tjkuson](https://togithub.com/tjkuson) in
[https://github.com/charliermarsh/ruff/pull/4706](https://togithub.com/charliermarsh/ruff/pull/4706)
- \[`pylint`] Add autofix for `PLR1701` (repeated-isinstance-calls) by
[@&#8203;dhruvmanila](https://togithub.com/dhruvmanila) in
[https://github.com/charliermarsh/ruff/pull/4792](https://togithub.com/charliermarsh/ruff/pull/4792)
- \[`pylint`] Implement Pylint's `yield-inside-async-function` rule
(`PLE1700`) by [@&#8203;chanman3388](https://togithub.com/chanman3388)
in
[https://github.com/charliermarsh/ruff/pull/4668](https://togithub.com/charliermarsh/ruff/pull/4668)
- \[`pylint`] implement E307 for pylint invalid str return type by
[@&#8203;Ryang20718](https://togithub.com/Ryang20718) in
[https://github.com/charliermarsh/ruff/pull/4854](https://togithub.com/charliermarsh/ruff/pull/4854)
- \[`ruff`] Lint pyproject.toml by
[@&#8203;konstin](https://togithub.com/konstin) in
[https://github.com/charliermarsh/ruff/pull/4496](https://togithub.com/charliermarsh/ruff/pull/4496)
- \[`tryceratops`] Ignore error calls with `exc_info` in TRY400 by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4797](https://togithub.com/charliermarsh/ruff/pull/4797)

##### Settings

- Add `pyflakes.extend-generics` setting by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4677](https://togithub.com/charliermarsh/ruff/pull/4677)

##### Bug Fixes

- Fix PLW3301 false positive single argument nested min/max by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4683](https://togithub.com/charliermarsh/ruff/pull/4683)
- Handle dotted alias imports to check for implicit imports by
[@&#8203;dhruvmanila](https://togithub.com/dhruvmanila) in
[https://github.com/charliermarsh/ruff/pull/4685](https://togithub.com/charliermarsh/ruff/pull/4685)
- Flag empty strings in flake8-errmsg rules by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4745](https://togithub.com/charliermarsh/ruff/pull/4745)
- Exclude function definition from too-many-statements rule by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4794](https://togithub.com/charliermarsh/ruff/pull/4794)
- Preserve quotes in F523 fixer by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4836](https://togithub.com/charliermarsh/ruff/pull/4836)
- Fix round-tripping of nested functions by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4875](https://togithub.com/charliermarsh/ruff/pull/4875)
- Avoid early-exit in explicit-f-string-type-conversion by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4886](https://togithub.com/charliermarsh/ruff/pull/4886)
- Avoid no-op fix for nested with expressions by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4906](https://togithub.com/charliermarsh/ruff/pull/4906)
- Fix UP036 auto-fix error by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4679](https://togithub.com/charliermarsh/ruff/pull/4679)
- Use class name as range for `B024` by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4647](https://togithub.com/charliermarsh/ruff/pull/4647)
- Change TODO directive detection to work with multiple pound signs on
the same line by
[@&#8203;evanrittenhouse](https://togithub.com/evanrittenhouse) in
[https://github.com/charliermarsh/ruff/pull/4558](https://togithub.com/charliermarsh/ruff/pull/4558)
- Allow more immutable funcs for RUF009 by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4660](https://togithub.com/charliermarsh/ruff/pull/4660)
- Avoid using typing-imported symbols for runtime edits by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4649](https://togithub.com/charliermarsh/ruff/pull/4649)
- Fix `async for` formatting by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4675](https://togithub.com/charliermarsh/ruff/pull/4675)
- Ignore **setattr** in FBT003 by
[@&#8203;alexfikl](https://togithub.com/alexfikl) in
[https://github.com/charliermarsh/ruff/pull/4752](https://togithub.com/charliermarsh/ruff/pull/4752)
- Include ImportError in non-fixable try-catch imports by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4793](https://togithub.com/charliermarsh/ruff/pull/4793)
- Avoid extra newline between diagnostics in grouped mode by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4776](https://togithub.com/charliermarsh/ruff/pull/4776)
- Avoid enforcing native-literals rule within nested f-strings by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4488](https://togithub.com/charliermarsh/ruff/pull/4488)
- Respect mixed variable assignment in RET504 by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4835](https://togithub.com/charliermarsh/ruff/pull/4835)
- Make FLY002 autofix into a constant string instead of an f-string if
all `join()` arguments are strings by
[@&#8203;evanrittenhouse](https://togithub.com/evanrittenhouse) in
[https://github.com/charliermarsh/ruff/pull/4834](https://togithub.com/charliermarsh/ruff/pull/4834)
- Add some exceptions for FBT003
([#&#8203;3247](https://togithub.com/charliermarsh/ruff/issues/3247)) by
[@&#8203;allisonkarlitskaya](https://togithub.com/allisonkarlitskaya) in
[https://github.com/charliermarsh/ruff/pull/4867](https://togithub.com/charliermarsh/ruff/pull/4867)
- Avoid running RUF100 rules when code contains syntax errors by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4869](https://togithub.com/charliermarsh/ruff/pull/4869)
- Avoid index-out-of-bands panic for positional placeholders by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4872](https://togithub.com/charliermarsh/ruff/pull/4872)
- Remove destructive fixes for F523 by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4883](https://togithub.com/charliermarsh/ruff/pull/4883)
- Respect shadowed exports in `__all__` by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4885](https://togithub.com/charliermarsh/ruff/pull/4885)
- Track symbol deletions separately from bindings by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4888](https://togithub.com/charliermarsh/ruff/pull/4888)
- Change fixable_set to include RuleSelector::All/Nursery by
[@&#8203;evanrittenhouse](https://togithub.com/evanrittenhouse) in
[https://github.com/charliermarsh/ruff/pull/4852](https://togithub.com/charliermarsh/ruff/pull/4852)

#### New Contributors

- [@&#8203;bersbersbers](https://togithub.com/bersbersbers) made their
first contribution in
[https://github.com/charliermarsh/ruff/pull/4644](https://togithub.com/charliermarsh/ruff/pull/4644)
- [@&#8203;jlaneve](https://togithub.com/jlaneve) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4690](https://togithub.com/charliermarsh/ruff/pull/4690)
- [@&#8203;suharnikov](https://togithub.com/suharnikov) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4678](https://togithub.com/charliermarsh/ruff/pull/4678)
- [@&#8203;alexfikl](https://togithub.com/alexfikl) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4752](https://togithub.com/charliermarsh/ruff/pull/4752)
- [@&#8203;allisonkarlitskaya](https://togithub.com/allisonkarlitskaya)
made their first contribution in
[https://github.com/charliermarsh/ruff/pull/4867](https://togithub.com/charliermarsh/ruff/pull/4867)
- [@&#8203;Ryang20718](https://togithub.com/Ryang20718) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4854](https://togithub.com/charliermarsh/ruff/pull/4854)
- [@&#8203;addisoncrump](https://togithub.com/addisoncrump) made their
first contribution in
[https://github.com/charliermarsh/ruff/pull/4893](https://togithub.com/charliermarsh/ruff/pull/4893)

**Full Changelog**:
astral-sh/ruff@v0.0.270...v0.0.271

</details>

---

### Configuration

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

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **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/jankatins/pr-workflow-example).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4xMTAuMCIsInVwZGF0ZWRJblZlciI6IjM1LjExMC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->
renovate bot referenced this pull request in allenporter/flux-local Jun 10, 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.270` -> `==0.0.272` |
[![age](https://badges.renovateapi.com/packages/pypi/ruff/0.0.272/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/pypi/ruff/0.0.272/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/pypi/ruff/0.0.272/compatibility-slim/0.0.270)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/pypi/ruff/0.0.272/confidence-slim/0.0.270)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

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

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

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

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

#### What's Changed

##### Breaking Changes

- Move flake8-fixme rules to FIX prefix by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4917](https://togithub.com/charliermarsh/ruff/pull/4917)

##### Rules

- \[`flake8-pyi`] Implement PYI050 by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4884](https://togithub.com/charliermarsh/ruff/pull/4884)

##### Bug Fixes

- Avoid attributing runtime references to module-level imports by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4942](https://togithub.com/charliermarsh/ruff/pull/4942)
- Skip class scopes when resolving nonlocal references by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4943](https://togithub.com/charliermarsh/ruff/pull/4943)
- Apply `dict.get` fix before ternary rewrite by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4944](https://togithub.com/charliermarsh/ruff/pull/4944)
- Handle implicit string concatenations in conversion-flag rewrites by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4947](https://togithub.com/charliermarsh/ruff/pull/4947)
- Make `C413` fix as suggested for `reversed` call by
[@&#8203;dhruvmanila](https://togithub.com/dhruvmanila) in
[https://github.com/charliermarsh/ruff/pull/4891](https://togithub.com/charliermarsh/ruff/pull/4891)
- ignore if using infinite iterators in `B905` by
[@&#8203;kyoto7250](https://togithub.com/kyoto7250) in
[https://github.com/charliermarsh/ruff/pull/4914](https://togithub.com/charliermarsh/ruff/pull/4914)

**Full Changelog**:
astral-sh/ruff@v0.0.271...v0.0.272

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

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

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

#### What's Changed

##### Rules

- Add autofix for flake8-type-checking by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4742](https://togithub.com/charliermarsh/ruff/pull/4742)
- \[`airflow`] Add AIR001: task variable name should be same as task_id
arg by [@&#8203;jlaneve](https://togithub.com/jlaneve) in
[https://github.com/charliermarsh/ruff/pull/4687](https://togithub.com/charliermarsh/ruff/pull/4687)
- \[`flake8-bandit`] Implement S609, linux_commands_wildcard_injection
by [@&#8203;scop](https://togithub.com/scop) in
[https://github.com/charliermarsh/ruff/pull/4504](https://togithub.com/charliermarsh/ruff/pull/4504)
- \[`flake8-bugbear`] Move duplicate-value rule to flake8-bugbear by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4882](https://togithub.com/charliermarsh/ruff/pull/4882)
- \[`flake8-fixme`] Implement `flake8_fixme` and refactor
`TodoDirective` by
[@&#8203;evanrittenhouse](https://togithub.com/evanrittenhouse) in
[https://github.com/charliermarsh/ruff/pull/4681](https://togithub.com/charliermarsh/ruff/pull/4681)
- \[`flake8-future-annotations`] Implement `FA102` by
[@&#8203;akx](https://togithub.com/akx) in
[https://github.com/charliermarsh/ruff/pull/4702](https://togithub.com/charliermarsh/ruff/pull/4702)
- \[`flake8-pyi`] Add PYI024 for `flake8-pyi` plugin by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4756](https://togithub.com/charliermarsh/ruff/pull/4756)
- \[`flake8-pyi`] Add PYI034 for `flake8-pyi` plugin by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4764](https://togithub.com/charliermarsh/ruff/pull/4764)
- \[`flake8-pyi`] Add `PYI032` rule with autofix by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4695](https://togithub.com/charliermarsh/ruff/pull/4695)
- \[`flake8-pyi`] Add autofix for PYI010 by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4634](https://togithub.com/charliermarsh/ruff/pull/4634)
- \[`flake8-pyi`] Implement PYI029 by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4851](https://togithub.com/charliermarsh/ruff/pull/4851)
- \[`flake8-pyi`] Implement PYI035 by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4820](https://togithub.com/charliermarsh/ruff/pull/4820)
- \[`flake8-pyi`] Implement PYI048 for `flake8-pyi` plugin by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4645](https://togithub.com/charliermarsh/ruff/pull/4645)
- \[`flake8-pyi`] Implement PYI053 by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4770](https://togithub.com/charliermarsh/ruff/pull/4770)
- \[`flake8-pyi`] Implement PYI054 by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4775](https://togithub.com/charliermarsh/ruff/pull/4775)
- \[`flake8-pyi`] Implement `PYI025` by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4791](https://togithub.com/charliermarsh/ruff/pull/4791)
- \[`flake8-pyi`] Implement `PYI045` by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4700](https://togithub.com/charliermarsh/ruff/pull/4700)
- \[`pylint`] Add Pylint rule `C0208` (`use-sequence-for-iteration`) as
`PLC0208` (`iteration-over-set`) by
[@&#8203;tjkuson](https://togithub.com/tjkuson) in
[https://github.com/charliermarsh/ruff/pull/4706](https://togithub.com/charliermarsh/ruff/pull/4706)
- \[`pylint`] Add autofix for `PLR1701` (repeated-isinstance-calls) by
[@&#8203;dhruvmanila](https://togithub.com/dhruvmanila) in
[https://github.com/charliermarsh/ruff/pull/4792](https://togithub.com/charliermarsh/ruff/pull/4792)
- \[`pylint`] Implement Pylint's `yield-inside-async-function` rule
(`PLE1700`) by [@&#8203;chanman3388](https://togithub.com/chanman3388)
in
[https://github.com/charliermarsh/ruff/pull/4668](https://togithub.com/charliermarsh/ruff/pull/4668)
- \[`pylint`] implement E307 for pylint invalid str return type by
[@&#8203;Ryang20718](https://togithub.com/Ryang20718) in
[https://github.com/charliermarsh/ruff/pull/4854](https://togithub.com/charliermarsh/ruff/pull/4854)
- \[`ruff`] Lint pyproject.toml by
[@&#8203;konstin](https://togithub.com/konstin) in
[https://github.com/charliermarsh/ruff/pull/4496](https://togithub.com/charliermarsh/ruff/pull/4496)
- \[`tryceratops`] Ignore error calls with `exc_info` in TRY400 by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4797](https://togithub.com/charliermarsh/ruff/pull/4797)

##### Settings

- Add `pyflakes.extend-generics` setting by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4677](https://togithub.com/charliermarsh/ruff/pull/4677)

##### Bug Fixes

- Fix PLW3301 false positive single argument nested min/max by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4683](https://togithub.com/charliermarsh/ruff/pull/4683)
- Handle dotted alias imports to check for implicit imports by
[@&#8203;dhruvmanila](https://togithub.com/dhruvmanila) in
[https://github.com/charliermarsh/ruff/pull/4685](https://togithub.com/charliermarsh/ruff/pull/4685)
- Flag empty strings in flake8-errmsg rules by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4745](https://togithub.com/charliermarsh/ruff/pull/4745)
- Exclude function definition from too-many-statements rule by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4794](https://togithub.com/charliermarsh/ruff/pull/4794)
- Preserve quotes in F523 fixer by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4836](https://togithub.com/charliermarsh/ruff/pull/4836)
- Fix round-tripping of nested functions by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4875](https://togithub.com/charliermarsh/ruff/pull/4875)
- Avoid early-exit in explicit-f-string-type-conversion by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4886](https://togithub.com/charliermarsh/ruff/pull/4886)
- Avoid no-op fix for nested with expressions by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4906](https://togithub.com/charliermarsh/ruff/pull/4906)
- Fix UP036 auto-fix error by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4679](https://togithub.com/charliermarsh/ruff/pull/4679)
- Use class name as range for `B024` by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4647](https://togithub.com/charliermarsh/ruff/pull/4647)
- Change TODO directive detection to work with multiple pound signs on
the same line by
[@&#8203;evanrittenhouse](https://togithub.com/evanrittenhouse) in
[https://github.com/charliermarsh/ruff/pull/4558](https://togithub.com/charliermarsh/ruff/pull/4558)
- Allow more immutable funcs for RUF009 by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4660](https://togithub.com/charliermarsh/ruff/pull/4660)
- Avoid using typing-imported symbols for runtime edits by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4649](https://togithub.com/charliermarsh/ruff/pull/4649)
- Fix `async for` formatting by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4675](https://togithub.com/charliermarsh/ruff/pull/4675)
- Ignore **setattr** in FBT003 by
[@&#8203;alexfikl](https://togithub.com/alexfikl) in
[https://github.com/charliermarsh/ruff/pull/4752](https://togithub.com/charliermarsh/ruff/pull/4752)
- Include ImportError in non-fixable try-catch imports by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4793](https://togithub.com/charliermarsh/ruff/pull/4793)
- Avoid extra newline between diagnostics in grouped mode by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4776](https://togithub.com/charliermarsh/ruff/pull/4776)
- Avoid enforcing native-literals rule within nested f-strings by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4488](https://togithub.com/charliermarsh/ruff/pull/4488)
- Respect mixed variable assignment in RET504 by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4835](https://togithub.com/charliermarsh/ruff/pull/4835)
- Make FLY002 autofix into a constant string instead of an f-string if
all `join()` arguments are strings by
[@&#8203;evanrittenhouse](https://togithub.com/evanrittenhouse) in
[https://github.com/charliermarsh/ruff/pull/4834](https://togithub.com/charliermarsh/ruff/pull/4834)
- Add some exceptions for FBT003
([#&#8203;3247](https://togithub.com/charliermarsh/ruff/issues/3247)) by
[@&#8203;allisonkarlitskaya](https://togithub.com/allisonkarlitskaya) in
[https://github.com/charliermarsh/ruff/pull/4867](https://togithub.com/charliermarsh/ruff/pull/4867)
- Avoid running RUF100 rules when code contains syntax errors by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4869](https://togithub.com/charliermarsh/ruff/pull/4869)
- Avoid index-out-of-bands panic for positional placeholders by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4872](https://togithub.com/charliermarsh/ruff/pull/4872)
- Remove destructive fixes for F523 by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4883](https://togithub.com/charliermarsh/ruff/pull/4883)
- Respect shadowed exports in `__all__` by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4885](https://togithub.com/charliermarsh/ruff/pull/4885)
- Track symbol deletions separately from bindings by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4888](https://togithub.com/charliermarsh/ruff/pull/4888)
- Change fixable_set to include RuleSelector::All/Nursery by
[@&#8203;evanrittenhouse](https://togithub.com/evanrittenhouse) in
[https://github.com/charliermarsh/ruff/pull/4852](https://togithub.com/charliermarsh/ruff/pull/4852)

#### New Contributors

- [@&#8203;bersbersbers](https://togithub.com/bersbersbers) made their
first contribution in
[https://github.com/charliermarsh/ruff/pull/4644](https://togithub.com/charliermarsh/ruff/pull/4644)
- [@&#8203;jlaneve](https://togithub.com/jlaneve) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4690](https://togithub.com/charliermarsh/ruff/pull/4690)
- [@&#8203;suharnikov](https://togithub.com/suharnikov) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4678](https://togithub.com/charliermarsh/ruff/pull/4678)
- [@&#8203;alexfikl](https://togithub.com/alexfikl) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4752](https://togithub.com/charliermarsh/ruff/pull/4752)
- [@&#8203;allisonkarlitskaya](https://togithub.com/allisonkarlitskaya)
made their first contribution in
[https://github.com/charliermarsh/ruff/pull/4867](https://togithub.com/charliermarsh/ruff/pull/4867)
- [@&#8203;Ryang20718](https://togithub.com/Ryang20718) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4854](https://togithub.com/charliermarsh/ruff/pull/4854)
- [@&#8203;addisoncrump](https://togithub.com/addisoncrump) made their
first contribution in
[https://github.com/charliermarsh/ruff/pull/4893](https://togithub.com/charliermarsh/ruff/pull/4893)

**Full Changelog**:
astral-sh/ruff@v0.0.270...v0.0.271

</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:eyJjcmVhdGVkSW5WZXIiOiIzNS4xMTAuMCIsInVwZGF0ZWRJblZlciI6IjM1LjExMC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate bot referenced this pull request in allenporter/pyrainbird Jun 10, 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.270` -> `==0.0.272` |
[![age](https://badges.renovateapi.com/packages/pypi/ruff/0.0.272/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/pypi/ruff/0.0.272/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/pypi/ruff/0.0.272/compatibility-slim/0.0.270)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/pypi/ruff/0.0.272/confidence-slim/0.0.270)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

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

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

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

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

#### What's Changed

##### Breaking Changes

- Move flake8-fixme rules to FIX prefix by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4917](https://togithub.com/charliermarsh/ruff/pull/4917)

##### Rules

- \[`flake8-pyi`] Implement PYI050 by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4884](https://togithub.com/charliermarsh/ruff/pull/4884)

##### Bug Fixes

- Avoid attributing runtime references to module-level imports by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4942](https://togithub.com/charliermarsh/ruff/pull/4942)
- Skip class scopes when resolving nonlocal references by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4943](https://togithub.com/charliermarsh/ruff/pull/4943)
- Apply `dict.get` fix before ternary rewrite by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4944](https://togithub.com/charliermarsh/ruff/pull/4944)
- Handle implicit string concatenations in conversion-flag rewrites by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4947](https://togithub.com/charliermarsh/ruff/pull/4947)
- Make `C413` fix as suggested for `reversed` call by
[@&#8203;dhruvmanila](https://togithub.com/dhruvmanila) in
[https://github.com/charliermarsh/ruff/pull/4891](https://togithub.com/charliermarsh/ruff/pull/4891)
- ignore if using infinite iterators in `B905` by
[@&#8203;kyoto7250](https://togithub.com/kyoto7250) in
[https://github.com/charliermarsh/ruff/pull/4914](https://togithub.com/charliermarsh/ruff/pull/4914)

**Full Changelog**:
astral-sh/ruff@v0.0.271...v0.0.272

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

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

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

#### What's Changed

##### Rules

- Add autofix for flake8-type-checking by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4742](https://togithub.com/charliermarsh/ruff/pull/4742)
- \[`airflow`] Add AIR001: task variable name should be same as task_id
arg by [@&#8203;jlaneve](https://togithub.com/jlaneve) in
[https://github.com/charliermarsh/ruff/pull/4687](https://togithub.com/charliermarsh/ruff/pull/4687)
- \[`flake8-bandit`] Implement S609, linux_commands_wildcard_injection
by [@&#8203;scop](https://togithub.com/scop) in
[https://github.com/charliermarsh/ruff/pull/4504](https://togithub.com/charliermarsh/ruff/pull/4504)
- \[`flake8-bugbear`] Move duplicate-value rule to flake8-bugbear by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4882](https://togithub.com/charliermarsh/ruff/pull/4882)
- \[`flake8-fixme`] Implement `flake8_fixme` and refactor
`TodoDirective` by
[@&#8203;evanrittenhouse](https://togithub.com/evanrittenhouse) in
[https://github.com/charliermarsh/ruff/pull/4681](https://togithub.com/charliermarsh/ruff/pull/4681)
- \[`flake8-future-annotations`] Implement `FA102` by
[@&#8203;akx](https://togithub.com/akx) in
[https://github.com/charliermarsh/ruff/pull/4702](https://togithub.com/charliermarsh/ruff/pull/4702)
- \[`flake8-pyi`] Add PYI024 for `flake8-pyi` plugin by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4756](https://togithub.com/charliermarsh/ruff/pull/4756)
- \[`flake8-pyi`] Add PYI034 for `flake8-pyi` plugin by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4764](https://togithub.com/charliermarsh/ruff/pull/4764)
- \[`flake8-pyi`] Add `PYI032` rule with autofix by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4695](https://togithub.com/charliermarsh/ruff/pull/4695)
- \[`flake8-pyi`] Add autofix for PYI010 by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4634](https://togithub.com/charliermarsh/ruff/pull/4634)
- \[`flake8-pyi`] Implement PYI029 by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4851](https://togithub.com/charliermarsh/ruff/pull/4851)
- \[`flake8-pyi`] Implement PYI035 by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4820](https://togithub.com/charliermarsh/ruff/pull/4820)
- \[`flake8-pyi`] Implement PYI048 for `flake8-pyi` plugin by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4645](https://togithub.com/charliermarsh/ruff/pull/4645)
- \[`flake8-pyi`] Implement PYI053 by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4770](https://togithub.com/charliermarsh/ruff/pull/4770)
- \[`flake8-pyi`] Implement PYI054 by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4775](https://togithub.com/charliermarsh/ruff/pull/4775)
- \[`flake8-pyi`] Implement `PYI025` by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4791](https://togithub.com/charliermarsh/ruff/pull/4791)
- \[`flake8-pyi`] Implement `PYI045` by
[@&#8203;density](https://togithub.com/density) in
[https://github.com/charliermarsh/ruff/pull/4700](https://togithub.com/charliermarsh/ruff/pull/4700)
- \[`pylint`] Add Pylint rule `C0208` (`use-sequence-for-iteration`) as
`PLC0208` (`iteration-over-set`) by
[@&#8203;tjkuson](https://togithub.com/tjkuson) in
[https://github.com/charliermarsh/ruff/pull/4706](https://togithub.com/charliermarsh/ruff/pull/4706)
- \[`pylint`] Add autofix for `PLR1701` (repeated-isinstance-calls) by
[@&#8203;dhruvmanila](https://togithub.com/dhruvmanila) in
[https://github.com/charliermarsh/ruff/pull/4792](https://togithub.com/charliermarsh/ruff/pull/4792)
- \[`pylint`] Implement Pylint's `yield-inside-async-function` rule
(`PLE1700`) by [@&#8203;chanman3388](https://togithub.com/chanman3388)
in
[https://github.com/charliermarsh/ruff/pull/4668](https://togithub.com/charliermarsh/ruff/pull/4668)
- \[`pylint`] implement E307 for pylint invalid str return type by
[@&#8203;Ryang20718](https://togithub.com/Ryang20718) in
[https://github.com/charliermarsh/ruff/pull/4854](https://togithub.com/charliermarsh/ruff/pull/4854)
- \[`ruff`] Lint pyproject.toml by
[@&#8203;konstin](https://togithub.com/konstin) in
[https://github.com/charliermarsh/ruff/pull/4496](https://togithub.com/charliermarsh/ruff/pull/4496)
- \[`tryceratops`] Ignore error calls with `exc_info` in TRY400 by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4797](https://togithub.com/charliermarsh/ruff/pull/4797)

##### Settings

- Add `pyflakes.extend-generics` setting by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4677](https://togithub.com/charliermarsh/ruff/pull/4677)

##### Bug Fixes

- Fix PLW3301 false positive single argument nested min/max by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4683](https://togithub.com/charliermarsh/ruff/pull/4683)
- Handle dotted alias imports to check for implicit imports by
[@&#8203;dhruvmanila](https://togithub.com/dhruvmanila) in
[https://github.com/charliermarsh/ruff/pull/4685](https://togithub.com/charliermarsh/ruff/pull/4685)
- Flag empty strings in flake8-errmsg rules by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4745](https://togithub.com/charliermarsh/ruff/pull/4745)
- Exclude function definition from too-many-statements rule by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4794](https://togithub.com/charliermarsh/ruff/pull/4794)
- Preserve quotes in F523 fixer by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4836](https://togithub.com/charliermarsh/ruff/pull/4836)
- Fix round-tripping of nested functions by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4875](https://togithub.com/charliermarsh/ruff/pull/4875)
- Avoid early-exit in explicit-f-string-type-conversion by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4886](https://togithub.com/charliermarsh/ruff/pull/4886)
- Avoid no-op fix for nested with expressions by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4906](https://togithub.com/charliermarsh/ruff/pull/4906)
- Fix UP036 auto-fix error by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[https://github.com/charliermarsh/ruff/pull/4679](https://togithub.com/charliermarsh/ruff/pull/4679)
- Use class name as range for `B024` by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4647](https://togithub.com/charliermarsh/ruff/pull/4647)
- Change TODO directive detection to work with multiple pound signs on
the same line by
[@&#8203;evanrittenhouse](https://togithub.com/evanrittenhouse) in
[https://github.com/charliermarsh/ruff/pull/4558](https://togithub.com/charliermarsh/ruff/pull/4558)
- Allow more immutable funcs for RUF009 by
[@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[https://github.com/charliermarsh/ruff/pull/4660](https://togithub.com/charliermarsh/ruff/pull/4660)
- Avoid using typing-imported symbols for runtime edits by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4649](https://togithub.com/charliermarsh/ruff/pull/4649)
- Fix `async for` formatting by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4675](https://togithub.com/charliermarsh/ruff/pull/4675)
- Ignore **setattr** in FBT003 by
[@&#8203;alexfikl](https://togithub.com/alexfikl) in
[https://github.com/charliermarsh/ruff/pull/4752](https://togithub.com/charliermarsh/ruff/pull/4752)
- Include ImportError in non-fixable try-catch imports by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4793](https://togithub.com/charliermarsh/ruff/pull/4793)
- Avoid extra newline between diagnostics in grouped mode by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4776](https://togithub.com/charliermarsh/ruff/pull/4776)
- Avoid enforcing native-literals rule within nested f-strings by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4488](https://togithub.com/charliermarsh/ruff/pull/4488)
- Respect mixed variable assignment in RET504 by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4835](https://togithub.com/charliermarsh/ruff/pull/4835)
- Make FLY002 autofix into a constant string instead of an f-string if
all `join()` arguments are strings by
[@&#8203;evanrittenhouse](https://togithub.com/evanrittenhouse) in
[https://github.com/charliermarsh/ruff/pull/4834](https://togithub.com/charliermarsh/ruff/pull/4834)
- Add some exceptions for FBT003
([#&#8203;3247](https://togithub.com/charliermarsh/ruff/issues/3247)) by
[@&#8203;allisonkarlitskaya](https://togithub.com/allisonkarlitskaya) in
[https://github.com/charliermarsh/ruff/pull/4867](https://togithub.com/charliermarsh/ruff/pull/4867)
- Avoid running RUF100 rules when code contains syntax errors by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4869](https://togithub.com/charliermarsh/ruff/pull/4869)
- Avoid index-out-of-bands panic for positional placeholders by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4872](https://togithub.com/charliermarsh/ruff/pull/4872)
- Remove destructive fixes for F523 by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4883](https://togithub.com/charliermarsh/ruff/pull/4883)
- Respect shadowed exports in `__all__` by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4885](https://togithub.com/charliermarsh/ruff/pull/4885)
- Track symbol deletions separately from bindings by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[https://github.com/charliermarsh/ruff/pull/4888](https://togithub.com/charliermarsh/ruff/pull/4888)
- Change fixable_set to include RuleSelector::All/Nursery by
[@&#8203;evanrittenhouse](https://togithub.com/evanrittenhouse) in
[https://github.com/charliermarsh/ruff/pull/4852](https://togithub.com/charliermarsh/ruff/pull/4852)

#### New Contributors

- [@&#8203;bersbersbers](https://togithub.com/bersbersbers) made their
first contribution in
[https://github.com/charliermarsh/ruff/pull/4644](https://togithub.com/charliermarsh/ruff/pull/4644)
- [@&#8203;jlaneve](https://togithub.com/jlaneve) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4690](https://togithub.com/charliermarsh/ruff/pull/4690)
- [@&#8203;suharnikov](https://togithub.com/suharnikov) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4678](https://togithub.com/charliermarsh/ruff/pull/4678)
- [@&#8203;alexfikl](https://togithub.com/alexfikl) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4752](https://togithub.com/charliermarsh/ruff/pull/4752)
- [@&#8203;allisonkarlitskaya](https://togithub.com/allisonkarlitskaya)
made their first contribution in
[https://github.com/charliermarsh/ruff/pull/4867](https://togithub.com/charliermarsh/ruff/pull/4867)
- [@&#8203;Ryang20718](https://togithub.com/Ryang20718) made their first
contribution in
[https://github.com/charliermarsh/ruff/pull/4854](https://togithub.com/charliermarsh/ruff/pull/4854)
- [@&#8203;addisoncrump](https://togithub.com/addisoncrump) made their
first contribution in
[https://github.com/charliermarsh/ruff/pull/4893](https://togithub.com/charliermarsh/ruff/pull/4893)

**Full Changelog**:
astral-sh/ruff@v0.0.270...v0.0.271

</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:eyJjcmVhdGVkSW5WZXIiOiIzNS4xMTAuMCIsInVwZGF0ZWRJblZlciI6IjM1LjExMC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

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.

4 participants