
    h#                         S SK r S SKrS SKJr  S SKJrJrJrJrJ	r	J
r
JrJrJr  Sr\" \5      r\\4r " S S5      r " S S\R$                  5      rg)	    N)StringIO)	_CACHE_NAME_PATTERN_build_cache_name_find_cache_attributesbuild_hex_versioncached_methodclear_method_cachestry_finally_contextmanagerprint_versionnormalise_float_reprcached_nextc                   $    \ rS rSr\S 5       rSrg)Cached   c                     [        U5      $ N)next)selfxs     V/var/www/fran/franai/venv/lib/python3.13/site-packages/Cython/Tests/TestCythonUtils.pyr   Cached.cached_next   s    Aw     N)__name__
__module____qualname____firstlineno__r   r   __static_attributes__r   r   r   r   r      s     r   r   c                   \    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)TestCythonUtils   c                     U R                  S[        S5      5        U R                  S[        S5      5        U R                  S[        S5      5        U R                  S[        S5      5        g )	N
0x001D00A1z0.29a1
0x001D03C4z	0.29.3rc4
0x001D00F0z0.29
0x040000F0z4.0)assertEqualr   )r   s    r   test_build_hex_version&TestCythonUtils.test_build_hex_version   sZ    '8'BC'8'EF'8'@A'8'?@r   c                     Sn[        U5      n[        R                  " U5      nU R                  US 5        U R	                  UR                  S5      U5        g )Nfoo   )r   r   matchassertIsNotr'   group)r   method_name
cache_namer-   s       r   test_cache_method_name&TestCythonUtils.test_cache_method_name   sI    &{3
#))*5%Q5r   c                     [        5       nU R                  [        U[        5      5        U R	                  [        U[
        5      5        U R                  U[        5       5        g r   )r   assertFalsehasattr
CACHE_NAME
assertTrueMETHOD_NAMEset_of_names_equalset)r   objs     r   test_requirements_for_Cached,TestCythonUtils.test_requirements_for_Cached&   sC    hj12[12SU+r   c                 L    U R                  [        [        U5      5      U5        g r   )r'   r;   r   )r   r<   values      r   r:   "TestCythonUtils.set_of_names_equal-   s    3C895Ar   c                     [        5       nSn[        U5      n[        U[        0 5        [        X0 5        U R	                  [        X5      5        U R                  U[        X2415        g Nbar)r   r   setattrr7   r5   r6   r:   NAMES)r   r<   r0   r1   s       r   test_find_cache_attributes*TestCythonUtils.test_find_cache_attributes0   sY    h&{3
Z$$23ej-F%GHr   c                    [        5       n[        [        S5      5      nU4S0nU R                  UR	                  U5      S5        U R                  U[        15        U R                  [        U[        5      U5        U R                  UR	                  U5      S5        U R                  U[        15        U R                  [        U[        5      U5        g )N   r   )	r   iterranger'   r   r:   rF   getattrr7   r   r<   r@   caches       r   test_cached_method"TestCythonUtils.test_cached_method;   s    hU1X1 	/3eW-j159 	/3eW-j159r   c                 f   [        5       n[        [        S5      5      nU4S0nUR                  U5        [	        U5        U R                  U[        5       5        U R                  UR                  U5      S5        U R                  U[        15        U R                  [        U[        5      U5        g )NrJ   r,   )r   rK   rL   r   r	   r:   r;   r'   rF   rM   r7   rN   s       r   test_clear_method_caches(TestCythonUtils.test_clear_method_cachesJ   s    hU1X1C SU+/3eW-j159r   c                     [        5       nSn[        U5      nX24n[        X[        5       5        U R	                  [        X5      5        U R                  X15        [        U5        U R                  X15        g rC   )r   r   rE   objectr5   r6   r:   r	   )r   r<   r0   r1   namess        r   ,test_clear_method_caches_with_missing_method<TestCythonUtils.test_clear_method_caches_with_missing_methodX   sg    h&{3
'*23W-C W-r   c                   ^ / m[         U4S j5       nU" SSSSS9 nTS/:X  d   eU R                  USS	S045        S S S 5        TSS
/:X  d   e " S S[        5      nTS S 2	 U R                  U5         U" SSSS9 nTS/:X  d   eU R                  USSS045        U" S5      e! , (       d  f       Nn= f! , (       d  f       O= fTSS
/:X  d   e S S S 5        O! , (       d  f       O= fTS S 2	 U R                  [        5         U" SSSS9 nTS/:X  d   eU R                  USSS045        [	        S5      e! , (       d  f       O= fTSS
/:X  d   e S S S 5        g ! , (       d  f       g = f)Nc               ?   \   >#    TR                  S5        X4v   TR                  S5        g 7f)Nenterexit)append)argskwargsstatess     r   gen<TestCythonUtils.test_try_finally_contextmanager.<locals>.genh   s&     MM'". MM&!s   ),r,      rJ      )r   r\   )r,   rd   rJ   r   r]   c                       \ rS rSrSrg)DTestCythonUtils.test_try_finally_contextmanager.<locals>.MyExceptions   r   N)r   r   r   r   r   r   r   r   MyExceptionrg   s   s    r   ri   )y)r,   rd   rj   zFAIL INSIDESTOP)r
   r'   RuntimeErrorassertRaisesStopIteration)r   rb   	call_argsri   ra   s       @r   test_try_finally_contextmanager/TestCythonUtils.test_try_finally_contextmanagerf   s   	#	" 
$	"
 AqA)gY&&&YS!H(=>  '6****	, 	 1I{+QQ9'***  Vc1X,>?!-00    gv.... ,++ 1I}-QQ9'***  Vc1X,>?#F++   gv.... .--sG    B$3	C<(B5$
B25
C	?C
C(	E+D99
E	E
E,c                    [         R                  n[         R                  n[        5       =n[         l        [        5       =n[         l         [	        5         U[         l        U[         l        UR                  5       nUR                  5       nSSKJn  U R                  XT5        U(       a  U R                  XS5        g g ! U[         l        U[         l        f = f)Nrd   __version__)	sysstderrstdoutr   r   getvalue rt   assertIn)r   orig_stderrorig_stdoutrv   rw   versions         r   test_print_version"TestCythonUtils.test_print_version   s    jjjj&j(&j(	%O$CJ$CJ""-g&MM'*  %CJ$CJs   
B= =Cc                    [         R                  n[         R                  n[        5       =n=[         l        [         l         [	        5         U[         l        U[         l        UR                  5       nSSKJn  U R                  XC5        U R                  UR                  U5      S5        g ! U[         l        U[         l        f = f)Nrd   rs   r,   )ru   rv   rw   r   r   rx   ry   rt   rz   r'   count)r   r{   r|   rw   r}   s        r   test_print_version_stdouterr,TestCythonUtils.test_print_version_stdouterr   s    jjjj+3:55cj	%O$CJ$CJ"-g&g.2 %CJ$CJs   
B+ +Cc                 
   / SQnU Hy  u  p#U R                  [        U5      [        U5      5        [        U5      nU R                  [        U5      [        U5      5        U R                  XCSX$U[        U5      4-  5        M{     g )N)).0r   )z.000000r   ).1r   )1.r   )z1.0r   )z1.000000000000000000000r   )z-00000000000000000000001.000000000000000000000r   )
12345.0025r   )1E5z100000.)z.1E-5z.000001)z1.1E-5z.000011)z12.3E-5z.000123)z.1E10z1000000000.)z1.1E10z11000000000.)z123.4E10z1234000000000.)z	123.456E0z123.456)z
123.456E-1z12.3456)z
123.456E-2z1.23456)z	123.456E1z1234.56)z	123.456E2z12345.6)z2.1E80zR210000000000000000000000000000000000000000000000000000000000000000000000000000000.z.normalise_float_repr(%r) == %r != %r  (%.330f))r'   floatr   )r   examples	float_strnorm_strresults        r   test_normalise_float_repr)TestCythonUtils.test_normalise_float_repr   s|    
0 $,IU9-uX?))4FU9-uV}=@IW_afgpaqCrr $,r   r   N)r   r   r   r   r(   r2   r=   r:   rG   rP   rS   rX   rp   r~   r   r   r   r   r   r   r    r       sB    A6,B	I::./@+&3 !r   r    )ru   unittestior   Cython.Utilsr   r   r   r   r   r	   r
   r   r   r9   r7   rF   r   TestCaser    r   r   r   <module>r      sV    
     {+
K uh'' ur   