
    -Ph#                         d dl Z d dlZd dlmZ d dlmZmZmZmZm	Z	m
Z
mZmZmZ dZ ee          ZeefZ G d d          Z G d dej                  ZdS )	    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                   $    e Zd Zed             ZdS )Cachedc                      t          |          S N)next)selfxs     \/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/Cython/Tests/TestCythonUtils.pyr   zCached.cached_next   s    Aww    N)__name__
__module____qualname__r   r    r   r   r   r      s-          ]  r   r   c                   V    e 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S )TestCythonUtilsc                    |                      dt          d                     |                      dt          d                     |                      dt          d                     |                      dt          d                     d S )	N
0x001D00A1z0.29a1
0x001D03C4z	0.29.3rc4
0x001D00F0z0.29
0x040000F0z4.0)assertEqualr   )r   s    r   test_build_hex_versionz&TestCythonUtils.test_build_hex_version   s    '8'B'BCCC'8'E'EFFF'8'@'@AAA'8'?'?@@@@@r   c                     d}t          |          }t          j        |          }|                     |d            |                     |                    d          |           d S )Nfoo   )r   r   matchassertIsNotr"   group)r   method_name
cache_namer'   s       r   test_cache_method_namez&TestCythonUtils.test_cache_method_name   s`    &{33
#)*55%%%Q55555r   c                    t                      }|                     t          |t                               |                     t          |t
                               |                     |t                                 d S r   )r   assertFalsehasattr
CACHE_NAME
assertTrueMETHOD_NAMEset_of_names_equalset)r   objs     r   test_requirements_for_Cachedz,TestCythonUtils.test_requirements_for_Cached&   se    hhj11222[11222SUU+++++r   c                 f    |                      t          t          |                    |           d S r   )r"   r4   r   )r   r5   values      r   r3   z"TestCythonUtils.set_of_names_equal-   s/    3C88995AAAAAr   c                    t                      }d}t          |          }t          |t          i            t          ||i            |                     t          ||                     |                     |t          ||fh           d S Nbar)r   r   setattrr0   r.   r/   r3   NAMES)r   r5   r*   r+   s       r   test_find_cache_attributesz*TestCythonUtils.test_find_cache_attributes0   s    hh&{33
Z$$$Z$$$k22333ej+-F%GHHHHHr   c                    t                      }t          t          d                    }|fdi}|                     |                    |          d           |                     |t          h           |                     t          |t                    |           |                     |                    |          d           |                     |t          h           |                     t          |t                    |           d S )N   r   )	r   iterranger"   r   r3   r=   getattrr0   r   r5   r8   caches       r   test_cached_methodz"TestCythonUtils.test_cached_method;   s    hhU1XX1 	//333eW---j115999 	//333eW---j11599999r   c                    t                      }t          t          d                    }|fdi}|                    |           t	          |           |                     |t                                 |                     |                    |          d           |                     |t          h           |                     t          |t                    |           d S )Nr@   r&   )r   rA   rB   r   r	   r3   r4   r"   r=   rC   r0   rD   s       r   test_clear_method_cachesz(TestCythonUtils.test_clear_method_cachesJ   s    hhU1XX1C   SUU+++//333eW---j11599999r   c                 F   t                      }d}t          |          }||f}t          ||t                                 |                     t          ||                     |                     ||h           t          |           |                     ||h           d S r:   )r   r   r<   objectr.   r/   r3   r	   )r   r5   r*   r+   namess        r   ,test_clear_method_caches_with_missing_methodz<TestCythonUtils.test_clear_method_caches_with_missing_methodX   s    hh&{33
K'Z***k22333eW---C   eW-----r   c                 &   g t           fd            } |dddd          5 }dgk    sJ |                     |dd	dif           d d d            n# 1 swxY w Y   dd
gk    sJ  G d dt                    }d d = |                     |          5   |ddd          5 }dgk    sJ |                     |dddif            |d          # 1 swxY w Y   dd
gk    sJ 	 d d d            n# 1 swxY w Y   d d = |                     t                    5   |ddd          5 }dgk    sJ |                     |dddif           t	          d          # 1 swxY w Y   dd
gk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nc               ?   l   K                        d           | |fV                       d           d S )Nenterexit)append)argskwargsstatess     r   genz<TestCythonUtils.test_try_finally_contextmanager.<locals>.genh   sA      MM'""".   MM&!!!!!r   r&      r@      )r   rO   )r&   rV   r@   r   rP   c                       e Zd ZdS )DTestCythonUtils.test_try_finally_contextmanager.<locals>.MyExceptionN)r   r   r   r   r   r   MyExceptionrY   s   s        Dr   rZ   )y)r&   rV   r[   zFAIL INSIDESTOP)r
   r"   RuntimeErrorassertRaisesStopIteration)r   rU   	call_argsrZ   rT   s       @r   test_try_finally_contextmanagerz/TestCythonUtils.test_try_finally_contextmanagerf   sF   	#	" 	" 	" 	" 
$	#	"
 SAqA 	?)gY&&&&YS!H(=>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? '6*****	 	 	 	 	, 	 	 	 111I{++ 	/ 	/QQ 19'****  Vc1X,>???!k-0001 1 1 1 1 1 1 1 gv......	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 111I}-- 	/ 	/QQ ,9'****  Vc1X,>???#F+++, , , , , , , , gv......	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/sq   $AAAC7&/CC	C7C	C77C;>C;!F03E##E'	'F*E'	+FF
F
c                    t           j        }t           j        }t                      x}t           _        t                      x}t           _        	 t	                       |t           _        |t           _        n# |t           _        |t           _        w xY w|                                }|                                }ddlm} |                     ||           |r|                     ||           d S d S )NrV   __version__)	sysstderrstdoutr   r   getvalue rd   assertIn)r   orig_stderrorig_stdoutrf   rg   versions         r   test_print_versionz"TestCythonUtils.test_print_version   s    jj&jj(&jj(	%OOO$CJ$CJJ %CJ$CJ$$$$""""------gv&&& 	+MM'6*****	+ 	+s   A5 5Bc                    t           j        }t           j        }t                      x}xt           _        t           _        	 t	                       |t           _        |t           _        n# |t           _        |t           _        w xY w|                                }ddlm} |                     ||           | 	                    |
                    |          d           d S )NrV   rc   r&   )re   rf   rg   r   r   rh   ri   rd   rj   r"   count)r   rk   rl   rg   rm   s        r   test_print_version_stdouterrz,TestCythonUtils.test_print_version_stdouterr   s    jj+3::55cj	%OOO$CJ$CJJ %CJ$CJ$$$$""------gv&&&g..22222s    A' 'Bc                 R   g d}|D ]\  }}|                      t          |          t          |                     t          |          }|                      t          |          t          |                     |                      ||d|||t          |          fz             d S )N)).0rs   )z.000000rs   ).1rt   )1.ru   )z1.0ru   )z1.000000000000000000000ru   )z-00000000000000000000001.000000000000000000000ru   )
12345.0025rv   )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_reprz)TestCythonUtils.test_normalise_float_repr   s    
 
 
0 $, 	 	IxU9--uX???))44FU9--uV}}===@IvW_afgpaqaqCrr   	 	r   N)r   r   r   r#   r,   r6   r3   r>   rF   rH   rL   ra   rn   rq   r}   r   r   r   r   r      s        A A A6 6 6, , ,B B B	I 	I 	I: : :: : :. . ./ / /@+ + +&3 3 3 ! ! ! ! !r   r   )re   unittestior   Cython.Utilsr   r   r   r   r   r	   r
   r   r   r2   r0   r=   r   TestCaser   r   r   r   <module>r      s!   



                             {++
K       u u u u uh' u u u u ur   