Tip

Feed the bear! The bear is rooting around in your refuse pile. You feel sadness.

# BigData™

    It's a big bear AAAAAAAAFTER all!
    It's a big bear AAAAAAAAFTER all!
    It's a big b——— *squelching sound, then blessed silence*

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—current
| 3.10 | — | 0.7.0—current
| 3.11 | — | 0.12.0—current
| 3.12 | — | 0.17.0—current
| 3.13 | — | 0.19.0—current
PEP | 362 | none | none
| 435 | 0.16.0—current | none
| 484 | 0.2.0—current | none
| 517 | — | 0.19.0—current
| 518 | — | 0.19.0—current
| 526 | — | 0.15.0—current
| 544 | — | 0.4.0—current
| 557 | 0.10.0—current | none
| 560 | — | 0.4.0—current
| 561 | — | 0.6.0—current
| 563 | — | 0.7.0—current
| 570 | — | 0.10.0—current
| 572 | — | 0.4.0—current
| 585 | — | 0.5.0—current
| 586 | — | 0.7.0—current
| 589 | 0.9.0—current | none
| 591 | 0.13.0—current | none
| 593 | — | 0.4.0—current
| 604 | — | 0.10.0—current
| 612 | 0.19.0—current | none
| 613 | none | 0.18.0—current
| 621 | — | 0.19.0—current
| 646 | 0.19.0—current | none
| 647 | — | 0.13.0—current
| 649 | none | none
| 663 | 0.16.0—current | none
| 673 | — | 0.14.0—current
| 675 | 0.14.0—current | none
| 681 | none | none
| 688 | — | 0.1.0—current
| 692 | 0.19.0—current | none
| 695 | 0.17.0—current | none
| 696 | none | none
| 698 | none | none
| 705 | none | none
| 742 | — | 0.20.0—current
| 747 | none | none
| 3102 | — | 0.1.0—current
| 3119 | — | 0.9.0—current
| 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 | 0.17.0—current | none
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.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—current
| `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
`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
jax | @jit | — | 0.19.0—current
langchain | all | 0.20.0—current | none
`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
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
rich_click | all | — | 0.20.1—current
sphinx | sphinx.ext.autodoc | — | 0.9.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
| `NewType` | — | 0.4.0—current
| `NoDefault` | none | none
| `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
xarray | all | 0.20.0—current | none
`weakref` | `ref` | 0.17.0—current | none

[1]

They now suffer crippling RSI so that you may appear knowledgeable before colleagues.