1
1
from __future__ import annotations
2
2
3
3
import codecs
4
+ from collections .abc import Callable # noqa: PDF001
4
5
from functools import wraps
5
6
import re
6
7
from typing import (
7
8
TYPE_CHECKING ,
8
9
Hashable ,
9
- Pattern ,
10
10
)
11
11
import warnings
12
12
@@ -1217,7 +1217,15 @@ def fullmatch(self, pat, case=True, flags=0, na=None):
1217
1217
return self ._wrap_result (result , fill_value = na , returns_string = False )
1218
1218
1219
1219
@forbid_nonstring_types (["bytes" ])
1220
- def replace (self , pat , repl , n = - 1 , case = None , flags = 0 , regex = None ):
1220
+ def replace (
1221
+ self ,
1222
+ pat : str | re .Pattern ,
1223
+ repl : str | Callable ,
1224
+ n : int = - 1 ,
1225
+ case : bool | None = None ,
1226
+ flags : int = 0 ,
1227
+ regex : bool | None = None ,
1228
+ ):
1221
1229
r"""
1222
1230
Replace each occurrence of pattern/regex in the Series/Index.
1223
1231
@@ -1358,14 +1366,10 @@ def replace(self, pat, repl, n=-1, case=None, flags=0, regex=None):
1358
1366
1359
1367
is_compiled_re = is_re (pat )
1360
1368
if regex :
1361
- if is_compiled_re :
1362
- if (case is not None ) or (flags != 0 ):
1363
- raise ValueError (
1364
- "case and flags cannot be set when pat is a compiled regex"
1365
- )
1366
- elif case is None :
1367
- # not a compiled regex, set default case
1368
- case = True
1369
+ if is_compiled_re and (case is not None or flags != 0 ):
1370
+ raise ValueError (
1371
+ "case and flags cannot be set when pat is a compiled regex"
1372
+ )
1369
1373
1370
1374
elif is_compiled_re :
1371
1375
raise ValueError (
@@ -1374,6 +1378,9 @@ def replace(self, pat, repl, n=-1, case=None, flags=0, regex=None):
1374
1378
elif callable (repl ):
1375
1379
raise ValueError ("Cannot use a callable replacement when regex=False" )
1376
1380
1381
+ if case is None :
1382
+ case = True
1383
+
1377
1384
result = self ._data .array ._str_replace (
1378
1385
pat , repl , n = n , case = case , flags = flags , regex = regex
1379
1386
)
@@ -3044,14 +3051,14 @@ def _result_dtype(arr):
3044
3051
return object
3045
3052
3046
3053
3047
- def _get_single_group_name (regex : Pattern ) -> Hashable :
3054
+ def _get_single_group_name (regex : re . Pattern ) -> Hashable :
3048
3055
if regex .groupindex :
3049
3056
return next (iter (regex .groupindex ))
3050
3057
else :
3051
3058
return None
3052
3059
3053
3060
3054
- def _get_group_names (regex : Pattern ) -> list [Hashable ]:
3061
+ def _get_group_names (regex : re . Pattern ) -> list [Hashable ]:
3055
3062
"""
3056
3063
Get named groups from compiled regex.
3057
3064
0 commit comments