
    iA                     B   d dl Zd dlZd dlmZmZmZmZmZm	Z	 d dl
mZ d Zd Zd Zej                   j#                  ddd ej$                  d	      d
f ej&                  d      df ej(                  d      dfg      d        Zej                   j#                  ddddd ej$                  d	      fddg      d        Zej                   j#                  dg d      d        Zej                   j#                  dg d      d        Zej                   j#                  dg d      d        Zej                   j#                  dddg      d        Zej                   j#                  dg d      d         Zej                   j#                  dg d!      d"        Zej                   j#                  dd#d$d  ej&                  d       fd%g      d&        Zej                   j#                  dd'd(g      d)        Zej                   j#                  dd*d	d	gfd	 e       fg      d+        Z ej                   j#                  d,g d-      ej                   j#                  d.g d-      d/               Z!d0 Z"d1 Z#d2 Z$ej                   j#                  dd	d3d4d	d5d4fd	d3d4d	d3d5d6fd7d	id	fd7d	id8fd7d	id	gfg      d9        Z%ej                   j#                  d:d	d3g      d;        Z&d< Z'ej                   j#                  d=d>d?d	d	gg      d@        Z(ej                   j#                  dAe)ejT                  g      dB        Z+ej                   j#                  d ejT                  g dC      g dCf ejT                  g dC       ejT                  g dD      f e,g dC      g dCfg dCg dEfg dCg dFfg dCd	fg      dG        Z-dH Z.ej                   j#                  ddej^                  fdIej^                  d fg      dJ        Z0ej                   j#                  dejb                  ejb                  fejb                   e2dK      f ejT                  ejb                  ej^                  ejb                   g       ejT                  ejb                  ej^                  ejb                   g      fg      dL        Z3eej^                  ed ejh                  dM       ejj                  dM      gZ6ej                   j#                  dNe6      ej                   j#                  dOe6      dP               Z7dQ Z8ej                   j#                  d edRdg       edRdSg      f edRdg       edRdSg      f ejT                  ddTg       ejT                  ddUg      f ed7dRdgi       ed7dRdSgi      fg      dV        Z9dW Z:dX Z;ej                   j#                  dY ejT                  d	g      d	dZd[fd	 ejT                  d	g      d[dZfg      d\        Z<d] Z=d^ Z>d_ Z?d` Z@da ZAdb ZBdc ZCdd ZDde ZE ej                  d3ef      ZG ejT                  dd=gef       ejT                  dgdhgef      geGdd  ejT                   ejT                  g di       ejT                  djdkg      gef       ejT                   ejT                  g di       ejT                  djdkg      gef      f ejT                   ejT                   ejT                  dldmg       ejT                  dng      gef       ejT                   ejT                  djdkg      gef      gef       ejT                   ejT                   ejT                  dldmg       ejT                  dng      gef       ejT                   ejT                  djdkg      gef      gef      f ejT                  g didjdkggef       ejT                  g didjdkggef      f ejT                   ejT                  g dC       ejT                  dodg      gef       ejT                  g dCdodggef      f ejT                   ejT                  g ef      dgef       ejT                  g dgef      f ejT                   ejT                   ejT                  g dC       ejT                  dodg      gef       ejT                   ejT                  dpg       ejT                  dqdrg       ejT                  dsg      gef      gef       ejT                  g dCdodggdpgdqdrgdsgggef      f ejT                  eGdgef       ejT                  dd=gdgdhggdgef      f ejT                  d	 ejT                  d7d=gef      dtgef       ejT                  d	 ejT                  d7d=gef      dtgef      f ejT                  d	 ejT                  d7d=gef      dtgef       ejT                  d	d7d=gdtgef      f ejT                   ejT                  d	 ejT                  d7d=gef      dtgef       ejT                  g ef      gef       ejT                  d	d7d=gdtgg gef      fg
ZHej                   j                  du      ej                   j#                  deH      dv               ZJy)w    N)NA	DataFrameIndexNaTSeries	Timestampc                 `    t        j                  | |fi | t        j                  || fi | y)a4  
    Check that two objects are approximately equal.

    This check is performed commutatively.

    Parameters
    ----------
    a : object
        The first object to compare.
    b : object
        The second object to compare.
    **kwargs
        The arguments passed to `tm.assert_almost_equal`.
    N)tmassert_almost_equalabkwargss      g/app/cer_product_mecsu/.venv/lib/python3.12/site-packages/pandas/tests/util/test_assert_almost_equal.py_assert_almost_equal_bothr      s.     1a*6*1a*6*    c                     	 t        j                  | |fi | |  d| d}t        j                  |       y# t        $ r Y yw xY w)a  
    Check that two objects are not approximately equal.

    Parameters
    ----------
    a : object
        The first object to compare.
    b : object
        The second object to compare.
    **kwargs
        The arguments passed to `tm.assert_almost_equal`.
    z and z7 were approximately equal when they shouldn't have been)reasonN)r
   r   pytestfailAssertionError)r   r   r   msgs       r   _assert_not_almost_equalr   "   sM    
q!.v.5RS3 s   58 	AAc                 8    t        | |fi | t        || fi | y)a8  
    Check that two objects are not approximately equal.

    This check is performed commutatively.

    Parameters
    ----------
    a : object
        The first object to compare.
    b : object
        The second object to compare.
    **kwargs
        The arguments passed to `tm.assert_almost_equal`.
    Nr   r   s      r   _assert_not_almost_equal_bothr   7   s"     Q,V,Q,V,r   za,b皙?r   r   	?   gzo ?r      c                     t        | |       y Nr   r   r   s     r    test_assert_almost_equal_numbersr'   J   s     a#r   )r   r!   )r   T)r!      gqh ?)皙?g`TR'?)g/nR?ga2U0*S?c                     t        | |       y r$   r   r&   s     r   $test_assert_not_almost_equal_numbersr,   X   s     "!Q'r   )r   r   r   gF%u?gư>gh㈵>g     @@g/$@@&|>gTqs*>c                 "    t        | |dd       y )NgMb@?)rtolatolr%   r&   s     r   %test_assert_almost_equal_numbers_atolr5   h   s     af=r   )r   g(\?r)   gB`"۹?)r1   gӹP?c                      t        | |d       y )NMbP?)r4   r+   r&   s     r   )test_assert_not_almost_equal_numbers_atolr:   y       !!QT2r   )r   r   r-   r/   r6   r7   c                      t        | |d       y Ng?r3   r%   r&   s     r   %test_assert_almost_equal_numbers_rtolr?   ~   s     a.r   r0   r.   c                      t        | |d       y r=   r+   r&   s     r   )test_assert_not_almost_equal_numbers_rtolrA      r;   r   za,b,rtol))grZ|
 ?g9m4 ?r9   )y$@?yBD?r9   )y?/$?y?jt?r)   )y`TR'?       @y?5^I @{Gz?c                     t        | ||       t        t        j                  |       t        j                  |      |       t        t        j                  |       t        j                  |      |       y Nr>   )r   np	complex64
complex128r   r   r3   s      r   (test_assert_almost_equal_complex_numbersrI      sJ     a.bll1or||ATJbmmA.a0@tLr   ))goѨ?gYa#t?gHz>)yuV?yKￚ?r9   )y?      ?y?       @rB   )yL7A`jt?yL7A`Gz?gh㈵>)y        oѨ?y        Ya#t?g&.>c                     t        | ||       t        t        j                  |       t        j                  |      |       t        t        j                  |       t        j                  |      |       y rD   )r   rE   rF   rG   rH   s      r   ,test_assert_not_almost_equal_complex_numbersrK      sJ     "!QT2!",,q/2<<?N!"--"2BMM!4D4Pr   )r   r   )r   g        )g:0yE>r   c                     t        | |       y r$   r%   r&   s     r   +test_assert_almost_equal_numbers_with_zerosrM      s    a#r   )r9   r   )r!   r   c                     t        | |       y r$   r+   r&   s     r   /test_assert_not_almost_equal_numbers_with_zerosrO          !!Q'r   )r!   abcc                     t        | |       y r$   r+   r&   s     r   /test_assert_not_almost_equal_numbers_with_mixedrS      rP   r   
left_dtype)zM8[ns]zm8[ns]float64int64objectright_dtypec                 t    t        t        j                  g |       t        j                  g |      d       y )NdtypeFcheck_dtype)r   rE   array)rT   rX   s     r   +test_assert_almost_equal_edge_case_ndarraysr_      s+     
:&
;'r   c                  $    t        h dh d       y )N   r!   r(      r%    r   r   test_assert_almost_equal_setsrd      s    i3r   c                      d} t        j                  t        |       5  t        h dh d       d d d        y # 1 sw Y   y xY w)Nz{1, 2, 3} != {1, 2, 4}matchra   >   r!   r(      )r   raisesr   r   r   s    r   !test_assert_almost_not_equal_setsrk      s4    
#C	~S	1 8!)Y78 8 8s	   8Ac                  (    t        dddddd       y )Nr!   r(   r&   r%   rc   r   r   test_assert_almost_equal_dictsrm      s    AA.aa0@Ar   r(   r&   rb   )r   r   cr   rQ   c                     t        | |       y r$   r+   r&   s     r   "test_assert_not_almost_equal_dictsrp      s     "!Q'r   valc                 l    dd| i} G fdd      }| k(  rt         nt        } || |       d       y )Nr!   r   c                       e Zd Zd Z fdZy)>test_assert_almost_equal_dict_like_object.<locals>.DictLikeObjc                      y)N)r   rc   )selfs    r   keyszCtest_assert_almost_equal_dict_like_object.<locals>.DictLikeObj.keys   s    r   c                     |dk(  rS y )Nr   rc   )rv   itemdict_vals     r   __getitem__zJtest_assert_almost_equal_dict_like_object.<locals>.DictLikeObj.__getitem__   s    s{ r   N)__name__
__module____qualname__rw   r{   )rz   s   r   DictLikeObjrt      s    		 r   r   Fr\   )r   r   )rq   	real_dictr   funcrz   s       @r   )test_assert_almost_equal_dict_like_objectr      s?    Hc
I    &)H_!:W 	 	KMu5r   c                      t        dd       y NrQ   r%   rc   r   r    test_assert_almost_equal_stringsr      s    eU+r   r   abcdabdc                     t        d|        y r   r+   )r   s    r   $test_assert_not_almost_equal_stringsr     s    !%+r   boxc                 <    t         | g d       | g d             y )Nr!   r(   rb   r%   )r   s    r   "test_assert_almost_equal_iterablesr   	  s    c)nc)n=r   r   )      ?       @g      @)r!   r(   rh   )r!   r(   rb   rh   c                     t        | |       y r$   r   r&   s     r   &test_assert_not_almost_equal_iterablesr     s     Q"r   c                      t        d d        y r$   r%   rc   r   r   test_assert_almost_equal_nullr      s    dD)r   Nr   c                     t        | |       y r$   r   r&   s     r   !test_assert_not_almost_equal_nullr   $  s    Q"r   infc                     t        | |       y r$   r%   r&   s     r   test_assert_almost_equal_infr   )  s     a#r   r   leftrightc                    t        j                  | gt              }t        j                  |gt              }d}| |u rt        | |d       t	        j
                  ||       t	        j                  t        |t              t        |t                     t	        j                  t        |t              t        |t                     t	        j                  t        |t              t        |t                     y t        j                  t        |      5  t        | |d       d d d        t        j                  t        d      5  t	        j                  t        |t              t        |t                     d d d        t        j                  t        d      5  t	        j                  t        |t              t        |t                     d d d        y # 1 sw Y   xY w# 1 sw Y   nxY w# 1 sw Y   y xY w)NrZ   zMismatched null-like valuesFr\   rf   zSeries are differentzDataFrame.iloc.* are different)rE   r^   rW   r   r
   assert_numpy_array_equalassert_index_equalr   assert_series_equalr   assert_frame_equalr   r   ri   r   )r   r   left_arr	right_arrr   s        r   &test_mismatched_na_assert_almost_equalr   8  s    xxf-H%/I
'Cu}!$5A
##Hi8
(&)5&+I	
 	86*F9F,K	
 	hf-y&/Q	

 ]]>5 	F%dEuE	F ]]>1GH 	""xv.y0O	 ]]>1QR 	!!(&19Yf3U	 		F 	F	 		 	s$   G#5G/%5G;#G,/G8;Hc                  8    t        t        j                  d       y r   )r   rE   r   rc   r   r    test_assert_not_almost_equal_infr   `  s    !"&&!,r   r   r    g7   @r   c                     t        | |       y r$   r%   r&   s     r   test_assert_almost_equal_pandasr   d  s     a#r   c                  t    t        d      t        d      g} t        d      t        d      g}t        | |       y )N
2011-01-01)r   r   r&   s     r   test_assert_almost_equal_objectr   q  s4    	<	 )L"9:A	<	 )L"9:Aa#r   c                      d} t        j                  t        |       5  t        j                  dd       d d d        y # 1 sw Y   y xY w)Nz?expected 2\.00000 but got 1\.00000, with rtol=1e-05, atol=1e-08rf   r!   r(   r   ri   r   r
   r   rj   s    r   'test_assert_almost_equal_value_mismatchr   w  s:    
MC	~S	1 %
q!$% % %s	   >Aza,b,klass1,klass2ndarrayintc                     d| d| }t        j                  t        |      5  t        j                  | |       d d d        y # 1 sw Y   y xY w)NzHnumpy array are different

numpy array classes are different
\[left\]:  z
\[right\]: rf   r   )r   r   klass1klass2r   s        r   'test_assert_almost_equal_class_mismatchr   ~  sT    
 X X	C 
~S	1 %
q!$% % %s   AAc            	      $   d} t        j                  t        |       5  t        j                  t        j                  t
        j                  ddg      t        j                  dt
        j                  dg             d d d        y # 1 sw Y   y xY w)Nznumpy array are different

numpy array values are different \(66\.66667 %\)
\[left\]:  \[nan, 2\.0, 3\.0\]
\[right\]: \[1\.0, nan, 3\.0\]rf   r(   rb   r!   )r   ri   r   r
   r   rE   r^   nanrj   s    r   (test_assert_almost_equal_value_mismatch1r     sh    (C 
~S	1 S
rxxA71bffa.9QRS S Ss   ABBc                      d} t        j                  t        |       5  t        j                  t        j                  ddg      t        j                  ddg             d d d        y # 1 sw Y   y xY w)Nzonumpy array are different

numpy array values are different \(50\.0 %\)
\[left\]:  \[1, 2\]
\[right\]: \[1, 3\]rf   r!   r(   rb   r   ri   r   r
   r   rE   r^   rj   s    r   (test_assert_almost_equal_value_mismatch2r     s\    C 
~S	1 C
rxxA/1a&1ABC C C   AA((A1c            
         d} t        j                  t        |       5  t        j                  t        j                  ddgddgddgg      t        j                  ddgddgddgg             d d d        y # 1 sw Y   y xY w)	Nznumpy array are different

numpy array values are different \(16\.66667 %\)
\[left\]:  \[\[1, 2\], \[3, 4\], \[5, 6\]\]
\[right\]: \[\[1, 3\], \[3, 4\], \[5, 6\]\]rf   r!   r(   rb   rh   r"      r   rj   s    r   (test_assert_almost_equal_value_mismatch3r     sy    9C 
~S	1 

HHq!fq!fq!f-.1a&1a&1a&9Q0R	

 
 
s   AA66A?c            	          d} t        j                  t        |       5  t        j                  t        j                  ddgddgg      t        j                  ddgddgg             d d d        y # 1 sw Y   y xY w)Nznumpy array are different

numpy array values are different \(25\.0 %\)
\[left\]:  \[\[1, 2\], \[3, 4\]\]
\[right\]: \[\[1, 3\], \[3, 4\]\]rf   r!   r(   rb   rh   r   rj   s    r   (test_assert_almost_equal_value_mismatch4r     so    -C 
~S	1 W
rxx!Q!Q(89288aVaQRVDT;UVW W Ws   A	A00A9c                      d} t        j                  t        |       5  t        j                  t        j                  ddg      t        j                  g d      d       d d d        y # 1 sw Y   y xY w)NzWIndex are different

Index shapes are different
\[left\]:  \(2L*,\)
\[right\]: \(3L*,\)rf   r!   r(   rb   rh   r"   r   )objr   rj   s    r   0test_assert_almost_equal_shape_mismatch_overrider     sZ    C
 
~S	1 S
rxxA/)1D'RS S Ss   AA**A3c                      d} t        j                  t        |       5  t        j                  t        j                  g d      t        j                  g d             d d d        y # 1 sw Y   y xY w)Nu   numpy array are different

numpy array values are different \(33\.33333 %\)
\[left\]:  \[á, à, ä\]
\[right\]: \[á, à, å\]rf   )   á   à   ä)r   r      år   rj   s    r    test_assert_almost_equal_unicoder     sV    !C 
~S	1 [
rxx(:;RXXFX=YZ[ [ [r   c                  8   t        j                  t        d      t        d      g      } t        j                  t        d      t        d      g      }d}t        j                  t
        |      5  t        j                  | |       d d d        y # 1 sw Y   y xY w)Nr   z
2011-01-02znumpy array are different

numpy array values are different \(50\.0 %\)
\[left\]:  \[2011-01-01 00:00:00, 2011-01-01 00:00:00\]
\[right\]: \[2011-01-01 00:00:00, 2011-01-02 00:00:00\]rf   )rE   r^   r   r   ri   r   r
   r   )r   r   r   s      r   "test_assert_almost_equal_timestampr     sx    
)L)9\+BCDA
)L)9\+BCDA?C 
~S	1 %
q!$% % %s   0BBc                      d} t        j                  t        |       5  t        j                  ddgg d       d d d        y # 1 sw Y   y xY w)NzOIterable are different

Iterable length are different
\[left\]:  2
\[right\]: 3rf   r!   r(   r   r   rj   s    r   1test_assert_almost_equal_iterable_length_mismatchr     sB    C 
~S	1 2
1vy12 2 2   AAc                      d} t        j                  t        |       5  t        j                  ddgddg       d d d        y # 1 sw Y   y xY w)NziIterable are different

Iterable values are different \(50\.0 %\)
\[left\]:  \[1, 2\]
\[right\]: \[1, 3\]rf   r!   r(   rb   r   rj   s    r   1test_assert_almost_equal_iterable_values_mismatchr     sF    C 
~S	1 /
1v1v./ / /r   rZ   rn   d)2   F   Z         r   r   r   rh   r         	   )f1f2z7ignore:elementwise comparison failed:DeprecationWarningc                     t        | |       y r$   r%   r&   s     r   %test_assert_almost_equal_array_nestedr   G  s     a#r   )KnumpyrE   r   pandasr   r   r   r   r   r   pandas._testing_testingr
   r   r   r   markparametrizeint16rU   uint32r'   r,   r5   r:   r?   rA   rI   rK   rM   rO   rW   rS   r_   rd   rk   rm   rp   r   r   r   listr^   r   iterr   r   r   r   r   floatr   
datetime64timedelta64objsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   emptysubarrNESTED_CASESfilterwarningsr   rc   r   r   <module>r      s      +&*-& 		!h	C#	1q	$	$ 		!(( 	>>
  QR3 S3 	
/
/ !57K LM3 N3 MM 	Q	Q Azrzz!}3E WX$ Y$ V 45( 6( a!X68} EF( G( D E4
8B 	q	+,q	34
q1
q5
qA3	(	( A'6 (6$, vua!56, 7, rxx 01> 2> 	 
)	i(	)	hbhh78	i)$	I	L!	A
##* $RVVQK HI# J# 			u	266266BFF7+	,hbhh7P.QR$$ 	BFFC}r}}U3^R^^E5JK &$'# ( '#L- 		Sz	E3/23	c
	VS(O45	3/	"HBHHc3Z$89	C#s$	%y#X1G'HI	$$$% bhhsmQ	5)Axrxx}eY+OP%	%SC

WS	[%2/ 
!6	"RXXtSk0("((C:V2TUq	
 	("((<(("((B8*<=VL("((<(("((B8*<=VL 	("((B8,hbhhtn=VL("((B8,-V< 	
 	("((B8,hbhhtn=VL("((B8,-V< 	
$ 	,R)8,R)8 	("((9%xrxxA'78G)aV$F3
 	("((2V,d36B"d6*
 	("((9-xrxxA/?@ORXXqc]HBHHaV$4hbhhsmDF 	
 	9q!f%aVaS'9:&I 	&$v.D#;c
+T2&A 	("((C:V"DEFfU("((C:V"DEFfU
 	("((C:V"DEFfU3*-.f= 	XRXXsCj%GHIQW 6*	 	
 	!C:./4FCAL^ UV-$ . W$r   