Buckets:
| """Test the runtime usage of `numpy.typing`.""" | |
| from typing import ( | |
| Any, | |
| NamedTuple, | |
| Union, # pyright: ignore[reportDeprecated] | |
| get_args, | |
| get_origin, | |
| get_type_hints, | |
| ) | |
| import pytest | |
| import numpy as np | |
| import numpy._typing as _npt | |
| import numpy.typing as npt | |
| class TypeTup(NamedTuple): | |
| typ: type | |
| args: tuple[type, ...] | |
| origin: type | None | |
| def _flatten_type_alias(t: Any) -> Any: | |
| # "flattens" a TypeAliasType to its underlying type alias | |
| return getattr(t, "__value__", t) | |
| NDArrayTup = TypeTup(npt.NDArray, npt.NDArray.__args__, np.ndarray) | |
| TYPES = { | |
| "ArrayLike": TypeTup( | |
| _flatten_type_alias(npt.ArrayLike), | |
| _flatten_type_alias(npt.ArrayLike).__args__, | |
| Union, | |
| ), | |
| "DTypeLike": TypeTup( | |
| _flatten_type_alias(npt.DTypeLike), | |
| _flatten_type_alias(npt.DTypeLike).__args__, | |
| Union, | |
| ), | |
| "NBitBase": TypeTup(npt.NBitBase, (), None), # type: ignore[deprecated] # pyright: ignore[reportDeprecated] | |
| "NDArray": NDArrayTup, | |
| } | |
| def test_get_args(name: type, tup: TypeTup) -> None: | |
| """Test `typing.get_args`.""" | |
| typ, ref = tup.typ, tup.args | |
| out = get_args(typ) | |
| assert out == ref | |
| def test_get_origin(name: type, tup: TypeTup) -> None: | |
| """Test `typing.get_origin`.""" | |
| typ, ref = tup.typ, tup.origin | |
| out = get_origin(typ) | |
| assert out == ref | |
| def test_get_type_hints(name: type, tup: TypeTup) -> None: | |
| """Test `typing.get_type_hints`.""" | |
| typ = tup.typ | |
| def func(a: typ) -> None: pass | |
| out = get_type_hints(func) | |
| ref = {"a": typ, "return": type(None)} | |
| assert out == ref | |
| def test_get_type_hints_str(name: type, tup: TypeTup) -> None: | |
| """Test `typing.get_type_hints` with string-representation of types.""" | |
| typ_str, typ = f"npt.{name}", tup.typ | |
| def func(a: typ_str) -> None: pass | |
| out = get_type_hints(func) | |
| ref = {"a": getattr(npt, str(name)), "return": type(None)} | |
| assert out == ref | |
| def test_keys() -> None: | |
| """Test that ``TYPES.keys()`` and ``numpy.typing.__all__`` are synced.""" | |
| keys = TYPES.keys() | |
| ref = set(npt.__all__) | |
| assert keys == ref | |
| PROTOCOLS: dict[str, tuple[type[Any], object]] = { | |
| "_SupportsArray": (_npt._SupportsArray, np.arange(10)), | |
| "_SupportsArrayFunc": (_npt._SupportsArrayFunc, np.arange(10)), | |
| "_NestedSequence": (_npt._NestedSequence, [1]), | |
| } | |
| class TestRuntimeProtocol: | |
| def test_isinstance(self, cls: type[Any], obj: object) -> None: | |
| assert isinstance(obj, cls) | |
| assert not isinstance(None, cls) | |
| def test_issubclass(self, cls: type[Any], obj: object) -> None: | |
| assert issubclass(type(obj), cls) | |
| assert not issubclass(type(None), cls) | |
Xet Storage Details
- Size:
- 3.08 kB
- Xet hash:
- 7aec64d25fcfffc63f8744ad1cca63a4826e67d69a5b47861166fd21b30959f4
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.