From 8f9a09e5a2637c0dbfd448833b90652127cbadf3 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Fri, 3 Mar 2017 13:50:56 +0100 Subject: [PATCH 1/9] added some 'global' numpy method stubs --- numpy-mypy/numpy/__init__.pyi | 40 +++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/numpy-mypy/numpy/__init__.pyi b/numpy-mypy/numpy/__init__.pyi index 7da3778..98cc958 100644 --- a/numpy-mypy/numpy/__init__.pyi +++ b/numpy-mypy/numpy/__init__.pyi @@ -468,3 +468,43 @@ def ones(shape: ShapeType, dtype: Optional[DtypeType]=..., order: str='C') -> nd def ones_like(a: Any, dtype: Any=None, order: str='K', subok: bool=True) -> ndarray[Any]: ... def zeros(shape: ShapeType, dtype: DtypeType=float, order: str='C') -> ndarray[Any]: ... def zeros_like(a: Any, dtype: Any=None, order: str='K', subok: bool=True) -> ndarray[Any]: ... + +# +# Global array routines (incomplete) +# +def reshape(a: _ArrayLike[_S], newshape: ShapeType, order: str='C') -> ndarray[Any]: ... +def repeat(a: _ArrayLike[_S], repeats: Union[int, Sequence[int]], axis: int=None) -> _ArrayLike[_S]: ... +def squeeze(a: _ArrayLike[_S], axis: AxesType=None) -> _ArrayLike[_S]: ... +def dot(a: _ArrayLike[Any], b: _ArrayLike[Any], out: _ArrayLike[Any]=None) -> _ArrayLike[Any]: ... +def vstack(tup: Sequence[_ArrayLike[_S]]) -> _ArrayLike[_S]: ... +def hstack(tup: Sequence[_ArrayLike[_S]]) -> _ArrayLike[_S]: ... +def concatenate(s: Sequence[_ArrayLike[_S]], axis: AxesType=None) -> _ArrayLike[_S]: ... +def insert(arr: _ArrayLike[Any], obj: Union[int, Sequence[int]], values: Union[Any, _ArrayLike[Any]], + axis: AxesType=None) -> ndarray[Any]: ... +def delete(arr: _ArrayLike[Any], obj: Union[int, Sequence[int]], axis: AxesType=None) -> _ArrayLike[Any]: ... +def diag(v: _ArrayLike[Any], k:int=None) -> ndarray[Any]: ... +def trace(a: _ArrayLike[Any], offset: int=0, axis1: int=0, axis2: int=1, + dtype: DtypeType=None, out: _ArrayLike[_U]=None) -> _ArrayLike[Any]: ... + +def sqrt(x: _ArrayLike[floating], out: _ArrayLike[_U]=None) -> _ArrayLike[floating]: ... +def square(v: _ArrayLike[Any], out: _ArrayLike[_U]=None) -> ndarray[Any]: ... +def mean(a: _ArrayLike[floating], axis: AxesType=None, dtype: Any=None, + out: _ArrayLike[_U]=None, keepdims: bool=False) -> _ArrayLike[floating]: ... +def abs(x: _ArrayLike[complextfloating], out: ndarray[_U]=None) -> ndarray[floating]: ... +def sum(a: _ArrayLike[Any], axis: AxesType=None, dtype: DtypeType=None, out: ndarray[_U]=None, + keepdims: bool=False) -> ndarray[Any]: ... +def diff(a: _ArrayLike[Any], n: int=1, axis: AxesType=-1) -> ndarray[Any]: ... + +def save(file: Any, arr: _ArrayLike[Any], allow_pickle: bool=None, fix_imports: bool=None) -> None: ... +#args, kwargs? https://github.com/python/mypy/issues/1954 +def savez(file: str, *args: Any, **kwargs: Dict[str, Any]) -> None: ... +def savez_compressed(file: str, *args: Any, **kwargs: Dict[str, Any]) -> None: ... +def savetxt(fname: Any, X: _ArrayLike[Any], fmt: Union[str, Sequence[str]]=None, delimiter: str=None, + newline: str=None, header: str=None, footer: str=None, comments: str=None) -> None: ... +def load(file: Any, mmap_mode: str=None, allow_pickle: bool=None, fix_imports: bool=None, + encoding: str='ASCII') -> Any: ... + +def nan_to_num(x: _ArrayLike[Any]) -> ndarray[Any]: ... +def copyto(dst: ndarray[Any], src: _ArrayLike[Any], caseting: str='same_kind', + where: _ArrayLike[bool]=None) -> None: ... + From 24d25fab86d833e6c1ebada280e1210fae5d8af5 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Fri, 3 Mar 2017 14:29:05 +0100 Subject: [PATCH 2/9] make some ndarray methods return ndarray instead of ArrayLike --- numpy-mypy/numpy/__init__.pyi | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/numpy-mypy/numpy/__init__.pyi b/numpy-mypy/numpy/__init__.pyi index 98cc958..01da892 100644 --- a/numpy-mypy/numpy/__init__.pyi +++ b/numpy-mypy/numpy/__init__.pyi @@ -134,8 +134,6 @@ class _ArrayLike(Generic[_S]): def fill(self, value: _S) -> None: ... - def flatten(self, order: str='C') -> '_ArrayLike[_S]': ... - def getfield(self, dtype: DtypeType, offset: int=0) -> '_ArrayLike[Any]': ... def item(self, args: AxesType) -> generic: ... @@ -230,8 +228,6 @@ class _ArrayLike(Generic[_S]): def __abs__(self) -> '_ArrayLike[_S]': ... - def __add__(self, value: object) -> '_ArrayLike[Any]': ... - def __and__(self, value: object) -> '_ArrayLike[int]': ... def __array__(self, dtype: DtypeType=None) -> '_ArrayLike[Any]': ... @@ -366,8 +362,6 @@ class _ArrayLike(Generic[_S]): def __str__(self) -> str: ... - def __sub__(self, value: object) -> '_ArrayLike[Any]': ... - def __truediv__(sel, value: object) -> '_ArrayLike[Any]': ... def __xor__(self, value: object) -> '_ArrayLike[_S]': ... @@ -433,6 +427,15 @@ class ndarray(_ArrayLike[_S], Generic[_S]): def __init__(self, shape: Tuple[int, ...], dtype: DtypeType=None, buffer: Any=None, offset: int=None, strides: Tuple[int, ...]=None, order: str=None) -> None: ... + def __add__(self, value: object) -> 'ndarray[Any]': ... + def __sub__(self, value: object) -> 'ndarray[Any]': ... + def __mul__(self, value: object) -> 'ndarray[Any]': ... + def __getitem__(self, key: Any) -> 'ndarray[_S]': ... + def __copy__(self) -> 'ndarray[_S]': ... + def __iter__(self) -> Iterator['ndarray[_S]']: ... + def copy(self, order: str='C') -> 'ndarray[_S]': ... + def flatten(self, order: str='C') -> 'ndarray[Any]': ... + def dot(self, b: '_ArrayLike[Any]', out: '_ArrayLike[Any]'=None) -> 'ndarray[Any]': ... # # Array creation routines @@ -486,17 +489,16 @@ def diag(v: _ArrayLike[Any], k:int=None) -> ndarray[Any]: ... def trace(a: _ArrayLike[Any], offset: int=0, axis1: int=0, axis2: int=1, dtype: DtypeType=None, out: _ArrayLike[_U]=None) -> _ArrayLike[Any]: ... -def sqrt(x: _ArrayLike[floating], out: _ArrayLike[_U]=None) -> _ArrayLike[floating]: ... -def square(v: _ArrayLike[Any], out: _ArrayLike[_U]=None) -> ndarray[Any]: ... +def sqrt(x: _ArrayLike[floating], out: ndarray[_U]=None) -> ndarray[floating]: ... +def square(v: _ArrayLike[Any], out: ndarray[_U]=None) -> ndarray[Any]: ... def mean(a: _ArrayLike[floating], axis: AxesType=None, dtype: Any=None, - out: _ArrayLike[_U]=None, keepdims: bool=False) -> _ArrayLike[floating]: ... + out: ndarray[_U]=None, keepdims: bool=False) -> ndarray[floating]: ... def abs(x: _ArrayLike[complextfloating], out: ndarray[_U]=None) -> ndarray[floating]: ... def sum(a: _ArrayLike[Any], axis: AxesType=None, dtype: DtypeType=None, out: ndarray[_U]=None, keepdims: bool=False) -> ndarray[Any]: ... def diff(a: _ArrayLike[Any], n: int=1, axis: AxesType=-1) -> ndarray[Any]: ... def save(file: Any, arr: _ArrayLike[Any], allow_pickle: bool=None, fix_imports: bool=None) -> None: ... -#args, kwargs? https://github.com/python/mypy/issues/1954 def savez(file: str, *args: Any, **kwargs: Dict[str, Any]) -> None: ... def savez_compressed(file: str, *args: Any, **kwargs: Dict[str, Any]) -> None: ... def savetxt(fname: Any, X: _ArrayLike[Any], fmt: Union[str, Sequence[str]]=None, delimiter: str=None, From 97b24d69a22b1ad1a86e62ac7c6b742e683ba214 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Fri, 3 Mar 2017 15:05:31 +0100 Subject: [PATCH 3/9] add a few more global methods and methods to ndarray --- numpy-mypy/numpy/__init__.pyi | 47 +++++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/numpy-mypy/numpy/__init__.pyi b/numpy-mypy/numpy/__init__.pyi index 01da892..8d8bf0b 100644 --- a/numpy-mypy/numpy/__init__.pyi +++ b/numpy-mypy/numpy/__init__.pyi @@ -4,7 +4,7 @@ methods are provided. """ from typing import (Any, Callable, Dict, Generic, Iterator, List, Optional, Sequence, Tuple, Type, - TypeVar, Union) + TypeVar, Union, Sized) class dtype: ... _dtype = dtype @@ -132,6 +132,8 @@ class _ArrayLike(Generic[_S]): def dumps(self) -> str: ... + def flatten(self, order: str='C') -> '_ArrayLike[Any]': ... + def fill(self, value: _S) -> None: ... def getfield(self, dtype: DtypeType, offset: int=0) -> '_ArrayLike[Any]': ... @@ -228,6 +230,8 @@ class _ArrayLike(Generic[_S]): def __abs__(self) -> '_ArrayLike[_S]': ... + def __add__(self, value: object) -> '_ArrayLike[Any]': ... + def __and__(self, value: object) -> '_ArrayLike[int]': ... def __array__(self, dtype: DtypeType=None) -> '_ArrayLike[Any]': ... @@ -362,6 +366,8 @@ class _ArrayLike(Generic[_S]): def __str__(self) -> str: ... + def __sub__(self, value: object) -> '_ArrayLike[Any]': ... + def __truediv__(sel, value: object) -> '_ArrayLike[Any]': ... def __xor__(self, value: object) -> '_ArrayLike[_S]': ... @@ -419,7 +425,7 @@ class str_(character): ... class unicode_(character): ... class void(flexible[None]): ... -class ndarray(_ArrayLike[_S], Generic[_S]): +class ndarray(_ArrayLike[_S], Generic[_S], Sized): """numpy.ndarray""" ctypes = None # type: Any # TODO Implement ctypes type hint @@ -427,12 +433,27 @@ class ndarray(_ArrayLike[_S], Generic[_S]): def __init__(self, shape: Tuple[int, ...], dtype: DtypeType=None, buffer: Any=None, offset: int=None, strides: Tuple[int, ...]=None, order: str=None) -> None: ... + + # repeat ArrayLike magic method for proper type def __add__(self, value: object) -> 'ndarray[Any]': ... def __sub__(self, value: object) -> 'ndarray[Any]': ... def __mul__(self, value: object) -> 'ndarray[Any]': ... + def __matmul__(self, value: '_ArrayLike[Any]') -> 'ndarray[Any]': ... + def __array__(self, dtype: DtypeType=None) -> 'ndarray[Any]': ... def __getitem__(self, key: Any) -> 'ndarray[_S]': ... def __copy__(self) -> 'ndarray[_S]': ... def __iter__(self) -> Iterator['ndarray[_S]']: ... + def __pow__(self, value: object) -> 'ndarray[Any]': ... + def __pos__(self) -> 'ndarray[_S]': ... + def __neg__(self) -> 'ndarray[_S]': ... + def __ge__(self, value: object) -> 'ndarray[bool]': ... + def __gt__(self, value: object) -> 'ndarray[bool]': ... + def __le__(self, value: object) -> 'ndarray[bool]': ... + def __lt__(self, value: object) -> 'ndarray[bool]': ... + def __eq__(self, value: object) -> 'ndarray[bool]': ... # type: ignore + def __ne__(self, value: object) -> 'ndarray[bool]': ... # type: ignore + + # ndarray-only methods? def copy(self, order: str='C') -> 'ndarray[_S]': ... def flatten(self, order: str='C') -> 'ndarray[Any]': ... def dot(self, b: '_ArrayLike[Any]', out: '_ArrayLike[Any]'=None) -> 'ndarray[Any]': ... @@ -474,20 +495,22 @@ def zeros_like(a: Any, dtype: Any=None, order: str='K', subok: bool=True) -> nda # # Global array routines (incomplete) -# + +def all(self, axis: AxesType=None, out: '_ArrayLike[_U]'=None, + keepdims: bool=False) -> Union['ndarray[_U]', 'ndarray[bool]']: ... def reshape(a: _ArrayLike[_S], newshape: ShapeType, order: str='C') -> ndarray[Any]: ... -def repeat(a: _ArrayLike[_S], repeats: Union[int, Sequence[int]], axis: int=None) -> _ArrayLike[_S]: ... -def squeeze(a: _ArrayLike[_S], axis: AxesType=None) -> _ArrayLike[_S]: ... -def dot(a: _ArrayLike[Any], b: _ArrayLike[Any], out: _ArrayLike[Any]=None) -> _ArrayLike[Any]: ... -def vstack(tup: Sequence[_ArrayLike[_S]]) -> _ArrayLike[_S]: ... -def hstack(tup: Sequence[_ArrayLike[_S]]) -> _ArrayLike[_S]: ... -def concatenate(s: Sequence[_ArrayLike[_S]], axis: AxesType=None) -> _ArrayLike[_S]: ... +def repeat(a: _ArrayLike[_S], repeats: Union[int, Sequence[int]], axis: int=None) -> ndarray[_S]: ... +def squeeze(a: _ArrayLike[_S], axis: AxesType=None) -> ndarray[_S]: ... +def dot(a: _ArrayLike[Any], b: _ArrayLike[Any], out: ndarray[Any]=None) -> ndarray[Any]: ... +def vstack(tup: Sequence[_ArrayLike[_S]]) -> ndarray[_S]: ... +def hstack(tup: Sequence[_ArrayLike[_S]]) -> ndarray[_S]: ... +def concatenate(s: Sequence[_ArrayLike[_S]], axis: AxesType=None) -> ndarray[_S]: ... def insert(arr: _ArrayLike[Any], obj: Union[int, Sequence[int]], values: Union[Any, _ArrayLike[Any]], axis: AxesType=None) -> ndarray[Any]: ... -def delete(arr: _ArrayLike[Any], obj: Union[int, Sequence[int]], axis: AxesType=None) -> _ArrayLike[Any]: ... +def delete(arr: _ArrayLike[Any], obj: Union[int, Sequence[int]], axis: AxesType=None) -> ndarray[Any]: ... def diag(v: _ArrayLike[Any], k:int=None) -> ndarray[Any]: ... def trace(a: _ArrayLike[Any], offset: int=0, axis1: int=0, axis2: int=1, - dtype: DtypeType=None, out: _ArrayLike[_U]=None) -> _ArrayLike[Any]: ... + dtype: DtypeType=None, out: ndarray[_U]=None) -> ndarray[Any]: ... def sqrt(x: _ArrayLike[floating], out: ndarray[_U]=None) -> ndarray[floating]: ... def square(v: _ArrayLike[Any], out: ndarray[_U]=None) -> ndarray[Any]: ... @@ -497,6 +520,8 @@ def abs(x: _ArrayLike[complextfloating], out: ndarray[_U]=None) -> ndarray[float def sum(a: _ArrayLike[Any], axis: AxesType=None, dtype: DtypeType=None, out: ndarray[_U]=None, keepdims: bool=False) -> ndarray[Any]: ... def diff(a: _ArrayLike[Any], n: int=1, axis: AxesType=-1) -> ndarray[Any]: ... +def rad2deg(x: _ArrayLike[floating], out: ndarray[_U]=None) -> ndarray[floating]: ... +def deg2rad(x: _ArrayLike[floating], out: ndarray[_U]=None) -> ndarray[floating]: ... def save(file: Any, arr: _ArrayLike[Any], allow_pickle: bool=None, fix_imports: bool=None) -> None: ... def savez(file: str, *args: Any, **kwargs: Dict[str, Any]) -> None: ... From 3c40cfe72f18198ae62f6dd4568d940774beefd4 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Sun, 5 Mar 2017 17:31:03 +0100 Subject: [PATCH 4/9] more global methods, simple matrix type (no * multiplication etc. yet) --- numpy-mypy/numpy/__init__.pyi | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/numpy-mypy/numpy/__init__.pyi b/numpy-mypy/numpy/__init__.pyi index 8d8bf0b..680c0de 100644 --- a/numpy-mypy/numpy/__init__.pyi +++ b/numpy-mypy/numpy/__init__.pyi @@ -4,7 +4,7 @@ methods are provided. """ from typing import (Any, Callable, Dict, Generic, Iterator, List, Optional, Sequence, Tuple, Type, - TypeVar, Union, Sized) + TypeVar, Union, Sized, overload) class dtype: ... _dtype = dtype @@ -458,6 +458,14 @@ class ndarray(_ArrayLike[_S], Generic[_S], Sized): def flatten(self, order: str='C') -> 'ndarray[Any]': ... def dot(self, b: '_ArrayLike[Any]', out: '_ArrayLike[Any]'=None) -> 'ndarray[Any]': ... + +class matrix(_ArrayLike[_S], Generic[_S]): + """numpy.matrix""" + ctypes = None # type: Any + + def __init__(self, data: _ArrayLike[_S], dtype: DtypeType=None, + copy: bool=None) -> None: ... + # # Array creation routines # @@ -512,16 +520,29 @@ def diag(v: _ArrayLike[Any], k:int=None) -> ndarray[Any]: ... def trace(a: _ArrayLike[Any], offset: int=0, axis1: int=0, axis2: int=1, dtype: DtypeType=None, out: ndarray[_U]=None) -> ndarray[Any]: ... -def sqrt(x: _ArrayLike[floating], out: ndarray[_U]=None) -> ndarray[floating]: ... +def sqrt(x: _ArrayLike[floating], out: ndarray[_U]=None) -> ndarray[float]: ... def square(v: _ArrayLike[Any], out: ndarray[_U]=None) -> ndarray[Any]: ... def mean(a: _ArrayLike[floating], axis: AxesType=None, dtype: Any=None, - out: ndarray[_U]=None, keepdims: bool=False) -> ndarray[floating]: ... -def abs(x: _ArrayLike[complextfloating], out: ndarray[_U]=None) -> ndarray[floating]: ... + out: ndarray[_U]=None, keepdims: bool=False) -> ndarray[float]: ... +@overload +def abs(x: complextfloating, out: float=None) -> complextfloating: ... +@overload +def abs(x: _ArrayLike[complextfloating], out: ndarray[_U]=None) -> ndarray[float]: ... def sum(a: _ArrayLike[Any], axis: AxesType=None, dtype: DtypeType=None, out: ndarray[_U]=None, keepdims: bool=False) -> ndarray[Any]: ... def diff(a: _ArrayLike[Any], n: int=1, axis: AxesType=-1) -> ndarray[Any]: ... -def rad2deg(x: _ArrayLike[floating], out: ndarray[_U]=None) -> ndarray[floating]: ... -def deg2rad(x: _ArrayLike[floating], out: ndarray[_U]=None) -> ndarray[floating]: ... +def rad2deg(x: _ArrayLike[floating], out: ndarray[_U]=None) -> ndarray[float]: ... +def deg2rad(x: _ArrayLike[floating], out: ndarray[_U]=None) -> ndarray[float]: ... +def min(a: _ArrayLike[_U], axis: AxesType=None, + out: ndarray[_U]=None) -> Union[ndarray[_S], ndarray[_U]]: ... +def max(a: _ArrayLike[_U], axis: AxesType=None, + out: ndarray[_U]=None) -> Union[ndarray[_S], ndarray[_U]]: ... +def argmax(a: _ArrayLike[_U], axis: int=None, + out: ndarray[_U]=None) -> Union[ndarray[_U], ndarray[int]]: ... +def argmin(a: _ArrayLike[_U], axis: int=None, + out: ndarray[_U]=None) -> Union[ndarray[_U], ndarray[int]]: ... +def argsort(a: _ArrayLike[Any], axis: int=None, kind: str='quicksort', + order: OrderType=None) -> 'ndarray[int]': ... def save(file: Any, arr: _ArrayLike[Any], allow_pickle: bool=None, fix_imports: bool=None) -> None: ... def savez(file: str, *args: Any, **kwargs: Dict[str, Any]) -> None: ... From 1bc93d9b40b747ea58a7ed7cbcdd5b6adb390a6f Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Sun, 5 Mar 2017 17:51:13 +0100 Subject: [PATCH 5/9] fixes --- numpy-mypy/numpy/__init__.pyi | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/numpy-mypy/numpy/__init__.pyi b/numpy-mypy/numpy/__init__.pyi index 680c0de..f305b25 100644 --- a/numpy-mypy/numpy/__init__.pyi +++ b/numpy-mypy/numpy/__init__.pyi @@ -458,14 +458,6 @@ class ndarray(_ArrayLike[_S], Generic[_S], Sized): def flatten(self, order: str='C') -> 'ndarray[Any]': ... def dot(self, b: '_ArrayLike[Any]', out: '_ArrayLike[Any]'=None) -> 'ndarray[Any]': ... - -class matrix(_ArrayLike[_S], Generic[_S]): - """numpy.matrix""" - ctypes = None # type: Any - - def __init__(self, data: _ArrayLike[_S], dtype: DtypeType=None, - copy: bool=None) -> None: ... - # # Array creation routines # @@ -475,7 +467,7 @@ def array(object: Any, dtype: Any=None, copy: bool=True, 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 asmatrix(data: Any, dtype: DtypeType=None) -> matrix[Any]: ... def ascontiguousarray(a: Any, dtype: DtypeType=None) -> ndarray[Any]: ... def copy(a: Any, order: str=None) -> ndarray[Any]: ... def empty(shape: ShapeType, dtype: DtypeType=float, order: str='C') -> ndarray[Any]: ... @@ -525,7 +517,7 @@ def square(v: _ArrayLike[Any], out: ndarray[_U]=None) -> ndarray[Any]: ... def mean(a: _ArrayLike[floating], axis: AxesType=None, dtype: Any=None, out: ndarray[_U]=None, keepdims: bool=False) -> ndarray[float]: ... @overload -def abs(x: complextfloating, out: float=None) -> complextfloating: ... +def abs(x: float, out: float=None) -> float: ... @overload def abs(x: _ArrayLike[complextfloating], out: ndarray[_U]=None) -> ndarray[float]: ... def sum(a: _ArrayLike[Any], axis: AxesType=None, dtype: DtypeType=None, out: ndarray[_U]=None, @@ -556,3 +548,13 @@ def nan_to_num(x: _ArrayLike[Any]) -> ndarray[Any]: ... def copyto(dst: ndarray[Any], src: _ArrayLike[Any], caseting: str='same_kind', where: _ArrayLike[bool]=None) -> None: ... + +class matrix(_ArrayLike[_S], Generic[_S]): + """numpy.matrix""" + ctypes = None # type: Any + + def __init__(self, data: Any, dtype: DtypeType=None, + copy: bool=None) -> None: ... + + def __mul__(self, value: object) -> matrix[Any]: ... + From 610fd061a90166b08fd50308c5934faf734df02d Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Wed, 22 Mar 2017 12:48:19 +0100 Subject: [PATCH 6/9] more global methods --- numpy-mypy/numpy/__init__.pyi | 133 ++++++++++++++++++--------- numpy-mypy/numpy/linalg/__init__.pyi | 15 +++ numpy-mypy/numpy/random/__init__.pyi | 6 ++ 3 files changed, 110 insertions(+), 44 deletions(-) create mode 100644 numpy-mypy/numpy/linalg/__init__.pyi create mode 100644 numpy-mypy/numpy/random/__init__.pyi diff --git a/numpy-mypy/numpy/__init__.pyi b/numpy-mypy/numpy/__init__.pyi index f305b25..e99ef12 100644 --- a/numpy-mypy/numpy/__init__.pyi +++ b/numpy-mypy/numpy/__init__.pyi @@ -5,6 +5,7 @@ methods are provided. from typing import (Any, Callable, Dict, Generic, Iterator, List, Optional, Sequence, Tuple, Type, TypeVar, Union, Sized, overload) +from numpy import random, linalg class dtype: ... _dtype = dtype @@ -44,11 +45,14 @@ ShapeType = Union[int, Tuple[int, ...]] AxesType = Union[int, Tuple[int, ...]] OrderType = Union[str, Sequence[str]] DtypeType = Union[dtype, type] +ArrayTypeAny = Union[_ArrayLike[Any], List[Any], Tuple[Any, ...]] +ArrayTypeFloat = Union[_ArrayLike[float], List[float], Tuple[float, ...]] class flatiter(Generic[_S], Iterator[_S]): coords = ... # type: ShapeType def copy(self) -> flatiter[_S]: ... + class _ArrayLike(Generic[_S]): """ "array-like" interface that both numpy.ndarray and all scalars (descendants of numpy.generic) @@ -216,7 +220,7 @@ class _ArrayLike(Generic[_S]): def trace(self, offset: int=0, axis1: int=0, axis2: int=1, dtype: DtypeType=None, out: '_ArrayLike[_U]'=None) -> '_ArrayLike[Any]': ... - def transpose(self, axes: Optional[AxesType]) -> '_ArrayLike[_S]': ... + def transpose(self, axes: AxesType=None) -> '_ArrayLike[_S]': ... def var(self, axis: AxesType=None, dtype: DtypeType=None, out: '_ArrayLike[_U]'=None, ddof: int=0, keepdims: bool=False) -> '_ArrayLike[Any]': ... @@ -425,6 +429,7 @@ class str_(character): ... class unicode_(character): ... class void(flexible[None]): ... + class ndarray(_ArrayLike[_S], Generic[_S], Sized): """numpy.ndarray""" ctypes = None # type: Any # TODO Implement ctypes type hint @@ -440,7 +445,9 @@ class ndarray(_ArrayLike[_S], Generic[_S], Sized): def __mul__(self, value: object) -> 'ndarray[Any]': ... def __matmul__(self, value: '_ArrayLike[Any]') -> 'ndarray[Any]': ... def __array__(self, dtype: DtypeType=None) -> 'ndarray[Any]': ... - def __getitem__(self, key: Any) -> 'ndarray[_S]': ... + #def __getitem__(self, key: Any) -> _S: ... + #def __getslice__(self, i: Any, j: Any) -> ndarray[_S]: ... + def __getitem__(self, key: Any) -> ndarray[_S]: ... def __copy__(self) -> 'ndarray[_S]': ... def __iter__(self) -> Iterator['ndarray[_S]']: ... def __pow__(self, value: object) -> 'ndarray[Any]': ... @@ -453,23 +460,29 @@ class ndarray(_ArrayLike[_S], Generic[_S], Sized): def __eq__(self, value: object) -> 'ndarray[bool]': ... # type: ignore def __ne__(self, value: object) -> 'ndarray[bool]': ... # type: ignore - # ndarray-only methods? def copy(self, order: str='C') -> 'ndarray[_S]': ... def flatten(self, order: str='C') -> 'ndarray[Any]': ... def dot(self, b: '_ArrayLike[Any]', out: '_ArrayLike[Any]'=None) -> 'ndarray[Any]': ... + def transpose(self, axes: AxesType=None) -> 'ndarray[_S]': ... + def reshape(self, newshape: ShapeType, order: str='C') -> ndarray[_S]: ... -# -# Array creation routines -# +# global attributes +pi: float +inf: float +nan: float + + +# Array creation routines def array(object: Any, dtype: Any=None, copy: bool=True, order: str=None, subok: bool=False, ndmin: int=0) -> ndarray[Any]: ... def asarray(a: Any, dtype: DtypeType=None, order: str=None) -> ndarray[Any]: ... +def asfarray(a: Any, dtype: DtypeType=float64, order: str=None) -> ndarray[float]: ... 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) -> matrix[Any]: ... def ascontiguousarray(a: Any, dtype: DtypeType=None) -> ndarray[Any]: ... -def copy(a: Any, order: str=None) -> ndarray[Any]: ... +def copy(a: Any, order: 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]: ... @@ -496,65 +509,97 @@ def zeros_like(a: Any, dtype: Any=None, order: str='K', subok: bool=True) -> nda # # Global array routines (incomplete) -def all(self, axis: AxesType=None, out: '_ArrayLike[_U]'=None, - keepdims: bool=False) -> Union['ndarray[_U]', 'ndarray[bool]']: ... -def reshape(a: _ArrayLike[_S], newshape: ShapeType, order: str='C') -> ndarray[Any]: ... -def repeat(a: _ArrayLike[_S], repeats: Union[int, Sequence[int]], axis: int=None) -> ndarray[_S]: ... -def squeeze(a: _ArrayLike[_S], axis: AxesType=None) -> ndarray[_S]: ... -def dot(a: _ArrayLike[Any], b: _ArrayLike[Any], out: ndarray[Any]=None) -> ndarray[Any]: ... -def vstack(tup: Sequence[_ArrayLike[_S]]) -> ndarray[_S]: ... -def hstack(tup: Sequence[_ArrayLike[_S]]) -> ndarray[_S]: ... -def concatenate(s: Sequence[_ArrayLike[_S]], axis: AxesType=None) -> ndarray[_S]: ... -def insert(arr: _ArrayLike[Any], obj: Union[int, Sequence[int]], values: Union[Any, _ArrayLike[Any]], - axis: AxesType=None) -> ndarray[Any]: ... -def delete(arr: _ArrayLike[Any], obj: Union[int, Sequence[int]], axis: AxesType=None) -> ndarray[Any]: ... -def diag(v: _ArrayLike[Any], k:int=None) -> ndarray[Any]: ... -def trace(a: _ArrayLike[Any], offset: int=0, axis1: int=0, axis2: int=1, - dtype: DtypeType=None, out: ndarray[_U]=None) -> ndarray[Any]: ... - -def sqrt(x: _ArrayLike[floating], out: ndarray[_U]=None) -> ndarray[float]: ... -def square(v: _ArrayLike[Any], out: ndarray[_U]=None) -> ndarray[Any]: ... -def mean(a: _ArrayLike[floating], axis: AxesType=None, dtype: Any=None, - out: ndarray[_U]=None, keepdims: bool=False) -> ndarray[float]: ... @overload def abs(x: float, out: float=None) -> float: ... @overload def abs(x: _ArrayLike[complextfloating], out: ndarray[_U]=None) -> ndarray[float]: ... -def sum(a: _ArrayLike[Any], axis: AxesType=None, dtype: DtypeType=None, out: ndarray[_U]=None, - keepdims: bool=False) -> ndarray[Any]: ... -def diff(a: _ArrayLike[Any], n: int=1, axis: AxesType=-1) -> ndarray[Any]: ... -def rad2deg(x: _ArrayLike[floating], out: ndarray[_U]=None) -> ndarray[float]: ... -def deg2rad(x: _ArrayLike[floating], out: ndarray[_U]=None) -> ndarray[float]: ... -def min(a: _ArrayLike[_U], axis: AxesType=None, - out: ndarray[_U]=None) -> Union[ndarray[_S], ndarray[_U]]: ... -def max(a: _ArrayLike[_U], axis: AxesType=None, - out: ndarray[_U]=None) -> Union[ndarray[_S], ndarray[_U]]: ... +def all(a: _ArrayLike[_S], axis: AxesType=None, out: '_ArrayLike[_U]'=None, + keepdims: bool=False) -> Union['ndarray[_U]', 'ndarray[bool]']: ... def argmax(a: _ArrayLike[_U], axis: int=None, out: ndarray[_U]=None) -> Union[ndarray[_U], ndarray[int]]: ... def argmin(a: _ArrayLike[_U], axis: int=None, out: ndarray[_U]=None) -> Union[ndarray[_U], ndarray[int]]: ... def argsort(a: _ArrayLike[Any], axis: int=None, kind: str='quicksort', - order: OrderType=None) -> 'ndarray[int]': ... + order: OrderType=None) -> ndarray[int]: ... +def concatenate(s: Sequence[_ArrayLike[_S]], axis: AxesType=None) -> ndarray[_S]: ... +def copyto(dst: ndarray[Any], src: _ArrayLike[Any], caseting: str='same_kind', + where: _ArrayLike[bool]=None) -> None: ... +def delete(arr: _ArrayLike[Any], obj: Union[int, Sequence[int]], axis: AxesType=None) -> ndarray[Any]: ... +@overload +def deg2rad(x: float, out: float=None) -> float: ... +@overload +def deg2rad(x: ArrayTypeFloat, out: ndarray[float]=None) -> ndarray[float]: ... +def diag(v: _ArrayLike[Any], k:int=None) -> ndarray[Any]: ... +def diff(a: ArrayTypeAny, n: int=1, axis: AxesType=-1) -> ndarray[Any]: ... +def dot(a: _ArrayLike[Any], b: _ArrayLike[Any], out: ndarray[Any]=None) -> ndarray[Any]: ... +def hstack(tup: Sequence[_ArrayLike[_S]]) -> ndarray[_S]: ... +def insert(arr: _ArrayLike[Any], obj: Union[int, Sequence[int]], values: Union[Any, _ArrayLike[Any]], + axis: AxesType=None) -> ndarray[Any]: ... +def mean(a: ArrayTypeFloat, axis: AxesType=None, dtype: Any=None, + out: ndarray[_U]=None, keepdims: bool=False) -> ndarray[float]: ... +def min(a: _ArrayLike[_U], axis: AxesType=None, out: ndarray[_U]=None) -> ndarray[_U]: ... +def max(a: _ArrayLike[_U], axis: AxesType=None, out: ndarray[_U]=None) -> ndarray[_U]: ... +def nan_to_num(x: _ArrayLike[Any]) -> ndarray[Any]: ... +def tile(A: _ArrayLike[_S], reps: Union[int, Sequence[int]]) -> ndarray[_S]: ... +@overload +def rad2deg(x: float, out: float=None) -> float: ... +@overload +def rad2deg(x: ArrayTypeFloat, out: ndarray[float]=None) -> ndarray[float]: ... +def reshape(a: _ArrayLike[_S], newshape: ShapeType, order: str='C') -> ndarray[Any]: ... +def repeat(a: _ArrayLike[_S], repeats: Union[int, Sequence[int]], axis: int=None) -> ndarray[_S]: ... +def squeeze(a: _ArrayLike[_S], axis: AxesType=None) -> ndarray[_S]: ... +@overload +def square(v: float, out: float=None) -> float: ... +@overload +def square(v: ArrayTypeAny, out: ndarray[_U]=None) -> ndarray[Any]: ... +@overload +def sqrt(x: float, out: float=None) -> float: ... +@overload +def sqrt(x: ArrayTypeFloat, out: ndarray[_U]=None) -> ndarray[float]: ... +def sum(a: ArrayTypeAny, axis: AxesType=None, dtype: DtypeType=None, out: ndarray[_U]=None, + keepdims: bool=False) -> ndarray[Any]: ... +def trace(a: _ArrayLike[Any], offset: int=0, axis1: int=0, axis2: int=1, + dtype: DtypeType=None, out: ndarray[_U]=None) -> ndarray[Any]: ... +def resize(a: _ArrayLike[_S], new_shape: ShapeType, refcheck: bool=True) -> None: ... +def vstack(tup: Sequence[_ArrayLike[_S]]) -> ndarray[_S]: ... +def where(condition: _ArrayLike[Any], x: _ArrayLike[Any]=None, y: _ArrayLike[Any]=None) -> ndarray[Any]: ... def save(file: Any, arr: _ArrayLike[Any], allow_pickle: bool=None, fix_imports: bool=None) -> None: ... -def savez(file: str, *args: Any, **kwargs: Dict[str, Any]) -> None: ... -def savez_compressed(file: str, *args: Any, **kwargs: Dict[str, Any]) -> None: ... +def savez(file: str, *args: Any, **kwargs: Any) -> None: ... +def savez_compressed(file: str, *args: Any, **kwargs: Any) -> None: ... def savetxt(fname: Any, X: _ArrayLike[Any], fmt: Union[str, Sequence[str]]=None, delimiter: str=None, newline: str=None, header: str=None, footer: str=None, comments: str=None) -> None: ... def load(file: Any, mmap_mode: str=None, allow_pickle: bool=None, fix_imports: bool=None, encoding: str='ASCII') -> Any: ... -def nan_to_num(x: _ArrayLike[Any]) -> ndarray[Any]: ... -def copyto(dst: ndarray[Any], src: _ArrayLike[Any], caseting: str='same_kind', - where: _ArrayLike[bool]=None) -> None: ... - +def sin(x: _ArrayLike[Any], out: ndarray[Any]=None) -> ndarray[Any]: ... +def sinh(x: _ArrayLike[Any], out: ndarray[Any]=None) -> ndarray[Any]: ... +def arcsin(x: _ArrayLike[Any], out: ndarray[Any]=None) -> ndarray[Any]: ... +def cos(x: _ArrayLike[Any], out: ndarray[Any]=None) -> ndarray[Any]: ... +def arccos(x: _ArrayLike[Any], out: ndarray[Any]=None) -> ndarray[Any]: ... +def tan(x: _ArrayLike[Any], out: ndarray[Any]=None) -> ndarray[Any]: ... +def tanh(x: _ArrayLike[Any], out: ndarray[Any]=None) -> ndarray[Any]: ... +def arctan(x: _ArrayLike[Any], out: ndarray[Any]=None) -> ndarray[Any]: ... +def arctan2(x1: _ArrayLike[float], x2: _ArrayLike[float], out: ndarray[float]=None) -> ndarray[float]: ... + +def unwrap(p: _ArrayLike[float], discont: float=3.141592653589793, axis:AxesType=-1) -> ndarray[float]: ... +def imag(val: _ArrayLike[Any]) -> ndarray[Any]: ... +def real(val: _ArrayLike[Any]) -> ndarray[Any]: ... + +def gradient(f: _ArrayLike[Any], *args: Any, edge_order: int=1, axis: AxesType=None) -> ndarray[float]: ... +def std(a: _ArrayLike[float], axis: AxesType=None, dtype: DtypeType=None, + out: _ArrayLike[_U]=None, ddof: int=0, keepdims: bool=False) -> _ArrayLike[floating]: ... +def var(a: _ArrayLike[float], axis: AxesType=None, dtype: DtypeType=None, + out: _ArrayLike[_U]=None, ddof: int=0, keepdims: bool=False) -> _ArrayLike[Any]: ... class matrix(_ArrayLike[_S], Generic[_S]): """numpy.matrix""" ctypes = None # type: Any + T = None # type: matrix[_S] + def __init__(self, data: Any, dtype: DtypeType=None, copy: bool=None) -> None: ... - def __mul__(self, value: object) -> matrix[Any]: ... + def transpose(self, axes: AxesType=None) -> matrix[_S]: ... diff --git a/numpy-mypy/numpy/linalg/__init__.pyi b/numpy-mypy/numpy/linalg/__init__.pyi new file mode 100644 index 0000000..e157522 --- /dev/null +++ b/numpy-mypy/numpy/linalg/__init__.pyi @@ -0,0 +1,15 @@ + +from typing import (Any, Callable, Dict, Generic, Iterator, List, Optional, Sequence, Tuple, Type, + TypeVar, Union, Sized, overload) +from numpy import _ArrayLike, ndarray, AxesType + +def cond(x: _ArrayLike[Any], p: str=None) -> float: ... +@overload +def norm(x: float, ord: Union[str, float]=None, axis: AxesType=None, keepdims: bool=False) -> float: ... +@overload +def norm(x: _ArrayLike[Any], ord: Union[str, float]=None, axis: AxesType=None, keepdims: bool=False) -> ndarray[float]: ... + +def qr(a: _ArrayLike[Any], mode: str='reduced') -> Tuple[ndarray[Any], ndarray[Any], ndarray[Any]]: ... +def svd(a: _ArrayLike[Any], full_matrices: bool=True, compute_uv: bool=True) -> Tuple[ndarray[Any], + ndarray[Any], ndarray[Any]]: ... +def pinv(a: _ArrayLike[Any], rcond: float=1e-15) -> ndarray[Any]: ... diff --git a/numpy-mypy/numpy/random/__init__.pyi b/numpy-mypy/numpy/random/__init__.pyi new file mode 100644 index 0000000..4be5e14 --- /dev/null +++ b/numpy-mypy/numpy/random/__init__.pyi @@ -0,0 +1,6 @@ +from numpy import ndarray, DtypeType, ShapeType + +def rand(*args: int) -> ndarray[float]: ... +def ranf(*args: int) -> ndarray[float]: ... +def random(size: ShapeType=None) -> float: ... +def randint(low: int, high: int=None, size: ShapeType=None, dtype: DtypeType=int) -> ndarray[int]: ... From 490d6a4b099c458e6cb90431a8f595eeba1e382a Mon Sep 17 00:00:00 2001 From: Jacques Kvam Date: Tue, 22 Aug 2017 14:36:05 -0700 Subject: [PATCH 7/9] add median --- numpy-mypy/numpy/__init__.pyi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/numpy-mypy/numpy/__init__.pyi b/numpy-mypy/numpy/__init__.pyi index e99ef12..706d4b2 100644 --- a/numpy-mypy/numpy/__init__.pyi +++ b/numpy-mypy/numpy/__init__.pyi @@ -537,6 +537,8 @@ def insert(arr: _ArrayLike[Any], obj: Union[int, Sequence[int]], values: Union[A axis: AxesType=None) -> ndarray[Any]: ... def mean(a: ArrayTypeFloat, axis: AxesType=None, dtype: Any=None, out: ndarray[_U]=None, keepdims: bool=False) -> ndarray[float]: ... +def median(a: ArrayTypeFloat, axis: AxesType=None, out: ndarray[_U]=None, + overwrite_input: bool=False, keepdims: bool=False) -> ndarray[float]: ... def min(a: _ArrayLike[_U], axis: AxesType=None, out: ndarray[_U]=None) -> ndarray[_U]: ... def max(a: _ArrayLike[_U], axis: AxesType=None, out: ndarray[_U]=None) -> ndarray[_U]: ... def nan_to_num(x: _ArrayLike[Any]) -> ndarray[Any]: ... From dc8c3ba27fcbf89844a17497dad3bc3c6f84c3d8 Mon Sep 17 00:00:00 2001 From: vdeo Date: Mon, 28 Aug 2017 15:50:55 +0200 Subject: [PATCH 8/9] Added constructors for type hierarchy. Constructor syntaxes such as np.float32() and np.float32([1,2,3.]), etc. are valid syntax for all non-abstract numeric type, so I added constructors accordingly. The input type of the constructor 'value' is not clear regarding what's tolerated, in the same style as np.array --- numpy-mypy/numpy/__init__.pyi | 113 ++++++++++++++++++++++------------ 1 file changed, 75 insertions(+), 38 deletions(-) diff --git a/numpy-mypy/numpy/__init__.pyi b/numpy-mypy/numpy/__init__.pyi index 706d4b2..bf0c5b1 100644 --- a/numpy-mypy/numpy/__init__.pyi +++ b/numpy-mypy/numpy/__init__.pyi @@ -381,53 +381,90 @@ class _ArrayLike(Generic[_S]): # class generic(_ArrayLike[_S], Generic[_S]): ... -class bool_(generic[bool]): ... +class bool_(generic[bool]): + def __init__(self, value : Any = None) -> None: ... bool8 = bool_ -class object_(generic[Any]): ... +class object_(generic[Any]): + def __init__(self, value : Any = None) -> None: ... class number(generic[_S], Generic[_S]): ... class integer(number[int]): ... class signedinteger(integer): ... -class byte(signedinteger): ... -class short(signedinteger): ... -class intc(signedinteger): ... -class int_(signedinteger): ... -class longlong(signedinteger): ... -class int8(signedinteger): ... -class int16(signedinteger): ... -class int32(signedinteger): ... -class int64(signedinteger): ... +class byte(signedinteger): + def __init__(self, value : Any = None) -> None: ... +class short(signedinteger): + def __init__(self, value : Any = None) -> None: ... +class intc(signedinteger): + def __init__(self, value : Any = None) -> None: ... +class int_(signedinteger): + def __init__(self, value : Any = None) -> None: ... +class longlong(signedinteger): + def __init__(self, value : Any = None) -> None: ... +class int8(signedinteger): + def __init__(self, value : Any = None) -> None: ... +class int16(signedinteger): + def __init__(self, value : Any = None) -> None: ... +class int32(signedinteger): + def __init__(self, value : Any = None) -> None: ... +class int64(signedinteger): + def __init__(self, value : Any = None) -> None: ... class unsignedinteger(integer): ... -class ubyte(unsignedinteger): ... -class ushort(unsignedinteger): ... -class uintc(unsignedinteger): ... -class uint(unsignedinteger): ... -class ulonglong(unsignedinteger): ... -class uint8(signedinteger): ... -class uint16(signedinteger): ... -class uint32(signedinteger): ... -class uint64(signedinteger): ... +class ubyte(unsignedinteger): + def __init__(self, value : Any = None) -> None: ... +class ushort(unsignedinteger): + def __init__(self, value : Any = None) -> None: ... +class uintc(unsignedinteger): + def __init__(self, value : Any = None) -> None: ... +class uint(unsignedinteger): + def __init__(self, value : Any = None) -> None: ... +class ulonglong(unsignedinteger): + def __init__(self, value : Any = None) -> None: ... +class uint8(signedinteger): + def __init__(self, value : Any = None) -> None: ... +class uint16(signedinteger): + def __init__(self, value : Any = None) -> None: ... +class uint32(signedinteger): + def __init__(self, value : Any = None) -> None: ... +class uint64(signedinteger): + def __init__(self, value : Any = None) -> None: ... class inexact(number[float]): ... class floating(inexact): ... -class half(floating): ... -class single(floating): ... -class float_(floating): ... -class longfloat_(floating): ... -class float16(floating): ... -class float32(floating): ... -class float64(floating): ... -class float128(floating): ... -class complextfloating(inexact): ... -class csingle(complextfloating): ... -class complex_(complextfloating): ... -class clongfloat(complextfloating): ... -class complex64(complextfloating): ... -class complex128(complextfloating): ... -class complex256(complextfloating): ... +class half(floating): + def __init__(self, value : Any = None) -> None: ... +class single(floating): + def __init__(self, value : Any = None) -> None: ... +class float_(floating): + def __init__(self, value : Any = None) -> None: ... +class longfloat(floating): + def __init__(self, value : Any = None) -> None: ... +class float16(floating): + def __init__(self, value : Any = None) -> None: ... +class float32(floating): + def __init__(self, value : Any = None) -> None: ... +class float64(floating): + def __init__(self, value : Any = None) -> None: ... +class float128(floating): + def __init__(self, value : Any = None) -> None: ... +class complexfloating(inexact): ... +class csingle(complextfloating): + def __init__(self, value : Any = None) -> None: ... +class complex_(complextfloating): + def __init__(self, value : Any = None) -> None: ... +class clongfloat(complextfloating): + def __init__(self, value : Any = None) -> None: ... +class complex64(complextfloating): + def __init__(self, value : Any = None) -> None: ... +class complex128(complextfloating): + def __init__(self, value : Any = None) -> None: ... +class complex256(complextfloating): + def __init__(self, value : Any = None) -> None: ... class flexible(generic[_S], Generic[_S]): ... class character(flexible[str]): ... -class str_(character): ... -class unicode_(character): ... -class void(flexible[None]): ... +class str_(character): + def __init__(self, value : Any = None) -> None: ... +class unicode_(character): + def __init__(self, value : Any = None) -> None: ... +class void(flexible[None]): + def __init__(self, value : Any) -> None: ... class ndarray(_ArrayLike[_S], Generic[_S], Sized): From f3302c7648ae9a0249f84a0365664a2acf66af9d Mon Sep 17 00:00:00 2001 From: vdeo Date: Mon, 28 Aug 2017 17:43:23 +0200 Subject: [PATCH 9/9] Corrected a typo complextfloating -> complexfloating --- numpy-mypy/numpy/__init__.pyi | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/numpy-mypy/numpy/__init__.pyi b/numpy-mypy/numpy/__init__.pyi index bf0c5b1..cd56eff 100644 --- a/numpy-mypy/numpy/__init__.pyi +++ b/numpy-mypy/numpy/__init__.pyi @@ -445,17 +445,17 @@ class float64(floating): class float128(floating): def __init__(self, value : Any = None) -> None: ... class complexfloating(inexact): ... -class csingle(complextfloating): +class csingle(complexfloating): def __init__(self, value : Any = None) -> None: ... -class complex_(complextfloating): +class complex_(complexfloating): def __init__(self, value : Any = None) -> None: ... -class clongfloat(complextfloating): +class clongfloat(complexfloating): def __init__(self, value : Any = None) -> None: ... -class complex64(complextfloating): +class complex64(complexfloating): def __init__(self, value : Any = None) -> None: ... -class complex128(complextfloating): +class complex128(complexfloating): def __init__(self, value : Any = None) -> None: ... -class complex256(complextfloating): +class complex256(complexfloating): def __init__(self, value : Any = None) -> None: ... class flexible(generic[_S], Generic[_S]): ... class character(flexible[str]): ... @@ -549,7 +549,7 @@ def zeros_like(a: Any, dtype: Any=None, order: str='K', subok: bool=True) -> nda @overload def abs(x: float, out: float=None) -> float: ... @overload -def abs(x: _ArrayLike[complextfloating], out: ndarray[_U]=None) -> ndarray[float]: ... +def abs(x: _ArrayLike[complexfloating], out: ndarray[_U]=None) -> ndarray[float]: ... def all(a: _ArrayLike[_S], axis: AxesType=None, out: '_ArrayLike[_U]'=None, keepdims: bool=False) -> Union['ndarray[_U]', 'ndarray[bool]']: ... def argmax(a: _ArrayLike[_U], axis: int=None,