|
50 | 50 | from pandas.core.dtypes.generic import (
|
51 | 51 | ABCDatetimeArray,
|
52 | 52 | ABCExtensionArray,
|
53 |
| - ABCIndexClass, |
| 53 | + ABCIndex, |
54 | 54 | ABCMultiIndex,
|
55 | 55 | ABCRangeIndex,
|
56 | 56 | ABCSeries,
|
|
63 | 63 |
|
64 | 64 | if TYPE_CHECKING:
|
65 | 65 | from pandas import Categorical, DataFrame, Index, Series
|
| 66 | + from pandas.core.arrays import DatetimeArray, TimedeltaArray |
66 | 67 |
|
67 | 68 | _shared_docs: Dict[str, str] = {}
|
68 | 69 |
|
@@ -215,7 +216,7 @@ def _reconstruct_data(
|
215 | 216 | values = values.astype(dtype, copy=False)
|
216 | 217 |
|
217 | 218 | # we only support object dtypes bool Index
|
218 |
| - if isinstance(original, ABCIndexClass): |
| 219 | + if isinstance(original, ABCIndex): |
219 | 220 | values = values.astype(object, copy=False)
|
220 | 221 | elif dtype is not None:
|
221 | 222 | if is_datetime64_dtype(dtype):
|
@@ -437,9 +438,7 @@ def isin(comps: AnyArrayLike, values: AnyArrayLike) -> np.ndarray:
|
437 | 438 | f"to isin(), you passed a [{type(values).__name__}]"
|
438 | 439 | )
|
439 | 440 |
|
440 |
| - if not isinstance( |
441 |
| - values, (ABCIndexClass, ABCSeries, ABCExtensionArray, np.ndarray) |
442 |
| - ): |
| 441 | + if not isinstance(values, (ABCIndex, ABCSeries, ABCExtensionArray, np.ndarray)): |
443 | 442 | values = _ensure_arraylike(list(values))
|
444 | 443 | elif isinstance(values, ABCMultiIndex):
|
445 | 444 | # Avoid raising in extract_array
|
@@ -700,7 +699,7 @@ def factorize(
|
700 | 699 | and values.freq is not None
|
701 | 700 | ):
|
702 | 701 | codes, uniques = values.factorize(sort=sort)
|
703 |
| - if isinstance(original, ABCIndexClass): |
| 702 | + if isinstance(original, ABCIndex): |
704 | 703 | uniques = original._shallow_copy(uniques, name=None)
|
705 | 704 | elif isinstance(original, ABCSeries):
|
706 | 705 | from pandas import Index
|
@@ -739,8 +738,11 @@ def factorize(
|
739 | 738 | uniques = _reconstruct_data(uniques, dtype, original)
|
740 | 739 |
|
741 | 740 | # return original tenor
|
742 |
| - if isinstance(original, ABCIndexClass): |
| 741 | + if isinstance(original, ABCIndex): |
743 | 742 | if original.dtype.kind in ["m", "M"] and isinstance(uniques, np.ndarray):
|
| 743 | + original._data = cast( |
| 744 | + "Union[DatetimeArray, TimedeltaArray]", original._data |
| 745 | + ) |
744 | 746 | uniques = type(original._data)._simple_new(uniques, dtype=original.dtype)
|
745 | 747 | uniques = original._shallow_copy(uniques, name=None)
|
746 | 748 | elif isinstance(original, ABCSeries):
|
|
0 commit comments