
     -ix              	          S r SSKrSSKrSSKrSSKJr  SSKJr  SSK	J
r
Jr  SSKJs  Jr  SSKJr  SSKrSSKJr  SSKJr  SSKJrJr  \R8                  S	 5       r\R8                  S
 5       r\R8                  S 5       rS r S r!S r"S r#S r$S r%S r&S r'S r(S r)S r*S r+S r,S r-\R\                  R_                  SS9S 5       r0\R\                  R_                  SS9S 5       r1S r2S r3S  r4S! r5\Rl                  " S"5      S# 5       r7S$ r8S% r9\R\                  Ru                  S&\Rv                  \Rx                  " S'5      \=" S'5      S\R|                  /5      S( 5       r?\R\                  Ru                  S)S*S+/5      S, 5       r@S- rAS. rBS/ rC\R\                  Ru                  S0S*S+/5      S1 5       rD\R\                  Ru                  S0S*S+/5      S2 5       rE\R\                  Ru                  S3S4S5/5      \R\                  Ru                  S0S*S+/5      S6 5       5       rF\R\                  Ru                  S3S4S5/5      \R\                  Ru                  S7\R                  \R                  /5      S8 5       5       rIS9 rJS: rK\R\                  R                  S;5      S< 5       rM\R\                  R                  S;5      S= 5       rN\R\                  R                  S;5      S> 5       rOS? rPS@ rQ\R\                  Ru                  SA/ SBQ\R                  " / SCQ5      4/ SDQ\R                  " / SEQ5      4/5      SF 5       rRSG rSSH rT\R\                  Ru                  SI\R                  \R                  \Rx                  /5      SJ 5       rWSK rXSL rYSM rZSN r[SO r\SP r]SQ r^SR r_\R\                  Ru                  S7\R                  \R                  /5      SS 5       r`g)Tz
This module tests the functionality of StringArray and ArrowStringArray.
Tests for the str accessors are in pandas/tests/strings/test_string_array.py
    N)using_string_dtype)HAS_PYARROW)pa_version_under12p0pa_version_under19p0)is_dtype_equal)StringArrayNumpySemantics)ArrowStringArrayArrowStringArrayNumpySemanticsc                 2    U u  p[         R                  " XS9$ )zKFixture giving StringDtype from parametrized storage and na_value argumentsstoragena_valuepdStringDtype)string_dtype_argumentsr   r   s      Z/var/www/html/venv/lib/python3.13/site-packages/pandas/tests/arrays/string_/test_string.pydtyper      s     /G>>'==    c                 2    U u  p[         R                  " XS9$ )Nr   r   )string_dtype_arguments2r   r   s      r   dtype2r   %   s    /G>>'==r   c                 "    U R                  5       $ )z3Fixture giving array type from parametrized 'dtype')construct_array_typer   s    r   clsr   +   s     %%''r   c                    [         (       a  [        R                  " S[        R                  S9[        R                  " S[        R                  S9[        R                  " S[        R
                  S9[        R                  " S[        R
                  S9/nOF[        R                  " S[        R                  S9[        R                  " S[        R
                  S9/nUR                  U 5      nUR                  U5      nU[        X45         $ )Npythonr   pyarrow)r   r   r   npnanNAindexmax)dtype1r   DTYPE_HIERARCHYh1h2s        r   string_dtype_highest_priorityr*   1   s    {NN8bff5NN9rvv6NN8bee4NN9ruu5	
 NN8bff5NN8bee4

 
		v	&B			v	&B3r;''r   c                     [         R                  " S5        [        R                  " [        5         [
        R                  " S5      n S S S 5        W [
        R                  " S[        R                  S9:X  d   eg ! , (       d  f       N8= f)Nr    pyarrow_numpyr   )	pytestimportorskiptmassert_produces_warningFutureWarningr   r   r!   r"   r   s    r   test_dtype_constructorr2   D   sW    
	"		#	#M	2/ 
3BNN9rvv>>>> 
3	2s   A::
Bc                  `   [         R                  " S5        [        R                  " S5      n [        R                  " S5      n[        R                  " S[        R
                  S9nU [        R                  " S[        R                  S9:X  d   eX:w  d   eX:w  d   eU[        R                  " S[        R                  S9:X  d   eX:w  d   eX:w  d   eU[        R                  " S[        R
                  S9:X  d   eU[        R                  " S[        S5      S9:X  d   eX :w  d   eX!:w  d   eg )Nr    r   r   r"   )r-   r.   r   r   r!   r"   r#   float)r&   r   dtype3s      r   test_dtype_equalityr6   L   s    
	"^^H%F^^I&F^^I7FR^^Hruu====R^^I>>>>R^^I????R^^IeEEEEr   c                    [         R                  " S[         R                  " S[         R                  S/U S905      nU R                  [
        R                  L a  SnOSn[        U5      U:X  d   eU R                  [
        R                  L a  SnOSn[        UR                  5      U:X  d   eU R                  S	:X  a&  U R                  [         R                  L a	  S
nSU S3nOtU R                  S	:X  a&  U R                  [
        R                  L a	  SnSU S3nO>U R                  S:X  a&  U R                  [
        R                  L a	  SnSU S3nOSnSU S3n[        UR                  R                  5      U:X  d   eg )NAabr   z     A
0    a
1  NaN
2    bz      A
0     a
1  <NA>
2     bz.0      a
1    NaN
2      b
Name: A, dtype: strz40       a
1    <NA>
2       b
Name: A, dtype: stringr    r	   <z+>
['a', <NA>, 'b']
Length: 3, dtype: stringr
   z'>
['a', nan, 'b']
Length: 3, dtype: strr   r   StringArray)
r   	DataFramearrayr#   r   r!   r"   reprr8   r   )r   dfexpectedarr_names       r   	test_reprrC   a   sC   	sBHHc255#%6eDE	FB~~378x~~FL:!!!}}	!enn&=%xj MN	)	#"&&(@3xj IJ	(	"u~~'?.xj IJ xj MN

x'''r   c                 &   U R                   S:X  aA  U R                  [        R                  L a  [	        U 5      S:X  d   eg [	        U 5      S:X  d   eg U R                  [        R                  L a  [	        U 5      S:X  d   eg [	        U 5      S:X  d   eg )Nr    zstring[pyarrow]z<StringDtype(na_value=nan)>zstring[python]z-<StringDtype(storage='python', na_value=nan)>)r   r   r   r#   r?   r   s    r   test_dtype_reprrE   ~   sz    }}	!>>RUU";"3333;"????	255	 E{....E{MMMMr   c                 t    U R                  / SQUS9nUS   c   eUS   UR                  R                  L d   eg )N)r9   Nr:   r      )_from_sequencer   r   )r   r   r9   s      r   test_none_to_nanrI      sD    +59AQ4Q4177#####r   c                 <   U R                  SS/US9nSn[        R                  " [        US9   SUS'   S S S 5        Sn[        R                  " [        US9   [        R
                  " S	S
/5      US S & S S S 5        g ! , (       d  f       NN= f! , (       d  f       g = f)Nr9   r:   r   z!Invalid value '10' for dtype 'strmatch
   r   zInvalid value for dtype 'strrG      )rH   r-   raises	TypeErrorr!   r>   )r   r   arrmsgs       r   test_setitem_validatesrS      s    


c3Zu

5C
-C	y	,A 
- )C	y	,1a&!A 
-	,	 
-	, 
-	,s   A<B<
B

Bc                     [         R                  " SS/U S9nSUS'   [         R                  " SS/U S9n[        R                  " X5        g )Nr9   cr   dr   r   r>   r/   assert_extension_array_equal)r   rQ   rA   s      r   test_setitem_with_scalar_stringrY      sC     ((C:U
+CCFxxc
%0H##C2r   c                 2   [         R                  " / SQU S9n[        R                  " SS /5      nUR                  5       nX!SS/'   [         R                  " S[         R                  S/U S9n[
        R                  " X5        [
        R                  " X#5        g )Nr9   r:   rU   r   r8   r   rG   rU   )r   r>   r!   copyr#   r/   rX   assert_numpy_array_equal)r   rQ   value
value_origrA   s        r   $test_setitem_with_array_with_missingr`      ss     ((?%
0CHHc4[!EJAKxxbeeS)7H##C22r   c                    [         R                  " [         R                  " SSS95      nS US'   UR                  U 5      n[	        UR
                  U 5      (       d   eUR                  S5      n[        R                  " X15        XR                  S   -
  nUR                  U 5      n[	        UR
                  U 5      (       d   eUR                  UR
                  5      n[        R                  " Xd5        g )N2000   )periodsr   zdatetime64[ns])	r   Series
date_rangeastyper   r   r/   assert_series_equaliloc)r   sercastedresultser2casted2result2s          r   test_astype_roundtriprq      s    
))BMM&"5
6CCFZZF&,,....]]+,F6' "Dkk% G'--////nnTZZ(G7)r   c                    [         R                  " / SQU S9n[         R                  " / SQU S9nX-   n[         R                  " / SQU S9n[        R                  " X45        UR	                  U5      n[        R                  " X45        UR                  U5      n[         R                  " / SQU S9n[        R                  " X45        UR	                  USS9n[         R                  " / SQU S9n[        R                  " X45        g )	N)r9   r:   rU   NNr   )xyNzN)axbyNNN)xaybNNN-)
fill_value)rv   rw   zc-z-zN)r   rf   r/   ri   addradd)r   r9   r:   rm   rA   s        r   test_addr~      s    
		-U;A
		-U;AUFyy7uEH6,UU1XF6,VVAYFyy7uEH6,UU1U%Fyy7uEH6,r   c                    U R                   S:X  a1  Sn[        R                  R                  S US9nUR	                  U5        [
        R                  " / SQU S9n[        R                  " / SQ/[        S9n[        R                  " [        SS9   XE-     S S S 5        [
        R                  " U5      n[        R                  " [        SS9   Xe-     S S S 5        g ! , (       d  f       NK= f! , (       d  f       g = f)Nr    z*Failed: DID NOT RAISE <class 'ValueError'>rO   reasonr[   r   z3 != 1rK   )r   r-   markxfailapplymarkerr   r>   r!   objectrO   
ValueErrorrf   )r   requestr   r   r9   r:   ss          r   test_add_2dr      s    }}	!={{  V <D!
.A
/"&1A	z	2	 
3 			!A	z	2	 
3	2	 
3	2 
3	2s   C
C)
C&)
C7c                     [         R                  " / SQU S9n/ SQnX-   n[         R                  " / SQU S9n[        R                  " X45        X!-   n[         R                  " / SQU S9n[        R                  " X45        g )N)r9   r:   NNr   )rs   Nrt   N)rv   NNN)rx   NNNrW   )r   r9   otherrm   rA   s        r   test_add_sequencer      sd    
'u5A"EYFxx0>H##F5YFxx0>H##F5r   c                     [         R                  " / SQU S9nUS-  n[         R                  " / SQU S9n[        R                  " X#5        SU-  n[        R                  " X#5        g )Nr9   r:   Nr   rN   )aabbNrW   )r   r9   rm   rA   s       r   test_mulr      sR    
!/AUFxx*%8H##F5UF##F5r   zGH-28527)r   c                    [         R                  " / SQU S9n[         R                  " / SQ/[        S9nUR	                  U5      [
        L d   eX-   n[         R                  " / SQ/5      R                  U 5      n[        R                  " X45        X!-   n[         R                  " / SQ/5      R                  U 5      n[        R                  " X45        g )N)r9   r:   rU   rV   r   )trt   vw)atrw   cvdw)tary   vcwd)	r   r>   r=   r   __add__NotImplementedrh   r/   assert_frame_equalr   rQ   r@   rm   rA   s        r   test_add_stringsr      s    
(('u
5C	+,F	;B;;r?n,,,XF||567>>uEH&+XF||567>>uEH&+r   c                    [         R                  " SS[        R                  [        R                  /U S9n[         R                  " S[        R                  S[        R                  //5      nUR                  U5      [        L d   eX-   n[         R                  " S[        R                  [        R                  [        R                  //5      R                  U 5      n[        R                  " X45        X!-   n[         R                  " S[        R                  [        R                  [        R                  //5      R                  U 5      n[        R                  " X45        g )Nr9   r:   r   rs   rt   rv   rx   )
r   r>   r!   r"   r=   r   r   rh   r/   r   r   s        r   test_add_framer     s    
((Cbffbff-U
;C	RVVS"&&12	3B;;r?n,,,XF||dBFFBFFBFF;<=DDUKH&+XF||dBFFBFFBFF;<=DDUKH&+r   c           	         SU R                    S3n[        R                  " / SQUS9nSn[        X25      " U5      nUR                  [
        R                  L a  [
        R                  " U Vs/ s H  n[        Xb5      " U5      PM     sn5      nU [        R                  :X  a  SUS'   OSUS'   [        R                  " XWR                  [
        R                  5      5        g UR                  S:X  a  S	OS
n[
        R                  " U Vs/ s H  n[        Xb5      " U5      PM     sn[        S9n[        R                  " XxS9n[        R                  " XW5        g s  snf s  snf )N__r9   NrU   r   r9   TrG   Fr    boolean[pyarrow]boolean)__name__r   r>   getattrr   r!   r"   operatorner/   r]   rh   bool_r   r   rX   )	comparison_opr   op_namer9   r   rm   itemrA   expected_dtypes	            r   test_comparison_methods_scalarr     s   =))*"-G
!/AEQ 'F~~88qIqtWT3E:qIJHKK'HQKHQK
##FOOBHH,EF/4}}	/I+y88qIqtWT3E:qIQWX88H;
''9 J Js   ,E	Ec                 0   SU R                    S3n[        R                  " / SQUS9n[        X25      " [        R                  5      nUR
                  [        R                  L a\  [        R                  U :X  a  [        R                  " / SQ5      nO[        R                  " / SQ5      n[        R                  " XE5        g UR                  S:X  a  SOSn[        R                  " / S	QUS9n[        R                  " XE5        [        R                  " XE5        g )
Nr   r   r   TTTFFFr    r   r   )NNN)r   r   r>   r   r#   r   r!   r"   r   r   r/   r]   r   rX   )r   r   r   r9   rm   rA   r   s          r   $test_comparison_methods_scalar_pd_nar   2  s    =))*"-G
!/AQ 'F~~;;-'xx 23Hxx 56H
##F5/4}}	/I+y88.nE
''9
''9r   c                 N   SU R                    S3n[        R                  " / SQUS9nSnUS;  a4  [        R                  " [
        SS9   [        X25      " U5        S S S 5        g [        X25      " U5      nUR                  [        R                  L a9  / SQ/ S	QS.U   n[        R                  " U5      n[        R                  " XW5        g / S
Q/ SQS.U   nUR                  S:X  a  SOSn[        R                  " XhS9n[        R                  " XW5        g ! , (       d  f       g = f)Nr   r   r   *   )__eq____ne__z(Invalid comparison|not supported betweenrK   r   r   )FNF)TNTr    r   r   )r   r   r>   r-   rO   rP   r   r   r!   r"   r/   r]   r   rX   )	r   r   r   r9   r   rm   expected_datarA   r   s	            r   )test_comparison_methods_scalar_not_stringr   D  s   =))*"-G
!/AE**]]9,VWA& X 	Q 'F~~+(
  88M*
##F5#7CUV
 05}}	/I+y88M@
''9) XW 	s   	D
D$c                 6   SU R                    S3n[        R                  " / SQUS9n[        R                  " / SQUS9nU " XE5      nU " XT5      n[        R                  " Xg5        UR
                  [        R                  L a  UR
                  [        R                  L aw  [        R                  U :X  a  [        R                  " / SQ5      nO3[        R                  " / SQ5      n[        US   U5      " US   5      US'   [        R                  " Xh5        g [        X5      n	U	R                  S:X  a  S	n
OS
n
[        R                  " [        U5      S SS9n[        US   U5      " US   5      US'   [        R                  " XS9n[        R                   " Xh5        g )Nr   r   r   NNrU   TTFr   re   r   r   bool[pyarrow]r   r{   r   )r   r   r>   r/   assert_equalr   r!   r"   r   r   r   r]   r*   r   fulllenrX   )r   r   r   r   r9   r   rm   rp   rA   	max_dtyper   s              r   test_comparison_methods_arrayr   b  sB   =))*"-G
!/AHH&f5E1$F E%GOOF$~~FOOrvv$=;;-'xx 34Hxx 56H"59g6qu=HRL
##F5 2%@	(&N,N773q6d(CuRy'21R5988H;
''9r   r    c                    SS K nSU R                   S3n[        R                  " UR	                  5       5      n[        R
                  " / SQUS9n[        R
                  " / SQUS9nU " XV5      nU " Xe5      n[        R                  " Xx5        [        R
                  " / SQSS9n	[        US   U5      " US   5      U	S'   [        R                  " Xy5        g )	Nr   r   r   r   r   )NNTr   re   )
r    r   r   
ArrowDtypestringr>   r/   r   r   rX   )
r   r   par   r   r9   r   rm   rp   rA   s
             r   -test_comparison_methods_array_arrow_extensionr     s     =))*"-GMM"))+&E
!/AHH&f5E1$F E%GOOF$xx*/BH59g.qu5HRL##F5r   c                    SU R                    S3n[        R                  " / SQUS9n/ SQnU " X45      nU " XC5      n[        R                  " XV5        UR
                  [        R                  L aw  [        R                  U :X  a  [        R                  " / SQ5      nO3[        R                  " / SQ5      n[        US   U5      " US   5      US'   [        R                  " XW5        g UR                  S:X  a  S	OS
n[        R                  " [        U5      S SS9n[        US   U5      " US   5      US'   [        R                  " XxS9n[        R                  " XW5        g )Nr   r   r   r   r   r   re   r    r   r   r   r   )r   r   r>   r/   r   r   r!   r"   r   r   r   r]   r   r   r   rX   )	r   r   r   r9   r   rm   rp   rA   r   s	            r   test_comparison_methods_listr     s   =))*"-G
!/AE1$F E%GOOF$~~;;-'xx 34Hxx 56H"59g6qu=HRL
##F5 05}}	/I+y773q6d(CuRy'21R5988H;
''9r   c           
      j   U [         R                  R                  L a  SnOU [        L a  SnOSn[        R
                  " [        US9   U " [        R                  " SS/SS95        S S S 5        [        R
                  " [        US9   U " [        R                  " / 5      5        S S S 5        U [         R                  R                  L d	  U [        L aQ  U " [        R                  " S[        R                  /[        S95        U " [        R                  " SS /[        S95        O[        R
                  " [        US9   U " [        R                  " S[        R                  /[        S95        S S S 5        [        R
                  " [        US9   U " [        R                  " SS /[        S95        S S S 5        [        R
                  " [        US9   U " [        R                  " S[         R                  /[        S95        S S S 5        [        R
                  " [        US9   U " [        R                  " S[        R                  " S	S
5      /[        S95        S S S 5        [        R
                  " [        US9   U " [        R                  " S[        R                  " S	S
5      /[        S95        S S S 5        g ! , (       d  f       GNZ= f! , (       d  f       GN.= f! , (       d  f       GNx= f! , (       d  f       GNG= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)Nz7StringArray requires a sequence of strings or pandas.NAz?StringArrayNumpySemantics requires a sequence of strings or NaNzBUnsupported type '<class 'numpy.ndarray'>' for ArrowExtensionArrayrK   r9   r:   S1r   NaTns)r   arraysr<   r   r-   rO   r   r!   r>   r"   r   r   
datetime64timedelta64)r   rR   s     r   test_constructor_raisesr     s   
bii###G	)	)OR	z	-BHHc3Zt,- 
. 
z	-BHHRL 
. bii###s.G'G 	BHHc266]&12BHHc4[/0]]:S1#rvvf56 2]]:S1#tF34 2 
z	-BHHc266]&12 
. 
z	-BHHc2==56fEF 
. 
z	-BHHc2>>%67vFG 
.	-/ 
.	- 
.	- 2111 
.	- 
.	- 
.	-sT   J9K<0K"K/0L!7L97L$9
K
K
K,/
K>
L
L!$
L2nar"   c           	         [         R                  R                  [        R                  " S[         R
                  /5      5      n[        R                  " [         R                  R                  [        R                  " SU /SS95      U5        g )Nr9   r   r   )r   r   r<   r!   r>   r#   r/   rX   )r   rA   s     r   test_constructor_nan_liker     sX    yy$$RXXsBEEl%;<H##
		bhhRyABHr   r\   TFc                    [         R                  " S[         R                  /[        S9nUR	                  5       n[         R                  " S[
        R                  /[        S9nUR                  X2U S9nU[        [        4;   a)  SS K
nU" UR                  XWR                  5       SS95      nOU[        L a	  U" U5      nOU" U5      n[        R                  " Xh5        [        R                  " X45        g )Nr9   r   )r   r\   r   Ttypefrom_pandas)r!   r>   r"   r   r\   r   r#   rH   r	   r
   r    r   r   r/   rX   r]   )	r\   r   r   nan_arrexpected_inputna_arrrm   r   rA   s	            r   test_from_sequence_no_mutater     s    hhRVV}F3G\\^NXXsBEEl&1F4@F
!?@@rxxYY[dxKL	)	)w<v;##F58r   c                    [         R                  " / SQU S9nUR                  S5      n[        R                  " / SQSS9n[        R
                  " X#5        [         R                  " S[         R                  S/U S9nU R                  [        R                  L a	  [        nSnO[        nSn[        R                  " XES	9   UR                  S5        S S S 5        g ! , (       d  f       g = f)
N)123r   int64rG   rN      r   r   z#cannot convert float NaN to integerzJint\(\) argument must be a string, a bytes-like object or a( real)? numberrK   )r   r>   rh   r!   r/   r]   r#   r   r"   r   rP   r-   rO   )r   rQ   rm   rA   errrR   s         r   test_astype_intr     s    
((?%
0CZZ Fxx	1H1
((C$E
2C~~3* 	 
s	&

7 
'	&	&s   >C
C'c                     [         R                  " S[         R                  S/U S9nUR                  S5      n[         R                  " S[         R                  S/SS9n[        R
                  " X#5        g )Nr   r   r   Int64rG   r   )r   r>   r#   rh   r/   rX   r   rQ   rm   rA   s       r   test_astype_nullable_intr     sS    
((C$E
2CZZ FxxBEE1W5H##F5r   c                     [         R                  " S[         R                  S/U S9nUR                  U5      n[         R                  " S[        R
                  S/US9n[        R                  " X45        g )Nz1.1z3.3r   g?gffffff
@)r   rf   r#   rh   r!   r"   r/   ri   )r   any_float_dtyperk   rm   rA   s        r   test_astype_floatr     sT    
))UBEE5)
7CZZ(Fyy#rvvs+?CH6,r   skipnac                 `    [         R                  " / SQUS9nUR                  U S9nUS:X  d   eg )Nr[   r   r   abc)r   rf   sumr   r   rQ   rm   s       r   test_reducer     s.    
))O5
1CWWFW#FU??r   c                     [         R                  " / SQUS9nUR                  U S9nU (       a	  US:X  d   eg [         R                  " U5      (       d   eg )N)Nr9   Nr:   rU   Nr   r   r   )r   rf   r   isnar   s       r   test_reduce_missingr     sD    
))5U
CCWWFW#Fwwvr   methodminr%   c                     [         R                  " / SQUS9n[        X05      " US9nU(       a  U S:X  a  SOSnXE:X  d   eg XCR                  R                  L d   eg )Nr9   r:   rU   Nr   r   r   r9   rU   )r   rf   r   r   r   )r   r   r   rQ   rm   rA   s         r   test_min_maxr   &  sV     )))
7CS!0F E/3s!!!+++++r   boxc                 @   UR                   S:X  a^  U[        R                  L aK  U[        R                  L a  SnOSn[        R                  R                  [        US9nUR                  U5        U" / SQUS9n[        [        U 5      " U5      nU S:X  a  SOS	nXx:X  d   eg )
Nr    z<'<=' not supported between instances of 'str' and 'NoneType'z0'ArrowStringArray' object has no attribute 'max'r   r   r   r   r9   rU   )
r   r   r>   r-   r   r   rP   r   r   r!   )	r   r   r   r   r   r   rQ   rm   rA   s	            r   test_min_max_numpyr  2  s     }}	!cRXXo"((?SFGF{{  	& AD!
#5
1CR %Fos3Hr   c                    [         R                  " S[         R                  /U S9nUR                  SS9n[         R                  " SS/U S9n[        R
                  " X#5        UR                  [        R                  " S5      S9n[         R                  " SS/U S9n[        R
                  " X#5        Sn[        R                  " [        US9   UR                  SS9  S S S 5        g ! , (       d  f       g = f)Nr9   r   r:   )r^    Invalid value '1' for dtype 'strrK   rG   )r   r>   r#   fillnar/   rX   r!   str_r-   rO   rP   )r   rQ   resrA   rR   s        r   test_fillna_argsr  C  s     ((C<u
-C
**3*
Cxxc
%0H##C2
**2773<*
(Cxxc
%0H##C2
,C	y	,


 
-	,	,s   C&&
C4c                    [         R                  " S5      nSS KJn  [        R
                  " / SQU S9nUR                  U5      nUR                  [        U5      UR                  5       SS9nU R                  S:X  a  [        (       a  UR                  U5      nU R                  S:X  a  UR                  XQR                  5       5      nUR                  U5      (       d   eg )Nr    r   r[   r   Tr   r   )r-   r.   pyarrow.computecomputer   r>   listlarge_stringr   r   chunked_arraycastr   equals)r   r   pcdatarQ   rA   s         r   test_arrow_arrayr  U  s    			Y	'B 88O51D
((4.CxxT
):xMH}}	!&:&:##H-}} 778YY[1::hr   z0ignore:Passing a BlockManager:DeprecationWarningc                    [         R                  " S5      n[        R                  " / SQU S9n[        R                  " SU05      nUR                  U5      nU R                  S:X  a"  UR                  S5      R                  S:X  d   eO!UR                  S5      R                  S:X  d   e[        R                  " SU5         UR                  5       nS S S 5        U R                  [        R                  L a  U(       d  WS   R                  S	:X  d   eg [        WS   R                  [        R                   5      (       d   eUR#                  [        R                   " XR                  S
95      nU(       aA  UR$                  R#                  [        R                   " U[        R                  S
95      Ul        [&        R(                  " Xx5        UR*                  S   US   R                  R                  L d   eg ! , (       d  f       GN.= f)Nr    r   r   r9   r   r   r  string_storager   r   )rN   r9   )r-   r.   r   r>   r=   tabler   fieldr   option_context	to_pandasr   r!   r"   r   
isinstancer   rh   columnsr/   r   loc	r   r  using_infer_stringr   r  r@   r  rm   rA   s	            r   test_arrow_roundtripr  d  s    
		Y	'B88$E2D	sDk	"BHHRLE}} {{3$$000{{3$$666			+^	<" 
=~~(:c{  H,,,&+++R^^<<<<99R^^N^^TU'//66~? H 	f/zz&!VC[%6%6%?%???? 
=	<s   G99
Hc                 h   [         R                  " S5      nUR                  SUR                  / SQUR	                  5       S905      nUR                  5       nU (       a%  [        (       d  [        R                  " S/ SQ0SS9nO[        R                  " S/ SQ0SS9n[        R                  " X45        g )Nr    r9   r   r   strr   r   )r-   r.   r  r>   r   r  r   r   r=   r/   r   )r  r   r  rm   rA   s        r   test_arrow_from_stringr"    s     
		Y	'BHHc288$4299;8GHIE__F"6"6<<&6 7uE<<&6 7xH&+r   c                 :   [         R                  " S5      n[        R                  " / U S9n[        R                  " SU05      nUR                  U5      nU R                  S:X  a"  UR                  S5      R                  S:X  d   eO!UR                  S5      R                  S:X  d   eUR                  UR                  / UR                  5       S9/UR                  S9n[        R                  " S	U5         UR                  5       nS S S 5        U R                  [        R                   L a%  [#        5       (       d  WS   R$                  S
:X  d   eg ['        WS   R$                  [        R(                  5      (       d   eUR+                  [        R(                  " XR                  S95      nU(       aA  UR,                  R+                  [        R(                  " U[        R                   S95      Ul        [.        R0                  " Xx5        g ! , (       d  f       GN= f)Nr    r   r9   r   r   r  r   )schemar  r   r   )r-   r.   r   r>   r=   r  r   r  r   r  r   r$  r  r  r   r!   r"   r   r   r  r   rh   r  r/   r   r  s	            r    test_arrow_load_from_zero_chunksr%    s    
		Y	'B88Be$D	sDk	"BHHRLE}} {{3$$000{{3$$666HHb&&r		&<=ellHSE			+^	<" 
= ~~(:(<(<c{  H,,,&+++R^^<<<<99R^^N^^TU'//66~? H 	f/ 
=	<s   6H
Hc                    U R                   [        R                  L a  SnOU R                  S:X  a  SnOSn[        R
                  " SSS[        R                  /U S9nUR                  SS	9n[        R                  " / S
QU/ SQ   USS9n[        R                  " X45        UR                  SS	9n[        R                  " SS/US S USS9n[        R                  " X45        g )Nr   r    int64[pyarrow]r   r9   r:   r   F)dropna)rN   rG   rG   )r   rG   r   countr$   r   nameTrN   rG   )r   r!   r"   r   r   r>   r#   value_countsrf   r/   ri   )r   	exp_dtyperQ   rm   rA   s        r   test_value_counts_nar.    s    ~~		)	#$		
((Cc255)
7CU+Fyy#i.	PWXH6,T*Fyy!Qs2AwigNH6,r   c                 `   U R                   [        R                  L a  [        R                  nOU R                  S:X  a  SnOSn[
        R                  " SSS[
        R                  /U S9nUR                  SS9n[
        R                  " S	S
/US S	 USS9S-  n[        R                  " X45        g )Nr    zdouble[pyarrow]Float64r9   r:   r   T)	normalizerN   rG   
proportionr*  r   )r   r!   r"   float64r   r   rf   r#   r,  r/   ri   r   r-  rk   rm   rA   s        r    test_value_counts_with_normalizer5    s    ~~JJ		)	#%		
))S#sBEE*%
8C-Fyy!Qs2AwilSVWWH6,r   zvalues, expectedr[   r   r   )FFTc                    [         R                  " XS9n Sn[        R                  " [        US9   [         R
                  " SS5         U R                  5       n[        R                  " XA5        [         R                  " U 5      R                  5       n[         R                  " U5      n[        R                  " XA5        [         R                  " U 5      R                  5       n[         R                  " U5      n[        R                  " XA5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   z"use_inf_as_na option is deprecatedrK   zmode.use_inf_as_naT)r   r>   r/   r0   r1   r  r   r]   rf   ri   r=   r   )valuesrA   r   rR   rm   s        r   test_use_inf_as_nar8    s     XXf*F
.C		#	#M	=3T:[[]F''9YYv&++-Fyy*H""64\\&)..0F||H-H!!&3 ; 
>	=:: 
>	=s$   D1CD D1 
D.	*D11
D?c                    U R                   [        R                  L a  SnOU R                  S:X  a  SnOSn[        R
                  " / SQU S9nUR                  SS9n[        R
                  " / S	QUS S
 USS9n[        R                  " X45        g )Nr   r    r'  r   )r9   r:   rU   r:   r   F)sort)rG   rN   rG   r   r)  r*  )	r   r!   r"   r   r   rf   r,  r/   ri   r4  s        r   test_value_counts_sort_falser;    sy    ~~		)	#$		
))(
6C5)Fyy#bq'QH6,r   c                    U R                   S:X  a#  [        R                  " SU R                    35        [        R                  " / SQU S9nSUR
                  s=:  a)  UR                  5       s=::  a  UR                  SS9:  d   e   eg )Nr    znot applicable for r[   r   r   T)deep)r   r-   skipr   rf   nbytesmemory_usage)r   seriess     r   test_memory_usagerB    sr     }}	!)%--9:YYe4Fv}}V 3 3 5V8K8KQU8K8VVVVVVr   float_dtypec                     [         R                  " S/U S9nUR                  U5      n[         R                  " S/US9n[        R                  " X45        g )Ng?r   z0.1)r   rf   rh   r/   ri   )rC  r   rk   rm   rA   s        r   test_astype_from_float_dtyperE    sD     ))SE
-CZZFyy%.H6,r   c                     [         R                  " S[         R                  S/U S9n[        R                  " U5      n[        R                  " SU R                  S/[
        S9n[        R                  " X#5        g )Nr9   r:   r   )r   r>   r#   r!   r   r   r/   r]   r   s       r   "test_to_numpy_returns_pdna_defaultrG    sS    
((C$E
2CXXc]Fxxennc2&AH1r   c                     Un[         R                  " S[         R                  S/U S9nUR                  US9n[        R                  " SUS/[
        S9n[        R                  " XE5        g )Nr9   r:   r   r   )r   r>   r#   to_numpyr!   r   r/   r]   )r   nulls_fixturer   rQ   rm   rA   s         r   test_to_numpy_na_valuerK    sW    H
((C$E
2C\\8\,Fxxh,F;H1r   c                    [         R                  " / SQU S9nUR                  SS/5      n[         R                  " / SQ5      n[        R                  " X45        UR                  S[         R
                  /5      n[         R                  " / SQ5      n[        R                  " X45        UR                  / 5      n[         R                  " / SQ5      n[        R                  " X45        UR                  SU/5      n[         R                  " / SQ5      n[        R                  " X45        UR                  U/5      n[         R                  " / SQ5      n[        R                  " X45        g )Nr   r   r9   rU   TFFTFTr   )r   rf   isinr/   ri   r#   )r   fixed_now_tsr   rm   rA   s        r   	test_isinrQ    s    
		"%0AVVS#JFyy-.H6,VVS"%%L!Fyy,-H6,VVBZFyy./H6,VVS,'(Fyy-.H6,VV\N#Fyy./H6,r   c                    [         R                  " / SQU S9nUR                  [         R                  " SS/US95      n[         R                  " / SQ5      n[        R
                  " X45        UR                  [         R                  " SS /US95      n[         R                  " / SQ5      n[        R
                  " X45        g )Nr   r   r9   rU   rM  rN  )r   rf   rO  r>   r/   ri   )r   r   r   rm   rA   s        r   test_isin_string_arrayrS  +  s    
		"%0AVVBHHc3Zv67Fyy-.H6,VVBHHc4[78Fyy,-H6,r   c           	      6   [         R                  " S5      n[        R                  " / SQU S9nUR	                  [        R
                  " SS/[        R                  " UR                  5       5      S95      n[        R                  " / SQ5      n[        R                  " X45        UR	                  [        R
                  " SS /[        R                  " UR                  5       5      S95      n[        R                  " / SQ5      n[        R                  " X45        g )Nr    r   r   r9   rU   rM  rN  )
r-   r.   r   rf   rO  r>   r   r   r/   ri   )r   r   r   rm   rA   s        r   test_isin_arrow_string_arrayrU  7  s    			Y	'B
		"%0AVVBHHc3Zr}}RYY[/IJKFyy-.H6,VVBHHc4[biik0JKLFyy,-H6,r   c                 Z   [         R                  " / SQU S9n[        R                  " / SQ5      nS X'   UR                  S   UR                  R
                  L d   e[         R                  " / SQU S9nSn[        R                  " [        US9   SX'   S S S 5        g ! , (       d  f       g = f)Nr[   r   )FTFrG   r  rK   )	r   rf   r!   r>   r   r   r-   rO   rP   )r   rk   maskrR   s       r   (test_setitem_scalar_with_mask_validationrX  D  s     ))O5
1C88()DCI99Q<399----- ))O5
1C
,C	y	,	 
-	,	,s   B
B*c                     / SQn[         R                  " U[         R                  S9n[        R                  " X S9n[        R                  " XS9n[        R
                  " X45        g Nr[   r   )r!   r>   r  r   r/   rX   r   valsrQ   rm   rA   s        r   test_from_numpy_strr]  U  sE    D
((4rww
'CXXc'Fxx*H##F5r   c                     / SQn[         R                  " XS9nUR                  5       nUn[        R                  " X45        g rZ  )r   r>   tolistr/   r   r[  s        r   test_tolistr`  ]  s1    D
((4
%CZZ\FHOOF%r   c                 2   U" / SQU S9n[         R                  " S SS5      nU" U5      nU[        R                  L a  [        R                  O[         R                  nU" / SQ[
        S9n[        R                  " XF5        [         R                  " S SS5      nU" U5      nU" / SQU S9nU R                  S:X  aG  U[        R                  L a  [         R                  " / SQ[
        S9nO[        R                  " / SQ5      n[        R                  " XF5        g )	N)r9   r   cccr   c                     [        U 5      $ )N)r   rs   s    r   <lambda>(test_numpy_array_ufunc.<locals>.<lambda>j  s    CFr   rG   r   c                     U S-  $ )NrN    rd  s    r   re  rf  r  s    Qr   )r   bbbbccccccr    )	r!   
frompyfuncr   rf   r>   r   r/   r   r   )r   r   rQ   str_len_ufuncrm   expected_clsrA   str_multiply_ufuncs           r   test_numpy_array_ufuncro  e  s    
 
.C MM"2Aq9M3F #ryy 0299bhhLIV4HOOF% 1=$F+59H}}	!"((?xx 8GH yy!9:HOOF%r   )a__doc__r   numpyr!   r-   pandas._configr   pandas.compatr   pandas.compat.pyarrowr   r   pandas.util._test_decoratorsutil_test_decoratorstdpandas.core.dtypes.commonr   pandasr   pandas._testing_testingr/   pandas.core.arrays.string_r   pandas.core.arrays.string_arrowr	   r
   fixturer   r   r   r*   r2   r6   rC   rE   rI   rS   rY   r`   rq   r~   r   r   r   r   r   r   r   r   r   r   r   
skip_if_nor   r   r   parametrizer"   r3  r4   r#   r   r   r   r   r   r   r   r   rf   r>   r  r  r  filterwarningsr  r"  r%  r.  r5  r8  r;  rB  float16float32rE  rG  rK  rQ  rS  rU  rX  r]  r`  ro  rh  r   r   <module>r     s)      - % * ) 4   @ > > > >
 ( (
(&?*(:	N$	"3
3*&-( 
66 *%, &, *%, &,:&:$:<:@ y6 6&:6 HF 

5(95<ruuUV W $/9 09((6- D%=1 2 D%=1 2 E5>2D%=1, 2 3, E5>2BHH 56 7 3$  NO@ P@6 NO, P, NO0 P08-"
- 	"((#89:	288$89:44$
-W RZZ(LM- N-22-0	-
-"6& BHH 56& 7&r   