You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
2.6 KiB
166 lines
2.6 KiB
1 year ago
|
"""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.str_, 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.str_, 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()
|