Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
133 changes: 67 additions & 66 deletions numpy-mypy/numpy/__init__.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down Expand Up @@ -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]: ...

Expand Down Expand Up @@ -80,53 +81,53 @@ 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]': ...

def conjugate(self) -> '_ArrayLike[_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: ...

Expand All @@ -142,66 +143,66 @@ 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]': ...

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: ...
Expand All @@ -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
Expand All @@ -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: ...

Expand Down Expand Up @@ -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]: ...
Expand Down