
    .i?                        d dl Z d dlmZ d dlZd dlZd dlmZ d dlm	Z	 d dl
mc mZ d dlZd dlmZmZmZmZ d dlmZ d dlmZ d Zd Zd	 Zd
 Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$ejJ                  jM                  d      d        Z'd Z(d Z)d Z*d Z+ ejX                  d      d        Z-ejJ                  j]                  dej^                  ej`                  eg      d        Z1y)    N)Path)HAS_PYARROW)Pandas4Warning)NA
ArrowDtypeSeriesStringDtype)extract_arrayc                 v   t         rWt        dt        j                        t        dt        j                        t        dt              t        dt              g}n,t        dt        j                        t        dt              g}|j                  |       }|j                  |      }|t        ||         S )Npythonna_valuepyarrow)r   r	   npnanr   indexmax)dtype1dtype2DTYPE_HIERARCHYh1h2s        a/var/www/app/trading-bot/venv/lib/python3.12/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3r2;''    c                      t        j                  d       t        j                  t        t        gt        d            } | | k(  }t        j                  t        t        gd      }t        j                  ||       y )Nr   dtypeboolean[pyarrow])pytestimportorskippdarrayr   r	   tmassert_extension_array_equal)aresultexpecteds      r   test_eq_all_nar)   )   sW    
	"
"bY!78A!VFxxR(:;H##FH5r   c                    | }|t         k(  rd nt        }t        g d      }t        g d|      }d}t        j                  ||      5  ||z  }d d d        ||j                  t              z  }t        j                  |       t        j                  ||      5  ||z  }d d d        ||j                  t              z  }t        j                  ||       t        j                  ||      5  ||z  }d d d        ||j                  t              z  }t        j                  ||       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   PxY w)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 ell4((H68,		#	#D	4 ell4((H68,		#	#D	4 ell4((H68, 
 
 s$   	D,D8/E,D58EEc                    | t         k(  r1t        j                  j                  d      }|j	                  |       t        d      }t        ddt        g|       }||z  }t        |dz  |dz  |j                  j                  gt               }t        j                  ||       ||z  }t        d|z  d|z  |j                  j                  gt               }t        j                  ||       y )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CZFtcz4#:syy/A/AB&QH68,4ZFsTz3:syy/A/AB&QH68,r   c                    | }t        ddg|      }t        ddgt              }||k(  }t        ddgt              }|t        k(  rne|j                  dk(  r$|j                  t
        u r|j                  d      }n2|j                  d	k(  r#|j                  t
        u r|j                  d
      }t        j                  ||       y )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E\Fudm40H	(	"u~~';??9-	)	#"(<???368,r   c                  `   t        j                  d      } t        ddg      }t        ddgt        t        j
                              }||k(  }t        d|j                        }t        j                  ||       ||k7  }t        d|j                        }t        j                  ||       t        j                  t        d	
      5  ||kD   d d d        |j                  d      }||k(  }t        j                  ||j                  d             ||k7  }t        j                  ||j                  d             t        j                  t        d	
      5  ||kD   d d d        |j                  t        | j                                     }	|	|k(  }
t        j                  |
|j                  d             |	|k7  }t        j                  ||j                  d             t        j                  t        d	
      5  ||	kD   d d d        y # 1 sw Y   >xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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D[Fcii0K6;/D[FSYY/K6;/	y(<	= d
 ;;()DJ:{'9'9/'JKJ:{'9'9/'JK	y(<	= d
 ;;z"))+./DJ:{'9'9/'JKJ:{'9'9/'JK	y(<	= d
 '   s$   	HH<H$HH!$H-c                    | }t        g d|      }|t        k(  rt        j                  d       n|j                  dk(  rd}nd}t        j
                  t              5  d|z   d d d        t        j
                  t        |      5  |d	z   d d d        t        j
                  t        |      5  |t        j                  g d
t              z   d d d        t        j
                  t        |      5  t        j                  g d
t              |z   d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   y xY w)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	, 8bhh*$778	y	, 8
$D1C78 8  8 88 8s0    D 	D,2!D86!E D),D58EEc                 6   | }|t         k(  r1t        j                  j                  d      }|j	                  |       t        g d|      }t        g d|      }||z   }t        g d|      }t        j                  ||       |j                  |      }t        j                  ||       |j                  |      }t        g d|      }t        j                  ||       |j                  |d	      }t        g d
|      }t        j                  ||       y )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68,UU1XF68,VVAYF4EBH68,UU1U%F4EBH68,r   c                    | }|t         k(  s|j                  dk(  r4d}t        j                  j	                  d |      }|j                  |       t        j                  g d|      }t        j                  g dgt               }t        j                  t        d      5  ||z    d d d        t        |      }t        j                  t        d      5  ||z    d d d        y # 1 sw Y   >xY w# 1 sw Y   y xY w)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 	A 	q	A	z	2 	A 	  s   !C$C0$C-0C9c                    | }|t         k7  rd|j                  dk(  rU|j                  t        j                  u r9t
        r3|r1t        j                  j                  d      }|j                  |       |t        j                  t               k(  r3|r1t        j                  j                  d      }|j                  |       t        j                  g d|      }g d}||z   }t        j                  g d|      }t        j                  ||       ||z   }t        j                  g d	|      }t        j                  ||       y )
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${{   ! 

 	D!  %7{{  (? @D!
'u5A"EYFxx0>H##FH5QYFxx0>H##FH5r   c                     | }t        j                  g d|      }|dz  }t        j                  g d|      }t        j                  ||       d|z  }t        j                  ||       y )N)r&   r,   Nr      )aabbN)r"   r#   r$   r%   )r5   r   r&   r'   r(   s        r   test_mulrz      s[    E
!/AUFxx*%8H##FH5UF##FH5r   c                 J   | }|t        j                  t              k7  r1t        j                  j                  d      }|j                  |       t        j                  g d|      }t        j                  g dgt              }|j                  |      t        u sJ ||z   }t        j                  g dg      j                  |      }t        j                  ||       ||z   }t        j                  g dg      j                  |      }t        j                  ||       y )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,,,2XF||567>>uEH&(+#XF||567>>uEH&(+r   r|   r<   c                    t        j                  ddt        j                  t        j                  g|       }t        j                  dt        j                  dt        j                  gg      }|j                  |      t        u sJ ||z   }t        j                  dt        j                  t        j                  t        j                  gg      j                  |       }t        j                  ||       ||z   }t        j                  dt        j                  t        j                  t        j                  gg      j                  |       }t        j                  ||       y )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,,,2XF||dBFFBFFBFF;<=DDUKH&(+#XF||dBFFBFFBFF;<=DDUKH&(+r   c           
         |}d| j                    d}t        j                  g d|      }d} t        ||      |      }|t        k(  s|j
                  t        j                  u rt        j                  |D cg c]  } t        ||      |       c}      }| t        j                  k(  rd|d<   nd|d<   t        |d      }t        j                  ||j                  t        j                               y |j                  d	k(  rd
nd}	t        j                  |D cg c]  } t        ||      |       c}t              }t        j                  ||	      }t        j                   ||       y c c}w c c}w )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   $  s4   E=))*"-G
!/AE WQ 'F%..BFF288qIt3WT73E:IJHKK'HQKHQKvT:
##FHOOBHH,EF/4}}	/I+y88qIt3WT73E:IQWX88HN;
''9 J Js   8E1E6c                 r   |}d| j                    d}t        j                  g d|      } t        ||      t              }|t        j                  t              k(  s|j                  t
        j                  u rft        j                  | k(  rt        j                  g d      }nt        j                  g d      }t        |d      }t        j                  ||       y |j                  dk(  rd	nd
}t        j                  g d|      }t        j                   ||       t        j                   ||       y )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 WQ $F  ENNbff$<;;-'xx 23Hxx 56HvT:
##FH5/4}}	/I+y88.nE
''9
''9r   c                    d| j                    d}|}t        j                  g d|      }d}|dvr7t        j                  t
        d      5   t        ||      |       d d d        y  t        ||      |      }t        |d	      }|t        j                  t              k(  s|j                  t        j                  u r8g d
g dd|   }t        j                  |      }t        j                  ||       y g dg dd|   }|j                  dk(  rdnd}	t        j                  ||	      }t        j                   ||       y # 1 sw Y   y xY w)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  s3   =))*"-GE
!/AE**]]9,VW 	'GAw&	' 	 WQ 'F66F  ENNbff$<+(
  88M*
##FH5#7CUV
 05}}	/I+y88M@
''9+	' 	s   EEc                    d| j                    d}|}|}t        j                  g d|      }t        j                  g d|      } | ||      }t        |d      } | ||      }	t        |	d      }	t	        j
                  ||	       |t        k(  s|j                  t        j                  u r|t        k(  s|j                  t        j                  u rt        j                  | k(  rt        j                  g d      }
n2t        j                  g d      }
 t        |d	   |      |d	         |
d	<   t        |d      }t	        j                  ||
       y |t        k(  r|}n|t        k(  r|}nt        ||      }|j                  d
k(  rd}nd}t        j                   t#        |      d d      }
 t        |d	   |      |d	         |
d	<   t        j                  |
|      }
t	        j
                  ||
       y )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1e$F66F E1%GG48GOOFG$5>>RVV3&FOOrvv5;;-'xx 34Hxx 56H6759g6qu=HRLvT:
##FH5 F?IvI5eVDI(&N,N773q6d(C2wuRy'21R5988HN;
)r   r   c                    dd l }|}d| j                   d}t        |j                               }t	        j
                  g d|      }t	        j
                  g d|      } | ||      } | ||      }	t        j                  ||	       t	        j
                  g dd      }
 t        |d   |      |d         |
d<   t        j                  ||
       y )	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1e$F E1%GOOFG$xx*/BH.759g.qu5HRL##FH5r   boxc                    |}|t         j                  u rV|t        k7  rM|j                  t        j
                  u r1t        j                  j                  d      }|j                  |       d| j                   d} |t        j                  g d|            }d}g d}	 | ||	      }
 | |	|      }t        j                  |
|       |t	        j                  t              k(  s|j                  t        j
                  u rt        j                  | k(  rt	        j                  g d      }n,t	        j                  g d	      } t!        ||      |      |d
<   |t         j"                  ur |||j                        }t        j                  |
|       y |j$                  dk(  rdnd}t	        j&                  t)        |      d d      } t!        ||      |      |d
<   t        j                  ||      }t+        |d      }|t         j"                  urt        j,                  ||      }t        j                  |
|       y )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1e$F E1%GOOFG$  ENNbff$<;;-'xx 34Hxx 56H1741$7HRLbhh88>>:H
) 05}}	/I+y773q6d(C-wtW-d388HN; >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   