o
    €eX  ã                   @   sX   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ dd„ Z	G dd„ deƒZ
dS )é    N)Ú
CythonTestc                  O   s,   t j ¡  d t jj_t jjj| i |¤Ž d S ©N)ÚCythonZUtilsZclear_function_cachesÚBuildÚDependenciesZ	_dep_treeZ	cythonize)ÚargsÚkwargs© r	   úRD:\Projects\ConvertPro\env\Lib\site-packages\Cython/Build/Tests/TestRecythonize.pyÚfresh_cythonize   s   

r   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestRecythonizec                 C   s.   t  | ¡ tjdtj d¡rdnd d| _d S )Nzrecythonize-testZTEST_TMP©ÚprefixÚdir)r   ÚsetUpÚtempfileÚmkdtempÚosÚpathÚisdirÚtemp_dir©Úselfr	   r	   r
   r      s   
þÿzTestRecythonize.setUpc                 C   s   t  | ¡ t | j¡ d S r   )r   ÚtearDownÚshutilÚrmtreer   r   r	   r	   r
   r      s   
zTestRecythonize.tearDownc           	      C   ó®  t jd| jd}tj |d¡}tj |d¡}tj |d¡}tjj 	¡ }t
|dƒ}| d¡ W d   ƒ n1 s8w   Y  t
|dƒ}| d¡ W d   ƒ n1 sRw   Y  |  ||h| |¡¡ t|ƒ t d	¡ t
|ƒ}| ¡ }W d   ƒ n1 s~w   Y  t
|dƒ}| d
¡ W d   ƒ n1 s˜w   Y  t|ƒ t
|ƒ}| ¡ }W d   ƒ n1 s´w   Y  |  d|v ¡ |  d|v ¡ |  d|v ¡ |  d|v ¡ d S )NÚsrcr   úa.pxdúa.pyxúa.cÚwúcdef int value
ú
value = 1
é   úcdef double value
ú__pyx_v_1a_value = 1;ú__pyx_v_1a_value = 1.0;©r   r   r   r   r   Újoinr   r   r   Zcreate_dependency_treeÚopenÚwriteÚassertEqualZall_dependenciesr   ÚtimeÚsleepÚreadÚ
assertTrueZassertFalse)	r   Úsrc_dirÚa_pxdÚa_pyxÚa_cÚdep_treeÚfÚa_c_contents1Úa_c_contents2r	   r	   r
   Ú"test_recythonize_pyx_on_pxd_change   s8   ÿÿ


ÿÿ

ÿz2TestRecythonize.test_recythonize_pyx_on_pxd_changec           	      C   r   )Nr   r   r   za.pyr    r!   r"   r#   r$   r%   r&   r'   r(   )	r   r1   r2   Za_pyr4   r5   r6   r7   r8   r	   r	   r
   Ú!test_recythonize_py_on_pxd_changeI   s8   ÿÿ


ÿÿ

ÿz1TestRecythonize.test_recythonize_py_on_pxd_changec           
      C   sø  t jd| jd}tj |d¡}tj |d¡}tj |d¡}tj |d¡}tjj 	¡ }t
|dƒ}| d¡ W d   ƒ n1 s?w   Y  t
|dƒ}| d	¡ W d   ƒ n1 sYw   Y  t
|dƒ}| d
¡ W d   ƒ n1 ssw   Y  |  ||h| |¡¡ t||gƒ t d¡ t
|ƒ}| ¡ }W d   ƒ n1 s¡w   Y  t
|dƒ}| d¡ W d   ƒ n1 s»w   Y  t||gƒ t
|ƒ}| ¡ }	W d   ƒ n1 sÙw   Y  |  d|v ¡ |  d|	v ¡ |  d|	v ¡ |  d|v ¡ d S )Nr   r   r   r   zb.pyxúb.cr!   r"   r#   zcimport a
a.value = 2
r$   r%   ú__pyx_v_1a_value = 2;ú__pyx_v_1a_value = 2.0;r(   )
r   r1   r2   r3   Zb_pyxÚb_cr5   r6   Úb_c_contents1Úb_c_contents2r	   r	   r
   Ú&test_recythonize_pyx_on_dep_pxd_changes   s@   ÿÿÿ


ÿÿ

ÿz6TestRecythonize.test_recythonize_pyx_on_dep_pxd_changec                 C   s<  t jd| jd}tj |d¡}tj |d¡}tj |d¡}tj |d¡}tj |d¡}tjj 	¡ }t
|dƒ}| d	¡ W d   ƒ n1 sFw   Y  t
|dƒ}| d
¡ W d   ƒ n1 s`w   Y  t
|dƒ}| d¡ W d   ƒ n1 szw   Y  t
|dƒ}| d¡ W d   ƒ n1 s”w   Y  |  |||h| |¡¡ t||gƒ t d¡ t
|ƒ}| ¡ }	W d   ƒ n1 sÃw   Y  t
|dƒ}| d¡ W d   ƒ n1 sÝw   Y  t||gƒ t
|ƒ}| ¡ }
W d   ƒ n1 sûw   Y  |  d|	v ¡ |  d|
v ¡ |  d|
v ¡ |  d|	v ¡ d S )Nr   r   r   r   zb.pxdzb.pyr;   r!   r"   r#   z
cimport a
za.value = 2
r$   r%   r<   r=   r(   )r   r1   r2   r3   Zb_pxdZb_pyr>   r5   r6   r?   r@   r	   r	   r
   Ú%test_recythonize_py_on_dep_pxd_change¤   sH   ÿÿÿÿ


ÿÿ

ÿz5TestRecythonize.test_recythonize_py_on_dep_pxd_changeN)	Ú__name__Ú
__module__Ú__qualname__r   r   r9   r:   rA   rB   r	   r	   r	   r
   r      s    	**1r   )r   r   r   r-   ZCython.Build.Dependenciesr   ZCython.UtilsZCython.TestUtilsr   r   r   r	   r	   r	   r
   Ú<module>   s    