Skip to content

Commit 2fc264a

Browse files
authored
CLN/TYP: "how" parameter in merge ops (#56372)
cleanup how parameter in merge ops
1 parent 0d853e7 commit 2fc264a

File tree

1 file changed

+10
-20
lines changed

1 file changed

+10
-20
lines changed

pandas/core/reshape/merge.py

+10-20
Original file line numberDiff line numberDiff line change
@@ -718,7 +718,7 @@ class _MergeOperation:
718718
"""
719719

720720
_merge_type = "merge"
721-
how: MergeHow | Literal["asof"]
721+
how: JoinHow | Literal["asof"]
722722
on: IndexLabel | None
723723
# left_on/right_on may be None when passed, but in validate_specification
724724
# get replaced with non-None.
@@ -739,7 +739,7 @@ def __init__(
739739
self,
740740
left: DataFrame | Series,
741741
right: DataFrame | Series,
742-
how: MergeHow | Literal["asof"] = "inner",
742+
how: JoinHow | Literal["asof"] = "inner",
743743
on: IndexLabel | AnyArrayLike | None = None,
744744
left_on: IndexLabel | AnyArrayLike | None = None,
745745
right_on: IndexLabel | AnyArrayLike | None = None,
@@ -1106,6 +1106,8 @@ def _maybe_add_join_keys(
11061106

11071107
def _get_join_indexers(self) -> tuple[npt.NDArray[np.intp], npt.NDArray[np.intp]]:
11081108
"""return the join indexers"""
1109+
# make mypy happy
1110+
assert self.how != "asof"
11091111
return get_join_indexers(
11101112
self.left_join_keys, self.right_join_keys, sort=self.sort, how=self.how
11111113
)
@@ -1114,8 +1116,6 @@ def _get_join_indexers(self) -> tuple[npt.NDArray[np.intp], npt.NDArray[np.intp]
11141116
def _get_join_info(
11151117
self,
11161118
) -> tuple[Index, npt.NDArray[np.intp] | None, npt.NDArray[np.intp] | None]:
1117-
# make mypy happy
1118-
assert self.how != "cross"
11191119
left_ax = self.left.index
11201120
right_ax = self.right.index
11211121

@@ -1658,7 +1658,7 @@ def get_join_indexers(
16581658
left_keys: list[ArrayLike],
16591659
right_keys: list[ArrayLike],
16601660
sort: bool = False,
1661-
how: MergeHow | Literal["asof"] = "inner",
1661+
how: JoinHow = "inner",
16621662
) -> tuple[npt.NDArray[np.intp], npt.NDArray[np.intp]]:
16631663
"""
16641664
@@ -1684,12 +1684,12 @@ def get_join_indexers(
16841684
left_n = len(left_keys[0])
16851685
right_n = len(right_keys[0])
16861686
if left_n == 0:
1687-
if how in ["left", "inner", "cross"]:
1687+
if how in ["left", "inner"]:
16881688
return _get_empty_indexer()
16891689
elif not sort and how in ["right", "outer"]:
16901690
return _get_no_sort_one_missing_indexer(right_n, True)
16911691
elif right_n == 0:
1692-
if how in ["right", "inner", "cross"]:
1692+
if how in ["right", "inner"]:
16931693
return _get_empty_indexer()
16941694
elif not sort and how in ["left", "outer"]:
16951695
return _get_no_sort_one_missing_indexer(left_n, False)
@@ -1699,7 +1699,7 @@ def get_join_indexers(
16991699

17001700
# get left & right join labels and num. of levels at each location
17011701
mapped = (
1702-
_factorize_keys(left_keys[n], right_keys[n], sort=sort, how=how)
1702+
_factorize_keys(left_keys[n], right_keys[n], sort=sort)
17031703
for n in range(len(left_keys))
17041704
)
17051705
zipped = zip(*mapped)
@@ -1712,7 +1712,7 @@ def get_join_indexers(
17121712
# `count` is the num. of unique keys
17131713
# set(lkey) | set(rkey) == range(count)
17141714

1715-
lkey, rkey, count = _factorize_keys(lkey, rkey, sort=sort, how=how)
1715+
lkey, rkey, count = _factorize_keys(lkey, rkey, sort=sort)
17161716
# preserve left frame order if how == 'left' and sort == False
17171717
kwargs = {}
17181718
if how in ("inner", "left", "right"):
@@ -2166,7 +2166,6 @@ def _get_join_indexers(self) -> tuple[npt.NDArray[np.intp], npt.NDArray[np.intp]
21662166
left_join_keys[n],
21672167
right_join_keys[n],
21682168
sort=False,
2169-
how="left",
21702169
)
21712170
for n in range(len(left_join_keys))
21722171
]
@@ -2310,10 +2309,7 @@ def _left_join_on_index(
23102309

23112310

23122311
def _factorize_keys(
2313-
lk: ArrayLike,
2314-
rk: ArrayLike,
2315-
sort: bool = True,
2316-
how: MergeHow | Literal["asof"] = "inner",
2312+
lk: ArrayLike, rk: ArrayLike, sort: bool = True
23172313
) -> tuple[npt.NDArray[np.intp], npt.NDArray[np.intp], int]:
23182314
"""
23192315
Encode left and right keys as enumerated types.
@@ -2329,8 +2325,6 @@ def _factorize_keys(
23292325
sort : bool, defaults to True
23302326
If True, the encoding is done such that the unique elements in the
23312327
keys are sorted.
2332-
how : {'left', 'right', 'outer', 'inner'}, default 'inner'
2333-
Type of merge.
23342328
23352329
Returns
23362330
-------
@@ -2419,8 +2413,6 @@ def _factorize_keys(
24192413
)
24202414
if dc.null_count > 0:
24212415
count += 1
2422-
if how == "right":
2423-
return rlab, llab, count
24242416
return llab, rlab, count
24252417

24262418
if not isinstance(lk, BaseMaskedArray) and not (
@@ -2491,8 +2483,6 @@ def _factorize_keys(
24912483
np.putmask(rlab, rmask, count)
24922484
count += 1
24932485

2494-
if how == "right":
2495-
return rlab, llab, count
24962486
return llab, rlab, count
24972487

24982488

0 commit comments

Comments
 (0)