
    pi;7                         d dl Z d dlZd dlmZ d dlmZ d dlmZm	Z	 ddl
 d dlZdZdZ ed	      Z ed
      Z G d de      Z G d de      Zedk(  r ej(                          yy)    N)jit)utils)TestCaseforbid_codegen   )*g      <g      >infnanc                      e Zd ZdZegZej                  ej                  gZ	e
ge	z   Zej                  ej                  gZegez   Zeej$                  g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!d Z"d Z#d Z$d Z%y)TestAssertPreciseEqualz2
    Tests for TestCase.assertPreciseEqual().
    c                 Z      fd} |||        |||f||f        |||g||g       y )Nc                 V     j                   | |fi   j                   || fi  y N)assertPreciseEqualleftrightkwargsselfs     Z/opt/services/ai/voice_agent/venv/lib/python3.12/site-packages/numba/tests/test_support.pyassert_succeedz1TestAssertPreciseEqual.eq.<locals>.assert_succeed    s1    #D##D%:6:#D##E4:6:     )r   r   r   r   r   s   `  ` r   eqzTestAssertPreciseEqual.eq   s8    	; 	tU#d|eU^4d|eU^4r   c                       fd} |||        |||        |||f||f        |||f||f        |||g||g        |||g||g       y )Nc                 |    	  j                   | |fi  j                  | d|d       y # t        $ r Y y w xY w)Nz and z unexpectedly considered equal)r   failAssertionErrorr   s     r   assert_failz.TestAssertPreciseEqual.ne.<locals>.assert_fail(   sG    U'''e>v> 		tUST " s   / 	;;r   )r   r   r   r   r   s   `  ` r   nezTestAssertPreciseEqual.ne'   sg    	U 	D% E4 T4L5%.1UENT4L1T4L5%.1UENT4L1r   c                 @   t        j                  | j                  | j                  | j                        D ]`  \  }}}| j                   |d       |d             | j                   |d       |d             | j                   |d       |d             b t        j                  | j                  | j                        D ]#  \  }}| j                   |d       |d             % t        j                  | j                  | j                        D ]#  \  }}| j                   |d       |d             % t        j                  | j                  | j                        D ]F  \  }}||u r| j                   |d       |d             )| j                   |d       |d             H t        j                  | j                  | j                        D ]F  \  }}||u r| j                   |d       |d             )| j                   |d       |d             H y Nr   )
	itertoolsproduct	int_typesfloat_typescomplex_typesr    r   
bool_typesnp_float_typesnp_complex_types)r   ifcuvs         r   
test_typesz!TestAssertPreciseEqual.test_types6   s    !((9I9I)-););= 	 GAq!GGAaD!A$GGAaD!A$GGAaD!A$		  %%dnndnnE 	 DAqGGAaD!A$	  %%dnndooF 	 DAqGGAaD!A$	  %%d&9&94;N;NO 	$DAqAv!ad#!ad#		$ %%d&;&;T=R=RS 	$DAqAv!ad#!ad#		$r   c           
      F   | j                   D ]  }dD ]  }| j                   |d       |d      |       | j                   |d       |d      |       | j                   |d       |d      |       | j                   |ddz         |dddz  z         |         y )Nexactsingledoubler   precr      P   )r%   r   r    r   tpr7   s      r   test_int_valuesz&TestAssertPreciseEqual.test_int_valuesQ   s    .. 	;B5 ;1r!u401r!u4021D11b5	2a2g;T:	;	;r   c                    t        j                  | j                  | j                        D ]_  \  }}| j                   |d       |d             | j                   |d       |d             | j	                   |d       |d             a y )NTF)r#   r$   r(   r   r    )r   tpatpbs      r   test_bool_valuesz'TestAssertPreciseEqual.test_bool_valuesY   sl    !))$//4??K 	+HCGGCIs4y)GGCJE
+GGCIs5z*	+r   c                    | j                  t              5  | j                  t        j                  d      t        j                  d      d       d d d        | j                  t              5  | j                  t        j                  d      t        j                  d      t        d             d d d        y # 1 sw Y   kxY w# 1 sw Y   y xY w)NFFg<invalid)abs_tolr   r9      )assertRaises
ValueErrorr   npfloat64int)r   s    r   test_abs_tol_parsez)TestAssertPreciseEqual.test_abs_tol_parse_   s    z* 	MGGBJJu%rzz%'8)GL	Mz* 	BGGBJJqM2::a=#a&GA	B 	B	M 	M	B 	Bs   ;B;.AC;CCc                    | j                   D ]  }dD ]  }| j                   |d       |d      |       | j                   |d       |d      |       | j                   |d       |d      |       | j                   |d       |d      |       | j                   |d       |d      |d       | j                   |t               |t              |       | j                   |t               |d      |       | j                   |t                |t               |       | j                   |t               |t               |       | j                   |t               |t              |       | j                   |t               |d	      |       | j                   |t               |t              |       | j                   |t               |t               |         y )
Nr2   g      ?r6                  T)r7   ignore_sign_on_zerog*Gr   )r&   r   r    INFNANr;   s      r   test_float_valuesz(TestAssertPreciseEqual.test_float_valuesf   s   "" 	6B5 63Ct43Ct44"T(63D53D$O3Ct43D5C4"cT(63SD53Ct43AT23Ct43SD5!6	6r   c                     t         t        j                  fD ]'  }| j                   |dt        z          |d             ) y N      ?)floatrI   rJ   r    DBL_EPSILONr   r<   s     r   test_float64_valuesz*TestAssertPreciseEqual.test_float64_valuesz   s6    "**% 	4BGGBs[()2c73	4r   c                 n    t         j                  }| j                   |dt        z          |d             y rU   )rI   float32r    FLT_EPSILONrY   s     r   test_float32_valuesz*TestAssertPreciseEqual.test_float32_values~   s'    ZZ3$%r#w/r   c                    t         t        j                  fD ]  }dD ]U  }|dz  }|dt        z   z  }|dt        dz  z   z  }|dt        dz  z   z  }| j	                   ||       ||             | j	                   ||       ||      d       | j                   ||       ||      d       | j                   ||       ||      dd	       | j	                   ||       ||      d       | j                   ||       ||      dd	       | j	                   ||       ||      dd	       | j                   ||       ||      dd
	       | j                   ||       ||      dd
	       X | j                   |d       |d      dd       | j	                   |d       |d      dd       | j                   |d       |d      dd       | j	                   |d       |d      dd        y )NrV   ig      ?g      rV   r9      r3   r6   r5   r   r7   ulps   gؗҜ<gMg<epsr7   rE   gؗҼ<rC   gC]r2<gq7K<)rW   rI   rJ   rX   r    r   r   r<   scaleabr-   ds          r   test_float64_values_inexactz2TestAssertPreciseEqual.test_float64_values_inexact   s   "**% 	HB5 =CKS;./S;?23S;?231r!u%1r!u731r!u841r!u8!<1r!u841r!u8!<1r!u8!<1r!u8!<1r!u8!<= GGBuIr%yxGGGGBuIr%yxGGGGBuIr%yxGGGGBuIr%yxGG)	Hr   c                    t         j                  }dD ]T  }|dz  }|dt        z   z  }|dt        dz  z   z  }|dt        dz  z   z  }| j                   ||       ||             | j                   ||       ||      d       | j                   ||       ||      d       | j	                   ||       ||      d       | j                   ||       ||      d       | j	                   ||       ||      dd	       | j                   ||       ||      dd	       | j	                   ||       ||      dd
	       | j	                   ||       ||      dd
	       W | j	                   |d       |d      dd       | j                   |d       |d      dd       | j	                   |d       |d      dd       | j                   |d       |d      dd       y )Nr`   rV   r9   ra   r3   r6   r5   r4   rb   rd   gHz>gH׊>re   rf   gv!>g:0yE>)rI   r\   r]   r    r   rg   s          r   test_float32_values_inexactz2TestAssertPreciseEqual.test_float32_values_inexact   s   ZZ1 	9E A{*+A{Q./A{Q./AGGBqE2a5!GGBqE2a5wG/GGBqE2a5xG0GGBqE2a5xG0GGBqE2a5xG0GGBqE2a5xaG8GGBqE2a5xaG8GGBqE2a5xaG8GGBqE2a5xaG8	9" 	4"T(5A4"T(5A4"T(4@4"T(4@r   c                    t        dd      t        dd      t        dd      t        dd      g\  }}}}| j                  D ]&  }dD ]  }| j                   |d       |d      |       | j                   |d       |d      |       | j                   |d       |d      |       | j                   ||       ||      |       | j                   ||       ||      |       | j                   ||       ||      |       | j                   ||       ||      |       | j                   ||       ||      |       | j                   |t        t        t                     |t        t        t                    |       | j                   |t        t        t                      |t        t        t                     |       | j                   |t        t         t                      |t        t         t                     |       | j                   |t        t        t                     |t        t        t                     |       | j                   |t        t        t                     |t        t         t                    |       | j                   |t        t        d             |t        t        d            |       | j                   |t        t
        d             |t        t
        d            |       | j                   |t        dt
                     |t        dt
                    |       | j                   |t        t
        t
                     |t        t
        t
                    |       | j                   |t        t        t
                     |t        t        t
                    |       | j                   |t        t
        t                      |t        t
        t                     |        | j                   |t        t        d             |t        t        d	            d
       ) y )NrN   rO   r2   y      ?       @r6   y      ?      ?y       @       @r   r   r3   )complexr'   r   r    rQ   rR   )r   c_ppc_pnc_npc_nnr<   r7   s          r   test_complex_valuesz*TestAssertPreciseEqual.test_complex_values   s9    #*#s"3WS$5G")$"4gdD6I"KdD$$$ 	LB5 S6
BvJT:6
BvJT:6
BvJT:4"T(64"T(64"T(64"T(64"T(673,-r'#s2C/D4P73-.733E0FTR7C4#./GSD3$4G1HtT73,-r'#t2D/EDQ73,-r'3$2D/EDQ73?+RQ-@tL73?+RQ-@tL71c?+R3-@tL73,-r'#s2C/D4P73,-r'#s2C/D4P73-.733E0FTR-S< GGBwsA'GCO)<7GK?	Lr   c                    t         t        j                  fD ]  }dD ]  }|dz  }|dt        z   z  }|dt        dz  z   z  } |t        ||            } |t        ||            } |t        ||            }| j	                   ||       ||             | j                   ||       ||      d       | j                   ||       ||      d       | j                   ||       ||      d        |t        ||            }	 |t        ||            }
| j	                   ||       ||	      d       | j	                   ||	       ||
      d       | j                   ||       ||	      dd       | j                   ||	       ||
      dd       | j                   ||       ||
      dd       | j                   ||       ||
      d         y )Nr`   rV   r9   r5   r6   rb   r4   )rp   rI   
complex128rX   r    r   r   r<   rh   ri   rj   r-   aaabbbacccs              r   test_complex128_values_inexactz5TestAssertPreciseEqual.test_complex128_values_inexact   s   BMM* 	7B5 7CKS;./S;?231&1&1&22'22X622X622X61&1&22X622X622XA>22XA>22XA>22X6%7	7r   c                    t         j                  }dD ]  }|dz  }|dt        z   z  }|dt        dz  z   z  } |t        ||            } |t        ||            } |t        ||            }| j	                   ||       ||             | j	                   ||       ||      d       | j                   ||       ||      d       | j                   ||       ||      d       | j                   ||       ||      d        |t        ||            }	 |t        ||            }
| j	                   ||       ||	      d       | j	                   ||	       ||
      d       | j                   ||       ||	      dd       | j                   ||	       ||
      dd       | j                   ||       ||
      dd        y )Nr`   rV   r9   r5   r6   r4   rb   )rI   	complex64r]   rp   r    r   rx   s              r   test_complex64_values_inexactz4TestAssertPreciseEqual.test_complex64_values_inexact   s   \\1 	;EA{*+A{Q./AGAqM"BGAqM"BGAqM"BGGBrFBrF#GGBrFBrFG2GGBrFBrFG2GGBrFBrFG2GGBrFBrFG2GAqM"BGAqM"BGGBrFBrFG2GGBrFBrFG2GGBrFBrFG:GGBrFBrFG:GGBrFBrFG:%	;r   c                    t         j                  t         j                  t         j                  t        j
                  t        j                  t        j                  t        j                  t        j                  g}|D ]0  }| j                  ||       | j                  ||j                         2 t        j                   |d      D ]  \  }}| j                  ||        y )Nr9   )ColorredgreenblueShakemintShapecirclesquarePlanetEARTHMERCURYr   r    valuer#   combinations)r   valuesvalri   rj   s        r   
test_enumsz!TestAssertPreciseEqual.test_enums  s    ))U[[%**ejj,,fllFNNL 	$CGGCGGC#	$ **615 	DAqGGAqM	r   c                    t        j                  ddt         j                        j                  d      }|j	                         }| j                  ||       | j                  ||dz          | j                  ||d d        | j                  ||j                         | j                  ||j                  t         j                               | j                  ||j                  j	                         j                         | j                  ||j                                d|j                  _        | j                  ||       t        j                  ddt         j                        }|dt        z   z  }|dt        d	z  z   z  }| j                  ||       | j                  ||d
       | j                  ||d
       y )Nr   rF   )dtype)r9   rd   r8   Frd   rV   r9   r5   r6   )rI   arangeint16reshapecopyr   r    Tastypeint32flattenflags	writeablerJ   rX   )r   ri   rj   r-   s       r   test_arraysz"TestAssertPreciseEqual.test_arrays  s?   IIa"((+33F;FFH11q51Sb6133188BHH%&13388:<< 199;!1IIa"**-{"#{Q&'118$18$r   c                     t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }| j                  ||       | j                  ||       | j                  ||       y )N1900Yz
1900-01-01D1901)rI   
datetime64r   r    r   ri   rj   r-   rk   s        r   test_npdatetimez&TestAssertPreciseEqual.test_npdatetime&  si    MM&#&MM&#&MM,,MM&#&111r   c                     t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }| j                  ||       | j                  ||       | j                  ||       y )Nr   h<   mr9   )rI   timedelta64r   r    r   s        r   test_nptimedeltaz'TestAssertPreciseEqual.test_nptimedelta1  si    NN1c"NN1c"NN2s#NN1c"111r   N)&__name__
__module____qualname____doc__rK   r%   rI   r\   rJ   r)   rW   r&   r   rw   r*   rp   r'   boolbool_r(   r   r    r0   r=   rA   rL   rS   rZ   r^   rl   rn   ru   r~   r   r   r   r   r   r   r   r   r   r      s     Ijj"**-N'N*Kbmm4I 00M!J52$6;+B6(40H.A2$LL7,;,%2		r   r   c                       e Zd Zd Zd Zy)TestMiscc                    t               }t               }g }| j                  ||      5  	 d d d        | j                  t              5 }| j                  ||      5  |j	                  |       d d d        d d d        | j                  t        |      t        j                               y # 1 sw Y   xY w# 1 sw Y   LxY w# 1 sw Y   PxY wr   )objectassertRefCountrG   r   appendassertInstr	exception)r   xylcms        r   test_assertRefCountzTestMisc.test_assertRefCount?  s    HH  A& 		~. 	"$$Q* 	 	c!fc",,/0	 	 	 	s/   B,CB8-C,B58C	=CCc                    d }t               5  | j                  t              5 } t        d      |      } |        ddd       ddd       | j	                  dt        j                               y# 1 sw Y   7xY w# 1 sw Y   ;xY w)zg
        Test that forbid_codegen() prevents code generation using the @jit
        decorator.
        c                       yr"   r   r   r   r   r,   z'TestMisc.test_forbid_codegen.<locals>.fQ  s    r   T)nopythonNzcodegen forbidden by test case)r   rG   RuntimeErrorr   r   r   r   )r   r,   raisescfuncs       r   test_forbid_codegenzTestMisc.test_forbid_codegenL  sy    
	 	""<0 F*T*1-	 	6F<L<L8MN 	 	s!   B A4B 4A=	9B  B	N)r   r   r   r   r   r   r   r   r   r   =  s    1Or   r   __main__)r#   numpyrI   numbar   
numba.corer   numba.tests.supportr   r   enum_usecasesunittestrX   r]   rW   rQ   rR   r   r   r   mainr   r   r   <module>r      sm        8  ElElgX gT	Ox O: zHMMO r   