o
    ¢øÁf©  ã                   @   s¦   d dl Z d dlZzd dlmZ W n ey   d dlmZ Y nw 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„ deƒZG d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                   @   s   e Zd Zedd„ ƒZdS )ÚCachedc                 C   s   t |ƒS ©N)Únext)ÚselfÚx© r   úX/var/www/html/mig_web/myenv/lib/python3.10/site-packages/Cython/Tests/TestCythonUtils.pyr      s   zCached.cached_nextN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r      s    r   c                   @   sl   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestCythonUtilsc                 C   sD   |   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   r   r   r   Útest_build_hex_version   s   z&TestCythonUtils.test_build_hex_versionc                 C   s8   d}t |ƒ}t |¡}|  |d ¡ |  | d¡|¡ d S )NÚfooé   )r   r   ÚmatchÚassertIsNotr   Úgroup)r   Úmethod_nameÚ
cache_namer    r   r   r   Útest_cache_method_name!   s
   
z&TestCythonUtils.test_cache_method_namec                 C   s8   t ƒ }|  t|tƒ¡ |  t|tƒ¡ |  |tƒ ¡ d S r   )r   ÚassertFalseÚhasattrÚ
CACHE_NAMEÚ
assertTrueÚMETHOD_NAMEÚset_of_names_equalÚset)r   Úobjr   r   r   Útest_requirements_for_Cached)   s   z,TestCythonUtils.test_requirements_for_Cachedc                 C   s   |   tt|ƒƒ|¡ d S r   )r   r,   r   )r   r-   Úvaluer   r   r   r+   0   s   z"TestCythonUtils.set_of_names_equalc                 C   sR   t ƒ }d}t|ƒ}t|ti ƒ t||i ƒ |  t||ƒ¡ |  |t||fh¡ d S ©NÚbar)r   r   Úsetattrr(   r&   r'   r+   ÚNAMES)r   r-   r#   r$   r   r   r   Útest_find_cache_attributes3   s   z*TestCythonUtils.test_find_cache_attributesc                 C   s„   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   r+   r3   Úgetattrr(   ©r   r-   r/   Úcacher   r   r   Útest_cached_method>   s   
z"TestCythonUtils.test_cached_methodc                 C   sr   t ƒ }ttdƒƒ}|fdi}| |¡ t|ƒ |  |tƒ ¡ |  | |¡d¡ |  |th¡ |  t	|t
ƒ|¡ d S )Nr5   r   )r   r6   r7   r   r   r+   r,   r   r3   r8   r(   r9   r   r   r   Útest_clear_method_cachesM   s   

z(TestCythonUtils.test_clear_method_cachesc                 C   s`   t ƒ }d}t|ƒ}||f}t||tƒ ƒ |  t||ƒ¡ |  ||h¡ t|ƒ |  ||h¡ d S r0   )r   r   r2   Úobjectr&   r'   r+   r   )r   r-   r#   r$   Únamesr   r   r   Ú,test_clear_method_caches_with_missing_method[   s   z<TestCythonUtils.test_clear_method_caches_with_missing_methodc              	      s¨  g ‰ t ‡ fdd„ƒ}|ddddd}ˆ dgksJ ‚|  |d	d
dif¡ W d   ƒ n1 s.w   Y  ˆ ddgks;J ‚G dd„ dtƒ}ˆ d d …= |  |¡5 |dddd}ˆ dgks]J ‚|  |dddif¡ |dƒ‚1 snw   Y  ˆ ddgks{J ‚W d   ƒ n1 s…w   Y  ˆ d d …= |  t¡6 |dddd}ˆ dgks¤J ‚|  |dddif¡ tdƒ‚1 sµw   Y  ˆ ddgksÂJ ‚W d   ƒ d S 1 sÍw   Y  d S )Nc                  ?   s$    ˆ   d¡ | |fV  ˆ   d¡ d S )NÚenterÚexit)Úappend)ÚargsÚkwargs©Ústatesr   r   Úgenk   s   €

z<TestCythonUtils.test_try_finally_contextmanager.<locals>.genr   é   r5   é   )r   r@   )r   rH   r5   r   rA   c                   @   s   e Zd ZdS )zDTestCythonUtils.test_try_finally_contextmanager.<locals>.MyExceptionN)r   r   r   r   r   r   r   ÚMyExceptionv   s    rJ   )Úy)r   rH   rK   zFAIL INSIDEÚSTOP)r	   r   ÚRuntimeErrorÚassertRaisesÚStopIteration)r   rG   Ú	call_argsrJ   r   rE   r   Útest_try_finally_contextmanageri   s6   þ
ýû
ý"ûz/TestCythonUtils.test_try_finally_contextmanagerc                 C   sŠ   t j}t j}tƒ  }t _tƒ  }t _ztƒ  W |t _|t _n|t _|t _w | ¡ }| ¡ }ddlm} |  ||¡ |rC|  ||¡ d S d S )NrH   ©Ú__version__)	ÚsysÚstderrÚstdoutr   r
   ÚgetvalueÚ rS   ÚassertIn)r   Úorig_stderrÚorig_stdoutrU   rV   Úversionr   r   r   Útest_print_version‰   s"   ÿÿz"TestCythonUtils.test_print_versionc                 C   sz   t j}t j}tƒ  } t _t _ztƒ  W |t _|t _n|t _|t _w | ¡ }ddlm} |  ||¡ |  	| 
|¡d¡ d S )NrH   rR   r   )rT   rU   rV   r   r
   rW   rX   rS   rY   r   Úcount)r   rZ   r[   rV   r\   r   r   r   Útest_print_version_stdouterrœ   s   ÿz,TestCythonUtils.test_print_version_stdouterrc                 C   sh   g d¢}|D ]+\}}|   t|ƒt|ƒ¡ t|ƒ}|   t|ƒt|ƒ¡ |   ||d|||t|ƒf ¡ qd S )N))ú.0r`   )z.000000r`   )ú.1ra   )ú1.rb   )z1.0rb   )z1.000000000000000000000rb   )z-00000000000000000000001.000000000000000000000rb   )ú
12345.0025rc   )Ú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Úresultr   r   r   Útest_normalise_float_repr¬   s   þûz)TestCythonUtils.test_normalise_float_reprN)r   r   r   r   r%   r.   r+   r4   r;   r<   r?   rQ   r]   r_   rj   r   r   r   r   r      s     r   )rT   Úunittestr   ÚImportErrorÚioÚCython.Utilsr   r   r   r   r   r   r	   r
   r   r*   r(   r3   r=   r   ÚTestCaser   r   r   r   r   Ú<module>   s    ÿ,