Features¶
Beartype complies with vast swaths of Python's typing landscape and lint-filled laundry list of Python Enhancement Proposals (PEPs) – but nobody's perfect. Not even the hulking form of beartype does everything. \</audience_gasps>
Let's chart exactly what beartype complies with and when beartype first did so. Introducing... Beartype's feature matrix of bloated doom! It will bore you into stunned disbelief that somebody typed all this.1
| category | feature | partial support | full support |
|---|---|---|---|
| Python | 3.5 | — | 0.1.0—0.3.0 |
| 3.6 | — | 0.1.0—0.10.4 | |
| 3.7 | — | 0.1.0—0.15.0 | |
| 3.8 | — | 0.1.0—0.19.0 | |
| 3.9 | — | 0.3.2—0.22.0 | |
| 3.10 | — | 0.7.0—current | |
| 3.11 | — | 0.12.0—current | |
| 3.12 | — | 0.17.0—current | |
| 3.13 | — | 0.19.0—current | |
| 3.14 | — | 0.22.0—current | |
| 3.15 | — | 0.23.0—current | |
| PEP | PEP 342 | none | 0.22.8—current |
| PEP | PEP 362 | none | none |
| PEP | PEP 380 | none | 0.22.8—current |
| PEP 435 | 0.16.0—current | none | |
| PEP 440 | 0.1.0—current | none | |
| PEP 484 | 0.2.0—current | none | |
| PEP 517 | — | 0.19.0—current | |
| PEP 518 | — | 0.19.0—current | |
| PEP | PEP 525 | none | 0.22.7—current |
| PEP 526 | — | 0.15.0—current | |
| PEP 544 | — | 0.4.0—current | |
| PEP 557 | 0.10.0—current | none | |
| PEP 560 | — | 0.4.0—current | |
| PEP 561 | — | 0.6.0—current | |
| PEP 563 | — | 0.7.0—current | |
| PEP 570 | — | 0.10.0—current | |
| PEP 572 | — | 0.4.0—current | |
| PEP 585 | — | 0.5.0—current | |
| PEP 586 | — | 0.7.0—current | |
| PEP 589 | 0.9.0—current | none | |
| PEP 591 | 0.13.0—current | none | |
| PEP 593 | — | 0.4.0—current | |
| PEP 604 | — | 0.10.0—current | |
| PEP 612 | 0.19.0—current | none | |
| PEP 613 | none | 0.18.0—current | |
| PEP 621 | — | 0.19.0—current | |
| PEP 646 | 0.22.0—current | none | |
| PEP 647 | — | 0.13.0—current | |
| PEP 649 | none | 0.22.0—current | |
| PEP 663 | 0.16.0—current | none | |
| PEP 673 | — | 0.14.0—current | |
| PEP 675 | 0.14.0—current | none | |
| PEP 681 | none | none | |
| PEP 688 | — | 0.1.0—current | |
| PEP 692 | 0.19.0—current | none | |
| PEP 695 | — | 0.21.0—current | |
| PEP 696 | none | 0.22.0—current | |
| PEP 698 | none | none | |
| PEP 702 | none | 0.23.0—current | |
| PEP 705 | none | none | |
| PEP 742 | — | 0.20.0—current | |
| PEP 747 | none | none | |
| PEP 749 | none | 0.22.0—current | |
| PEP 3102 | — | 0.1.0—current | |
| PEP 3119 | — | 0.9.0—current | |
| PEP 3141 | — | 0.1.0—current | |
| packaging | PyPI | — | 0.1.0—current |
| Anaconda | — | 0.1.0—current | |
| Arch Linux | — | 0.12.0—current | |
| Gentoo Linux | — | 0.2.0—current | |
| macOS Homebrew | — | 0.5.1—current | |
| macOS MacPorts | — | 0.5.1—current | |
| decoratable | classes | — | 0.11.0—current |
| coroutines | — | 0.9.0—current | |
| dataclasses | — | 0.10.0—current | |
| enumerations | 0.16.0—current | none | |
| functions | — | 0.1.0—current | |
| generators (asynchronous) | — | 0.9.0—current | |
| generators (synchronous) | — | 0.1.0—current | |
| methods | — | 0.1.0—current | |
pseudo-functions (__call__()) |
— | 0.13.0—current | |
| hints | covariant | — | 0.1.0—current |
| contravariant | none | none | |
| absolute forward references | — | 0.14.0—current | |
| relative forward references | — | 0.14.0—current | |
| subscriptable forward references | — | 0.16.0—current | |
| tuple unions | — | 0.1.0—current | |
type alias statements (PEP 695) |
— | 0.21.0—current | |
| parameters | optional | — | 0.18.0—current |
| keyword-only | — | 0.1.0—current | |
| positional-only | — | 0.10.0—current | |
| variadic keyword | — | 0.19.0—current | |
| variadic positional | — | 0.1.0—current | |
| plugin APIs | __instancecheck_str__ |
— | 0.17.0—current |
| shell variables | ${BEARTYPE_IS_COLOR} |
— | 0.16.0—current |
| static checkers | mypy | — | 0.6.0—current |
| pyright | — | 0.11.0—current | |
| pytype | none | none | |
| Pyre | none | none | |
beartype |
beartype |
— | 0.1.0—current |
BeartypeConf |
— | 0.10.0—current | |
BeartypeStrategy |
— | 0.10.0—current | |
| beartype.abby | die_if_unbearable | — | 0.10.0—0.10.4 |
| is_bearable | — | 0.10.0—0.10.4 | |
beartype.claw |
beartype_all |
— | 0.15.0—current |
beartype_package |
— | 0.15.0—current | |
beartype_packages |
— | 0.15.0—current | |
beartype_this_package |
— | 0.15.0—current | |
beartyping |
— | 0.15.0—current | |
beartype.bite |
infer_hint |
— | 0.22.0—current |
beartype.door |
TypeHint |
— | 0.11.0—current |
AnnotatedTypeHint |
— | 0.11.0—current | |
AnyTypeHint |
— | 0.20.0—current | |
CallableTypeHint |
— | 0.11.0—current | |
GenericTypeHint |
— | 0.20.0—current | |
LiteralTypeHint |
— | 0.11.0—current | |
NewTypeTypeHint |
— | 0.11.0—current | |
TupleFixedTypeHint |
— | 0.19.0—current | |
TupleVariableTypeHint |
— | 0.19.0—current | |
TypeVarTypeHint |
— | 0.11.0—current | |
UnionTypeHint |
— | 0.11.0—current | |
die_if_unbearable |
— | 0.11.0—current | |
infer_hint |
— | 0.19.0—0.21.0 | |
is_bearable |
— | 0.11.0—current | |
is_subhint |
— | 0.11.0—current | |
beartype.peps |
resolve_pep563 |
— | 0.11.0—current |
beartype.typing |
all | — | 0.10.0—current |
beartype.vale |
Is |
— | 0.7.0—current |
IsAttr |
— | 0.7.0—current | |
IsEqual |
— | 0.7.0—current | |
IsInstance |
— | 0.10.0—current | |
IsSubclass |
— | 0.9.0—current | |
| builtins | None |
— | 0.6.0—current |
NotImplemented |
— | 0.7.1—current | |
dict |
— | 0.18.0—current | |
frozenset |
— | 0.19.0—current | |
list |
— | 0.5.0—current | |
set |
— | 0.19.0—current | |
tuple |
— | 0.5.0—current | |
type |
— | 0.9.0—current | |
| click | all | — | 0.20.0—current |
collections |
ChainMap |
— | 0.19.0—current |
Counter |
— | 0.19.0—current | |
OrderedDict |
— | 0.18.0—current | |
defaultdict |
— | 0.18.0—current | |
deque |
— | 0.19.0—current | |
| celery.Celery | @task | – | 0.22.0—current |
collections.abc |
AsyncGenerator |
0.5.0—current | none |
AsyncIterable |
0.5.0—current | none | |
AsyncIterator |
0.5.0—current | none | |
Awaitable |
0.5.0—current | none | |
Buffer |
— | 0.1.0—current | |
ByteString |
— | 0.5.0—current | |
Callable |
0.5.0—current | none | |
Collection |
– | 0.19.0—current | |
Container |
— | 0.20.0—current | |
Coroutine |
0.9.0—current | none | |
Generator |
0.5.0—current | none | |
ItemsView |
— | 0.19.0—current | |
Iterable |
— | 0.20.0—current | |
Iterator |
0.5.0—current | none | |
KeysView |
– | 0.19.0—current | |
Mapping |
– | 0.18.0—current | |
MappingView |
0.5.0—current | none | |
MutableMapping |
– | 0.18.0—current | |
MutableSequence |
— | 0.5.0—current | |
MutableSet |
— | 0.19.0—current | |
Reversible |
— | 0.20.0—current | |
Sequence |
— | 0.5.0—current | |
Set |
— | 0.19.0—current | |
ValuesView |
— | 0.19.0—current | |
contextlib |
AbstractAsyncContextManager |
0.5.0—current | none |
AbstractContextManager |
0.5.0—current | none | |
asynccontextmanager |
— | 0.20.0—current | |
contextmanager |
— | 0.15.0—current | |
dataclasses |
InitVar |
— | 0.10.0—current |
dataclass |
0.10.0—current | none | |
enum |
Enum |
0.16.0—current | none |
StrEnum |
0.16.0—current | none | |
| equinox | Module | — | 0.17.0—0.19.0 |
| @filter_jit | — | 0.19.0—current | |
| gradio | all | – | 0.22.7—current |
| inspect | isasyncgenfunction | – | 0.22.7—current |
| isgeneratorfunction | – | 0.22.6—current | |
| jax | @jit | — | 0.19.0—current |
| jaxtyping | @jaxtyped | — | 0.22.0—current |
| langchain | most | 0.20.0—current | none |
| langchain_core.runnables | @chain | – | 0.22.0—current |
functools |
lru_cache |
— | 0.15.0—current |
| nuitka | all | — | 0.12.0—current |
| numba | @njit | — | 0.19.0—current |
| nptyping | all | — | 0.17.0—current |
| numpy.typing | numpy.typing.NDArray | — | 0.8.0—current |
os |
PathLike |
0.17.0—current | none |
| PyInstaller | all | — | 0.22.9—current |
| pandera | all | — | 0.13.0—current |
| pydantic | all | 0.20.0—current | none |
re |
Match |
0.5.0—current | none |
Pattern |
0.5.0—current | none | |
| redis | redis.Redis | — | 0.22.3—current |
| rich_click | all | — | 0.20.1—current |
| sphinx | sphinx.ext.autodoc | — | 0.9.0—current |
threading |
Lock |
— | 0.23.0—current |
RLock |
— | 0.23.0—current | |
typing |
AbstractSet |
— | 0.19.0—current |
Annotated |
— | 0.4.0—current | |
Any |
— | 0.2.0—current | |
AnyStr |
0.4.0—current | none | |
AsyncContextManager |
0.4.0—current | none | |
AsyncGenerator |
0.2.0—current | none | |
AsyncIterable |
0.2.0—current | none | |
AsyncIterator |
0.2.0—current | none | |
Awaitable |
0.2.0—current | none | |
BinaryIO |
— | 0.10.0—current | |
ByteString |
— | 0.2.0—current | |
Callable |
0.2.0—current | none | |
ChainMap |
— | 0.19.0—current | |
ClassVar |
none | none | |
Collection |
— | 0.19.0—current | |
Concatenate |
none | none | |
Container |
— | 0.20.0—current | |
ContextManager |
0.4.0—current | none | |
Coroutine |
0.9.0—current | none | |
Counter |
— | 0.19.0—current* | |
DefaultDict |
— | 0.18.0—current | |
Deque |
— | 0.19.0—current | |
Dict |
— | 0.18.0—current* | |
Final |
0.13.0—current | none | |
ForwardRef |
— | 0.16.0—current | |
FrozenSet |
— | 0.19.0—current | |
Generator |
0.2.0—current | none | |
Generic |
— | 0.4.0—current | |
Hashable |
0.2.0—current | none | |
IO |
— | 0.10.0—current | |
ItemsView |
— | 0.19.0—current | |
Iterable |
— | 0.20.0—current | |
Iterator |
0.2.0—current | none | |
KeysView |
— | 0.19.0—current | |
List |
— | 0.3.0—current | |
Literal |
— | 0.7.0—current | |
LiteralString |
0.14.0—current | none | |
Mapping |
– | 0.18.0—current* | |
MappingView |
0.2.0—current | none | |
Match |
0.4.0—current | none | |
MutableMapping |
– | 0.18.0—current | |
MutableSequence |
— | 0.3.0—current | |
MutableSet |
— | 0.19.0—current | |
NamedTuple |
— | 0.12.0—current | |
Never |
— | 0.23.0—current | |
NewType |
— | 0.4.0—current | |
NoDefault |
— | 0.22.0—current | |
NoReturn |
— | 0.4.0—current | |
Optional |
— | 0.2.0—current | |
OrderedDict |
– | 0.18.0—current | |
ParamSpec |
none | none | |
ParamSpecArgs |
0.19.0—current | none | |
ParamSpecKwargs |
0.19.0—current | none | |
Pattern |
0.4.0—current | none | |
Protocol |
— | 0.4.0—current | |
ReadOnly |
none | none | |
Reversible |
— | 0.20.0—current | |
Self |
— | 0.14.0—current | |
Sequence |
— | 0.3.0—current | |
Set |
— | 0.190—current | |
Sized |
— | 0.2.0—current | |
SupportsAbs |
— | 0.4.0—current | |
SupportsBytes |
— | 0.4.0—current | |
SupportsComplex |
— | 0.4.0—current | |
SupportsFloat |
— | 0.4.0—current | |
SupportsIndex |
— | 0.4.0—current | |
SupportsInt |
— | 0.4.0—current | |
SupportsRound |
— | 0.4.0—current | |
Text |
— | 0.1.0—current | |
TextIO |
— | 0.10.0—current | |
Tuple |
— | 0.4.0—current | |
Type |
— | 0.9.0—current | |
TypeAlias |
— | 0.18.0—current | |
TypeGuard |
— | 0.13.0—current | |
TypeIs |
— | 0.20.0—current | |
TypedDict |
0.9.0—current | none | |
TypeVar |
0.4.0—current | none | |
TypeVarTuple |
0.19.0—current | none | |
Union |
— | 0.2.0—current | |
Unpack |
0.19.0—current | none | |
ValuesView |
— | 0.19.0—current | |
TYPE_CHECKING |
— | 0.5.0—current | |
final |
none | none | |
no_type_check |
— | 0.5.0—current | |
override |
none | none | |
typing_extensions |
all attributes | — | 0.8.0—current |
warnings |
deprecated |
— | 0.23.0—current |
| xarray | all | 0.20.0—current | none |
weakref |
ref |
0.17.0—current | none |
-
They now suffer crippling RSI so that you may appear knowledgeable before colleagues. ↩