ruff/crates
Brent Westbrook 6bb32355ef
[`pyupgrade`] Rename private type parameters in PEP 695 generics (`UP049`) (#15862)
## Summary

This is a new rule to implement the renaming of PEP 695 type parameters
with leading underscores after they have (presumably) been converted
from standalone type variables by either UP046 or UP047. Part of #15642.

I'm not 100% sure the fix is always safe, but I haven't come up with any
counterexamples yet. `Renamer` seems pretty precise, so I don't think
the usual issues with comments apply.

I initially tried writing this as a rule that receives a `Stmt` rather
than a `Binding`, but in that case the
`checker.semantic().current_scope()` was the global scope, rather than
the scope of the type parameters as I needed. Most of the other rules
using `Renamer` also used `Binding`s, but it does have the downside of
offering separate diagnostics for each parameter to rename.

## Test Plan

New snapshot tests for UP049 alone and the combination of UP046, UP049,
and PYI018.

---------

Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2025-02-04 13:22:57 -05:00
..
red_knot [red-knot] Support `--exit-zero` and `--error-on-warning` (#15746) 2025-02-03 07:35:30 +00:00
red_knot_project [red-knot] Add `--ignore`, `--warn`, and `--error` CLI arguments (#15689) 2025-01-24 16:20:15 +01:00
red_knot_python_semantic [red-knot] Use unambiguous invalid-syntax-construct for suppression comment test (#15933) 2025-02-04 15:24:50 +01:00
red_knot_server [red-knot] Make `Diagnostic::file` optional (#15640) 2025-01-23 10:43:14 +01:00
red_knot_test [red-knot] MDTest: Fix line numbers in error messages (#15932) 2025-02-04 13:44:05 +00:00
red_knot_vendored Sync vendored typeshed stubs (#15864) 2025-02-01 01:01:58 +00:00
red_knot_wasm Update Rust crate rand to 0.9.0 (#15899) 2025-02-03 12:25:57 +01:00
ruff [`pyupgrade`] Rename private type parameters in PEP 695 generics (`UP049`) (#15862) 2025-02-04 13:22:57 -05:00
ruff_annotate_snippets Fix docstring in ruff_annotate_snippets (#15748) 2025-01-26 22:25:29 -05:00
ruff_benchmark Vendor benchmark test files (#15878) 2025-02-02 18:16:07 +00:00
ruff_cache Fix cache key collisions for paths with separators (#12159) 2024-07-03 07:36:46 -05:00
ruff_db [red-knot] ruff_db: make diagnostic rendering prettier (#15856) 2025-01-31 16:37:02 -05:00
ruff_dev Improve Docs: Pylint subcategories' codes (#15909) 2025-02-03 13:53:36 +01:00
ruff_diagnostics Show errors for attempted fixes only when passed `--verbose` (#15237) 2025-01-03 08:50:13 -06:00
ruff_formatter Upgrade Rust toolchain to 1.84.0 (#15408) 2025-01-11 09:51:58 +01:00
ruff_graph Add support for configuring knot in `pyproject.toml` files (#15493) 2025-01-17 09:41:06 +01:00
ruff_index [red-knot] small efficiency improvements and bugfixes to use-def map building (#12373) 2024-07-18 09:24:58 -07:00
ruff_linter [`pyupgrade`] Rename private type parameters in PEP 695 generics (`UP049`) (#15862) 2025-02-04 13:22:57 -05:00
ruff_macros Flatten `red_knot_project` import paths (#15616) 2025-01-20 14:57:57 +01:00
ruff_notebook Update Rust crate rand to 0.9.0 (#15899) 2025-02-03 12:25:57 +01:00
ruff_python_ast Simplify the `StringFlags` trait (#15944) 2025-02-04 18:14:28 +00:00
ruff_python_ast_integration_tests Update insta snapshots (#14366) 2024-11-15 19:31:15 +01:00
ruff_python_codegen Preserve triple quotes and prefixes for strings (#15818) 2025-02-04 08:41:06 -05:00
ruff_python_formatter Preserve triple quotes and prefixes for strings (#15818) 2025-02-04 08:41:06 -05:00
ruff_python_index Extract `LineIndex` independent methods from `Locator` (#13938) 2024-10-28 07:53:41 +00:00
ruff_python_literal Preserve triple quotes and prefixes for strings (#15818) 2025-02-04 08:41:06 -05:00
ruff_python_parser Simplify the `StringFlags` trait (#15944) 2025-02-04 18:14:28 +00:00
ruff_python_resolver Update insta snapshots (#14366) 2024-11-15 19:31:15 +01:00
ruff_python_semantic [`flake8-pyi`] Fix more complex cases (`PYI019`) (#15821) 2025-02-02 18:38:49 +00:00
ruff_python_stdlib Revert "Add all PEP-585 names to UP006 rule" (#15250) 2025-01-04 12:23:53 +01:00
ruff_python_trivia [red-knot] Hand-written MDTest parser (#15926) 2025-02-04 14:01:53 +01:00
ruff_python_trivia_integration_tests Update insta snapshots (#14366) 2024-11-15 19:31:15 +01:00
ruff_server Consider `unsafe-fixes` settings for code actions (#15666) 2025-01-22 13:44:13 +05:30
ruff_source_file [`pyupgrade`] Do not report when a UTF-8 comment is followed by a non-UTF-8 one (`UP009`) (#14728) 2024-12-11 10:30:41 +00:00
ruff_text_size [`ruff`] `itertools.starmap(..., zip(...))` (`RUF058`) (#15483) 2025-01-16 15:18:12 +01:00
ruff_wasm Update Rust crate rand to 0.9.0 (#15899) 2025-02-03 12:25:57 +01:00
ruff_workspace nit: docs for ignore & select (#15883) 2025-02-04 10:05:41 +01:00