diff --git a/numpy-mypy/numpy/__init__.pyi b/numpy-mypy/numpy/__init__.pyi index 04fd78f..c199467 100644 --- a/numpy-mypy/numpy/__init__.pyi +++ b/numpy-mypy/numpy/__init__.pyi @@ -3,6 +3,7 @@ Numpy's mypy stub. Only type declarations for ndarray, the scalar hierarchy and methods are provided. """ +import abc from typing import (Any, Callable, Dict, Generic, Iterator, List, Optional, Sequence, Tuple, Type, TypeVar, Union) @@ -45,7 +46,7 @@ AxesType = Union[int, Tuple[int, ...]] OrderType = Union[str, Sequence[str]] DtypeType = Union[dtype, type] -class flatiter(Generic[_S], Iterator[_S]): +class flatiter(Generic[_S], Iterator[_S], metaclass=abc.ABCMeta): coords = ... # type: ShapeType def copy(self) -> flatiter[_S]: ... @@ -80,37 +81,37 @@ class _ArrayLike(Generic[_S]): # have an 'out' argument, will be implemented using overload instead of with a Union # result. mypy is smart enough to assign the proper type (_ArrayLike[_U]) when out is present # but it falls back to the union when it's not. - def all(self, axis: AxesType=None, out: '_ArrayLike[_U]'=None, + def all(self, axis: Optional[AxesType]=None, out: Optional['_ArrayLike[_U]']=None, keepdims: bool=False) -> Union['_ArrayLike[_U]', '_ArrayLike[bool]']: ... - def any(self, axis: AxesType=None, out: '_ArrayLike[_U]'=None, + def any(self, axis: Optional[AxesType]=None, out: Optional['_ArrayLike[_U]']=None, keepdims: bool=False) -> Union['_ArrayLike[_U]', '_ArrayLike[bool]']: ... - def argmax(self, axis: int=None, - out: '_ArrayLike[_U]'=None) -> Union['_ArrayLike[_U]', '_ArrayLike[int]']: ... + def argmax(self, axis: Optional[int]=None, + out: Optional['_ArrayLike[_U]']=None) -> Union['_ArrayLike[_U]', '_ArrayLike[int]']: ... - def argmin(self, axis: int=None, - out: '_ArrayLike[_U]'=None) -> Union['_ArrayLike[_U]', '_ArrayLike[int]']: ... + def argmin(self, axis: Optional[int]=None, + out: Optional['_ArrayLike[_U]']=None) -> Union['_ArrayLike[_U]', '_ArrayLike[int]']: ... def argpartition(self, kth: Union[int, Sequence[int]], axis: Optional[int]=-1, - kind: str='introselect', order: OrderType=None) -> '_ArrayLike[int]': ... + kind: str='introselect', order: Optional[OrderType]=None) -> '_ArrayLike[int]': ... - def argsort(self, axis: int=None, kind: str='quicksort', - order: OrderType=None) -> '_ArrayLike[int]': ... + def argsort(self, axis: Optional[int]=None, kind: str='quicksort', + order: Optional[OrderType]=None) -> '_ArrayLike[int]': ... def astype(self, dtype: Any, order: str='K', casting: str='unsafe', subok: bool=True, copy: bool=False) -> '_ArrayLike[Any]': ... def byteswap(self, inplace: bool=False) -> '_ArrayLike[_S]': ... - def choose(self, choices:Sequence['_ArrayLike[_V]'], out: '_ArrayLike[_U]'=None, + def choose(self, choices:Sequence['_ArrayLike[_V]'], out: Optional['_ArrayLike[_U]']=None, mode: str='raise') -> Union['_ArrayLike[_U]', '_ArrayLike[_V]']: ... def clip(self, a_min: Any, a_max: Any, - out: '_ArrayLike[_U]'=None) -> Union['_ArrayLike[_S]', '_ArrayLike[_U]']: ... + out: Optional['_ArrayLike[_U]']=None) -> Union['_ArrayLike[_S]', '_ArrayLike[_U]']: ... - def compress(self, condition: Sequence[bool], axis: int=None, - out: '_ArrayLike[_U]'=None) -> Union['_ArrayLike[_S]', '_ArrayLike[_U]']: ... + def compress(self, condition: Sequence[bool], axis: Optional[int]=None, + out: Optional['_ArrayLike[_U]']=None) -> Union['_ArrayLike[_S]', '_ArrayLike[_U]']: ... def conj(self) -> '_ArrayLike[_S]': ... @@ -118,15 +119,15 @@ class _ArrayLike(Generic[_S]): def copy(self, order: str='C') -> '_ArrayLike[_S]': ... - def cumprod(self, axis: int=None, dtype: Any=None, - out: '_ArrayLike[Any]'=None) -> '_ArrayLike[Any]': ... + def cumprod(self, axis: Optional[int]=None, dtype: Any=None, + out: Optional['_ArrayLike[Any]']=None) -> '_ArrayLike[Any]': ... - def cumsum(self, axis: int=None, dtype: DtypeType=None, - out: '_ArrayLike[Any]'=None) -> '_ArrayLike[Any]': ... + def cumsum(self, axis: Optional[int]=None, dtype: Optional[DtypeType]=None, + out: Optional['_ArrayLike[Any]']=None) -> '_ArrayLike[Any]': ... def diagonal(self, offset: int=0, axis1: int=0, axis2: int=1) -> '_ArrayLike[_S]': ... - def dot(self, b: '_ArrayLike[Any]', out: '_ArrayLike[Any]'=None) -> '_ArrayLike[Any]': ... + def dot(self, b: '_ArrayLike[Any]', out: Optional['_ArrayLike[Any]']=None) -> '_ArrayLike[Any]': ... def dump(self, file: str) -> None: ... @@ -142,34 +143,34 @@ class _ArrayLike(Generic[_S]): def itemset(self, arg0: Union[int, Tuple[int, ...]], arg1: Any=None) -> None: ... - def max(self, axis: AxesType=None, - out: '_ArrayLike[_U]'=None) -> Union['_ArrayLike[_S]', '_ArrayLike[_U]']: ... + def max(self, axis: Optional[AxesType]=None, + out: Optional['_ArrayLike[_U]']=None) -> Union['_ArrayLike[_S]', '_ArrayLike[_U]']: ... - def mean(self, axis: AxesType=None, dtype: Any=None, - out: '_ArrayLike[_U]'=None, keepdims: bool=False) -> '_ArrayLike[floating]': ... + def mean(self, axis: Optional[AxesType]=None, dtype: Any=None, + out: Optional['_ArrayLike[_U]']=None, keepdims: bool=False) -> '_ArrayLike[floating]': ... - def min(self, axis: AxesType=None, - out: '_ArrayLike[_U]'=None) -> Union['_ArrayLike[_S]', '_ArrayLike[_U]']: ... + def min(self, axis: Optional[AxesType]=None, + out: Optional['_ArrayLike[_U]']=None) -> Union['_ArrayLike[_S]', '_ArrayLike[_U]']: ... def newbyteorder(self, new_order: str='S') -> '_ArrayLike[_S]': ... def nonzero(self) -> '_ArrayLike[int]': ... def partition(self, kth: AxesType, axis: int=-1, kind: str='introselect', - order: OrderType=None) -> None: ... + order: Optional[OrderType]=None) -> None: ... - def prod(self, axis: AxesType=None, dtype: DtypeType=None, - out: '_ArrayLike[_U]'=None, keepdims: bool=False) -> '_ArrayLike[Any]': ... + def prod(self, axis: Optional[AxesType]=None, dtype: Optional[DtypeType]=None, + out: Optional['_ArrayLike[_U]']=None, keepdims: bool=False) -> '_ArrayLike[Any]': ... - def ptp(self, axis: int=None, - out: '_ArrayLike[_U]'=None) -> Union['_ArrayLike[_S]', '_ArrayLike[_U]']: ... + def ptp(self, axis: Optional[int]=None, + out: Optional['_ArrayLike[_U]']=None) -> Union['_ArrayLike[_S]', '_ArrayLike[_U]']: ... def put(self, ind: '_ArrayLike[int]', v: '_ArrayLike[_S]', mode: str='raise') -> None: ... def ravel(self, order: str='C') -> '_ArrayLike[_S]': ... def repeat(self, repeats: Union[int, Sequence[int]], - axis: int=None) -> '_ArrayLike[_S]': ... + axis: Optional[int]=None) -> '_ArrayLike[_S]': ... def reshape(self, newshape: ShapeType, order: str='C') -> '_ArrayLike[_S]': ... @@ -177,31 +178,31 @@ class _ArrayLike(Generic[_S]): def resize(self, new_shape: ShapeType, refcheck: bool=True) -> None: ... def round(self, decimals: int=0, - out: '_ArrayLike[_U]'=None) -> Union['_ArrayLike[_S]', '_ArrayLike[_U]']: ... + out: Optional['_ArrayLike[_U]']=None) -> Union['_ArrayLike[_S]', '_ArrayLike[_U]']: ... def searchsorted(self, v: Union[_S, '_ArrayLike[_S]'], side: str='left', - sorter: '_ArrayLike[int]'=None) -> '_ArrayLike[int]': ... + sorter: Optional['_ArrayLike[int]']=None) -> '_ArrayLike[int]': ... def setfield(self, val: Any, dtype: DtypeType, offset: int=0) -> None: ... - def setflags(self, write: bool=None, align: bool=None, - uic: bool=None) -> None: ... + def setflags(self, write: Optional[bool]=None, align: Optional[bool]=None, + uic: Optional[bool]=None) -> None: ... - def sort(self, axis: int=-1, kind: str='quicksort', order: OrderType=None) -> None: ... + def sort(self, axis: int=-1, kind: str='quicksort', order: Optional[OrderType]=None) -> None: ... - def squeeze(self, axis: AxesType=None) -> '_ArrayLike[_S]': ... + def squeeze(self, axis: Optional[AxesType]=None) -> '_ArrayLike[_S]': ... - def std(self, axis: AxesType=None, dtype: DtypeType=None, - out: '_ArrayLike[_U]'=None, ddof: int=0, keepdims: bool=False) -> '_ArrayLike[floating]': ... + def std(self, axis: Optional[AxesType]=None, dtype: Optional[DtypeType]=None, + out: Optional['_ArrayLike[_U]']=None, ddof: int=0, keepdims: bool=False) -> '_ArrayLike[floating]': ... - def sum(self, axis: AxesType=None, dtype: DtypeType=None, - out: '_ArrayLike[_U]'=None, + def sum(self, axis: Optional[AxesType]=None, dtype: Optional[DtypeType]=None, + out: Optional['_ArrayLike[_U]']=None, keepdims: bool=False) -> '_ArrayLike[Any]': ... def swapaxes(self, axis1: int, axis2: int) -> '_ArrayLike[_S]': ... - def take(self, indices: Sequence[int], axis: int=None, - out: '_ArrayLike[_U]'=None, + def take(self, indices: Sequence[int], axis: Optional[int]=None, + out: Optional['_ArrayLike[_U]']=None, mode: str='raise') -> Union['_ArrayLike[_S]', '_ArrayLike[_U]']: ... def tobytes(self, order: str='C') -> bytes: ... @@ -214,15 +215,15 @@ class _ArrayLike(Generic[_S]): def tostring(self, order: str='C') -> bytes: ... def trace(self, offset: int=0, axis1: int=0, axis2: int=1, - dtype: DtypeType=None, out: '_ArrayLike[_U]'=None) -> '_ArrayLike[Any]': ... + dtype: Optional[DtypeType]=None, out: Optional['_ArrayLike[_U]']=None) -> '_ArrayLike[Any]': ... def transpose(self, axes: Optional[AxesType]) -> '_ArrayLike[_S]': ... - def var(self, axis: AxesType=None, dtype: DtypeType=None, - out: '_ArrayLike[_U]'=None, ddof: int=0, keepdims: bool=False) -> '_ArrayLike[Any]': ... + def var(self, axis: Optional[AxesType]=None, dtype: Optional[DtypeType]=None, + out: Optional['_ArrayLike[_U]']=None, ddof: int=0, keepdims: bool=False) -> '_ArrayLike[Any]': ... - def view(self, dtype: Union[DtypeType, Type['ndarray']]=None, - type: type=None) -> '_ArrayLike[Any]': ... + def view(self, dtype: Optional[Union[DtypeType, Type['ndarray']]]=None, + type: Optional[type]=None) -> '_ArrayLike[Any]': ... # # Magic methods @@ -234,11 +235,11 @@ class _ArrayLike(Generic[_S]): def __and__(self, value: object) -> '_ArrayLike[int]': ... - def __array__(self, dtype: DtypeType=None) -> '_ArrayLike[Any]': ... + def __array__(self, dtype: Optional[DtypeType]=None) -> '_ArrayLike[Any]': ... - def __array_prepare__(self, context: object=None) -> '_ArrayLike[Any]': ... + def __array_prepare__(self, context: Optional[object]=None) -> '_ArrayLike[Any]': ... - def __array_wrap__(self, context: object=None) -> '_ArrayLike[Any]': ... + def __array_wrap__(self, context: Optional[object]=None) -> '_ArrayLike[Any]': ... def __bool__(self) -> bool: ... @@ -430,39 +431,39 @@ class ndarray(_ArrayLike[_S], Generic[_S]): ctypes = None # type: Any # TODO Implement ctypes type hint # TODO Need to find a way to restrict buffer type - def __init__(self, shape: Tuple[int, ...], dtype: DtypeType=None, - buffer: Any=None, offset: int=None, - strides: Tuple[int, ...]=None, order: str=None) -> None: ... + def __init__(self, shape: Tuple[int, ...], dtype: Optional[DtypeType]=None, + buffer: Any=None, offset: Optional[int]=None, + strides: Optional[Tuple[int, ...]]=None, order: Optional[str]=None) -> None: ... # # Array creation routines # def array(object: Any, dtype: Any=None, copy: bool=True, - order: str=None, subok: bool=False, + order: Optional[str]=None, subok: bool=False, ndmin: int=0) -> ndarray[Any]: ... -def asarray(a: Any, dtype: DtypeType=None, order: str=None) -> ndarray[Any]: ... -def asanyarray(a: Any, dtype: DtypeType=None, order: str=None) -> ndarray[Any]: ... # TODO figure out a way to restrict the return type -def asmatrix(data: Any, dtype: DtypeType=None) -> Any: ... # TODO define matrix -def ascontiguousarray(a: Any, dtype: DtypeType=None) -> ndarray[Any]: ... -def copy(a: Any, order: str=None) -> ndarray[Any]: ... +def asarray(a: Any, dtype: Optional[DtypeType]=None, order: Optional[str]=None) -> ndarray[Any]: ... +def asanyarray(a: Any, dtype: Optional[DtypeType]=None, order: Optional[str]=None) -> ndarray[Any]: ... # TODO figure out a way to restrict the return type +def asmatrix(data: Any, dtype: Optional[DtypeType]=None) -> Any: ... # TODO define matrix +def ascontiguousarray(a: Any, dtype: Optional[DtypeType]=None) -> ndarray[Any]: ... +def copy(a: Any, order: Optional[str]=None) -> ndarray[Any]: ... def empty(shape: ShapeType, dtype: DtypeType=float, order: str='C') -> ndarray[Any]: ... def empty_like(a: Any, dtype: Any=None, order: str='K', subok: bool=True) -> ndarray[Any]: ... -def eye(N: int, M: int=None, k: int=0, dtype: DtypeType=float) -> ndarray[Any]: ... +def eye(N: int, M: Optional[int]=None, k: int=0, dtype: DtypeType=float) -> ndarray[Any]: ... def frombuffer(buffer: Any, dtype: DtypeType=float, count: int=-1, # TODO figure out a way to restrict buffer offset: int=0) -> ndarray[Any]: ... def fromfile(file: object, dtype: DtypeType=float, count: int=-1, sep: str='') -> ndarray[Any]: ... # TODO fix file definition (There's a bug in mypy io's namespace https://github.com/python/mypy/issues/1462) -def full(shape: ShapeType, fill_value: Any, dtype: DtypeType=None, +def full(shape: ShapeType, fill_value: Any, dtype: Optional[DtypeType]=None, order: str='C') -> ndarray[Any]: ... -def full_like(a: Any, fill_value: Any, dtype: DtypeType=None, order: str='C', +def full_like(a: Any, fill_value: Any, dtype: Optional[DtypeType]=None, order: str='C', subok: bool=True) -> ndarray[Any]: ... def fromfunction(function: Callable[..., _S], shape: ShapeType, dtype: DtypeType=float) -> ndarray[_S]: ... def fromiter(iterable: Iterator[Any], dytpe: DtypeType, count: int=-1) -> ndarray[Any]: ... def fromstring(string: str, dtype: DtypeType=float, count: int=-1, sep: str='') -> ndarray[Any]: ... -def identity(n: int, dtype: DtypeType=None) -> ndarray[Any]: ... +def identity(n: int, dtype: Optional[DtypeType]=None) -> ndarray[Any]: ... def loadtxt(fname: Any, dtype: DtypeType=float, comments: Union[str, Sequence[str]]='#', - delimiter: str=None, converters: Dict[int, Callable[[Any], float]]=None, - skiprows: int=0, usecols: Sequence[int]=None, + delimiter: Optional[str]=None, converters: Optional[Dict[int, Callable[[Any], float]]]=None, + skiprows: int=0, usecols: Optional[Sequence[int]]=None, unpack: bool=False, ndmin: int=0) -> ndarray[float]: ... def ones(shape: ShapeType, dtype: Optional[DtypeType]=..., order: str='C') -> ndarray[Any]: ... def ones_like(a: Any, dtype: Any=None, order: str='K', subok: bool=True) -> ndarray[Any]: ...