î
É XÃ  ã               @   sÔ   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 e e j j	 ƒ Z
 d d „  Z Gd d „  d e
 ƒ Z	 Gd d „  d e	 ƒ Z e	 e j _	 e	 e j _	 d	 e  j k rÐ e	 e  j d	 _	 n  d S)
é    N)Ú_get_unpatchedc              C   sN   d }  xA |  D]9 } y t  | d d g ƒj d SWq t k
 rE Yq Xq Wd S)z9
    Return True if Cython or Pyrex can be imported.
    úCython.Distutils.build_extúPyrex.Distutils.build_extÚfromlistÚ	build_extTF)r   r   )Ú
__import__r   Ú	Exception)Zpyrex_implsZ
pyrex_impl© r	   úF/home/ubuntu/projects/ifolica/build/setuptools/setuptools/extension.pyÚ
have_pyrex   s    	r   c               @   s.   e  Z d  Z d Z d d „  Z d d „  Z d S)Ú	Extensionz7Extension that uses '.c' files in place of '.pyx' filesc             O   s!   t  j |  | | Ž |  j ƒ  d  S)N)Ú
_ExtensionÚ__init__Ú_convert_pyx_sources_to_lang)ÚselfÚargsÚkwr	   r	   r
   r      s    zExtension.__init__c             C   sq   t  ƒ  r d S|  j p d } | j ƒ  d k r4 d n d } t j t j d | ƒ } t t | |  j	 ƒ ƒ |  _	 d S)zÜ
        Replace sources with .pyx extensions to sources with the target
        language extension. This mechanism allows language authors to supply
        pre-converted sources but to prefer the .pyx sources.
        NÚ zc++z.cppz.cz.pyx$)
r   ÚlanguageÚlowerÚ	functoolsÚpartialÚreÚsubÚlistÚmapÚsources)r   ÚlangZ
target_extr   r	   r	   r
   r   !   s    	z&Extension._convert_pyx_sources_to_langN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r	   r	   r	   r
   r      s   r   c               @   s   e  Z d  Z d Z d S)ÚLibraryz=Just like a regular Extension, but built as a library insteadN)r   r   r    r!   r	   r	   r	   r
   r"   /   s   r"   zdistutils.command.build_ext)Úsysr   r   Údistutils.coreÚ	distutilsÚdistutils.extensionZsetuptools.distr   Úcorer   r   r   r"   Ú	extensionÚmodulesr	   r	   r	   r
   Ú<module>   s   