U
    eL                     @   s   d dl Z d dlZzd dlmZ W n ek
r8   eZY nX e jdZedkrzd dl	m
  mZ W nH ek
r   zd dlm
  mZ W n ek
r   edY nX Y nX eeddZedkreeddZedkrd dl	mZ G dd deeZeZdS )	    N)
basestringzsetuptools.command.build_extz:'distutils' cannot be imported. Please install setuptools.Z_du_build_ext	build_ext)r   c                
       sz   e Zd Zejddddddej fddd	d
dg	 Zejdddddg Z fddZ fddZdddZ	 fddZ
  ZS )r   )cython-cplusNzgenerate C++ source files)cython-create-listingNzwrite errors to a listing file)cython-line-directivesNzemit source line directiveszcython-include-dirs=Nz path to the Cython include files)cython-c-in-tempNz'put generated C files in temp directory)zcython-gen-pxiNz*generate .pxi file for public declarations)zcython-directives=Nzcompiler directive overrides)
cython-gdbNz$generate debug information for cygdb)zcython-compile-time-envNzcython compile time environmentr   r   r   r   r   c                    sH   t t|   d| _d| _d| _d | _d | _d| _d| _	d| _
d | _d S )Nr   F)superr   initialize_optionscython_cpluscython_create_listingcython_line_directivescython_include_dirscython_directivescython_c_in_tempcython_gen_pxi
cython_gdbcython_compile_time_envself	__class__ >/tmp/pip-unpacked-wheel-7k3cqui1/Cython/Distutils/build_ext.pyr
   >   s    zbuild_ext.initialize_optionsc                    sP   t t|   | jd kr g | _nt| jtr<| jtj| _| j	d krLi | _	d S N)
r	   r   finalize_optionsr   
isinstancer   splitospathsepr   r   r   r   r   r   J   s    

zbuild_ext.finalize_optionsFc                 C   s   t | |pt |||S r   )getattr)r   	extensionZoption_namedefaultr   r   r   get_extension_attrT   s    zbuild_ext.get_extension_attrc                    s>  ddl m} t| j}t|dg D ]}||kr"|| q"t|j|_|jt| j D ]}||krV|| qVt| j}t	|dr|
|j | |drd|_| |d| |d||| |d	r| jnd | |d
| |dt|dd | j|dd dd	}||f| j| jdkd|d }|j|_tt| | d S )Nr   )	cythonizer   r   r   zc++r   r   r   r   r   Zno_c_in_tracebackr   )r"   )	Zuse_listing_fileZemit_linenumsZinclude_pathZcompiler_directives	build_dirZgenerate_pxiZ	gdb_debugZc_line_in_tracebackZcompile_time_env)forcequiet)ZCython.Build.Dependenciesr$   listr   r    appendinclude_dirsdictr   hasattrupdater#   language
build_tempr&   verbosesourcesr	   r   build_extension)r   extr$   ZincludesZinclude_dirZ
directivesoptionsZnew_extr   r   r   r2   W   sH    






 zbuild_ext.build_extension)F)__name__
__module____qualname__
_build_extuser_optionsZsep_byboolean_optionsr
   r   r#   r2   __classcell__r   r   r   r   r   "   s0      

)sysr   __builtin__r   ImportErrorstrmodulesgetZ_build_ext_moduleZdistutils.command.build_extcommandr   Zsetuptools.command.build_extr    r8   objectZnew_build_extr   r   r   r   <module>   s*   
h