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!)