B
    ž†\F  ã               @   s    d Z ddlZddlZddlmZmZmZ ddlmZ ddl	m
Z
 yddlmZ dZW n ek
rl   dZY nX dZi add	d
„Zedkrœedƒ ddlmZ dS )z’Build a Pyrex file from .pyx source to .so loadable module using
the installed distutils infrastructure. Call:

out_fname = pyx_to_dll("foo.pyx")
é    N)ÚDistutilsArgErrorÚDistutilsErrorÚCCompilerError)Ú	Extension)Úgrok_environment_error)Úold_build_extTFc       $   	   C   s  t j | ¡s tdt j | ¡ ƒ‚t j t j | ¡¡\}}	|s„t j |	¡\}
}|dks\t|ƒ‚tsv| dt|ƒ … d } t	|
| gd}|dkri }|s¢t j 
|d¡}|}x<|j d¡ddd	… D ]"}t j |¡\}}||kr¾d}P q¾W | d
g ¡}tsþd|krd}nd}|dg}|r | d¡ |r‚|r‚| d|g¡ |jdksT|j d¡r‚t|dƒslddi|_nd|jkr‚d|jd< tr˜|r˜| d¡ | ¡ }| d|| dœ¡ ddlm} ||ƒ}|jsÖg |_|j |¡ tròdti|_| d¡}||_| ¡ }| |¡ y| ¡ }W n tk
r8   ‚ Y nX trPt dƒ | !¡  |sZt‚yJ| d¡}| "¡  | #¡ d }|j$r¢t j 
t j %| ¡t j &|¡¡}|r¤|}t j '|¡}t( |d¡\}}}||krÚ|}nÊt j &|¡}x®|dk rˆ|d7 }t j 
|j)|d|  ¡} yTddl*}!yt j +| ¡r6t  ,| ¡ W n t-k
rR   wèY nX |! .|| ¡ | }W n t/k
r€   wèY nX P qèW t0d| ƒ‚|||ft(|< |S  t1k
rÆ   t2 3d¡ Y nH t/t j4fk
r   t2 5¡ d }"t6|"ƒ}#trt2j7 8|#d  ¡ ‚ Y nX dS )!zUCompile a PYX file to a DLL and return the name of the generated .so
       or .dll .zCould not find %s)z.pyxz.pyNz.c)ÚnameZsourcesZ_pyxbldÚ.éþÿÿÿéÿÿÿÿÚscript_argsz	--verbosez--quietÚ	build_extz--forcez--build-libÚ__init__z	.__init__Úcython_directivesZset_initial_pathZ
SOURCEFILEz--pyrex-c-in-temp)Úscript_namer   r   )ÚDistributionÚbuildz%options (after parsing command line):)NNr   éd   é   z	.reload%sz#reload count for %s reached maximumÚ
)9ÚosÚpathÚexistsÚAssertionErrorÚabspathÚsplitÚsplitextÚ
HAS_CYTHONÚlenr   Újoinr   ÚgetÚDEBUGÚappendÚextendÚendswithÚhasattrr   ÚcopyÚupdateZdistutils.distr   Zext_modulesr   ZcmdclassZget_command_objZ
build_baseZfind_config_filesZparse_config_filesZparse_command_liner   ÚprintZdump_option_dictsZrun_commandsZget_outputsÚinplaceÚdirnameÚbasenameÚgetmtimeÚ_reloadsZ	build_libÚshutilÚisfileÚunlinkÚOSErrorZcopy2ÚIOErrorÚImportErrorÚKeyboardInterruptÚsysÚexitÚerrorÚexc_infor   ÚstderrÚwrite)$ÚfilenameZextZforce_rebuildZbuild_in_tempZpyxbuild_dirZ
setup_argsZreload_supportr)   r   r   ÚmodnameÚ	extensionZpackage_base_dirZpackage_nameZpnamer   ÚquietÚargsZsargsr   Zdistr   ZcfgfilesÚokZobj_build_extZso_pathZorg_pathZ	timestampZlast_timestampZ	last_pathÚcountr+   Zr_pathr.   Úexcr7   © rC   ú1lib/python3.7/site-packages/pyximport/pyxbuild.pyÚ
pyx_to_dll   sÄ     











rE   Ú__main__z	dummy.pyxr   )Útest)Nr   FNNFF)Ú__doc__r   r5   Zdistutils.errorsr   r   r   Zdistutils.extensionr   Zdistutils.utilr   ZCython.Distutils.old_build_extr   r   r   r3   r!   r-   rE   Ú__name__Ú rG   rC   rC   rC   rD   Ú<module>   s$   
 
 