Skip to content

Conversation

@AlexWaygood
Copy link
Member

@AlexWaygood AlexWaygood commented Mar 22, 2024

A second attempt to fix #10340. The earlier attempt was #10362, which was reverted in #10513.

#10362 incorrectly only allowed forward references in annotations if we were in a "typing-only annotation". But forward references are allowed in all type annotations, not just typing-only annotations, iff from __future__ import annotations is at the top of the file.

Test plan

cargo test. The tests added in #10513 should prevent a repeat of the earlier regression that #10362 caused.

@github-actions
Copy link
Contributor

ruff-ecosystem results

Linter (stable)

✅ ecosystem check detected no linter changes.

Linter (preview)

✅ ecosystem check detected no linter changes.

@AlexWaygood AlexWaygood merged commit b74dd42 into main Mar 22, 2024
@AlexWaygood AlexWaygood deleted the f821-try-2 branch March 22, 2024 18:11
# More circular references
class Leaf: ...
class Tree(list[Tree | Leaf]): ... # Still invalid even when `__future__.annotations` are enabled
class Tree2(list["Tree | Leaf"]): ... # always okay
Copy link
Contributor

Choose a reason for hiding this comment

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

This isn't quite testing what was intended and ought to be:

Suggested change
class Tree2(list["Tree | Leaf"]): ... # always okay
class Tree2(list["Tree2 | Leaf"]): ... # always okay

Copy link
Member Author

Choose a reason for hiding this comment

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

Good catch. Luckily the corrected test still passes, however.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

F821: false negatives when a file has from __future__ import annotations

4 participants