43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
from collections.abc import Iterable
|
|
from typing import Any, TypeVar, Union, overload, Literal
|
|
|
|
from numpy import ndarray
|
|
from numpy._typing import DTypeLike, _SupportsArrayFunc
|
|
|
|
_ArrayType = TypeVar("_ArrayType", bound=ndarray[Any, Any])
|
|
|
|
_Requirements = Literal[
|
|
"C", "C_CONTIGUOUS", "CONTIGUOUS",
|
|
"F", "F_CONTIGUOUS", "FORTRAN",
|
|
"A", "ALIGNED",
|
|
"W", "WRITEABLE",
|
|
"O", "OWNDATA"
|
|
]
|
|
_E = Literal["E", "ENSUREARRAY"]
|
|
_RequirementsWithE = Union[_Requirements, _E]
|
|
|
|
@overload
|
|
def require(
|
|
a: _ArrayType,
|
|
dtype: None = ...,
|
|
requirements: None | _Requirements | Iterable[_Requirements] = ...,
|
|
*,
|
|
like: _SupportsArrayFunc = ...
|
|
) -> _ArrayType: ...
|
|
@overload
|
|
def require(
|
|
a: object,
|
|
dtype: DTypeLike = ...,
|
|
requirements: _E | Iterable[_RequirementsWithE] = ...,
|
|
*,
|
|
like: _SupportsArrayFunc = ...
|
|
) -> ndarray[Any, Any]: ...
|
|
@overload
|
|
def require(
|
|
a: object,
|
|
dtype: DTypeLike = ...,
|
|
requirements: None | _Requirements | Iterable[_Requirements] = ...,
|
|
*,
|
|
like: _SupportsArrayFunc = ...
|
|
) -> ndarray[Any, Any]: ...
|