github beartype/beartype v0.8.1
Beartype 0.8.1

latest releases: v0.19.0, v0.19.0rc2, v0.19.0rc1...
3 years ago

Beartype 0.8.1 released.

This minor release resolves a significant edge case with typed NumPy arrays (i.e., numpy.typed.NDArray type hints). This release resolves 1 issue – albeit a significant issue for NumPy users. Changes include:

Issues Resolved

  • #47, kindly submitted by @braniii the awesome brainiac. @beartype now generates syntactically valid type-checking for typed NumPy arrays nested in beartype validators nested in fixed-length tuple type hints (e.g., Tuple[ Annotated[NDArray[np.floating], Is[lambda arr: arr.ndim == 1]], Annotated[NDArray[np.floating], Is[lambda arr: arr.ndim == 1]]]). Previously, @beartype erroneously chained assignment expressions sans parens protection. @beartype now avoids chaining assignment expressions altogether.

Interestingly, whereas chained assignments are syntactically valid, chained assignment expressions are syntactically invalid unless protected with parens under Python ≥ 3.8:

>>> a = b =    'Mother*Teacher*Destroyer'  # <-- fine
>>> (a :=      "Mother's Abomination")     # <-- fine
>>> (a := (b := "Mother's Illumination"))  # <-- fine
>>> (a := b := "Mother's Illumination")    # <-- not fine
SyntaxError: invalid syntax

The more you know, the less you know. Thanks again to @braniii for all the vigorous enthusiasm and brain-melting subtleties. You made data science a safer place for us. (Elucidative sedatives redact acidity!)

Don't miss a new beartype release

NewReleases is sending notifications on new releases.