From 8f08b4c2a2a250d53d2cd61e391a9600f5e82c9b Mon Sep 17 00:00:00 2001 From: Simon Hawkins Date: Thu, 3 Sep 2020 21:02:14 +0100 Subject: [PATCH 1/4] TYP: misc fixes for numpy types 4 --- pandas/core/arrays/_mixins.py | 4 +++- pandas/core/tools/datetimes.py | 8 +++++--- pandas/plotting/_matplotlib/tools.py | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/pandas/core/arrays/_mixins.py b/pandas/core/arrays/_mixins.py index 2976747d66dfa..4e96685ba77df 100644 --- a/pandas/core/arrays/_mixins.py +++ b/pandas/core/arrays/_mixins.py @@ -17,7 +17,9 @@ class NDArrayBackedExtensionArray(ExtensionArray): ExtensionArray that is backed by a single NumPy ndarray. """ - _ndarray: np.ndarray + @property + def _ndarray(self) -> np.ndarray: + raise AbstractMethodError(self) def _from_backing_data(self: _T, arr: np.ndarray) -> _T: """ diff --git a/pandas/core/tools/datetimes.py b/pandas/core/tools/datetimes.py index 8fcc5f74ea897..929fd0dc334c8 100644 --- a/pandas/core/tools/datetimes.py +++ b/pandas/core/tools/datetimes.py @@ -550,7 +550,8 @@ def _adjust_to_origin(arg, origin, unit): @overload -def to_datetime( +# error: Overloaded function signatures 1 and 3 overlap with incompatible return types +def to_datetime( # type: ignore[misc] arg: DatetimeScalar, errors: str = ..., dayfirst: bool = ..., @@ -567,7 +568,8 @@ def to_datetime( @overload -def to_datetime( +# error: Overloaded function signatures 2 and 3 overlap with incompatible return types +def to_datetime( # type: ignore[misc] arg: "Series", errors: str = ..., dayfirst: bool = ..., @@ -585,7 +587,7 @@ def to_datetime( @overload def to_datetime( - arg: Union[List, Tuple], + arg: Union[List, Tuple, ArrayLike], errors: str = ..., dayfirst: bool = ..., yearfirst: bool = ..., diff --git a/pandas/plotting/_matplotlib/tools.py b/pandas/plotting/_matplotlib/tools.py index 98aaab6838fba..71b708b6520d8 100644 --- a/pandas/plotting/_matplotlib/tools.py +++ b/pandas/plotting/_matplotlib/tools.py @@ -351,7 +351,7 @@ def handle_shared_axes( _remove_labels_from_axis(ax.yaxis) -def flatten_axes(axes: Union["Axes", Sequence["Axes"]]) -> Sequence["Axes"]: +def flatten_axes(axes: Union["Axes", Sequence["Axes"]]) -> np.ndarray: if not is_list_like(axes): return np.array([axes]) elif isinstance(axes, (np.ndarray, ABCIndexClass)): From 7a1814eb53dabf2997c196ef651a990fccc247f1 Mon Sep 17 00:00:00 2001 From: Simon Hawkins Date: Thu, 3 Sep 2020 21:37:24 +0100 Subject: [PATCH 2/4] fix PandasArray --- pandas/core/arrays/numpy_.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pandas/core/arrays/numpy_.py b/pandas/core/arrays/numpy_.py index 23a4a70734c81..2b611ebf00e9e 100644 --- a/pandas/core/arrays/numpy_.py +++ b/pandas/core/arrays/numpy_.py @@ -153,7 +153,6 @@ class PandasArray( # pandas internals, which turns off things like block consolidation. _typ = "npy_extension" __array_priority__ = 1000 - _ndarray: np.ndarray # ------------------------------------------------------------------------ # Constructors @@ -172,9 +171,13 @@ def __init__(self, values: Union[np.ndarray, "PandasArray"], copy: bool = False) if copy: values = values.copy() - self._ndarray = values + self._values = values self._dtype = PandasDtype(values.dtype) + @property + def _ndarray(self) -> np.ndarray: + return self._values + @classmethod def _from_sequence(cls, scalars, dtype=None, copy: bool = False) -> "PandasArray": if isinstance(dtype, PandasDtype): From f2d78bf8bdfb33fb254304be14e181cc243bb752 Mon Sep 17 00:00:00 2001 From: Simon Hawkins Date: Thu, 3 Sep 2020 22:07:00 +0100 Subject: [PATCH 3/4] _values is disallowed as attribute --- pandas/core/arrays/numpy_.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas/core/arrays/numpy_.py b/pandas/core/arrays/numpy_.py index 2b611ebf00e9e..3ba5167891995 100644 --- a/pandas/core/arrays/numpy_.py +++ b/pandas/core/arrays/numpy_.py @@ -171,12 +171,12 @@ def __init__(self, values: Union[np.ndarray, "PandasArray"], copy: bool = False) if copy: values = values.copy() - self._values = values + self._ndarr = values self._dtype = PandasDtype(values.dtype) @property def _ndarray(self) -> np.ndarray: - return self._values + return self._ndarr @classmethod def _from_sequence(cls, scalars, dtype=None, copy: bool = False) -> "PandasArray": From 2bad8446944faa1e208990a367f18dbe6fbb20d8 Mon Sep 17 00:00:00 2001 From: Simon Hawkins Date: Thu, 3 Sep 2020 22:34:17 +0100 Subject: [PATCH 4/4] _ndarr -> _data for consistency with DatetimeLikeArrayMixin --- pandas/core/arrays/numpy_.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas/core/arrays/numpy_.py b/pandas/core/arrays/numpy_.py index 3ba5167891995..c999e8caf2d9a 100644 --- a/pandas/core/arrays/numpy_.py +++ b/pandas/core/arrays/numpy_.py @@ -171,12 +171,12 @@ def __init__(self, values: Union[np.ndarray, "PandasArray"], copy: bool = False) if copy: values = values.copy() - self._ndarr = values + self._data = values self._dtype = PandasDtype(values.dtype) @property def _ndarray(self) -> np.ndarray: - return self._ndarr + return self._data @classmethod def _from_sequence(cls, scalars, dtype=None, copy: bool = False) -> "PandasArray":