1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import sys
- from typing import (
- List,
- Any,
- TypeVar,
- Generator,
- List,
- Union,
- Tuple,
- overload,
- )
- from numpy import ndarray, dtype, generic
- from numpy.typing import DTypeLike
- # TODO: Set a shape bound once we've got proper shape support
- _Shape = TypeVar("_Shape", bound=Any)
- _DType = TypeVar("_DType", bound=dtype[Any])
- _ScalarType = TypeVar("_ScalarType", bound=generic)
- _Index = Union[
- Union[ellipsis, int, slice],
- Tuple[Union[ellipsis, int, slice], ...],
- ]
- __all__: List[str]
- # NOTE: In reality `Arrayterator` does not actually inherit from `ndarray`,
- # but its ``__getattr__` method does wrap around the former and thus has
- # access to all its methods
- class Arrayterator(ndarray[_Shape, _DType]):
- var: ndarray[_Shape, _DType] # type: ignore[assignment]
- buf_size: None | int
- start: List[int]
- stop: List[int]
- step: List[int]
- @property # type: ignore[misc]
- def shape(self) -> Tuple[int, ...]: ...
- @property
- def flat( # type: ignore[override]
- self: ndarray[Any, dtype[_ScalarType]]
- ) -> Generator[_ScalarType, None, None]: ...
- def __init__(
- self, var: ndarray[_Shape, _DType], buf_size: None | int = ...
- ) -> None: ...
- @overload
- def __array__(self, dtype: None = ...) -> ndarray[Any, _DType]: ...
- @overload
- def __array__(self, dtype: DTypeLike) -> ndarray[Any, dtype[Any]]: ...
- def __getitem__(self, index: _Index) -> Arrayterator[Any, _DType]: ...
- def __iter__(self) -> Generator[ndarray[Any, _DType], None, None]: ...
|