[ty] suppress invalid suggestions in import statements#21484
Merged
BurntSushi merged 1 commit intoastral-sh:mainfrom Nov 17, 2025
Merged
[ty] suppress invalid suggestions in import statements#21484BurntSushi merged 1 commit intoastral-sh:mainfrom
BurntSushi merged 1 commit intoastral-sh:mainfrom
Conversation
11a424c to
27af016
Compare
Diagnostic diff on typing conformance testsNo changes detected when running ty on typing conformance tests ✅ |
This comment was marked as off-topic.
This comment was marked as off-topic.
After an import statement such as `import collections a<CURSOR>`, the only valid suggestion should be `as`. Similarly for `from collections import defaultdict a<CURSOR>`. Ref astral-sh/ty#1562
27af016 to
5270ece
Compare
BurntSushi
approved these changes
Nov 17, 2025
Member
BurntSushi
left a comment
There was a problem hiding this comment.
Thanks! I pushed some small fixups to the comments/names, but this otherwise LGTM. Nice tests! :)
dcreager
added a commit
that referenced
this pull request
Nov 17, 2025
* origin/main: (26 commits) Mention `force-exclude` in "Configuration > Python file discovery" (#21500) Avoid syntax error when formatting attribute expressions with outer parentheses, parenthesized value, and trailing comment on value (#20418) [ty] suppress invalid suggestions in import statements (#21484) Limit `eglot-format` hook to eglot-managed Python buffers (#21459) Adjust own-line comment placement between branches (#21185) [ty] Subscript assignment diagnostics follow-up (#21452) [ty] Inlay hint call argument location (#20349) [ty] Use `CompactStr` for `StringLiteralType` (#21497) Update CodSpeedHQ/action action to v4.3.4 (#21488) Update salsa digest to a885bb4 (#21486) Update dependency ruff to v0.14.5 (#21489) Update astral-sh/setup-uv action to v7.1.3 (#21487) Update Rust crate get-size2 to v0.7.2 (#21490) Update Rust crate indicatif to v0.18.3 (#21491) Update Rust crate quick-junit to v0.5.2 (#21492) Update taiki-e/install-action action to v2.62.52 (#21493) Fix analyze graph tests on windows (#21481) `analyze`: Add option to skip over imports in `TYPE_CHECKING` blocks (#21472) [ty] Dataclasses: `__hash__` semantics and `unsafe_hash` (#21470) [ty] Dataclass transform: complete set of parameters (#21474) ...
dcreager
added a commit
that referenced
this pull request
Nov 17, 2025
* dcreager/coolable: (31 commits) mdformat don't panic Mention `force-exclude` in "Configuration > Python file discovery" (#21500) Avoid syntax error when formatting attribute expressions with outer parentheses, parenthesized value, and trailing comment on value (#20418) [ty] suppress invalid suggestions in import statements (#21484) known discrepancy TODO α-rename todo equiv too Limit `eglot-format` hook to eglot-managed Python buffers (#21459) Adjust own-line comment placement between branches (#21185) [ty] Subscript assignment diagnostics follow-up (#21452) [ty] Inlay hint call argument location (#20349) [ty] Use `CompactStr` for `StringLiteralType` (#21497) Update CodSpeedHQ/action action to v4.3.4 (#21488) Update salsa digest to a885bb4 (#21486) Update dependency ruff to v0.14.5 (#21489) Update astral-sh/setup-uv action to v7.1.3 (#21487) Update Rust crate get-size2 to v0.7.2 (#21490) Update Rust crate indicatif to v0.18.3 (#21491) Update Rust crate quick-junit to v0.5.2 (#21492) ...
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
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes astral-sh/ty#1562
Only suggest the keyword "as" in import statements when the user have written
import foo a<CURSOR>orfrom foo import bar a<CURSOR>as no other suggestion makes sense here.Re-uses the existing pattern for incomplete
import fromstatements to determine incomplete import alias statements and make the suggestions more sane in those cases.There was a potential suggestion from @BurntSushi in astral-sh/ty#1562 (comment) to move the handling of import statements into one unified state machine but I acted on the side of caution and fixed this with already established patterns, pending a potential bigger re-write down the line.
Test Plan
Added new tests and checked that it behaved reasonable in the playground.