
    I>qjgF                        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$d Z%d Z&ejN                  jQ                  d      d        Z)d Z*d Z+d Z,d Z- ej\                  d      d        Z/ejN                  ja                  dejb                  ejd                  eg      d        Z3y)     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        b/opt/rentech/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           
          G fdd      t        j                   d       d      gt              }t        ddg|       }t        |      }||d   z    d	       d
      gf||z    d	       d      gf||z    d	       d      gf|d   |z    d       d      gf||z    d       d      gf||z    d       d      gfg}|D ],  \  }}t        |t              }t	        j
                  ||       . y )Nc                   8    e Zd Zd Z fdZ fdZ fdZd Zy)3test_arithmetic_custom_object.<locals>.CustomObjectc                     || _         y Nval)selfrM   s     r   __init__z<test_arithmetic_custom_object.<locals>.CustomObject.__init__a   s	    DHr   c                 R    t        |d      rt        S  | j                  |z         S Nr   hasattrNotImplementedrM   rN   otherCustomObjects     r   __add__z;test_arithmetic_custom_object.<locals>.CustomObject.__add__d   s'    ug&%%5 011r   c                 R    t        |d      rt        S  || j                  z         S rQ   rR   rU   s     r   __radd__z<test_arithmetic_custom_object.<locals>.CustomObject.__radd__i   s'    ug&%% 011r   c                 R    t        |      xr | j                  |j                  k(  S rK   )
isinstancerM   rU   s     r   __eq__z:test_arithmetic_custom_object.<locals>.CustomObject.__eq__n   s"    e\2Ltxx5997LLr   c                 "    d| j                    dS )Nz<CustomObject(z)>rL   )rN   s    r   __repr__z<test_arithmetic_custom_object.<locals>.CustomObject.__repr__q   s    #DHH:R00r   N)__name__
__module____qualname__rO   rX   rZ   r]   r_   )rW   s   r   rW   rI   `   s    		2
	2
	M	1r   rW   r&   r,   r   12r   1a2a2ba1a2b2)r   r#   r0   r   r$   r4   )	r5   arrrE   obj_sercasesr'   expected_valuesr(   rW   s	           @r   test_arithmetic_custom_objectro   ^   s-   1 1( ((L%|C'89
HC
#s#3
4CSkG 
s1vT*L,>?@	s\$'d);<=	wd+\$-?@A	Q#T*L,>?@	s\$'d);<=	3d+\$-?@AE $) 1/8
vx01r   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_comparisonrv      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]rs   )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      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    skiprt   rx   ry   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)r   r   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_addr      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(  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)Nz*Failed: DID NOT RAISE <class 'ValueError'>)rx   r=   r   r   z3 != 1r.   )r0   r    r@   rA   rB   r"   r#   r   rx   
ValueErrorr   )r5   rC   r   r=   r@   r&   r,   ss           r   test_add_2dr      s    E={{  V <D!
.A
/"&1A	z	2 	A 	q	A	z	2 	A 	  s   CC!C!C*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   )r   Nr   N)r   NNN)r   NNN)r0   rt   r   r   r   r   r    r@   rA   rB   r   r"   r#   r$   r%   )	r5   rC   using_infer_stringr   r@   r&   rV   r'   r(   s	            r   test_add_sequencer      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                  dg|       }t        j                  t        g|       }d t        j                  t        fD ]8  }||z   }t        j                  ||       ||z   }t        j                  ||       : y )Nr   r   )r"   r#   r   r   r   r$   r%   )string_dtype_no_objectrk   r(   na_valr'   s        r   test_string_add_missing_valuesr     sv    
((C5 6
7Cxx$:;H$ :v
''9 #
''9:r   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_mulr   -  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   )tr   vw)atr   cvdw)tar   vcwd)r   r   r0   r    r@   rA   rB   r"   r#   	DataFramerX   rT   r2   r$   assert_frame_equal)r5   rC   r   r@   rk   dfr'   r(   s           r   test_add_stringsr   8  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   r   r   r   r   )
r"   r#   r   r   r   rX   rT   r2   r$   r   )r   rk   r   r'   r(   s        r   test_add_framer   J  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&   Trq   Fextract_numpyr   r   rr   )r`   r"   r#   getattrr0   r   r   r   operatorner
   r$   assert_numpy_array_equalr2   bool_rt   r%   )
comparison_opr5   r   op_namer&   rV   r'   rD   r(   expected_dtypes
             r   test_comparison_methods_scalarr   Z  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   rr   )NNN)r`   r"   r#   r   r   r   r   r0   r   r   r   r   r
   r$   r   rt   r%   )r   r5   r   r   r&   r'   r(   r   s           r   $test_comparison_methods_scalar_pd_nar   o  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   *   )r]   __ne__z(Invalid comparison|not supported betweenr.   Tr   r   r   )FNF)TNTr   r   rr   )r`   r"   r#   r    rx   ry   r   r
   r   r   r0   r   r   r$   r   rt   r%   )
r   r5   r   r   r&   rV   r'   expected_datar(   r   s
             r   )test_comparison_methods_scalar_not_stringr     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   rr   rs   r0   r   r   )r`   r"   r#   r
   r$   assert_equalr0   r   r   r   r   r   r   r   r   rt   fulllen)r   r5   any_string_dtype2r   r   r   r&   rV   r'   result2r(   	max_dtyper   s                r   test_comparison_methods_arrayr     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   )NNTrs   r   )
r   r`   r   rz   r"   r#   r$   r   r   r%   )r   r5   r{   r   r   r   r&   rV   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   rr   r0   r   Tr   )r"   r#   r0   r   r   r   r    r@   rA   rB   r`   r$   r   r   r   r   r   Indexrt   r   r   r
   box_expected)r   r5   r   rC   r   r@   r   r&   rD   rV   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   )4r   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   ro   rv   r   r   r   r   r   r   r   r   r@   rA   r   r   r   r   r   
skip_if_nor   parametrizer#   r   r    r   r   <module>r      s	       % ( ) )    2(&6-0-*$1N-&!H8,-6$6>:6,$ *%, &,:*:(:@)*X y6 6* 288V <=(* >(*r   