Skip to content

Supported Features

This page documents all features of the Python type annotation ecosystem that are supported by the typeapi package.

Feature Supported since Example Implemented via Related PEPs
Normal type hint 1.0.0 int, MyType, list[str] ClassTypeHint PEP484, PEP526
Generics in standard collection [^4] 1.3.0 list[int], dict[str, str] ClassTypeHint PEP585
Tuples 1.0.0 tuple[int, str], Tuple[Any, ...] TupleTypeHint PEP484
Union types 1.0.0 Union[int, str], int \| str UnionTypeHint PEP484, PEP604
Sugar syntax for union types [^5] 1.3.0 int \| str UnionTypeHint PEP604
Literals 1.0.0 Literal["a", 42] LiteralTypeHint PEP586
Annotated 1.0.0 Annotated[int, "hello_world"] AnnotatedTypeHint PEP484, PEP593
Type variables 1.0.0 TypeVar("T") TypeVarTypeHint PEP484, PEP646 [^2], PEP695 [^3]
Forward references 1.0.0 "MyType" ForwardRefTypeHint PEP484

[^2]: PEP646 - Variadic Generics is not currently officially supported. Reflecting type hints using this language feature may fail.

[^3]: PEP695 - Type Parameter Syntax is not currently officially supported. Reflecting type hints using this language feature may fail.

[^4]: Forward references may use the generic syntax introduced in PEP585 - Type Hinting Generics In Standard Collections in older Python (< 3.9) versions that do not implement this PEP. typeapi will evaluate the forward reference accordingly and return the correct parameterized generic type hint from the typing module.

[^5]: The union syntax introduced by PEP 604 - Allow writing union types as X | Y may be used in older Python versions (< 3.10) via forward references. typeapi will evaluate the forward reference accordingly and return the corresponding typing.Union type hint. Note that the evaluation of new-style union types from string literals will always return a typing.Union despite the same syntax evaluated in Python versions supporting the syntax returning types.UnionType instead.