Skip to content

Commit

Permalink
TYP: Index.join
Browse files Browse the repository at this point in the history
  • Loading branch information
twoertwein committed Mar 26, 2022
1 parent 625dc0f commit a7b1efb
Showing 1 changed file with 50 additions and 4 deletions.
54 changes: 50 additions & 4 deletions pandas/core/indexes/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
DtypeObj,
F,
IgnoreRaise,
Level,
Shape,
npt,
)
Expand Down Expand Up @@ -4492,16 +4493,53 @@ def _reindex_non_unique(
# --------------------------------------------------------------------
# Join Methods

@overload
def join(
self,
other,
*,
how: str_t = ...,
level: Level = ...,
return_indexers: Literal[True],
sort: bool = ...,
) -> tuple[Index, npt.NDArray[np.intp] | None, npt.NDArray[np.intp] | None]:
...

@overload
def join(
self,
other,
*,
how: str_t = ...,
level: Level = ...,
return_indexers: Literal[False] = ...,
sort: bool = ...,
) -> Index:
...

@overload
def join(
self,
other,
*,
how: str_t = ...,
level: Level = ...,
return_indexers: bool = ...,
sort: bool = ...,
) -> Index | tuple[Index, npt.NDArray[np.intp] | None, npt.NDArray[np.intp] | None]:
...

@final
@deprecate_nonkeyword_arguments(version=None, allowed_args=["self", "other"])
@_maybe_return_indexers
def join(
self,
other,
how: str_t = "left",
level=None,
level: Level = None,
return_indexers: bool = False,
sort: bool = False,
):
) -> Index | tuple[Index, npt.NDArray[np.intp] | None, npt.NDArray[np.intp] | None]:
"""
Compute join_index and indexers to conform data
structures to the new index.
Expand Down Expand Up @@ -4686,16 +4724,24 @@ def _join_multi(self, other: Index, how: str_t):
# Join left and right
# Join on same leveled multi-index frames is supported
join_idx, lidx, ridx = self_jnlevels.join(
other_jnlevels, how, return_indexers=True
other_jnlevels, how=how, return_indexers=True
)

# Restore the dropped levels
# Returned index level order is
# common levels, ldrop_names, rdrop_names
dropped_names = ldrop_names + rdrop_names

# error: Argument 5/6 to "restore_dropped_levels_multijoin" has
# incompatible type "Optional[ndarray[Any, dtype[signedinteger[Any
# ]]]]"; expected "ndarray[Any, dtype[signedinteger[Any]]]"
levels, codes, names = restore_dropped_levels_multijoin(
self, other, dropped_names, join_idx, lidx, ridx
self,
other,
dropped_names,
join_idx,
lidx, # type: ignore[arg-type]
ridx, # type: ignore[arg-type]
)

# Re-create the multi-index
Expand Down

0 comments on commit a7b1efb

Please sign in to comment.