11
11
from typing import (
12
12
TYPE_CHECKING ,
13
13
Hashable ,
14
- List ,
15
- Optional ,
16
- Tuple ,
17
14
cast ,
18
15
)
19
16
import warnings
@@ -94,16 +91,16 @@ def merge(
94
91
left : FrameOrSeriesUnion ,
95
92
right : FrameOrSeriesUnion ,
96
93
how : str = "inner" ,
97
- on : Optional [ IndexLabel ] = None ,
98
- left_on : Optional [ IndexLabel ] = None ,
99
- right_on : Optional [ IndexLabel ] = None ,
94
+ on : IndexLabel | None = None ,
95
+ left_on : IndexLabel | None = None ,
96
+ right_on : IndexLabel | None = None ,
100
97
left_index : bool = False ,
101
98
right_index : bool = False ,
102
99
sort : bool = False ,
103
100
suffixes : Suffixes = ("_x" , "_y" ),
104
101
copy : bool = True ,
105
102
indicator : bool = False ,
106
- validate : Optional [ str ] = None ,
103
+ validate : str | None = None ,
107
104
) -> DataFrame :
108
105
op = _MergeOperation (
109
106
left ,
@@ -143,7 +140,7 @@ def _groupby_and_merge(by, left: DataFrame, right: DataFrame, merge_pieces):
143
140
by = [by ]
144
141
145
142
lby = left .groupby (by , sort = False )
146
- rby : Optional [ groupby .DataFrameGroupBy ] = None
143
+ rby : groupby .DataFrameGroupBy | None = None
147
144
148
145
# if we can groupby the rhs
149
146
# then we can get vastly better perf
@@ -186,12 +183,12 @@ def _groupby_and_merge(by, left: DataFrame, right: DataFrame, merge_pieces):
186
183
def merge_ordered (
187
184
left : DataFrame ,
188
185
right : DataFrame ,
189
- on : Optional [ IndexLabel ] = None ,
190
- left_on : Optional [ IndexLabel ] = None ,
191
- right_on : Optional [ IndexLabel ] = None ,
186
+ on : IndexLabel | None = None ,
187
+ left_on : IndexLabel | None = None ,
188
+ right_on : IndexLabel | None = None ,
192
189
left_by = None ,
193
190
right_by = None ,
194
- fill_method : Optional [ str ] = None ,
191
+ fill_method : str | None = None ,
195
192
suffixes : Suffixes = ("_x" , "_y" ),
196
193
how : str = "outer" ,
197
194
) -> DataFrame :
@@ -327,9 +324,9 @@ def _merger(x, y) -> DataFrame:
327
324
def merge_asof (
328
325
left : DataFrame ,
329
326
right : DataFrame ,
330
- on : Optional [ IndexLabel ] = None ,
331
- left_on : Optional [ IndexLabel ] = None ,
332
- right_on : Optional [ IndexLabel ] = None ,
327
+ on : IndexLabel | None = None ,
328
+ left_on : IndexLabel | None = None ,
329
+ right_on : IndexLabel | None = None ,
333
330
left_index : bool = False ,
334
331
right_index : bool = False ,
335
332
by = None ,
@@ -614,17 +611,17 @@ def __init__(
614
611
left : FrameOrSeriesUnion ,
615
612
right : FrameOrSeriesUnion ,
616
613
how : str = "inner" ,
617
- on : Optional [ IndexLabel ] = None ,
618
- left_on : Optional [ IndexLabel ] = None ,
619
- right_on : Optional [ IndexLabel ] = None ,
614
+ on : IndexLabel | None = None ,
615
+ left_on : IndexLabel | None = None ,
616
+ right_on : IndexLabel | None = None ,
620
617
axis : int = 1 ,
621
618
left_index : bool = False ,
622
619
right_index : bool = False ,
623
620
sort : bool = True ,
624
621
suffixes : Suffixes = ("_x" , "_y" ),
625
622
copy : bool = True ,
626
623
indicator : bool = False ,
627
- validate : Optional [ str ] = None ,
624
+ validate : str | None = None ,
628
625
):
629
626
_left = _validate_operand (left )
630
627
_right = _validate_operand (right )
@@ -650,7 +647,7 @@ def __init__(
650
647
651
648
self .indicator = indicator
652
649
653
- self .indicator_name : Optional [ str ]
650
+ self .indicator_name : str | None
654
651
if isinstance (self .indicator , str ):
655
652
self .indicator_name = self .indicator
656
653
elif isinstance (self .indicator , bool ):
@@ -743,14 +740,14 @@ def get_result(self) -> DataFrame:
743
740
return result .__finalize__ (self , method = "merge" )
744
741
745
742
def _maybe_drop_cross_column (
746
- self , result : DataFrame , cross_col : Optional [ str ]
743
+ self , result : DataFrame , cross_col : str | None
747
744
) -> None :
748
745
if cross_col is not None :
749
746
result .drop (columns = cross_col , inplace = True )
750
747
751
748
def _indicator_pre_merge (
752
749
self , left : DataFrame , right : DataFrame
753
- ) -> Tuple [DataFrame , DataFrame ]:
750
+ ) -> tuple [DataFrame , DataFrame ]:
754
751
755
752
columns = left .columns .union (right .columns )
756
753
@@ -830,8 +827,8 @@ def _maybe_restore_index_levels(self, result: DataFrame) -> None:
830
827
def _maybe_add_join_keys (
831
828
self ,
832
829
result : DataFrame ,
833
- left_indexer : Optional [ np .ndarray ] ,
834
- right_indexer : Optional [ np .ndarray ] ,
830
+ left_indexer : np .ndarray | None ,
831
+ right_indexer : np .ndarray | None ,
835
832
) -> None :
836
833
837
834
left_has_missing = None
@@ -1274,7 +1271,7 @@ def _maybe_coerce_merge_keys(self) -> None:
1274
1271
1275
1272
def _create_cross_configuration (
1276
1273
self , left : DataFrame , right : DataFrame
1277
- ) -> Tuple [DataFrame , DataFrame , str , str ]:
1274
+ ) -> tuple [DataFrame , DataFrame , str , str ]:
1278
1275
"""
1279
1276
Creates the configuration to dispatch the cross operation to inner join,
1280
1277
e.g. adding a join column and resetting parameters. Join column is added
@@ -1498,7 +1495,7 @@ def restore_dropped_levels_multijoin(
1498
1495
join_index : Index ,
1499
1496
lindexer : np .ndarray ,
1500
1497
rindexer : np .ndarray ,
1501
- ) -> Tuple [ List [Index ], np .ndarray , List [Hashable ]]:
1498
+ ) -> tuple [ list [Index ], np .ndarray , list [Hashable ]]:
1502
1499
"""
1503
1500
*this is an internal non-public method*
1504
1501
@@ -1592,15 +1589,15 @@ def __init__(
1592
1589
self ,
1593
1590
left : DataFrame ,
1594
1591
right : DataFrame ,
1595
- on : Optional [ IndexLabel ] = None ,
1596
- left_on : Optional [ IndexLabel ] = None ,
1597
- right_on : Optional [ IndexLabel ] = None ,
1592
+ on : IndexLabel | None = None ,
1593
+ left_on : IndexLabel | None = None ,
1594
+ right_on : IndexLabel | None = None ,
1598
1595
left_index : bool = False ,
1599
1596
right_index : bool = False ,
1600
1597
axis : int = 1 ,
1601
1598
suffixes : Suffixes = ("_x" , "_y" ),
1602
1599
copy : bool = True ,
1603
- fill_method : Optional [ str ] = None ,
1600
+ fill_method : str | None = None ,
1604
1601
how : str = "outer" ,
1605
1602
):
1606
1603
@@ -1686,9 +1683,9 @@ def __init__(
1686
1683
self ,
1687
1684
left : DataFrame ,
1688
1685
right : DataFrame ,
1689
- on : Optional [ IndexLabel ] = None ,
1690
- left_on : Optional [ IndexLabel ] = None ,
1691
- right_on : Optional [ IndexLabel ] = None ,
1686
+ on : IndexLabel | None = None ,
1687
+ left_on : IndexLabel | None = None ,
1688
+ right_on : IndexLabel | None = None ,
1692
1689
left_index : bool = False ,
1693
1690
right_index : bool = False ,
1694
1691
by = None ,
@@ -1697,7 +1694,7 @@ def __init__(
1697
1694
axis : int = 1 ,
1698
1695
suffixes : Suffixes = ("_x" , "_y" ),
1699
1696
copy : bool = True ,
1700
- fill_method : Optional [ str ] = None ,
1697
+ fill_method : str | None = None ,
1701
1698
how : str = "asof" ,
1702
1699
tolerance = None ,
1703
1700
allow_exact_matches : bool = True ,
@@ -2031,7 +2028,7 @@ def _left_join_on_index(
2031
2028
2032
2029
def _factorize_keys (
2033
2030
lk : ArrayLike , rk : ArrayLike , sort : bool = True , how : str = "inner"
2034
- ) -> Tuple [np .ndarray , np .ndarray , int ]:
2031
+ ) -> tuple [np .ndarray , np .ndarray , int ]:
2035
2032
"""
2036
2033
Encode left and right keys as enumerated types.
2037
2034
0 commit comments