ó
 ‰\c           @   s—   d  d l  Z  d  d l Z d  d l Z d  d l m Z d Z y e Wn' e k
 rk d e f d „  ƒ  YZ n Xd d „ Z	 d „  Z
 d	 „  Z d
 „  Z d S(   iÿÿÿÿN(   t   LooseVersions   0.23.4t   WindowsErrorc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s-   lib/python2.7/site-packages/skimage/_build.pyR      s   t    c         C   s«  t  t j ƒ d k r, t j d d k r, d SyI d d l m } t | ƒ t k  rd t d t ƒ ‚ n  d d l m	 } Wn² t
 k
 r)g  |  D]$ } | j d	 d
 ƒ j d d
 ƒ ^ qŒ } xU g  | D] } t j j | | ƒ ^ qÀ D]+ } t j j | ƒ sß t d t ƒ ‚ qß qß Wd t d j | ƒ f GHn~ Xxz g  |  D] } t j j | | ƒ ^ q4D]P } t | ƒ skqSn  | j d	 ƒ r™t | ƒ | j d	 d ƒ } n  | | ƒ qSWd S(   sŠ   Use Cython to convert the given files to C.

    Parameters
    ----------
    pyx_files : list of str
        The input .pyx files.

    i   i   t   cleanNiÿÿÿÿ(   t   __version__s)   Cython >= %s needed to build scikit-image(   t	   cythonizes   .pyx.ins   .cs   .pyxs@   Cython >= %s is required to build scikit-image from git checkouts4   Cython >= %s not found; falling back to pre-built %st    (   t   lent   syst   argvt   CythonR   R    t   CYTHON_VERSIONt   RuntimeErrort   Cython.BuildR   t   ImportErrort   replacet   ost   patht   joint   isfilet   _changedt   endswitht   process_tempita_pyx(   t	   pyx_filest   working_pathR   R   t   ft   c_filest   cfilet   pyxfile(    (    s-   lib/python2.7/site-packages/skimage/_build.pyt   cython   s,    
(1//
c         C   sL   t  j d ƒ } x0 t rA |  j d ƒ } | s1 Pn  | j | ƒ q W| j ƒ  S(   Nt   md5i   (   t   hashlibt   newt   Truet   readt   updatet	   hexdigest(   R   t   mt   d(    (    s-   lib/python2.7/site-packages/skimage/_build.pyt   _md5sum<   s    	c         C   s¢   |  d } y t  | d ƒ j ƒ  } Wn t k
 r< d } n Xt  |  d ƒ A } t | ƒ } t  | d ƒ  } | j | j d ƒ ƒ Wd QXWd QX| | j d ƒ k S(   sI   Compare the hash of a Cython file to the cached hash value on disk.

    s   .md5t   rbt   0t   wbs   utf-8N(   t   openR$   t   IOErrorR)   t   writet   encode(   t   filenamet   filename_cachet
   md5_cachedR   t   md5_newt   cf(    (    s-   lib/python2.7/site-packages/skimage/_build.pyR   G   s    

"c         C   sã   y8 y d d l  m } Wn t k
 r6 d d  l } n XWn t k
 rW t d ƒ ‚ n X| j j |  d t j ƒ  ƒ} | j	 ƒ  } |  j
 d ƒ s¤ t d |  ƒ ‚ n  t j j |  ƒ d } t | d ƒ  } | j | ƒ Wd  QXd  S(	   Niÿÿÿÿ(   t   Tempitas5   Building requires Tempita: pip install --user Tempitat   encodings   .pyx.ins   Unexpected extension of %s.i    t   w(   R   R6   R   t   tempitat	   Exceptiont   Templatet   from_filenameR
   t   getdefaultencodingt
   substituteR   t
   ValueErrorR   R   t   splitextR-   R/   (   t   fromfileR9   t   templatet
   pyxcontentR   R   (    (    s-   lib/python2.7/site-packages/skimage/_build.pyR   [   s    (   R
   R   R!   t   distutils.versionR    R   R   t	   NameErrorR:   R   R)   R   R   (    (    (    s-   lib/python2.7/site-packages/skimage/_build.pyt   <module>   s   ,		