123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- """Simple expression that should pass with mypy."""
- import operator
- import numpy as np
- from collections.abc import Iterable
- # Basic checks
- array = np.array([1, 2])
- def ndarray_func(x):
- # type: (np.ndarray) -> np.ndarray
- return x
- ndarray_func(np.array([1, 2]))
- array == 1
- array.dtype == float
- # Dtype construction
- np.dtype(float)
- np.dtype(np.float64)
- np.dtype(None)
- np.dtype("float64")
- np.dtype(np.dtype(float))
- np.dtype(("U", 10))
- np.dtype((np.int32, (2, 2)))
- # Define the arguments on the previous line to prevent bidirectional
- # type inference in mypy from broadening the types.
- two_tuples_dtype = [("R", "u1"), ("G", "u1"), ("B", "u1")]
- np.dtype(two_tuples_dtype)
- three_tuples_dtype = [("R", "u1", 2)]
- np.dtype(three_tuples_dtype)
- mixed_tuples_dtype = [("R", "u1"), ("G", np.unicode_, 1)]
- np.dtype(mixed_tuples_dtype)
- shape_tuple_dtype = [("R", "u1", (2, 2))]
- np.dtype(shape_tuple_dtype)
- shape_like_dtype = [("R", "u1", (2, 2)), ("G", np.unicode_, 1)]
- np.dtype(shape_like_dtype)
- object_dtype = [("field1", object)]
- np.dtype(object_dtype)
- np.dtype((np.int32, (np.int8, 4)))
- # Dtype comparison
- np.dtype(float) == float
- np.dtype(float) != np.float64
- np.dtype(float) < None
- np.dtype(float) <= "float64"
- np.dtype(float) > np.dtype(float)
- np.dtype(float) >= np.dtype(("U", 10))
- # Iteration and indexing
- def iterable_func(x):
- # type: (Iterable) -> Iterable
- return x
- iterable_func(array)
- [element for element in array]
- iter(array)
- zip(array, array)
- array[1]
- array[:]
- array[...]
- array[:] = 0
- array_2d = np.ones((3, 3))
- array_2d[:2, :2]
- array_2d[..., 0]
- array_2d[:2, :2] = 0
- # Other special methods
- len(array)
- str(array)
- array_scalar = np.array(1)
- int(array_scalar)
- float(array_scalar)
- # currently does not work due to https://github.com/python/typeshed/issues/1904
- # complex(array_scalar)
- bytes(array_scalar)
- operator.index(array_scalar)
- bool(array_scalar)
- # comparisons
- array < 1
- array <= 1
- array == 1
- array != 1
- array > 1
- array >= 1
- 1 < array
- 1 <= array
- 1 == array
- 1 != array
- 1 > array
- 1 >= array
- # binary arithmetic
- array + 1
- 1 + array
- array += 1
- array - 1
- 1 - array
- array -= 1
- array * 1
- 1 * array
- array *= 1
- nonzero_array = np.array([1, 2])
- array / 1
- 1 / nonzero_array
- float_array = np.array([1.0, 2.0])
- float_array /= 1
- array // 1
- 1 // nonzero_array
- array //= 1
- array % 1
- 1 % nonzero_array
- array %= 1
- divmod(array, 1)
- divmod(1, nonzero_array)
- array ** 1
- 1 ** array
- array **= 1
- array << 1
- 1 << array
- array <<= 1
- array >> 1
- 1 >> array
- array >>= 1
- array & 1
- 1 & array
- array &= 1
- array ^ 1
- 1 ^ array
- array ^= 1
- array | 1
- 1 | array
- array |= 1
- # unary arithmetic
- -array
- +array
- abs(array)
- ~array
- # Other methods
- np.array([1, 2]).transpose()
|