Add token based parenthesized_ranges implementation#21738
Add token based parenthesized_ranges implementation#21738MichaReiser merged 8 commits intoastral-sh:mainfrom
parenthesized_ranges implementation#21738Conversation
Diagnostic diff on typing conformance testsNo changes detected when running ty on typing conformance tests ✅ |
|
|
MichaReiser
left a comment
There was a problem hiding this comment.
Nice, this looks great. I've a few smaller nit comments but it's mostly good to go
crates/ruff_python_ast_integration_tests/tests/parenthesize_optimized.rs
Outdated
Show resolved
Hide resolved
Co-authored-by: Micha Reiser <micha@reiser.io>
Co-authored-by: Micha Reiser <micha@reiser.io>
|
@MichaReiser this one should be ready for you to review again |
parenthesized_ranges implementation
MichaReiser
left a comment
There was a problem hiding this comment.
Thanks, this is great.
If you're interested, it would be great if we could rewrite the calls to parenthesized_range in ruff_linter to use your new implementation
I'm definitely interested, let me prepare a PR for this, I will create an issue and link it there |
* origin/main: [ty] Improve `@override`, `@final` and Liskov checks in cases where there are multiple reachable definitions (#21767) [ty] Extend `invalid-explicit-override` to also cover properties decorated with `@override` that do not override anything (#21756) [ty] Enable LRU collection for parsed module (#21749) [ty] Support typevar-specialized dynamic types in generic type aliases (#21730) Add token based `parenthesized_ranges` implementation (#21738) [ty] Default-specialization of generic type aliases (#21765) [ty] Suppress false positives when `dataclasses.dataclass(...)(cls)` is called imperatively (#21729) [syntax-error] Default type parameter followed by non-default type parameter (#21657) new module for parsing ranged suppressions (#21441) [ty] `type[T]` is assignable to an inferable typevar (#21766) Fix syntax error false positives for `await` outside functions (#21763) [ty] Improve diagnostics for unsupported comparison operations (#21737) Move `Token`, `TokenKind` and `Tokens` to `ruff-python-ast` (#21760) [ty] Don't confuse multiple occurrences of `typing.Self` when binding bound methods (#21754) Use our org-wide Renovate preset (#21759) Delete `my-script.py` (#21751) [ty] Move `all_members`, and related types/routines, out of `ide_support.rs` (#21695)
* origin/main: [ty] Reachability constraints: minor documentation fixes (#21774) [ty] Fix non-determinism in `ConstraintSet.specialize_constrained` (#21744) [ty] Improve `@override`, `@final` and Liskov checks in cases where there are multiple reachable definitions (#21767) [ty] Extend `invalid-explicit-override` to also cover properties decorated with `@override` that do not override anything (#21756) [ty] Enable LRU collection for parsed module (#21749) [ty] Support typevar-specialized dynamic types in generic type aliases (#21730) Add token based `parenthesized_ranges` implementation (#21738) [ty] Default-specialization of generic type aliases (#21765) [ty] Suppress false positives when `dataclasses.dataclass(...)(cls)` is called imperatively (#21729) [syntax-error] Default type parameter followed by non-default type parameter (#21657)
Summary
Optimizes parenthesized_range by using token slice partitioning to reduce scanning overhead.
Closes #21510
Test Plan
Acknowledging closed PR #21734 by @FarhanAliRaza for a couple of insights that helped shape the final version.