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

Parenthesize expressions prior to LibCST parsing #6742

Merged
merged 1 commit into from
Aug 22, 2023
Merged

Conversation

charliermarsh
Copy link
Member

Summary

This PR adds a utility for transforming expressions via LibCST that automatically wraps the expression in parentheses, applies a user-provided transformation, then strips the parentheses from the generated code. LibCST can't parse arbitrary expression ranges, since some expressions may require parenthesization in order to be parsed properly. For example:

option = (
    '{name}={value}'
    .format(nam=name, value=value)
)

In this case, the expression range is:

'{name}={value}'
    .format(nam=name, value=value)

Which isn't valid on its own. So, instead, we add "fake" parentheses around the expression.

We were already doing this in a few places, so this is mostly formalizing and DRYing up that pattern.

Closes #6720.

@charliermarsh charliermarsh added the bug Something isn't working label Aug 21, 2023
@github-actions
Copy link
Contributor

github-actions bot commented Aug 21, 2023

PR Check Results

Ecosystem

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

airflow (+31, -31)

- helm_tests/airflow_aux/test_basic_helm_chart.py:572:13: SIM300 Yoda conditions are discouraged
+ helm_tests/airflow_aux/test_basic_helm_chart.py:572:13: SIM300 [*] Yoda conditions are discouraged
- helm_tests/airflow_aux/test_basic_helm_chart.py:585:13: SIM300 Yoda conditions are discouraged
+ helm_tests/airflow_aux/test_basic_helm_chart.py:585:13: SIM300 [*] Yoda conditions are discouraged
- helm_tests/airflow_aux/test_cleanup_pods.py:267:13: SIM300 Yoda conditions are discouraged
+ helm_tests/airflow_aux/test_cleanup_pods.py:267:13: SIM300 [*] Yoda conditions are discouraged
- helm_tests/airflow_aux/test_cleanup_pods.py:274:13: SIM300 Yoda conditions are discouraged
+ helm_tests/airflow_aux/test_cleanup_pods.py:274:13: SIM300 [*] Yoda conditions are discouraged
- helm_tests/airflow_aux/test_configmap.py:85:13: SIM300 Yoda conditions are discouraged
+ helm_tests/airflow_aux/test_configmap.py:85:13: SIM300 [*] Yoda conditions are discouraged
- helm_tests/other/test_pgbouncer.py:582:13: SIM300 Yoda conditions are discouraged
+ helm_tests/other/test_pgbouncer.py:582:13: SIM300 [*] Yoda conditions are discouraged
- helm_tests/security/test_elasticsearch_secret.py:99:13: SIM300 Yoda conditions are discouraged
+ helm_tests/security/test_elasticsearch_secret.py:99:13: SIM300 [*] Yoda conditions are discouraged
- helm_tests/security/test_metadata_connection_secret.py:125:13: SIM300 Yoda conditions are discouraged
+ helm_tests/security/test_metadata_connection_secret.py:125:13: SIM300 [*] Yoda conditions are discouraged
- helm_tests/security/test_metadata_connection_secret.py:57:13: SIM300 Yoda conditions are discouraged
+ helm_tests/security/test_metadata_connection_secret.py:57:13: SIM300 [*] Yoda conditions are discouraged
- helm_tests/security/test_metadata_connection_secret.py:67:13: SIM300 Yoda conditions are discouraged
+ helm_tests/security/test_metadata_connection_secret.py:67:13: SIM300 [*] Yoda conditions are discouraged
- helm_tests/security/test_metadata_connection_secret.py:80:13: SIM300 Yoda conditions are discouraged
+ helm_tests/security/test_metadata_connection_secret.py:80:13: SIM300 [*] Yoda conditions are discouraged
- helm_tests/security/test_result_backend_connection_secret.py:143:13: SIM300 Yoda conditions are discouraged
+ helm_tests/security/test_result_backend_connection_secret.py:143:13: SIM300 [*] Yoda conditions are discouraged
- helm_tests/security/test_result_backend_connection_secret.py:207:13: SIM300 Yoda conditions are discouraged
+ helm_tests/security/test_result_backend_connection_secret.py:207:13: SIM300 [*] Yoda conditions are discouraged
- helm_tests/webserver/test_webserver.py:936:13: SIM300 Yoda conditions are discouraged
+ helm_tests/webserver/test_webserver.py:936:13: SIM300 [*] Yoda conditions are discouraged
- tests/providers/google/cloud/hooks/test_cloud_storage_transfer_service.py:785:13: SIM300 Yoda conditions are discouraged
+ tests/providers/google/cloud/hooks/test_cloud_storage_transfer_service.py:785:13: SIM300 [*] Yoda conditions are discouraged
- tests/providers/google/cloud/hooks/test_cloud_storage_transfer_service.py:806:13: SIM300 Yoda conditions are discouraged
+ tests/providers/google/cloud/hooks/test_cloud_storage_transfer_service.py:806:13: SIM300 [*] Yoda conditions are discouraged
- tests/providers/google/cloud/hooks/test_cloud_storage_transfer_service.py:834:13: SIM300 Yoda conditions are discouraged
+ tests/providers/google/cloud/hooks/test_cloud_storage_transfer_service.py:834:13: SIM300 [*] Yoda conditions are discouraged
- tests/providers/google/cloud/hooks/test_cloud_storage_transfer_service.py:879:13: SIM300 Yoda conditions are discouraged
+ tests/providers/google/cloud/hooks/test_cloud_storage_transfer_service.py:879:13: SIM300 [*] Yoda conditions are discouraged
- tests/providers/google/cloud/hooks/test_cloud_storage_transfer_service.py:897:13: SIM300 Yoda conditions are discouraged
+ tests/providers/google/cloud/hooks/test_cloud_storage_transfer_service.py:897:13: SIM300 [*] Yoda conditions are discouraged
- tests/providers/google/cloud/hooks/test_cloud_storage_transfer_service.py:924:13: SIM300 Yoda conditions are discouraged
+ tests/providers/google/cloud/hooks/test_cloud_storage_transfer_service.py:924:13: SIM300 [*] Yoda conditions are discouraged
- tests/providers/google/cloud/hooks/test_life_sciences.py:300:13: SIM300 Yoda conditions are discouraged
+ tests/providers/google/cloud/hooks/test_life_sciences.py:300:13: SIM300 [*] Yoda conditions are discouraged
- tests/providers/google/cloud/operators/test_mlengine.py:250:13: SIM300 Yoda conditions are discouraged
+ tests/providers/google/cloud/operators/test_mlengine.py:250:13: SIM300 [*] Yoda conditions are discouraged
- tests/providers/google/cloud/operators/test_mlengine.py:259:13: SIM300 Yoda conditions are discouraged
+ tests/providers/google/cloud/operators/test_mlengine.py:259:13: SIM300 [*] Yoda conditions are discouraged
- tests/providers/google/firebase/hooks/test_firestore.py:243:13: SIM300 Yoda conditions are discouraged
+ tests/providers/google/firebase/hooks/test_firestore.py:243:13: SIM300 [*] Yoda conditions are discouraged
- tests/www/test_utils.py:275:13: SIM300 Yoda conditions are discouraged
+ tests/www/test_utils.py:275:13: SIM300 [*] Yoda conditions are discouraged
- tests/www/test_utils.py:289:13: SIM300 Yoda conditions are discouraged
+ tests/www/test_utils.py:289:13: SIM300 [*] Yoda conditions are discouraged
- tests/www/test_utils.py:305:13: SIM300 Yoda conditions are discouraged
+ tests/www/test_utils.py:305:13: SIM300 [*] Yoda conditions are discouraged
- tests/www/test_utils.py:333:13: SIM300 Yoda conditions are discouraged
+ tests/www/test_utils.py:333:13: SIM300 [*] Yoda conditions are discouraged
- tests/www/test_utils.py:354:13: SIM300 Yoda conditions are discouraged
+ tests/www/test_utils.py:354:13: SIM300 [*] Yoda conditions are discouraged
- tests/www/test_utils.py:372:13: SIM300 Yoda conditions are discouraged
+ tests/www/test_utils.py:372:13: SIM300 [*] Yoda conditions are discouraged
- tests/www/test_utils.py:401:13: SIM300 Yoda conditions are discouraged
+ tests/www/test_utils.py:401:13: SIM300 [*] Yoda conditions are discouraged

Rules changed: 1
Rule Changes Additions Removals
SIM300 62 31 31

Benchmark

Linux

group                                      main                                   pr
-----                                      ----                                   --
formatter/large/dataset.py                 1.01      4.0±0.03ms    10.2 MB/sec    1.00      3.9±0.05ms    10.3 MB/sec
formatter/numpy/ctypeslib.py               1.00    845.5±4.18µs    19.7 MB/sec    1.00    849.2±7.90µs    19.6 MB/sec
formatter/numpy/globals.py                 1.00     90.9±0.82µs    32.4 MB/sec    1.01     91.7±0.79µs    32.2 MB/sec
formatter/pydantic/types.py                1.00   1650.6±8.32µs    15.5 MB/sec    1.00  1658.6±25.75µs    15.4 MB/sec
linter/all-rules/large/dataset.py          1.00     11.5±0.20ms     3.5 MB/sec    1.03     11.9±0.25ms     3.4 MB/sec
linter/all-rules/numpy/ctypeslib.py        1.02      3.2±0.06ms     5.2 MB/sec    1.00      3.2±0.03ms     5.3 MB/sec
linter/all-rules/numpy/globals.py          1.00    451.0±8.90µs     6.5 MB/sec    1.01    453.7±6.02µs     6.5 MB/sec
linter/all-rules/pydantic/types.py         1.01      6.2±0.13ms     4.1 MB/sec    1.00      6.1±0.12ms     4.2 MB/sec
linter/default-rules/large/dataset.py      1.00      6.2±0.09ms     6.6 MB/sec    1.02      6.3±0.05ms     6.4 MB/sec
linter/default-rules/numpy/ctypeslib.py    1.00  1407.4±24.20µs    11.8 MB/sec    1.00  1410.3±23.86µs    11.8 MB/sec
linter/default-rules/numpy/globals.py      1.00    165.2±1.64µs    17.9 MB/sec    1.00    166.0±2.39µs    17.8 MB/sec
linter/default-rules/pydantic/types.py     1.00      2.8±0.07ms     9.1 MB/sec    1.03      2.9±0.03ms     8.8 MB/sec

Windows

group                                      main                                   pr
-----                                      ----                                   --
formatter/large/dataset.py                 1.00      2.8±0.03ms    14.4 MB/sec    1.01      2.8±0.04ms    14.3 MB/sec
formatter/numpy/ctypeslib.py               1.00    561.9±6.41µs    29.6 MB/sec    1.01    566.2±6.39µs    29.4 MB/sec
formatter/numpy/globals.py                 1.00     55.4±0.55µs    53.3 MB/sec    1.02     56.5±0.84µs    52.3 MB/sec
formatter/pydantic/types.py                1.00  1168.6±15.15µs    21.8 MB/sec    1.01  1182.8±13.31µs    21.6 MB/sec
linter/all-rules/large/dataset.py          1.00     10.1±0.05ms     4.0 MB/sec    1.01     10.2±0.07ms     4.0 MB/sec
linter/all-rules/numpy/ctypeslib.py        1.00      2.7±0.01ms     6.1 MB/sec    1.01      2.8±0.02ms     6.0 MB/sec
linter/all-rules/numpy/globals.py          1.00    298.0±2.35µs     9.9 MB/sec    1.00    299.4±3.56µs     9.9 MB/sec
linter/all-rules/pydantic/types.py         1.00      5.1±0.03ms     5.0 MB/sec    1.01      5.2±0.03ms     4.9 MB/sec
linter/default-rules/large/dataset.py      1.00      5.6±0.05ms     7.3 MB/sec    1.01      5.6±0.04ms     7.2 MB/sec
linter/default-rules/numpy/ctypeslib.py    1.00   1142.9±6.13µs    14.6 MB/sec    1.01   1157.4±7.57µs    14.4 MB/sec
linter/default-rules/numpy/globals.py      1.00    121.1±1.03µs    24.4 MB/sec    1.01    122.4±1.30µs    24.1 MB/sec
linter/default-rules/pydantic/types.py     1.00      2.4±0.02ms    10.5 MB/sec    1.01      2.5±0.01ms    10.3 MB/sec

charliermarsh added a commit that referenced this pull request Aug 22, 2023
## Summary

I noticed this in the ecosystem CI check from
#6742. If we include source code
directly in a diagnostic, we need to be careful to avoid rendering
multi-line diagnostics or even excessively long diagnostics.

## Test Plan

`cargo test`
Comment on lines +216 to +219
/// expression is not a valid standalone expression (e.g., it was parenthesized in the original
/// source). This method instead wraps the expression in "fake" parentheses, runs the
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
/// expression is not a valid standalone expression (e.g., it was parenthesized in the original
/// source). This method instead wraps the expression in "fake" parentheses, runs the
/// expression is not a valid standalone expression (e.g., it or any enclosing expression are parenthesized in the original
/// source). This method instead wraps the expression in "fake" parentheses, runs the

let source_code = format!("({source_code})");

// Run the function on the expression.
let mut transformed = func(source_code)?;
Copy link
Member

Choose a reason for hiding this comment

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

I would expect this method to orchestrate the whole transformation: Meaning it

  • should call match_expression on the source and pass the expression to func. Ideally, it would pass the unparenthesized expression, but I think this isn't possible because libCST stores the parenthesized as a field rather than having a separate ParenthesizedExpression node.
  • func mutates the expression and returns a new expression.
  • it calls codegen, returning the unparenthesized expression

This may have the added benefit that it can remove the parentheses by mutating the CST rather than manipulating the returned string.

Copy link
Member Author

Choose a reason for hiding this comment

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

I structured it this way initially but I lost like an hour or two fighting lifetimes. Let me revisit...

Copy link
Member Author

Choose a reason for hiding this comment

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

This may have the added benefit that it can remove the parentheses by mutating the CST rather than manipulating the returned string.

Unfortunately LibCST doesn't let you do this, AFAICT :(

Copy link
Member Author

Choose a reason for hiding this comment

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

I can't for the life of me figure out how to make the lifetimes work. The issue is in format_literals.rs where we already have to use an Arena to solve weird lifetime problems. Now changing the signature of transform_expression gives me:

error[E0597]: `arena` does not live long enough
   --> crates/ruff/src/rules/pyupgrade/rules/format_literals.rs:220:44
    |
210 |     let output = transform_ex(source_code, stylist, |mut expression| {
    |                                                      -------------- has type `libcst_native::Expression<'1>`
...
219 |         let arena = typed_arena::Arena::new();
    |             ----- binding `arena` declared here
220 |         remove_specifiers(&mut item.value, &arena);
    |         -----------------------------------^^^^^^-
    |         |                                  |
    |         |                                  borrowed value does not live long enough
    |         argument requires that `arena` is borrowed for `'1`
...
223 |     })?;
    |     - `arena` dropped here while still borrowed

I've tried moving the arena out of the closure, messing with lifetimes, etc.

Copy link
Member Author

Choose a reason for hiding this comment

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

I was able to change this everywhere except format_literals.rs.

@charliermarsh charliermarsh enabled auto-merge (squash) August 22, 2023 17:38
@charliermarsh charliermarsh merged commit 214eb70 into main Aug 22, 2023
@charliermarsh charliermarsh deleted the charlie/parens branch August 22, 2023 17:45
renovate bot referenced this pull request in ixm-one/pytest-cmake-presets Aug 25, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [ruff](https://beta.ruff.rs/docs)
([source](https://github.com/astral-sh/ruff),
[changelog](https://github.com/astral-sh/ruff/releases)) | `^0.0.285`
-> `^0.0.286` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/ruff/0.0.286?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/ruff/0.0.286?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/ruff/0.0.285/0.0.286?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/ruff/0.0.285/0.0.286?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

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

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

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

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

#### What's Changed

##### New Rules

- \[`flake8-bugbear`] Update `function-call-in-argument-default`
(`B008`) to ignore arguments with immutable annotations by
[@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6784](https://github.com/astral-sh/ruff/pull/6784)
- \[`flake8-bugbear`] Update `mutable-argument-default` (`B006`) to use
`extend-immutable-calls` when determining if annotations are immutable
by [@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6781](https://github.com/astral-sh/ruff/pull/6781)
- \[`flake8-pie`] Implement `unnecessary-range-start` (`PIE808`) by
[@&#8203;harupy](https://github.com/harupy) in
[https://github.com/astral-sh/ruff/pull/6690](https://github.com/astral-sh/ruff/pull/6690)
- \[`flake8-pytest-style`] Add autofix for `PT014` by
[@&#8203;harupy](https://github.com/harupy) in
[https://github.com/astral-sh/ruff/pull/6698](https://github.com/astral-sh/ruff/pull/6698)
- \[`pylint`] Implement `no-self-use` (`R6301`) by
[@&#8203;LaBatata101](https://github.com/LaBatata101) in
[https://github.com/astral-sh/ruff/pull/6574](https://github.com/astral-sh/ruff/pull/6574)
- \[`pylint`] Extend `repeated-equality-comparison-target` to check for
mixed orderings and Yoda conditions. by
[@&#8203;tjkuson](https://github.com/tjkuson) in
[https://github.com/astral-sh/ruff/pull/6691](https://github.com/astral-sh/ruff/pull/6691)

##### Settings

- Make isort's `detect-same-package` behavior configurable by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6833](https://github.com/astral-sh/ruff/pull/6833)

##### Bug Fixes

- Apply RUF017 when start is passed via position by
[@&#8203;hauntsaninja](https://github.com/hauntsaninja) in
[https://github.com/astral-sh/ruff/pull/6664](https://github.com/astral-sh/ruff/pull/6664)
- Use `typing_extensions.TypeAlias` for PYI026 fixes on pre-3.10 by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6696](https://github.com/astral-sh/ruff/pull/6696)
- Ignore multi-comparisons in `repeated-equality-comparison-target` by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6705](https://github.com/astral-sh/ruff/pull/6705)
- Accept empty inner calls in C414 by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6725](https://github.com/astral-sh/ruff/pull/6725)
- Allow next in FBT exclusions by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6729](https://github.com/astral-sh/ruff/pull/6729)
- Allow `ctypes.WinError()` in flake8-raise by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6731](https://github.com/astral-sh/ruff/pull/6731)
- Ignore star imports when importing symbols in fixes by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6743](https://github.com/astral-sh/ruff/pull/6743)
- Support C419 autofixes for set comprehensions by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6744](https://github.com/astral-sh/ruff/pull/6744)
- Avoid attempting to fix unconventional submodule imports by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6745](https://github.com/astral-sh/ruff/pull/6745)
- Don't trigger `eq-without-hash` when `__hash__` is explicitly set to
`None` by [@&#8203;LaBatata101](https://github.com/LaBatata101) in
[https://github.com/astral-sh/ruff/pull/6739](https://github.com/astral-sh/ruff/pull/6739)
- Avoid E231 if comma is at end-of-line by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6747](https://github.com/astral-sh/ruff/pull/6747)
- Truncate some messages in diagnostics by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6748](https://github.com/astral-sh/ruff/pull/6748)
- Fix isolation groups for unused imports by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6774](https://github.com/astral-sh/ruff/pull/6774)
- Avoid fixing D200 for docstrings that end in escapes by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6779](https://github.com/astral-sh/ruff/pull/6779)
- Parenthesize expressions prior to LibCST parsing by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6742](https://github.com/astral-sh/ruff/pull/6742)
- Fallback to end-of-file if ends in trailing continuation by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6789](https://github.com/astral-sh/ruff/pull/6789)
- Confine repeated-equality-comparison-target to names and attributes by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6802](https://github.com/astral-sh/ruff/pull/6802)
- Fix `native-literals` handling of int literal with attribute access by
[@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6792](https://github.com/astral-sh/ruff/pull/6792)
- Fix `uncessary-coding-comment` fix when there's leading content by
[@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6775](https://github.com/astral-sh/ruff/pull/6775)
- Avoid attempting to fix PT018 in multi-statement lines by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6829](https://github.com/astral-sh/ruff/pull/6829)
- Update ERA100 to apply to commented dictionary items with trailing
comments by [@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6822](https://github.com/astral-sh/ruff/pull/6822)
- Avoid parsing other parts of a format specification if replacements
are present by [@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6858](https://github.com/astral-sh/ruff/pull/6858)
- Avoid panic in unused arguments rule for parameter-free lambda by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6679](https://github.com/astral-sh/ruff/pull/6679)
- Avoid `C417` for `lambda` with default and variadic parameters by
[@&#8203;dhruvmanila](https://github.com/dhruvmanila) in
[https://github.com/astral-sh/ruff/pull/6752](https://github.com/astral-sh/ruff/pull/6752)
- Add `networkx` to conventional aliases by
[@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6778](https://github.com/astral-sh/ruff/pull/6778)
- Skip serializing cell ID if it's None by
[@&#8203;harupy](https://github.com/harupy) in
[https://github.com/astral-sh/ruff/pull/6851](https://github.com/astral-sh/ruff/pull/6851)
- fix is_raw_string for multiple prefixes by
[@&#8203;davidszotten](https://github.com/davidszotten) in
[https://github.com/astral-sh/ruff/pull/6865](https://github.com/astral-sh/ruff/pull/6865)
- Add jupyter notebook cell ids in 4.5+ if missing by
[@&#8203;konstin](https://github.com/konstin) in
[https://github.com/astral-sh/ruff/pull/6853](https://github.com/astral-sh/ruff/pull/6853)

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

</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://developer.mend.io/github/ixm-one/pytest-cmake-presets).

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

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 Aug 26, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [ruff](https://beta.ruff.rs/docs)
([source](https://github.com/astral-sh/ruff),
[changelog](https://github.com/astral-sh/ruff/releases)) | `0.0.285`
-> `0.0.286` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/ruff/0.0.286?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/ruff/0.0.286?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/ruff/0.0.285/0.0.286?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/ruff/0.0.285/0.0.286?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

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

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

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

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

#### What's Changed

##### New Rules

- \[`flake8-bugbear`] Update `function-call-in-argument-default`
(`B008`) to ignore arguments with immutable annotations by
[@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6784](https://github.com/astral-sh/ruff/pull/6784)
- \[`flake8-bugbear`] Update `mutable-argument-default` (`B006`) to use
`extend-immutable-calls` when determining if annotations are immutable
by [@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6781](https://github.com/astral-sh/ruff/pull/6781)
- \[`flake8-pie`] Implement `unnecessary-range-start` (`PIE808`) by
[@&#8203;harupy](https://github.com/harupy) in
[https://github.com/astral-sh/ruff/pull/6690](https://github.com/astral-sh/ruff/pull/6690)
- \[`flake8-pytest-style`] Add autofix for `PT014` by
[@&#8203;harupy](https://github.com/harupy) in
[https://github.com/astral-sh/ruff/pull/6698](https://github.com/astral-sh/ruff/pull/6698)
- \[`pylint`] Implement `no-self-use` (`R6301`) by
[@&#8203;LaBatata101](https://github.com/LaBatata101) in
[https://github.com/astral-sh/ruff/pull/6574](https://github.com/astral-sh/ruff/pull/6574)
- \[`pylint`] Extend `repeated-equality-comparison-target` to check for
mixed orderings and Yoda conditions. by
[@&#8203;tjkuson](https://github.com/tjkuson) in
[https://github.com/astral-sh/ruff/pull/6691](https://github.com/astral-sh/ruff/pull/6691)

##### Settings

- Make isort's `detect-same-package` behavior configurable by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6833](https://github.com/astral-sh/ruff/pull/6833)

##### Bug Fixes

- Apply RUF017 when start is passed via position by
[@&#8203;hauntsaninja](https://github.com/hauntsaninja) in
[https://github.com/astral-sh/ruff/pull/6664](https://github.com/astral-sh/ruff/pull/6664)
- Use `typing_extensions.TypeAlias` for PYI026 fixes on pre-3.10 by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6696](https://github.com/astral-sh/ruff/pull/6696)
- Ignore multi-comparisons in `repeated-equality-comparison-target` by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6705](https://github.com/astral-sh/ruff/pull/6705)
- Accept empty inner calls in C414 by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6725](https://github.com/astral-sh/ruff/pull/6725)
- Allow next in FBT exclusions by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6729](https://github.com/astral-sh/ruff/pull/6729)
- Allow `ctypes.WinError()` in flake8-raise by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6731](https://github.com/astral-sh/ruff/pull/6731)
- Ignore star imports when importing symbols in fixes by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6743](https://github.com/astral-sh/ruff/pull/6743)
- Support C419 autofixes for set comprehensions by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6744](https://github.com/astral-sh/ruff/pull/6744)
- Avoid attempting to fix unconventional submodule imports by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6745](https://github.com/astral-sh/ruff/pull/6745)
- Don't trigger `eq-without-hash` when `__hash__` is explicitly set to
`None` by [@&#8203;LaBatata101](https://github.com/LaBatata101) in
[https://github.com/astral-sh/ruff/pull/6739](https://github.com/astral-sh/ruff/pull/6739)
- Avoid E231 if comma is at end-of-line by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6747](https://github.com/astral-sh/ruff/pull/6747)
- Truncate some messages in diagnostics by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6748](https://github.com/astral-sh/ruff/pull/6748)
- Fix isolation groups for unused imports by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6774](https://github.com/astral-sh/ruff/pull/6774)
- Avoid fixing D200 for docstrings that end in escapes by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6779](https://github.com/astral-sh/ruff/pull/6779)
- Parenthesize expressions prior to LibCST parsing by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6742](https://github.com/astral-sh/ruff/pull/6742)
- Fallback to end-of-file if ends in trailing continuation by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6789](https://github.com/astral-sh/ruff/pull/6789)
- Confine repeated-equality-comparison-target to names and attributes by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6802](https://github.com/astral-sh/ruff/pull/6802)
- Fix `native-literals` handling of int literal with attribute access by
[@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6792](https://github.com/astral-sh/ruff/pull/6792)
- Fix `uncessary-coding-comment` fix when there's leading content by
[@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6775](https://github.com/astral-sh/ruff/pull/6775)
- Avoid attempting to fix PT018 in multi-statement lines by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6829](https://github.com/astral-sh/ruff/pull/6829)
- Update ERA100 to apply to commented dictionary items with trailing
comments by [@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6822](https://github.com/astral-sh/ruff/pull/6822)
- Avoid parsing other parts of a format specification if replacements
are present by [@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6858](https://github.com/astral-sh/ruff/pull/6858)
- Avoid panic in unused arguments rule for parameter-free lambda by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6679](https://github.com/astral-sh/ruff/pull/6679)
- Avoid `C417` for `lambda` with default and variadic parameters by
[@&#8203;dhruvmanila](https://github.com/dhruvmanila) in
[https://github.com/astral-sh/ruff/pull/6752](https://github.com/astral-sh/ruff/pull/6752)
- Add `networkx` to conventional aliases by
[@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6778](https://github.com/astral-sh/ruff/pull/6778)
- Skip serializing cell ID if it's None by
[@&#8203;harupy](https://github.com/harupy) in
[https://github.com/astral-sh/ruff/pull/6851](https://github.com/astral-sh/ruff/pull/6851)
- fix is_raw_string for multiple prefixes by
[@&#8203;davidszotten](https://github.com/davidszotten) in
[https://github.com/astral-sh/ruff/pull/6865](https://github.com/astral-sh/ruff/pull/6865)
- Add jupyter notebook cell ids in 4.5+ if missing by
[@&#8203;konstin](https://github.com/konstin) in
[https://github.com/astral-sh/ruff/pull/6853](https://github.com/astral-sh/ruff/pull/6853)

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

</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://developer.mend.io/github/jankatins/pr-workflow-example).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi40MC4zIiwidXBkYXRlZEluVmVyIjoiMzYuNTYuMCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->
renovate bot referenced this pull request in allenporter/flux-local Aug 26, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [ruff](https://beta.ruff.rs/docs)
([source](https://github.com/astral-sh/ruff),
[changelog](https://github.com/astral-sh/ruff/releases)) | `==0.0.285`
-> `==0.0.286` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/ruff/0.0.286?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/ruff/0.0.286?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/ruff/0.0.285/0.0.286?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/ruff/0.0.285/0.0.286?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

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

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

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

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

#### What's Changed

##### New Rules

- \[`flake8-bugbear`] Update `function-call-in-argument-default`
(`B008`) to ignore arguments with immutable annotations by
[@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6784](https://github.com/astral-sh/ruff/pull/6784)
- \[`flake8-bugbear`] Update `mutable-argument-default` (`B006`) to use
`extend-immutable-calls` when determining if annotations are immutable
by [@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6781](https://github.com/astral-sh/ruff/pull/6781)
- \[`flake8-pie`] Implement `unnecessary-range-start` (`PIE808`) by
[@&#8203;harupy](https://github.com/harupy) in
[https://github.com/astral-sh/ruff/pull/6690](https://github.com/astral-sh/ruff/pull/6690)
- \[`flake8-pytest-style`] Add autofix for `PT014` by
[@&#8203;harupy](https://github.com/harupy) in
[https://github.com/astral-sh/ruff/pull/6698](https://github.com/astral-sh/ruff/pull/6698)
- \[`pylint`] Implement `no-self-use` (`R6301`) by
[@&#8203;LaBatata101](https://github.com/LaBatata101) in
[https://github.com/astral-sh/ruff/pull/6574](https://github.com/astral-sh/ruff/pull/6574)
- \[`pylint`] Extend `repeated-equality-comparison-target` to check for
mixed orderings and Yoda conditions. by
[@&#8203;tjkuson](https://github.com/tjkuson) in
[https://github.com/astral-sh/ruff/pull/6691](https://github.com/astral-sh/ruff/pull/6691)

##### Settings

- Make isort's `detect-same-package` behavior configurable by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6833](https://github.com/astral-sh/ruff/pull/6833)

##### Bug Fixes

- Apply RUF017 when start is passed via position by
[@&#8203;hauntsaninja](https://github.com/hauntsaninja) in
[https://github.com/astral-sh/ruff/pull/6664](https://github.com/astral-sh/ruff/pull/6664)
- Use `typing_extensions.TypeAlias` for PYI026 fixes on pre-3.10 by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6696](https://github.com/astral-sh/ruff/pull/6696)
- Ignore multi-comparisons in `repeated-equality-comparison-target` by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6705](https://github.com/astral-sh/ruff/pull/6705)
- Accept empty inner calls in C414 by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6725](https://github.com/astral-sh/ruff/pull/6725)
- Allow next in FBT exclusions by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6729](https://github.com/astral-sh/ruff/pull/6729)
- Allow `ctypes.WinError()` in flake8-raise by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6731](https://github.com/astral-sh/ruff/pull/6731)
- Ignore star imports when importing symbols in fixes by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6743](https://github.com/astral-sh/ruff/pull/6743)
- Support C419 autofixes for set comprehensions by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6744](https://github.com/astral-sh/ruff/pull/6744)
- Avoid attempting to fix unconventional submodule imports by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6745](https://github.com/astral-sh/ruff/pull/6745)
- Don't trigger `eq-without-hash` when `__hash__` is explicitly set to
`None` by [@&#8203;LaBatata101](https://github.com/LaBatata101) in
[https://github.com/astral-sh/ruff/pull/6739](https://github.com/astral-sh/ruff/pull/6739)
- Avoid E231 if comma is at end-of-line by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6747](https://github.com/astral-sh/ruff/pull/6747)
- Truncate some messages in diagnostics by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6748](https://github.com/astral-sh/ruff/pull/6748)
- Fix isolation groups for unused imports by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6774](https://github.com/astral-sh/ruff/pull/6774)
- Avoid fixing D200 for docstrings that end in escapes by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6779](https://github.com/astral-sh/ruff/pull/6779)
- Parenthesize expressions prior to LibCST parsing by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6742](https://github.com/astral-sh/ruff/pull/6742)
- Fallback to end-of-file if ends in trailing continuation by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6789](https://github.com/astral-sh/ruff/pull/6789)
- Confine repeated-equality-comparison-target to names and attributes by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6802](https://github.com/astral-sh/ruff/pull/6802)
- Fix `native-literals` handling of int literal with attribute access by
[@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6792](https://github.com/astral-sh/ruff/pull/6792)
- Fix `uncessary-coding-comment` fix when there's leading content by
[@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6775](https://github.com/astral-sh/ruff/pull/6775)
- Avoid attempting to fix PT018 in multi-statement lines by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6829](https://github.com/astral-sh/ruff/pull/6829)
- Update ERA100 to apply to commented dictionary items with trailing
comments by [@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6822](https://github.com/astral-sh/ruff/pull/6822)
- Avoid parsing other parts of a format specification if replacements
are present by [@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6858](https://github.com/astral-sh/ruff/pull/6858)
- Avoid panic in unused arguments rule for parameter-free lambda by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6679](https://github.com/astral-sh/ruff/pull/6679)
- Avoid `C417` for `lambda` with default and variadic parameters by
[@&#8203;dhruvmanila](https://github.com/dhruvmanila) in
[https://github.com/astral-sh/ruff/pull/6752](https://github.com/astral-sh/ruff/pull/6752)
- Add `networkx` to conventional aliases by
[@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6778](https://github.com/astral-sh/ruff/pull/6778)
- Skip serializing cell ID if it's None by
[@&#8203;harupy](https://github.com/harupy) in
[https://github.com/astral-sh/ruff/pull/6851](https://github.com/astral-sh/ruff/pull/6851)
- fix is_raw_string for multiple prefixes by
[@&#8203;davidszotten](https://github.com/davidszotten) in
[https://github.com/astral-sh/ruff/pull/6865](https://github.com/astral-sh/ruff/pull/6865)
- Add jupyter notebook cell ids in 4.5+ if missing by
[@&#8203;konstin](https://github.com/konstin) in
[https://github.com/astral-sh/ruff/pull/6853](https://github.com/astral-sh/ruff/pull/6853)

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

</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:eyJjcmVhdGVkSW5WZXIiOiIzNi41Ni4wIiwidXBkYXRlZEluVmVyIjoiMzYuNTYuMCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate bot referenced this pull request in allenporter/pyrainbird Aug 27, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [ruff](https://beta.ruff.rs/docs)
([source](https://github.com/astral-sh/ruff),
[changelog](https://github.com/astral-sh/ruff/releases)) | `==0.0.285`
-> `==0.0.286` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/ruff/0.0.286?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/ruff/0.0.286?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/ruff/0.0.285/0.0.286?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/ruff/0.0.285/0.0.286?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

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

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

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

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

#### What's Changed

##### New Rules

- \[`flake8-bugbear`] Update `function-call-in-argument-default`
(`B008`) to ignore arguments with immutable annotations by
[@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6784](https://github.com/astral-sh/ruff/pull/6784)
- \[`flake8-bugbear`] Update `mutable-argument-default` (`B006`) to use
`extend-immutable-calls` when determining if annotations are immutable
by [@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6781](https://github.com/astral-sh/ruff/pull/6781)
- \[`flake8-pie`] Implement `unnecessary-range-start` (`PIE808`) by
[@&#8203;harupy](https://github.com/harupy) in
[https://github.com/astral-sh/ruff/pull/6690](https://github.com/astral-sh/ruff/pull/6690)
- \[`flake8-pytest-style`] Add autofix for `PT014` by
[@&#8203;harupy](https://github.com/harupy) in
[https://github.com/astral-sh/ruff/pull/6698](https://github.com/astral-sh/ruff/pull/6698)
- \[`pylint`] Implement `no-self-use` (`R6301`) by
[@&#8203;LaBatata101](https://github.com/LaBatata101) in
[https://github.com/astral-sh/ruff/pull/6574](https://github.com/astral-sh/ruff/pull/6574)
- \[`pylint`] Extend `repeated-equality-comparison-target` to check for
mixed orderings and Yoda conditions. by
[@&#8203;tjkuson](https://github.com/tjkuson) in
[https://github.com/astral-sh/ruff/pull/6691](https://github.com/astral-sh/ruff/pull/6691)

##### Settings

- Make isort's `detect-same-package` behavior configurable by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6833](https://github.com/astral-sh/ruff/pull/6833)

##### Bug Fixes

- Apply RUF017 when start is passed via position by
[@&#8203;hauntsaninja](https://github.com/hauntsaninja) in
[https://github.com/astral-sh/ruff/pull/6664](https://github.com/astral-sh/ruff/pull/6664)
- Use `typing_extensions.TypeAlias` for PYI026 fixes on pre-3.10 by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6696](https://github.com/astral-sh/ruff/pull/6696)
- Ignore multi-comparisons in `repeated-equality-comparison-target` by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6705](https://github.com/astral-sh/ruff/pull/6705)
- Accept empty inner calls in C414 by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6725](https://github.com/astral-sh/ruff/pull/6725)
- Allow next in FBT exclusions by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6729](https://github.com/astral-sh/ruff/pull/6729)
- Allow `ctypes.WinError()` in flake8-raise by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6731](https://github.com/astral-sh/ruff/pull/6731)
- Ignore star imports when importing symbols in fixes by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6743](https://github.com/astral-sh/ruff/pull/6743)
- Support C419 autofixes for set comprehensions by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6744](https://github.com/astral-sh/ruff/pull/6744)
- Avoid attempting to fix unconventional submodule imports by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6745](https://github.com/astral-sh/ruff/pull/6745)
- Don't trigger `eq-without-hash` when `__hash__` is explicitly set to
`None` by [@&#8203;LaBatata101](https://github.com/LaBatata101) in
[https://github.com/astral-sh/ruff/pull/6739](https://github.com/astral-sh/ruff/pull/6739)
- Avoid E231 if comma is at end-of-line by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6747](https://github.com/astral-sh/ruff/pull/6747)
- Truncate some messages in diagnostics by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6748](https://github.com/astral-sh/ruff/pull/6748)
- Fix isolation groups for unused imports by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6774](https://github.com/astral-sh/ruff/pull/6774)
- Avoid fixing D200 for docstrings that end in escapes by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6779](https://github.com/astral-sh/ruff/pull/6779)
- Parenthesize expressions prior to LibCST parsing by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6742](https://github.com/astral-sh/ruff/pull/6742)
- Fallback to end-of-file if ends in trailing continuation by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6789](https://github.com/astral-sh/ruff/pull/6789)
- Confine repeated-equality-comparison-target to names and attributes by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6802](https://github.com/astral-sh/ruff/pull/6802)
- Fix `native-literals` handling of int literal with attribute access by
[@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6792](https://github.com/astral-sh/ruff/pull/6792)
- Fix `uncessary-coding-comment` fix when there's leading content by
[@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6775](https://github.com/astral-sh/ruff/pull/6775)
- Avoid attempting to fix PT018 in multi-statement lines by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6829](https://github.com/astral-sh/ruff/pull/6829)
- Update ERA100 to apply to commented dictionary items with trailing
comments by [@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6822](https://github.com/astral-sh/ruff/pull/6822)
- Avoid parsing other parts of a format specification if replacements
are present by [@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6858](https://github.com/astral-sh/ruff/pull/6858)
- Avoid panic in unused arguments rule for parameter-free lambda by
[@&#8203;charliermarsh](https://github.com/charliermarsh) in
[https://github.com/astral-sh/ruff/pull/6679](https://github.com/astral-sh/ruff/pull/6679)
- Avoid `C417` for `lambda` with default and variadic parameters by
[@&#8203;dhruvmanila](https://github.com/dhruvmanila) in
[https://github.com/astral-sh/ruff/pull/6752](https://github.com/astral-sh/ruff/pull/6752)
- Add `networkx` to conventional aliases by
[@&#8203;zanieb](https://github.com/zanieb) in
[https://github.com/astral-sh/ruff/pull/6778](https://github.com/astral-sh/ruff/pull/6778)
- Skip serializing cell ID if it's None by
[@&#8203;harupy](https://github.com/harupy) in
[https://github.com/astral-sh/ruff/pull/6851](https://github.com/astral-sh/ruff/pull/6851)
- fix is_raw_string for multiple prefixes by
[@&#8203;davidszotten](https://github.com/davidszotten) in
[https://github.com/astral-sh/ruff/pull/6865](https://github.com/astral-sh/ruff/pull/6865)
- Add jupyter notebook cell ids in 4.5+ if missing by
[@&#8203;konstin](https://github.com/konstin) in
[https://github.com/astral-sh/ruff/pull/6853](https://github.com/astral-sh/ruff/pull/6853)

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

</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:eyJjcmVhdGVkSW5WZXIiOiIzNi41Ni4wIiwidXBkYXRlZEluVmVyIjoiMzYuNTYuMCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Failed to create fix for StringDotFormatExtraNamedArguments: Failed to extract expression from source
2 participants