From 6b37cbe8efcca85620f1628144f71cd6f500d07d Mon Sep 17 00:00:00 2001 From: Brock Date: Tue, 28 Sep 2021 15:08:57 -0700 Subject: [PATCH] REF: remove _get_join_target --- pandas/core/indexes/base.py | 24 ++++++++++-------------- pandas/core/indexes/extension.py | 3 --- pandas/core/indexes/interval.py | 7 +++++-- 3 files changed, 15 insertions(+), 19 deletions(-) diff --git a/pandas/core/indexes/base.py b/pandas/core/indexes/base.py index 1db8c14af3c4e..c9e128ffc4289 100644 --- a/pandas/core/indexes/base.py +++ b/pandas/core/indexes/base.py @@ -315,8 +315,8 @@ class Index(IndexOpsMixin, PandasObject): @final def _left_indexer_unique(self: _IndexT, other: _IndexT) -> npt.NDArray[np.intp]: # Caller is responsible for ensuring other.dtype == self.dtype - sv = self._get_join_target() - ov = other._get_join_target() + sv = self._get_engine_target() + ov = other._get_engine_target() return libjoin.left_join_indexer_unique(sv, ov) @final @@ -324,8 +324,8 @@ def _left_indexer( self: _IndexT, other: _IndexT ) -> tuple[ArrayLike, npt.NDArray[np.intp], npt.NDArray[np.intp]]: # Caller is responsible for ensuring other.dtype == self.dtype - sv = self._get_join_target() - ov = other._get_join_target() + sv = self._get_engine_target() + ov = other._get_engine_target() joined_ndarray, lidx, ridx = libjoin.left_join_indexer(sv, ov) joined = self._from_join_target(joined_ndarray) return joined, lidx, ridx @@ -335,8 +335,8 @@ def _inner_indexer( self: _IndexT, other: _IndexT ) -> tuple[ArrayLike, npt.NDArray[np.intp], npt.NDArray[np.intp]]: # Caller is responsible for ensuring other.dtype == self.dtype - sv = self._get_join_target() - ov = other._get_join_target() + sv = self._get_engine_target() + ov = other._get_engine_target() joined_ndarray, lidx, ridx = libjoin.inner_join_indexer(sv, ov) joined = self._from_join_target(joined_ndarray) return joined, lidx, ridx @@ -346,8 +346,8 @@ def _outer_indexer( self: _IndexT, other: _IndexT ) -> tuple[ArrayLike, npt.NDArray[np.intp], npt.NDArray[np.intp]]: # Caller is responsible for ensuring other.dtype == self.dtype - sv = self._get_join_target() - ov = other._get_join_target() + sv = self._get_engine_target() + ov = other._get_engine_target() joined_ndarray, lidx, ridx = libjoin.outer_join_indexer(sv, ov) joined = self._from_join_target(joined_ndarray) return joined, lidx, ridx @@ -894,6 +894,8 @@ def ravel(self, order="C"): # Item "ndarray[Any, Any]" of "Union[ExtensionArray, ndarray[Any, Any]]" # has no attribute "_ndarray" values = self._data._ndarray # type: ignore[union-attr] + elif is_interval_dtype(self.dtype): + values = np.asarray(self._data) else: values = self._get_engine_target() return values.ravel(order=order) @@ -4618,12 +4620,6 @@ def _get_engine_target(self) -> np.ndarray: # ndarray]", expected "ndarray") return self._values # type: ignore[return-value] - def _get_join_target(self) -> np.ndarray: - """ - Get the ndarray that we will pass to libjoin functions. - """ - return self._get_engine_target() - def _from_join_target(self, result: np.ndarray) -> ArrayLike: """ Cast the ndarray returned from one of the libjoin.foo_indexer functions diff --git a/pandas/core/indexes/extension.py b/pandas/core/indexes/extension.py index a7930ac83a96a..d94646fc5a099 100644 --- a/pandas/core/indexes/extension.py +++ b/pandas/core/indexes/extension.py @@ -243,9 +243,6 @@ def searchsorted( # --------------------------------------------------------------------- - def _get_engine_target(self) -> np.ndarray: - return np.asarray(self._data) - def delete(self, loc): """ Make new Index with passed location(-s) deleted diff --git a/pandas/core/indexes/interval.py b/pandas/core/indexes/interval.py index c74a1b1ea60fd..f494638ba1aa4 100644 --- a/pandas/core/indexes/interval.py +++ b/pandas/core/indexes/interval.py @@ -892,11 +892,14 @@ def _is_all_dates(self) -> bool: """ return False - def _get_join_target(self) -> np.ndarray: + def _get_engine_target(self) -> np.ndarray: # Note: we _could_ use libjoin functions by either casting to object # dtype or constructing tuples (faster than constructing Intervals) # but the libjoin fastpaths are no longer fast in these cases. - raise NotImplementedError("IntervalIndex does not use libjoin fastpaths") + raise NotImplementedError( + "IntervalIndex does not use libjoin fastpaths or pass values to " + "IndexEngine objects" + ) def _from_join_target(self, result): raise NotImplementedError("IntervalIndex does not use libjoin fastpaths")