1111
1212from pandas ._libs import Timestamp , algos , hashtable as htable , lib
1313from pandas ._libs .tslib import iNaT
14+ from pandas ._typing import AnyArrayLike
1415from pandas .util ._decorators import doc
1516
1617from pandas .core .dtypes .cast import (
4546 is_unsigned_integer_dtype ,
4647 needs_i8_conversion ,
4748)
48- from pandas .core .dtypes .generic import ABCIndex , ABCIndexClass , ABCSeries
49+ from pandas .core .dtypes .generic import (
50+ ABCExtensionArray ,
51+ ABCIndex ,
52+ ABCIndexClass ,
53+ ABCSeries ,
54+ )
4955from pandas .core .dtypes .missing import isna , na_value_for_dtype
5056
51- import pandas .core .common as com
5257from pandas .core .construction import array , extract_array
5358from pandas .core .indexers import validate_indices
5459
@@ -384,7 +389,7 @@ def unique(values):
384389unique1d = unique
385390
386391
387- def isin (comps , values ) -> np .ndarray :
392+ def isin (comps : AnyArrayLike , values : AnyArrayLike ) -> np .ndarray :
388393 """
389394 Compute the isin boolean array.
390395
@@ -409,15 +414,14 @@ def isin(comps, values) -> np.ndarray:
409414 f"to isin(), you passed a [{ type (values ).__name__ } ]"
410415 )
411416
412- if not isinstance (values , (ABCIndex , ABCSeries , np .ndarray )):
417+ if not isinstance (values , (ABCIndex , ABCSeries , ABCExtensionArray , np .ndarray )):
413418 values = construct_1d_object_array_from_listlike (list (values ))
414419
420+ comps = extract_array (comps , extract_numpy = True )
415421 if is_categorical_dtype (comps ):
416422 # TODO(extension)
417423 # handle categoricals
418- return comps ._values .isin (values )
419-
420- comps = com .values_from_object (comps )
424+ return comps .isin (values ) # type: ignore
421425
422426 comps , dtype = _ensure_data (comps )
423427 values , _ = _ensure_data (values , dtype = dtype )
0 commit comments