from typing import Any
import numpy as np

a: np.flatiter[np.ndarray[Any, np.dtype[np.str_]]]

reveal_type(a.base)  # E: ndarray[Any, dtype[str_]]
reveal_type(a.copy())  # E: ndarray[Any, dtype[str_]]
reveal_type(a.coords)  # E: tuple[builtins.int, ...]
reveal_type(a.index)  # E: int
reveal_type(iter(a))  # E: flatiter[ndarray[Any, dtype[str_]]]
reveal_type(next(a))  # E: str_
reveal_type(a[0])  # E: str_
reveal_type(a[[0, 1, 2]])  # E: ndarray[Any, dtype[str_]]
reveal_type(a[...])  # E: ndarray[Any, dtype[str_]]
reveal_type(a[:])  # E: ndarray[Any, dtype[str_]]
reveal_type(a[(...,)])  # E: ndarray[Any, dtype[str_]]
reveal_type(a[(0,)])  # E: str_
reveal_type(a.__array__())  # E: ndarray[Any, dtype[str_]]
reveal_type(a.__array__(np.dtype(np.float64)))  # E: ndarray[Any, dtype[{float64}]]
a[0] = "a"
a[:5] = "a"
a[...] = "a"
a[(...,)] = "a"
