60
60
import pyarrow as pa
61
61
import pyarrow .compute as pc
62
62
63
+ from pandas .core .arrays .arrow ._arrow_utils import fallback_performancewarning
64
+
63
65
ARROW_CMP_FUNCS = {
64
66
"eq" : pc .equal ,
65
67
"ne" : pc .not_equal ,
@@ -331,6 +333,7 @@ def _maybe_convert_setitem_value(self, value):
331
333
332
334
def isin (self , values ):
333
335
if pa_version_under2p0 :
336
+ fallback_performancewarning (version = "2" )
334
337
return super ().isin (values )
335
338
336
339
value_set = [
@@ -437,10 +440,12 @@ def _str_map(
437
440
438
441
def _str_contains (self , pat , case = True , flags = 0 , na = np .nan , regex : bool = True ):
439
442
if flags :
443
+ fallback_performancewarning ()
440
444
return super ()._str_contains (pat , case , flags , na , regex )
441
445
442
446
if regex :
443
447
if pa_version_under4p0 or case is False :
448
+ fallback_performancewarning (version = "4" )
444
449
return super ()._str_contains (pat , case , flags , na , regex )
445
450
else :
446
451
result = pc .match_substring_regex (self ._data , pat )
@@ -456,13 +461,15 @@ def _str_contains(self, pat, case=True, flags=0, na=np.nan, regex: bool = True):
456
461
457
462
def _str_startswith (self , pat : str , na = None ):
458
463
if pa_version_under4p0 :
464
+ fallback_performancewarning (version = "4" )
459
465
return super ()._str_startswith (pat , na )
460
466
461
467
pat = "^" + re .escape (pat )
462
468
return self ._str_contains (pat , na = na , regex = True )
463
469
464
470
def _str_endswith (self , pat : str , na = None ):
465
471
if pa_version_under4p0 :
472
+ fallback_performancewarning (version = "4" )
466
473
return super ()._str_endswith (pat , na )
467
474
468
475
pat = re .escape (pat ) + "$"
@@ -484,6 +491,7 @@ def _str_replace(
484
491
or not case
485
492
or flags
486
493
):
494
+ fallback_performancewarning (version = "4" )
487
495
return super ()._str_replace (pat , repl , n , case , flags , regex )
488
496
489
497
func = pc .replace_substring_regex if regex else pc .replace_substring
@@ -494,6 +502,7 @@ def _str_match(
494
502
self , pat : str , case : bool = True , flags : int = 0 , na : Scalar | None = None
495
503
):
496
504
if pa_version_under4p0 :
505
+ fallback_performancewarning (version = "4" )
497
506
return super ()._str_match (pat , case , flags , na )
498
507
499
508
if not pat .startswith ("^" ):
@@ -504,6 +513,7 @@ def _str_fullmatch(
504
513
self , pat , case : bool = True , flags : int = 0 , na : Scalar | None = None
505
514
):
506
515
if pa_version_under4p0 :
516
+ fallback_performancewarning (version = "4" )
507
517
return super ()._str_fullmatch (pat , case , flags , na )
508
518
509
519
if not pat .endswith ("$" ) or pat .endswith ("//$" ):
@@ -536,6 +546,7 @@ def _str_isnumeric(self):
536
546
537
547
def _str_isspace (self ):
538
548
if pa_version_under2p0 :
549
+ fallback_performancewarning (version = "2" )
539
550
return super ()._str_isspace ()
540
551
541
552
result = pc .utf8_is_space (self ._data )
@@ -551,6 +562,7 @@ def _str_isupper(self):
551
562
552
563
def _str_len (self ):
553
564
if pa_version_under4p0 :
565
+ fallback_performancewarning (version = "4" )
554
566
return super ()._str_len ()
555
567
556
568
result = pc .utf8_length (self ._data )
@@ -564,6 +576,7 @@ def _str_upper(self):
564
576
565
577
def _str_strip (self , to_strip = None ):
566
578
if pa_version_under4p0 :
579
+ fallback_performancewarning (version = "4" )
567
580
return super ()._str_strip (to_strip )
568
581
569
582
if to_strip is None :
@@ -574,6 +587,7 @@ def _str_strip(self, to_strip=None):
574
587
575
588
def _str_lstrip (self , to_strip = None ):
576
589
if pa_version_under4p0 :
590
+ fallback_performancewarning (version = "4" )
577
591
return super ()._str_lstrip (to_strip )
578
592
579
593
if to_strip is None :
@@ -584,6 +598,7 @@ def _str_lstrip(self, to_strip=None):
584
598
585
599
def _str_rstrip (self , to_strip = None ):
586
600
if pa_version_under4p0 :
601
+ fallback_performancewarning (version = "4" )
587
602
return super ()._str_rstrip (to_strip )
588
603
589
604
if to_strip is None :
0 commit comments