1from typing import Any, List, Optional
2
3import numpy as np
4from numpy.typing import ArrayLike, DTypeLike, _SupportsArray
5
6x1: ArrayLike = True
7x2: ArrayLike = 5
8x3: ArrayLike = 1.0
9x4: ArrayLike = 1 + 1j
10x5: ArrayLike = np.int8(1)
11x6: ArrayLike = np.float64(1)
12x7: ArrayLike = np.complex128(1)
13x8: ArrayLike = np.array([1, 2, 3])
14x9: ArrayLike = [1, 2, 3]
15x10: ArrayLike = (1, 2, 3)
16x11: ArrayLike = "foo"
17x12: ArrayLike = memoryview(b'foo')
18
19
20class A:
21    def __array__(self, dtype: DTypeLike = None) -> np.ndarray:
22        return np.array([1, 2, 3])
23
24
25x13: ArrayLike = A()
26
27scalar: _SupportsArray = np.int64(1)
28scalar.__array__(np.float64)
29array: _SupportsArray = np.array(1)
30array.__array__(np.float64)
31
32a: _SupportsArray = A()
33a.__array__(np.int64)
34a.__array__(dtype=np.int64)
35
36# Escape hatch for when you mean to make something like an object
37# array.
38object_array_scalar: Any = (i for i in range(10))
39np.array(object_array_scalar)
40