ruff/crates/ty_python_semantic/resources/mdtest
David Peter 0761ea42d9
[ty] Eagerly evaluate types.UnionType elements as type expressions (#21531)
## Summary

Eagerly evaluate the elements of a PEP 604 union in value position (e.g.
`IntOrStr = int | str`) as type expressions and store the result (the
corresponding `Type::Union` if all elements are valid type expressions,
or the first encountered `InvalidTypeExpressionError`) on the
`UnionTypeInstance`, such that the `Type::Union(…)` does not need to be
recomputed every time the implicit type alias is used in a type
annotation.

This might lead to performance improvements for large unions, but is
also necessary for correctness, because the elements of the union might
refer to type variables that need to be looked up in the scope of the
type alias, not at the usage site.

## Test Plan

New Markdown tests
2025-11-20 17:28:48 +01:00
..
annotations [ty] Create a specialization from a constraint set (#21414) 2025-11-19 14:20:33 -05:00
assignment [ty] Custom concise diagnostic messages (#21498) 2025-11-18 09:35:40 +01:00
binary [ty] Rename UnionType to types.UnionType (#21262) 2025-11-03 22:06:56 +01:00
boolean Revert "[ty] Better control flow for boolean expressions that are inside if (#18010)" (#18150) 2025-05-17 08:27:32 -04:00
boundness_declaredness [ty] Reformulation of public symbol inference test suite (#20667) 2025-10-01 14:26:17 +02:00
call [ty] Improve diagnostics when NotImplemented is called (#21523) 2025-11-19 19:27:12 +00:00
class [ty] implement typing.NewType by adding Type::NewTypeInstance 2025-11-10 14:55:47 -08:00
comparison [ty] detect cycles in binary comparison inference (#20446) 2025-09-17 09:45:25 +02:00
comprehensions [ty] fix global symbol lookup from eager scopes (#21317) 2025-11-12 10:15:51 -08:00
conditional [ty] Support as-patterns in reachability analysis (#19728) 2025-08-04 20:13:50 +02:00
dataclasses [ty] Dataclasses: __hash__ semantics and unsafe_hash (#21470) 2025-11-16 09:52:30 +00:00
declaration [ty] Format conflicting types as an enumeration (#18956) 2025-06-26 14:29:33 +02:00
diagnostics [ty] Better invalid-assignment diagnostics (#21476) 2025-11-18 14:31:04 +01:00
directives [ty] Custom concise diagnostic messages (#21498) 2025-11-18 09:35:40 +01:00
doc ty_python_semantic: add union type context to function call type errors 2025-05-09 13:40:51 -04:00
exception [ty] Improve diagnostics for invalid exceptions (#21475) 2025-11-15 22:12:00 +00:00
expression [ty] Use "cannot" consistently over "can not" (#21255) 2025-11-03 10:38:20 -05:00
function [ty] Sync vendored typeshed stubs (#21466) 2025-11-15 17:12:32 +00:00
generics [ty] Handle nested types when creating specializations from constraint sets (#21530) 2025-11-19 17:37:16 -05:00
ide_support [ty] Fixup a few details around version-specific dataclass features (#21453) 2025-11-14 15:04:55 +00:00
import [ty] Consider from thispackage import y to re-export y in __init__.pyi (#21387) 2025-11-11 14:41:14 -05:00
literal [ty] Type inference for genererator expressions (#21437) 2025-11-14 13:04:11 +00:00
loops [ty] Fix bug where ty would think all types had an __mro__ attribute (#20995) 2025-10-27 11:19:12 +00:00
narrow [ty] Eagerly evaluate types.UnionType elements as type expressions (#21531) 2025-11-20 17:28:48 +01:00
regression [ty] fix global symbol lookup from eager scopes (#21317) 2025-11-12 10:15:51 -08:00
scopes [ty] Make __getattr__ available for ModuleType instances (#21450) 2025-11-14 13:59:14 +01:00
shadowing
snapshots [ty] Improve diagnostics when NotImplemented is called (#21523) 2025-11-19 19:27:12 +00:00
stubs [ty] Better invalid-assignment diagnostics (#21476) 2025-11-18 14:31:04 +01:00
subscript [ty] Subscript assignment diagnostics follow-up (#21452) 2025-11-17 11:14:58 +00:00
suppressions [ty] Better invalid-assignment diagnostics (#21476) 2025-11-18 14:31:04 +01:00
type_compendium [ty] Improve literal promotion heuristics (#21439) 2025-11-14 16:13:56 -05:00
type_of [ty] Support type[…] and Type[…] in implicit type aliases (#21421) 2025-11-13 19:02:24 +01:00
type_properties [ty] Better handling of "derived information" in constraint sets (#21463) 2025-11-18 12:02:25 -05:00
type_qualifiers [ty] Fix false positive for Final attribute assignment in __init__ (#21158) 2025-11-11 12:54:05 -08:00
unary Update class literal display to use <class 'Foo'> style (#17889) 2025-05-06 20:11:25 -04:00
with [ty] Use typing.Self for the first parameter of instance methods (#20517) 2025-09-29 21:08:08 +02:00
.mdformat.toml
async.md [ty] Support async/await, async with and yield from (#19595) 2025-07-30 11:51:21 +02:00
attributes.md [ty] Skip eagerly evaluated scopes for attribute storing (#20856) 2025-11-11 14:45:34 -08:00
bidirectional.md [ty] Improve literal promotion heuristics (#21439) 2025-11-14 16:13:56 -05:00
classes.md [ty] Fix bug where ty would think all types had an __mro__ attribute (#20995) 2025-10-27 11:19:12 +00:00
cycle.md [ty] Avoid ever-growing default types (#20991) 2025-10-21 19:13:36 +02:00
decorators.md ty_python_semantic: add union type context to function call type errors 2025-05-09 13:40:51 -04:00
del.md [ty] No union with Unknown for module-global symbols (#20664) 2025-10-01 16:40:30 +02:00
deprecated.md [ty] Consistent use of American english (in rules) (#19488) 2025-07-22 16:10:38 +02:00
descriptor_protocol.md [ty] Use the return type of __get__ for descriptor lookups even when __get__ is called with incorrect arguments (#21424) 2025-11-13 12:05:10 +00:00
enums.md [ty] Custom concise diagnostic messages (#21498) 2025-11-18 09:35:40 +01:00
exhaustiveness_checking.md [ty] Improve exhaustiveness analysis for type variables with bounds or constraints (#21172) 2025-10-31 16:51:11 -04:00
final.md
implicit_type_aliases.md [ty] Eagerly evaluate types.UnionType elements as type expressions (#21531) 2025-11-20 17:28:48 +01:00
instance_layout_conflict.md [ty] initial support for slots=True in dataclasses (#20278) 2025-09-07 18:25:35 +01:00
intersection_types.md [ty] Use "cannot" consistently over "can not" (#21255) 2025-11-03 10:38:20 -05:00
invalid_syntax.md [ty] Implicit type aliases: Add support for typing.Union (#21363) 2025-11-12 12:59:14 +01:00
known_constants.md
literal_promotion.md [ty] Improve literal promotion heuristics (#21439) 2025-11-14 16:13:56 -05:00
mdtest_config.md
mdtest_custom_typeshed.md [ty] Remove Type::Tuple (#19669) 2025-08-11 22:03:32 +01:00
metaclass.md Update class literal display to use <class 'Foo'> style (#17889) 2025-05-06 20:11:25 -04:00
mro.md [ty] Sync vendored typeshed stubs (#21466) 2025-11-15 17:12:32 +00:00
named_tuple.md [ty] Fix bug where ty would think all types had an __mro__ attribute (#20995) 2025-10-27 11:19:12 +00:00
overloads.md [ty] Infer type of self for decorated methods and properties (#21123) 2025-10-29 21:22:38 +00:00
paramspec.md [ty] Ensure annotation/type expressions in stub files are always deferred (#21401) 2025-11-13 17:14:54 +00:00
pep613_type_aliases.md [ty] Further improve details around which expressions should be deferred in stub files (#21456) 2025-11-14 21:07:02 +00:00
pep695_type_aliases.md [ty] Add cycle handling to lazy_default (#20967) 2025-10-23 10:05:08 +02:00
properties.md [ty] Use the return type of __get__ for descriptor lookups even when __get__ is called with incorrect arguments (#21424) 2025-11-13 12:05:10 +00:00
protocols.md [ty] Constraint sets compare generic callables correctly (#21392) 2025-11-17 13:43:37 -05:00
public_types.md [ty] Disambiguate classes that live in different modules but have the same fully qualified names (#20756) 2025-10-08 18:27:40 +01:00
statically_known_branches.md [ty] Rename "possibly unbound" diagnostics to "possibly missing" (#20492) 2025-09-23 14:26:55 +00:00
sys_platform.md
sys_version_info.md
t_strings.md [ty] Add support for PEP 750 t-strings (#20085) 2025-08-25 18:49:49 +00:00
terminal_statements.md [ty] improve lazy scope place lookup (#19321) 2025-07-25 07:11:11 +00:00
ty_extensions.md [ty] Use "cannot" consistently over "can not" (#21255) 2025-11-03 10:38:20 -05:00
typed_dict.md [ty] Custom concise diagnostic messages (#21498) 2025-11-18 09:35:40 +01:00
union_types.md [ty] Introduce TypeRelation::Redundancy (#20602) 2025-10-03 18:35:30 +01:00
unpacking.md [ty] Infer more precise types for collection literals (#20360) 2025-09-17 18:51:50 -04:00
unreachable.md [ty] Use "cannot" consistently over "can not" (#21255) 2025-11-03 10:38:20 -05:00