From 0761dabd30acebdfc9b9f0394980ffc90f9e6ae2 Mon Sep 17 00:00:00 2001 From: Gregory Rome Date: Sun, 31 Mar 2019 10:24:08 -0500 Subject: [PATCH 1/5] #25942 Added ArrayLike and Dtype to pandas._typing --- pandas/_typing.py | 9 ++++++++- pandas/core/arrays/base.py | 3 ++- pandas/core/arrays/sparse.py | 5 +++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/pandas/_typing.py b/pandas/_typing.py index 5225be33d7604..325c96f024f82 100644 --- a/pandas/_typing.py +++ b/pandas/_typing.py @@ -1,4 +1,11 @@ from pathlib import Path -from typing import IO, AnyStr, Union +from typing import IO, AnyStr, Type, Union +import numpy as np + +from pandas.core.dtypes.dtypes import ExtensionDtype +from pandas.core.dtypes.generic import ABCExtensionArray + +ArrayLike = Union[ABCExtensionArray, np.ndarray] +Dtype = Union[str, np.dtype, ExtensionDtype, Type] FilePathOrBuffer = Union[str, Path, IO[AnyStr]] diff --git a/pandas/core/arrays/base.py b/pandas/core/arrays/base.py index 44662ce831b89..846eb442ef816 100644 --- a/pandas/core/arrays/base.py +++ b/pandas/core/arrays/base.py @@ -21,6 +21,7 @@ ABCExtensionArray, ABCIndexClass, ABCSeries) from pandas.core.dtypes.missing import isna +from pandas._typing import ArrayLike from pandas.core import ops _not_implemented_message = "{} does not implement {}." @@ -338,7 +339,7 @@ def astype(self, dtype, copy=True): """ return np.array(self, dtype=dtype, copy=copy) - def isna(self) -> Union[ABCExtensionArray, np.ndarray]: + def isna(self) -> ArrayLike: """ A 1-D array indicating if each value is missing. diff --git a/pandas/core/arrays/sparse.py b/pandas/core/arrays/sparse.py index 3d18255e78aa9..d09c0dbd0e398 100644 --- a/pandas/core/arrays/sparse.py +++ b/pandas/core/arrays/sparse.py @@ -4,7 +4,7 @@ import numbers import operator import re -from typing import Any, Callable, Type, Union +from typing import Any, Callable import warnings import numpy as np @@ -30,6 +30,7 @@ ABCIndexClass, ABCSeries, ABCSparseArray, ABCSparseSeries) from pandas.core.dtypes.missing import isna, na_value_for_dtype, notna +from pandas._typing import Dtype from pandas.core.accessor import PandasDelegate, delegate_names import pandas.core.algorithms as algos from pandas.core.arrays import ExtensionArray, ExtensionOpsMixin @@ -79,7 +80,7 @@ class SparseDtype(ExtensionDtype): def __init__( self, - dtype: Union[str, np.dtype, ExtensionDtype, Type] = np.float64, + dtype: Dtype = np.float64, fill_value: Any = None ) -> None: from pandas.core.dtypes.missing import na_value_for_dtype From cc50a602a346443f72ab7d10c8fa97f5e0e7337b Mon Sep 17 00:00:00 2001 From: Gregory Rome Date: Wed, 3 Apr 2019 09:59:53 -0500 Subject: [PATCH 2/5] Revise and rename SparseDtype --- pandas/_typing.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pandas/_typing.py b/pandas/_typing.py index 325c96f024f82..1ca9710f9c6c1 100644 --- a/pandas/_typing.py +++ b/pandas/_typing.py @@ -7,5 +7,6 @@ from pandas.core.dtypes.generic import ABCExtensionArray ArrayLike = Union[ABCExtensionArray, np.ndarray] -Dtype = Union[str, np.dtype, ExtensionDtype, Type] +SparseDtype = Union[str, np.dtype, ExtensionDtype, + Type[float], Type[int], Type[object]] FilePathOrBuffer = Union[str, Path, IO[AnyStr]] From 3be8f6312c7d1c23f3699e4c4a8543f9003559a0 Mon Sep 17 00:00:00 2001 From: Gregory Rome Date: Wed, 3 Apr 2019 10:58:34 -0500 Subject: [PATCH 3/5] Change import to SparseDtype --- pandas/core/arrays/sparse.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/core/arrays/sparse.py b/pandas/core/arrays/sparse.py index d09c0dbd0e398..272f347f07bf6 100644 --- a/pandas/core/arrays/sparse.py +++ b/pandas/core/arrays/sparse.py @@ -30,7 +30,7 @@ ABCIndexClass, ABCSeries, ABCSparseArray, ABCSparseSeries) from pandas.core.dtypes.missing import isna, na_value_for_dtype, notna -from pandas._typing import Dtype +from pandas._typing import SparseDtype from pandas.core.accessor import PandasDelegate, delegate_names import pandas.core.algorithms as algos from pandas.core.arrays import ExtensionArray, ExtensionOpsMixin From 47b2cbb51c66ec2793027be02fd9952e4e825bb2 Mon Sep 17 00:00:00 2001 From: Gregory Rome Date: Wed, 3 Apr 2019 11:00:58 -0500 Subject: [PATCH 4/5] Change type to SparseDtype --- pandas/core/arrays/sparse.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/core/arrays/sparse.py b/pandas/core/arrays/sparse.py index 272f347f07bf6..e1badbb6e3118 100644 --- a/pandas/core/arrays/sparse.py +++ b/pandas/core/arrays/sparse.py @@ -80,7 +80,7 @@ class SparseDtype(ExtensionDtype): def __init__( self, - dtype: Dtype = np.float64, + dtype: SparseDtype = np.float64, fill_value: Any = None ) -> None: from pandas.core.dtypes.missing import na_value_for_dtype From 674c52f964da8e5d4e7f63e6080ee26f12c2c270 Mon Sep 17 00:00:00 2001 From: Gregory Rome Date: Tue, 9 Apr 2019 11:06:26 -0500 Subject: [PATCH 5/5] Change SparseDtype back to Dtype --- pandas/_typing.py | 5 ++--- pandas/core/arrays/sparse.py | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/pandas/_typing.py b/pandas/_typing.py index 1ca9710f9c6c1..dc15a44b65db9 100644 --- a/pandas/_typing.py +++ b/pandas/_typing.py @@ -1,5 +1,5 @@ from pathlib import Path -from typing import IO, AnyStr, Type, Union +from typing import IO, AnyStr, Union import numpy as np @@ -7,6 +7,5 @@ from pandas.core.dtypes.generic import ABCExtensionArray ArrayLike = Union[ABCExtensionArray, np.ndarray] -SparseDtype = Union[str, np.dtype, ExtensionDtype, - Type[float], Type[int], Type[object]] +Dtype = Union[str, np.dtype, ExtensionDtype] FilePathOrBuffer = Union[str, Path, IO[AnyStr]] diff --git a/pandas/core/arrays/sparse.py b/pandas/core/arrays/sparse.py index e1badbb6e3118..d09c0dbd0e398 100644 --- a/pandas/core/arrays/sparse.py +++ b/pandas/core/arrays/sparse.py @@ -30,7 +30,7 @@ ABCIndexClass, ABCSeries, ABCSparseArray, ABCSparseSeries) from pandas.core.dtypes.missing import isna, na_value_for_dtype, notna -from pandas._typing import SparseDtype +from pandas._typing import Dtype from pandas.core.accessor import PandasDelegate, delegate_names import pandas.core.algorithms as algos from pandas.core.arrays import ExtensionArray, ExtensionOpsMixin @@ -80,7 +80,7 @@ class SparseDtype(ExtensionDtype): def __init__( self, - dtype: SparseDtype = np.float64, + dtype: Dtype = np.float64, fill_value: Any = None ) -> None: from pandas.core.dtypes.missing import na_value_for_dtype