
    A>i?                        S SK r S SKJr  S SKrS SKrS SKJr  S SKJ	r	  S SK
Js  Jr  S SKrS SKJrJrJrJr  S SKJr  S SKJ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$\RJ                  RM                  SS9S 5       r'S r(S r)S r*S r+\RX                  " S5      S 5       r-\RJ                  R]                  S\R^                  \R`                  \/5      S 5       r1g)    N)Path)HAS_PYARROW)Pandas4Warning)NA
ArrowDtypeSeriesStringDtype)extract_arrayc                 Z   [         (       aK  [        S[        R                  S9[        S[        R                  S9[        S[        S9[        S[        S9/nO&[        S[        R                  S9[        S[        S9/nUR                  U 5      nUR                  U5      nU[        X45         $ )Npythonna_valuepyarrow)r   r	   npnanr   indexmax)dtype1dtype2DTYPE_HIERARCHYh1h2s        b/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pandas/tests/arithmetic/test_string.pystring_dtype_highest_priorityr      s    {2662	BFF32.	B/	
 26622.

 
		v	&B			v	&B3r;''    c                      [         R                  " S5        [        R                  " [        [        /[        S5      S9n X :H  n[        R                  " [        [        /SS9n[        R                  " X5        g )Nr   dtypeboolean[pyarrow])pytestimportorskippdarrayr   r	   tmassert_extension_array_equal)aresultexpecteds      r   test_eq_all_nar)   )   sS    
	"
"bY!78AVFxxR(:;H##F5r   c                    U nU[         :X  a  S O[        n[        / SQ5      n[        / SQUS9nSn[        R                  " X%S9   X4-  nS S S 5        X4R                  [        5      -  n[        R                  " WU5        [        R                  " X%S9   X4-  nS S S 5        X4R                  [        5      -  n[        R                  " Xg5        [        R                  " X%S9   X4-  nS S S 5        X4R                  [        5      -  n[        R                  " Xg5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N^= f)N)TFFT) r+   bcr   z$operations between boolean dtype andmatch)objectr   r   r$   assert_produces_warningastypeboolassert_series_equal)any_string_dtyper   warnleftrightmsgr'   r(   s           r   test_reversed_logical_opsr:   1   s    EF?4D,-D%U3E
0C		#	#D	4 
5ll4((H68,		#	#D	4 
5ll4((H6,		#	#D	4 
5ll4((H6, 
5	4
 
5	4
 
5	4s$   DD-!D>
D*-
D;>
Ec                    U [         :X  a.  [        R                  R                  SS9nUR	                  U5        [        S5      n[        SS[        /U S9nX4-  n[        US-  US-  UR                  R                  /[         S9n[        R                  " XV5        XC-  n[        SU-  SU-  UR                  R                  /[         S9n[        R                  " XV5        g )Nzqwith NA present we go through _masked_arith_op which raises TypeError bc Path is not recognized by lib.is_scalar.reasonz/Users/Irv/ABr   )r0   r    markxfailapplymarkerr   r   r   r   r   r$   r4   )r5   requestr@   itemserr'   r(   s          r   test_pathlib_path_divisionrF   I   s    6!{{  K ! 
 	D!D
#sB'7
8CZFtcz4#:syy/A/AB&QH6,ZFsTz3:syy/A/AB&QH6,r   c                 |   U n[        SS/US9n[        SS/[        S9nX#:H  n[        SS/[        S9nU[        :X  a  OiUR                  S:X  a%  UR                  [
        L a  UR                  S5      nO4UR                  S	:X  a$  UR                  [
        L a  UR                  S
5      n[        R                  " XE5        g )Nr&   r,   r      FTr   booleanr   bool[pyarrow])	r   r0   r3   storager   r   r2   r$   r4   )r5   r   rE   mixedr'   r(   s         r   test_mixed_object_comparisonrM   ^   s    E
#s5
)CAs86*E\Fudm40H	(	"u~~';??9-	)	#"(<???36,r   c                  J   [         R                  " S5      n [        SS/5      n[        SS/[        [        R
                  S9S9nX:H  n[        SUR                  S9n[        R                  " X45        X:g  n[        SUR                  S9n[        R                  " X55        [         R                  " [        S	S
9   X:    S S S 5        UR                  S5      nXa:H  n[        R                  " XtR                  S5      5        Xa:g  n[        R                  " XR                  S5      5        [         R                  " [        S	S
9   X:    S S S 5        UR                  [        U R                  5       5      5      n	X:H  n
[        R                  " XR                  S5      5        X:g  n[        R                  " XR                  S5      5        [         R                  " [        S	S
9   X:    S S S 5        g ! , (       d  f       GN9= f! , (       d  f       N= f! , (       d  f       g = f)Nr   FTr&   r,   r   r   )r   zInvalid comparisonr.   zstring[pyarrow]rJ   )r    r!   r   r	   r   r   r   r$   r4   raises	TypeErrorr2   r   string)parE   ser2r'   expected_eqexpected_neser3
result3_eq
result3_neser4
result4_eq
result4_nes               r   !test_pyarrow_numpy_string_invalidr\   q   s   			Y	'B
%
C3*K$@AD[Fcii0K6/[FSYY/K6/	y(<	=
 
> ;;()DJ:'9'9/'JKJ:'9'9/'JK	y(<	=
 
> ;;z"))+./DJ:'9'9/'JKJ:'9'9/'JK	y(<	=
 
>	=' 
>	= 
>	= 
>	=s$   :G1H#H1
H 
H
H"c                    U n[        / SQUS9nU[        :X  a  [        R                  " S5        OUR                  S:X  a  SnOSn[        R
                  " [        WS9   SU-    S S S 5        [        R
                  " [        US9   US	-    S S S 5        [        R
                  " [        US9   U[        R                  " / S
Q[        S9-    S S S 5        [        R
                  " [        US9   [        R                  " / S
Q[        S9U-    S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nq= f! , (       d  f       g = f)Nr&   r,   r-   r   zThis is not expect to raiser   zACannot multiply StringArray by bools. Explicitly cast to integersz&Can only string multiply by an integerr.   FT)TFT)
r   r0   r    skiprK   rO   rP   r   r#   r3   )r5   r   rE   r9   s       r   test_mul_bool_invalidr`      s    E

.C12	(	"Q6	y	, 
-	y	,d
 
-	y	,bhh*$77 
-	y	,
$D1C7 
-	, 
-	,	,	,	,	,	,	,s0   DD%,D6,E
D"%
D36
E
Ec                    U nU[         :X  a.  [        R                  R                  SS9nUR	                  U5        [        / SQUS9n[        / SQUS9nXE-   n[        / SQUS9n[        R                  " Xg5        UR                  U5      n[        R                  " Xg5        UR                  U5      n[        / SQUS9n[        R                  " Xg5        UR                  USS	9n[        / S
QUS9n[        R                  " Xg5        g )Nz.Need to update expected for numpy object dtyper<   )r&   r,   r-   NNr   )xyNzN)axbyNNN)xaybNNN-)
fill_value)re   rf   zc-z-zN)
r0   r    r@   rA   rB   r   r$   r4   addradd)r5   rC   r   r@   r&   r,   r'   r(   s           r   test_addrm      s    E{{  C ! 
 	D!*%8A*%8AUF4EBH6,UU1XF6,VVAYF4EBH6,UU1U%F4EBH6,r   c                    U nU[         :X  d  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   XV-     S S S 5        [        U5      n[        R                  " [        SS9   Xv-     S S S 5        g ! , (       d  f       N@= f! , (       d  f       g = f)Nr   z*Failed: DID NOT RAISE <class 'ValueError'>)rO   r=   r^   r   z3 != 1r.   )r0   rK   r    r@   rA   rB   r"   r#   r   rO   
ValueErrorr   )r5   rC   r   r=   r@   r&   r,   ss           r   test_add_2drq      s    E%--94={{  V <D!
.A
/"&1A	z	2	 
3 	q	A	z	2	 
3	2	 
3	2 
3	2s   CC*
C'*
C8c                    U nU[         :w  am  UR                  S:X  a]  UR                  [        R                  L a@  [
        (       a5  U(       a.  [        R                  R                  SS9nUR                  U5        U[        R                  " [         5      :X  a5  U(       a.  [        R                  R                  SS9nUR                  U5        [        R                  " / SQUS9n/ SQnXV-   n[        R                  " / SQUS9n[        R                  " Xx5        Xe-   n[        R                  " / S	QUS9n[        R                  " Xx5        g )
Nr   zAs of GH#62522, the list gets wrapped with sanitize_array, which casts to a higher-priority StringArray, so we get NotImplemented.r<   zCannot broadcast list)r&   r,   NNr   )rb   Nrc   N)re   NNN)rg   NNN)r0   rK   r   r   r   r   r    r@   rA   rB   r   r"   r#   r$   r%   )	r5   rC   using_infer_stringr   r@   r&   otherr'   r(   s	            r   test_add_sequenceru      s    EMMX%NNbff$K{{   ! 

 	D!  %7{{  (? @D!
'u5A"EYFxx0>H##F5YFxx0>H##F5r   c                     U n[         R                  " / SQUS9nUS-  n[         R                  " / SQUS9n[        R                  " X45        SU-  n[        R                  " X45        g )N)r&   r,   Nr      )aabbN)r"   r#   r$   r%   )r5   r   r&   r'   r(   s        r   test_mulrz      sW    E
!/AUFxx*%8H##F5UF##F5r   c                 B   U nU[         R                  " [        5      :w  a.  [        R                  R                  SS9nUR                  U5        [        R                  " / SQUS9n[        R                  " / SQ/[        S9nUR                  U5      [        L d   eXE-   n[        R                  " / SQ/5      R                  U5      n[        R                  " Xg5        XT-   n[        R                  " / SQ/5      R                  U5      n[        R                  " Xg5        g )NGH-28527r<   )r&   r,   r-   dr   )trc   vw)atrf   cvdw)tarh   vcwd)r   r   r0   r    r@   rA   rB   r"   r#   	DataFrame__add__NotImplementedr2   r$   assert_frame_equal)r5   rC   r   r@   arrdfr'   r(   s           r   test_add_stringsr     s    E  {{  
 3D!
(('u
5C	+,F	;B;;r?n,,,XF||567>>uEH&+XF||567>>uEH&+r   r|   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 )Nr&   r,   r   rb   rc   re   rg   )
r"   r#   r   r   r   r   r   r2   r$   r   )r   r   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           	         UnSU R                    S3n[        R                  " / SQUS9nSn[        XC5      " U5      nU[        :X  d  UR
                  [        R                  L a  [        R                  " U Vs/ s H  n[        Xs5      " U5      PM     sn5      nU [        R                  :X  a  SUS'   OSUS'   [        USS9n[        R                  " XhR                  [        R                  5      5        g UR                  S	:X  a  S
OSn	[        R                  " U Vs/ s H  n[        Xs5      " U5      PM     sn[        S9n[        R                  " XS9n[        R                   " Xh5        g s  snf s  snf )N__r&   Nr-   r   r&   TrH   Fextract_numpyr   r   rI   )__name__r"   r#   getattrr0   r   r   r   operatorner
   r$   assert_numpy_array_equalr2   bool_rK   r%   )
comparison_opr5   r   op_namer&   rt   r'   rD   r(   expected_dtypes
             r   test_comparison_methods_scalarr   $  s(   E=))*"-G
!/AEQ 'F%..BFF288qIqtWT3E:qIJHKK'HQKHQKvT:
##FOOBHH,EF/4}}	/I+y88qIqtWT3E:qIQWX88H;
''9 J Js   8E/E4c                 p   UnSU R                    S3n[        R                  " / SQUS9n[        XC5      " [        5      nU[
        R                  " [        5      :X  d  UR                  [
        R                  L af  [        R                  U :X  a  [
        R                  " / SQ5      nO[
        R                  " / SQ5      n[        USS9n[        R                  " XV5        g UR                  S:X  a  S	OS
n[        R                  " / SQUS9n[        R                   " XV5        [        R                   " XV5        g )Nr   r   r   TTTFFFTr   r   r   rI   )NNN)r   r"   r#   r   r   r   r   r0   r   r   r   r   r
   r$   r   rK   r%   )r   r5   r   r   r&   r'   r(   r   s           r   $test_comparison_methods_scalar_pd_nar   9  s    E=))*"-G
!/AQ $F  ENNbff$<;;-'xx 23Hxx 56HvT:
##F5/4}}	/I+y88.nE
''9
''9r   c                    SU R                    S3nUn[        R                  " / SQUS9nSnUS;  a4  [        R                  " [
        SS9   [        XB5      " U5        S S S 5        g [        XB5      " U5      n[        USS	9nU[        R                  " [        5      :X  d  UR                  [        R                  L a9  / S
Q/ SQS.U   n[        R                  " U5      n[        R                  " Xh5        g / SQ/ SQS.U   nUR                  S:X  a  SOSn	[        R                  " XyS9n[        R                   " Xh5        g ! , (       d  f       g = f)Nr   r   r   *   )__eq____ne__z(Invalid comparison|not supported betweenr.   Tr   r   r   )FNF)TNTr   r   rI   )r   r"   r#   r    rO   rP   r   r
   r   r   r0   r   r   r$   r   rK   r%   )
r   r5   r   r   r&   rt   r'   expected_datar(   r   s
             r   )test_comparison_methods_scalar_not_stringr   M  s%   =))*"-GE
!/AE**]]9,VWA& X 	Q 'F66F  ENNbff$<+(
  88M*
##F5#7CUV
 05}}	/I+y88M@
''9+ XW 	s   E  
Ec                    SU R                    S3nUnUn[        R                  " / SQUS9n[        R                  " / SQUS9nU " Xg5      n[        USS9nU " Xv5      n	[        U	SS9n	[        R
                  " X5        U[        :X  d  UR                  [        R                  L a  U[        :X  d  UR                  [        R                  L a  [        R                  U :X  a  [        R                  " / SQ5      n
O3[        R                  " / SQ5      n
[        US	   U5      " US	   5      U
S	'   [        USS9n[        R                  " X5        g U[        :X  a  UnOU[        :X  a  UnO[        XE5      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
                  " X5        g )Nr   r   r   NNr-   Tr   TTFr   r   rI   rJ   r0   rj   r   )r   r"   r#   r
   r$   assert_equalr0   r   r   r   r   r   r   r   r   rK   fulllen)r   r5   any_string_dtype2r   r   r   r&   rt   r'   result2r(   	max_dtyper   s                r   test_comparison_methods_arrayr   m  s   =))*"-GEF
!/AHH&f5E1$F66F E%GG48GOOF$5>>RVV3&FOOrvv5;;-'xx 34Hxx 56H"59g6qu=HRLvT:
##F5 F?IvI5eDI(&N,N773q6d(CuRy'21R5988H;
)r   r   c                    SS K nUnSU R                   S3n[        UR                  5       5      n[        R
                  " / SQUS9n[        R
                  " / SQUS9nU " Xg5      nU " Xv5      n	[        R                  " X5        [        R
                  " / SQSS9n
[        US   U5      " US   5      U
S'   [        R                  " X5        g )	Nr   r   r   r   r   )NNTrJ   r   )
r   r   r   rQ   r"   r#   r$   r   r   r%   )r   r5   rR   r   r   r   r&   rt   r'   r   r(   s              r   -test_comparison_methods_array_arrow_extensionr     s     F=))*"-Gryy{#E
!/AHH&f5E1$F E%GOOF$xx*/BH59g.qu5HRL##F5r   boxc                 n   UnU[         R                  L aU  U[        :w  aK  UR                  [        R
                  L a.  [        R                  R                  SS9nUR                  U5        SU R                   S3nU" [         R                  " / SQUS95      nSn/ SQn	U " Xy5      n
U " X5      n[        R                  " X5        U[        R                  " [        5      :X  d  UR                  [        R
                  L a  [        R                  U :X  a  [        R                  " / SQ5      nO,[        R                  " / S	Q5      n[!        X5      " U5      US
'   U[         R"                  La  U" XR                  S9n[        R                  " X5        g UR$                  S:X  a  SOSn[        R&                  " [)        U5      S SS9n[!        X5      " U5      US
'   [         R                  " XS9n[+        USS9nU[         R"                  La  [        R,                  " X5      n[        R                  " X5        g )Nz<After wrapping list, op returns NotImplemented, see GH#62522r<   r   r   r   r-   r   r   r   r   r   r   rI   r0   r   Tr   )r"   r#   r0   r   r   r   r    r@   rA   rB   r   r$   r   r   r   r   r   IndexrK   r   r   r
   box_expected)r   r5   r   rC   r   r@   r   r&   rD   rt   r'   r   r(   r   s                 r   test_comparison_methods_listr     s   E
bhh5F?u~~/G{{  Q ! 
 	D!=))*"-GBHH%U34ADE1$F E%GOOF$  ENNbff$<;;-'xx 34Hxx 56H"41$7HRLbhh8>>:H
) 05}}	/I+y773q6d(Ct-d388H; >bhhx5H
)r   )2r   pathlibr   numpyr   r    pandas.compatr   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorstdpandasr"   r   r   r   r	   pandas._testing_testingr$   pandas.core.constructionr
   r   r)   r:   rF   rM   r\   r`   rm   rq   ru   rz   r   r@   rA   r   r   r   r   r   
skip_if_nor   parametrizer#   r   r    r   r   <module>r      s        % ( ) )    2(&6-0-*-&!H8,-6$6>6,$ *%, &,:*:(:@)*X y6 6* 288V <=(* >(*r   