ó
¦V]c           @   sN  d  Z  d Z d d l Z d d l Z d d l Z d d l m Z d d l m Z m	 Z	 d d l
 m Z d d l m Z d d l
 m Z d d l Z y d d	 l m Z Wn e k
 r¿ e Z n Xd
 „  Z e d ƒ r e d ƒ r e d ƒ r e j d ƒ n  e j Z e j Z d e f d „  ƒ  YZ e ƒ  Z d e j f d „  ƒ  YZ d S(   sÂ   Cython.Distutils.old_build_ext

Implements a version of the Distutils 'build_ext' command, for
building Cython extension modules.

Note that this module is deprecated.  Use cythonize() instead.
s   $Id:$iÿÿÿÿN(   t   DistutilsPlatformError(   t   newert   newer_group(   t   log(   t	   build_ext(   t	   sysconfig(   t
   basestringc         C   sb   yJ xC t  j t  j ƒ  d ƒ D]) } |  | d j t j d ƒ k r t Sq WWn t k
 r] n Xt S(   Ni    i   t   /(	   t   inspectt   getouterframest   currentframet   replacet   ost   sept   Truet	   Exceptiont   False(   t   patht   frame(    (    s=   lib/python2.7/site-packages/Cython/Distutils/old_build_ext.pyt   _check_stack   s    s   setuptools/extensions.pys   pyximport/pyxbuild.pys   Cython/Distutils/build_ext.pysW   Cython.Distutils.old_build_ext does not properly handle dependencies and is deprecated.t   Optimizationc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s1   d |  _  t j |  j  Œ  |  _ t j ƒ  |  _ d  S(   Nt   OPTt   CFLAGSt   CPPFLAGSt   EXTRA_CFLAGSt
   BASECFLAGSt	   PY_CFLAGS(   R   R   R   R   R   R   (   t   flagsR   t   get_config_varst   statet   config_vars(   t   self(    (    s=   lib/python2.7/site-packages/Cython/Distutils/old_build_ext.pyt   __init__2   s         	c         C   s€   d } xs t  |  j |  j ƒ D]\ \ } } | d k	 r g  | j ƒ  D] } | | k rA | ^ qA } d j | ƒ |  j | <q q Wd S(   s.   disable optimization for the C or C++ compilers   -O1s   -O2s   -O3t    N(   s   -O1s   -O2s   -O3(   t   zipR   R   t   Nonet   splitt   joinR   (   R   t
   badoptionst   flagt   optiont   optt   L(    (    s=   lib/python2.7/site-packages/Cython/Distutils/old_build_ext.pyt   disable_optimization?   s
    "+c         C   sF   x? t  |  j |  j ƒ D]( \ } } | d k	 r | |  j | <q q Wd S(   s   restore the original stateN(   R"   R   R   R#   R   (   R   R'   R(   (    (    s=   lib/python2.7/site-packages/Cython/Distutils/old_build_ext.pyt   restore_stateH   s    "(   t   __name__t
   __module__R    R+   R,   (    (    (    s=   lib/python2.7/site-packages/Cython/Distutils/old_build_ext.pyR   1   s   			t   old_build_extc           B   s  e  Z d  Z e j j Z e j j Z e j j Z e j j Z e j	 d# d$ d% d d" d e f d& d' d( d) d* d+ d, d- d d" d e f d. d/ d0 d1 g ƒ e j	 d d d d	 d d d d d d g
 ƒ d „  Z d „  Z d „  Z d „  Z d „  Z d  „  Z d! „  Z RS(2   sC   build C/C++ and Cython extensions (compile/link to build directory)s   cython-cpluss   generate C++ source filess   cython-create-listings   write errors to a listing files   cython-line-directivess   emit source line directivess   cython-include-dirs=s    path to the Cython include filess   cython-c-in-temps'   put generated C files in temp directorys   cython-gen-pxis*   generate .pxi file for public declarationss   cython-directives=s   compiler directive overridess
   cython-gdbs$   generate debug information for cygdbs   cython-compile-time-envs   cython compile time environments   pyrex-cpluss   pyrex-create-listings   pyrex-line-directivess   pyrex-include-dirs=s   pyrex-c-in-temps   pyrex-gen-pxis   pyrex-directives=s	   pyrex-gdbc         C   sn   t  j j |  ƒ d |  _ d |  _ d |  _ d  |  _ d  |  _ d |  _	 d |  _
 t |  _ d |  _ d  |  _ d  S(   Ni    (   t
   _build_extR   t   initialize_optionst   cython_cplust   cython_create_listingt   cython_line_directivesR#   t   cython_include_dirst   cython_directivest   cython_c_in_tempt   cython_gen_pxiR   t
   cython_gdbt   no_c_in_tracebackt   cython_compile_time_env(   R   (    (    s=   lib/python2.7/site-packages/Cython/Distutils/old_build_ext.pyR1   Œ   s    									c         C   s<   | d  d k r% t  |  d | d ƒ St j j |  | ƒ Sd  S(   Ni   t   pyrex_t   cython_(   t   getattrR0   R   t   __getattr__(   R   t   name(    (    s=   lib/python2.7/site-packages/Cython/Distutils/old_build_ext.pyR?   ™   s    c         C   s9   | d  d k r( t  |  d | d | ƒ S| |  j | <d  S(   Ni   R<   R=   (   t   setattrt   __dict__(   R   R@   t   value(    (    s=   lib/python2.7/site-packages/Cython/Distutils/old_build_ext.pyt   __setattr__Ÿ   s    c         C   sw   t  j j |  ƒ |  j d  k r+ g  |  _ n- t |  j t ƒ rX |  j j t j	 ƒ |  _ n  |  j
 d  k rs i  |  _
 n  d  S(   N(   R0   R   t   finalize_optionsR5   R#   t
   isinstanceR   R$   R   t   pathsepR6   (   R   (    (    s=   lib/python2.7/site-packages/Cython/Distutils/old_build_ext.pyRE   ¦   s    c         C   sX   |  j  s7 g  |  j D] } t | d t ƒ r d ^ q rD t j ƒ  n  t j j |  ƒ d  S(   NR9   i   (	   R9   t
   extensionsR>   R   t   optimizationR+   R0   R   t   run(   R   t   ext(    (    s=   lib/python2.7/site-packages/Cython/Distutils/old_build_ext.pyRJ   ±   s    c         C   sM   |  j  |  j ƒ x6 |  j D]+ } |  j | j | ƒ | _ |  j | ƒ q Wd  S(   N(   t   check_extensions_listRH   t   cython_sourcest   sourcest   build_extension(   R   RK   (    (    s=   lib/python2.7/site-packages/Cython/Distutils/old_build_ext.pyt   build_extensions¼   s    c   #      C   sC  y0 d d l  m } m } m } d d l m } Wn6 t k
 rh t j ƒ  d } d | GHt	 d ƒ ‚ n Xg  } g  }	 i  }
 |  j
 p“ t | d d ƒ } |  j p® t | d	 d ƒ } |  j pÉ t | d
 d ƒ } |  j pt | d d ƒ p| j o| j j ƒ  d k } |  j pt | d d ƒ } |  j p8t | d t ƒ } |  j pSt | d d- ƒ } |  j } y4 x- | j D]" } | | k rl| j | ƒ qlqlWWn t k
 r¦n Xt | j ƒ | _ x- | j D]" } | | k rÃ| j | ƒ qÃqÃW|  j } t | d ƒ r| j | j ƒ n  | r#d } n d } |  j rŸ|  j sNt | d d ƒ rŸt  j! j" |  j# d ƒ } x< | j$ j% d ƒ d  D] } t  j! j" | | ƒ } q}Wn d- } d- } xõ | D]í } t  j! j& t  j! j' | ƒ ƒ \ } } | d k rñd } n  | d k rS| pt  j! j( | ƒ } | j t  j! j" | | | ƒ ƒ |	 j | ƒ | d |
 | <q²| d k sk| d k r’| d- k s†t) | | ƒ rŸ| } qŸq²| j | ƒ q²W|	 s­| S| j$ } x†|	 D]~} |
 | } | g t | j* pâd. ƒ } | d j ƒ  d k r1t  j! j+ | d  d ƒ r1| | d  d g 7} n  |  j, pIt- | | d ƒ }  |  rq| d- k	 rqt) | | ƒ }  n  |  r+t. j/ d | | ƒ |  j0 t  j! j( | ƒ ƒ |  j r¸t  j1 } n	 |  j2 } | | d | d  | d! | d" | d# | d$ | d% | d& | d' | d( | d) | ƒ}! | | d* |! d+ | ƒ}" q½t. j/ d, | ƒ q½W| S(/   s  
        Walk the list of source files in 'sources', looking for Cython
        source files (.pyx and .py).  Run Cython on all that are
        found, and return a modified 'sources' list with Cython source
        files replaced by the generated C (or C++) files.
        iÿÿÿÿ(   t   CompilationOptionst   default_optionst   compile(   t
   PyrexErrori   s   failed to import Cython: %ss&   Cython does not appear to be installedR3   i    R4   R:   R2   s   c++R8   R9   R;   R6   s   .cpps   .cR7   t   pyrext   .s   .pys   .pyxs   .pxis   .pxdiüÿÿÿiýÿÿÿt   pxdR   s   cythoning %s to %st   use_listing_filet   include_patht   compiler_directivest   output_filet   cplust   emit_linenumst   c_line_in_tracebackt   generate_pxit
   output_dirt	   gdb_debugt   compile_time_envt   optionst   full_module_names+   skipping '%s' Cython extension (up-to-date)N(    (3   t   Cython.Compiler.MainRQ   RR   RS   t   Cython.Compiler.ErrorsRT   t   ImportErrort   syst   exc_infoR    R3   R>   R4   R:   R2   t   languaget   lowerR8   R9   R   R;   R#   R5   t   appendt   AttributeErrort   listt   include_dirsR6   t   hasattrt   updatet   inplaceR7   R   R   R%   t
   build_tempR@   R$   t   splitextt   basenamet   dirnameR   t   dependst   isfilet   forceR   R   t   infot   mkpatht   curdirt	   build_lib(#   R   RN   t	   extensionRQ   t   cython_default_optionst   cython_compileRT   t   et   new_sourcesRM   t   cython_targetst   create_listingt   line_directivesR:   R\   R8   R9   R;   t   includest   it
   directivest
   target_extt
   target_dirt   package_namet   newest_dependencyt   sourcet   baseRK   R`   t   module_namet   targetRw   t   rebuildRc   t   result(    (    s=   lib/python2.7/site-packages/Cython/Distutils/old_build_ext.pyRM   Ä   sº    								$	 	
0				N(   s   cython-cplusNs   generate C++ source files(   s   cython-create-listingNs   write errors to a listing file(   s   cython-line-directivesNs   emit source line directives(   s   cython-c-in-tempNs'   put generated C files in temp directory(   s   cython-gen-pxiNs*   generate .pxi file for public declarations(   s   cython-directives=Ns   compiler directive overrides(   s
   cython-gdbNs$   generate debug information for cygdb(   s   cython-compile-time-envNs   cython compile time environment(   s   pyrex-cplusNs   generate C++ source files(   s   pyrex-create-listingNs   write errors to a listing file(   s   pyrex-line-directivesNs   emit source line directives(   s   pyrex-c-in-tempNs'   put generated C files in temp directory(   s   pyrex-gen-pxiNs*   generate .pxi file for public declarations(   s   pyrex-directives=Ns   compiler directive overrides(   s	   pyrex-gdbNs$   generate debug information for cygdb(   R-   R.   t   descriptionR0   R   t   sep_byt   user_optionst   boolean_optionst   help_optionst   extendR#   R1   R?   RD   RE   RJ   RP   RM   (    (    (    s=   lib/python2.7/site-packages/Cython/Distutils/old_build_ext.pyR/   R   sh      
        
    
								(   t   __doc__t   __revision__R   Rh   R   t   distutils.errorsR    t   distutils.dep_utilR   R   t	   distutilsR   t   distutils.commandR   R0   R   t   warningst   __builtin__R   Rg   t   strR   t   warnt   extension_name_ret   show_compilerst   objectR   RI   R/   (    (    (    s=   lib/python2.7/site-packages/Cython/Distutils/old_build_ext.pyt   <module>   s2   
		
			