
    xKg57                         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     \/home/alanp/www/video.onchill/myenv/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_types5   s    !((9I9I)-););=GAq!GGAaD!A$GGAaD!A$GGAaD!A$	= %%dnndnnEDAqGGAaD!A$ F %%dnndooFDAqGGAaD!A$ G %%d&9&94;N;NODAqAv!ad#!ad#	 P %%d&;&;T=R=RSDAqAv!ad#!ad#	 T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   tpr6   s      r   test_int_valuesz&TestAssertPreciseEqual.test_int_valuesP   s    ..B51r!u401r!u4021D11b5	2a2g;T:	 6 !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_valuesX   sh    !))$//4??KHCGGCIs4y)GGCJE
+GGCIs5z* L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   r8      )assertRaises
ValueErrorr   npfloat64int)r   s    r   test_abs_tol_parsez)TestAssertPreciseEqual.test_abs_tol_parse^   s    z*GGBJJu%rzz%'8)GL +z*GGBJJqM2::a=#a&GA +* +***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 )
Nr1   g      ?r5                  T)r6   ignore_sign_on_zerog*Gr   )r%   r   r   INFNANr:   s      r   test_float_valuesz(TestAssertPreciseEqual.test_float_valuese   sx   ""B5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 #r   c                     t         t        j                  fD ]'  }| j                   |dt        z          |d             ) y N      ?)floatrH   rI   r   DBL_EPSILONr   r;   s     r   test_float64_valuesz*TestAssertPreciseEqual.test_float64_valuesy   s1    "**%BGGBs[()2c73 &r   c                 n    t         j                  }| j                   |dt        z          |d             y rT   )rH   float32r   FLT_EPSILONrX   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rU   ig      ?g      rU   r8      r2   r5   r4   r   r6   ulps   gؗҜ<gMg<epsr6   rD   gؗҼ<rB   gC]r2<gq7K<)rV   rH   rI   rW   r   r   r   r;   scaleabr,   ds          r   test_float64_values_inexactz2TestAssertPreciseEqual.test_float64_values_inexact   s   "**%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!< 6 GGBuIr%yxGGGGBuIr%yxGGGGBuIr%yxGGGGBuIr%yxGG) &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_   rU   r8   r`   r2   r5   r4   r3   ra   rc   gHz>gH׊>rd   re   gv!>g:0yE>)rH   r[   r\   r   r   rf   s          r   test_float32_values_inexactz2TestAssertPreciseEqual.test_float32_values_inexact   s   ZZ1E A{*+A{Q./A{Q./AGGBqE2a5!GGBqE2a5wG/GGBqE2a5xG0GGBqE2a5xG0GGBqE2a5xG0GGBqE2a5xaG8GGBqE2a5xaG8GGBqE2a5xaG8GGBqE2a5xaG8 2" 	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 )NrM   rN   r1   y      ?       @r5   y      ?      ?y       @       @r   r   r2   )complexr&   r   r   rP   rQ   )r   c_ppc_pnc_npc_nnr;   r6   s          r   test_complex_valuesz*TestAssertPreciseEqual.test_complex_values   s+    #*#s"3WS$5G")$"4gdD6I"KdD$$$B5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- 6< GGBwsA'GCO)<7GK? %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_   rU   r8   r4   r5   ra   r3   )ro   rH   
complex128rW   r   r   r   r;   rg   rh   ri   r,   aaabbbacccs              r   test_complex128_values_inexactz5TestAssertPreciseEqual.test_complex128_values_inexact   s   BMM*B5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% 6 +r   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_   rU   r8   r4   r5   r3   ra   )rH   	complex64r\   ro   r   r   rw   s              r   test_complex64_values_inexactz4TestAssertPreciseEqual.test_complex64_values_inexact   s   \\1E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:% 2r   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 )Nr8   )ColorredgreenblueShakemintShapecirclesquarePlanetEARTHMERCURYr   r   valuer"   combinations)r   valuesvalrh   ri   s        r   
test_enumsz!TestAssertPreciseEqual.test_enums  s    ))U[[%**ejj,,fllFNNLCGGCGGC#  **615DAqGGAqM 6r   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   rE   )dtype)r8   rc   r7   Frc   rU   r8   r4   r5   )rH   arangeint16reshapecopyr   r   Tastypeint32flattenflags	writeablerI   rW   )r   rh   ri   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)rH   
datetime64r   r   r   rh   ri   r,   rj   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<   mr8   )rH   timedelta64r   r   r   s        r   test_nptimedeltaz'TestAssertPreciseEqual.test_nptimedelta0  si    NN1c"NN1c"NN2s#NN1c"111r   N)&__name__
__module____qualname____doc__rJ   r$   rH   r[   rI   r(   rV   r%   r   rv   r)   ro   r&   boolbool_r'   r   r   r/   r<   r@   rK   rR   rY   r]   rk   rm   rt   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                 n   d}d}g }| j                  ||      5  	 d d d        | j                  t              5 }| j                  ||      5  |j                  |       d d d        d d d        | j	                  dt        j                               y # 1 sw Y   yxY w# 1 sw Y   CxY w# 1 sw Y   GxY w)Ng     K@g     P@66)assertRefCountrF   r   appendassertInstr	exception)r   xylcms        r   test_assertRefCountzTestMisc.test_assertRefCount>  s      A& '~."$$Q* + / 	dC-. '& +* /.s.   BB+BB+BB(	$B++B4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>.fP  s    r   T)nopythonNzcodegen forbidden by test case)r   rF   RuntimeErrorr   r   r   r   )r   r+   raisescfuncs       r   test_forbid_codegenzTestMisc.test_forbid_codegenK  sk    
	""<0F*T*1- 1  	6F<L<L8MN 10 s!   B A4B 4A=	9B  B	N)r   r   r   r   r   r   r   r   r   r   <  s    /Or   r   __main__)r"   numpyrH   numbar   
numba.corer   numba.tests.supportr   r   enum_usecasesunittestrW   r\   rV   rP   rQ   r   r   r   mainr   r   r   <module>r      sm        8  ElElgX gT	Ox O: zHMMO r   