diff options
author | Josh Wilson <person142@users.noreply.github.com> | 2020-06-06 15:31:33 -0700 |
---|---|---|
committer | Josh Wilson <person142@users.noreply.github.com> | 2020-06-06 15:31:33 -0700 |
commit | 11b95d15f10c2bc652ed19d5e27efa0384396cb8 (patch) | |
tree | 8d6f2020f6982fc9f2389796daca1429387f576e /numpy/tests/pass/array_like.py | |
parent | a5d021a1b6f439a19812926bc4d796ef5f346c44 (diff) | |
download | numpy-11b95d15f10c2bc652ed19d5e27efa0384396cb8.tar.gz |
ENH: add type stubs from numpy-stubs
Add the type stubs and tests from numpy-stubs. Things this entails:
- Copy over the stubs (numpy/__init__.pyi and
numpy/core/_internal.pyi)
- The only modification made was removing `ndarray.tostring` since
it is deprecated
- Update some setup.py files to include pyi files
- Move the tests from numpy-stubs/tests into numpy/tests
- Skip them if mypy is not installed (planning on setting up CI in a
future PR)
- Add a mypy.ini; use it to configure mypy in the tests
- It tells mypy where to find NumPy in the test env
- It ignores internal NumPy type errors (since we only want to
consider errors from the tests cases)
- Some small edits were made to fix test cases that were emitting
deprecation warnings
- Add numpy/py.typed so that the types are picked up in an
installed version of NumPy
Diffstat (limited to 'numpy/tests/pass/array_like.py')
-rw-r--r-- | numpy/tests/pass/array_like.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/numpy/tests/pass/array_like.py b/numpy/tests/pass/array_like.py new file mode 100644 index 000000000..098149c4b --- /dev/null +++ b/numpy/tests/pass/array_like.py @@ -0,0 +1,44 @@ +from typing import Any, List, Optional, TYPE_CHECKING + +import numpy as np + +if TYPE_CHECKING: + from numpy.typing import ArrayLike, DtypeLike, _SupportsArray +else: + ArrayLike = Any + DtypeLike = Any + _SupportsArray = Any + +x1: ArrayLike = True +x2: ArrayLike = 5 +x3: ArrayLike = 1.0 +x4: ArrayLike = 1 + 1j +x5: ArrayLike = np.int8(1) +x6: ArrayLike = np.float64(1) +x7: ArrayLike = np.complex128(1) +x8: ArrayLike = np.array([1, 2, 3]) +x9: ArrayLike = [1, 2, 3] +x10: ArrayLike = (1, 2, 3) +x11: ArrayLike = "foo" + + +class A: + def __array__(self, dtype: DtypeLike = None) -> np.ndarray: + return np.array([1, 2, 3]) + + +x12: ArrayLike = A() + +scalar: _SupportsArray = np.int64(1) +scalar.__array__(np.float64) +array: _SupportsArray = np.array(1) +array.__array__(np.float64) + +a: _SupportsArray = A() +a.__array__(np.int64) +a.__array__(dtype=np.int64) + +# Escape hatch for when you mean to make something like an object +# array. +object_array_scalar: Any = (i for i in range(10)) +np.array(object_array_scalar) |