FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Fix PLC2701 for type parameter scopes by ShipItAndPray · Pull Request #24576 · astral-sh/ruff · GitHub

/ ruff Public

Fix PLC2701 for type parameter scopes - #24576

Merged
ntBre merged 1 commit into
astral-sh:mainfrom
ShipItAndPray:fix/plc2701-type-params
Apr 22, 2026
Merged

Fix PLC2701 for type parameter scopes#24576
ntBre merged 1 commit into
astral-sh:mainfrom
ShipItAndPray:fix/plc2701-type-params

Conversation

ShipItAndPray commented Apr 12, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Fixes #24563.

Ruff was treating private-name usage in PEP 695 type parameter lists as runtime code, which triggered PLC2701 false positives. This patch extends the typing-context check so private imports used only in type parameter scopes are exempt, and adds a regression case for a generic function with a private type parameter bound.

astral-sh-bot Bot commented Apr 13, 2026

Copy link
Copy Markdown

ruff-ecosystem results

Linter (stable)

✅ ecosystem check detected no linter changes.

Linter (preview)

✅ ecosystem check detected no linter changes.

ntBre added the rule Implementing or modifying a lint rule label Apr 13, 2026
ntBre added the preview Related to preview mode features label Apr 22, 2026

ntBre left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Looks good to me, thank you! I also verified locally that the example from the issue succeeds on this branch.

|| reference.in_typing_only_annotation()
|| reference.in_string_type_definition()
|| reference.in_runtime_evaluated_annotation()
reference.in_typing_context() || reference.in_runtime_evaluated_annotation()

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

For posterity, the new checks expand to these SemanticModelFlags:

TYPE_CHECKING_BLOCK | TYPING_ONLY_ANNOTATION | STRING_TYPE_DEFINITION | TYPE_PARAM_DEFINITION | RUNTIME_EVALUATED_ANNOTATION

while the old checks were:

TYPE_CHECKING_BLOCK | TYPING_ONLY_ANNOTATION | STRING_TYPE_DEFINITION | RUNTIME_EVALUATED_ANNOTATION

so the diff is just adding TYPE_PARAM_DEFINITION:

-TYPE_CHECKING_BLOCK | TYPING_ONLY_ANNOTATION | STRING_TYPE_DEFINITION | RUNTIME_EVALUATED_ANNOTATION
+TYPE_CHECKING_BLOCK | TYPING_ONLY_ANNOTATION | STRING_TYPE_DEFINITION | TYPE_PARAM_DEFINITION | RUNTIME_EVALUATED_ANNOTATION

ntBre merged commit 65ec6e6 into astral-sh:main Apr 22, 2026
44 checks passed
nicopauss pushed a commit to Intersec/lib-common that referenced this pull request Jun 4, 2026
##### [\`v0.15.12\`](https://github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#01512)

Released on 2026-04-24.

##### Preview features

- Implement `#ruff:file-ignore` file-level suppressions ([#23599](astral-sh/ruff#23599))
- Implement `#ruff:ignore` logical-line suppressions ([#23404](astral-sh/ruff#23404))
- Revert preview changes to displayed diagnostic severity in LSP ([#24789](astral-sh/ruff#24789))
- \[`airflow`] Implement `task-branch-as-short-circuit` (`AIR004`) ([#23579](astral-sh/ruff#23579))
- \[`flake8-bugbear`] Fix `break`/`continue` handling in `loop-iterator-mutation` (`B909`) ([#24440](astral-sh/ruff#24440))
- \[`pylint`] Fix `PLC2701` for type parameter scopes ([#24576](astral-sh/ruff#24576))

##### Rule changes

- \[`pandas-vet`] Suggest `.array` as well in `PD011` ([#24805](astral-sh/ruff#24805))

##### CLI

- Respect default Unix permissions for cache files ([#24794](astral-sh/ruff#24794))

##### Documentation

- \[`pylint`] Fix `PLR0124` description not to claim self-comparison always returns the same value ([#24749](astral-sh/ruff#24749))
- \[`pyupgrade`] Expand docs on reusable `TypeVar`s and scoping (`UP046`) ([#24153](astral-sh/ruff#24153))
- Improve rules table accessibility ([#24711](astral-sh/ruff#24711))

##### Contributors

- [@dylwil3](https://github.com/dylwil3)
- [@AlexWaygood](https://github.com/AlexWaygood)
- [@woodruffw](https://github.com/woodruffw)
- [@avasis-ai](https://github.com/avasis-ai)
- [@Dev-iL](https://github.com/Dev-iL)
- [@denyszhak](https://github.com/denyszhak)
- [@ShipItAndPray](https://github.com/ShipItAndPray)
- [@anishgirianish](https://github.com/anishgirianish)
- [@augustelalande](https://github.com/augustelalande)
- [@amyreese](https://github.com/amyreese)
- [@majiayu000](https://github.com/majiayu000)
##### [\`v0.15.11\`](https://github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#01511)

Released on 2026-04-16.

##### Preview features

- \[`ruff`] Ignore `RUF029` when function is decorated with `asynccontextmanager` ([#24642](astral-sh/ruff#24642))
- \[`airflow`] Implement `airflow-xcom-pull-in-template-string` (`AIR201`) ([#23583](astral-sh/ruff#23583))
- \[`flake8-bandit`] Fix `S103` false positives and negatives in mask analysis ([#24424](astral-sh/ruff#24424))

##### Bug fixes

- \[`flake8-async`] Omit overridden methods for `ASYNC109` ([#24648](astral-sh/ruff#24648))

##### Documentation

- \[`flake8-async`] Add override mention to `ASYNC109` docs ([#24666](astral-sh/ruff#24666))
- Update Neovim config examples to use `vim.lsp.config` ([#24577](astral-sh/ruff#24577))

##### Contributors

- [@augustelalande](https://github.com/augustelalande)
- [@anishgirianish](https://github.com/anishgirianish)
- [@benberryallwood](https://github.com/benberryallwood)
- [@charliermarsh](https://github.com/charliermarsh)
- [@Dev-iL](https://github.com/Dev-iL)

Renovate-Branch: renovate/2024.6-ruff-0.15.x
Change-Id: I2c5de44f14ce3133db71161eae18c7b43f7ba09b
Priv-Id: 9c1a7f10043a2db2338a90de9a62a4d7989df14d
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

preview Related to preview mode features rule Implementing or modifying a lint rule

Projects

None yet

Development

Successfully merging this pull request may close these issues.

PLC2701 false positive for a private name import used in a type parameter list

4 participants


Back | FazBrowse Home | New Git URL