|
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