
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
ó
Àfc           @   s¾  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z 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 d  d l m Z m Z d  d l Z e j j d ƒ r× d  d l j j j j Z n e j e  j Z y
 e Z Wn e k
 r
d Z n Xe Z d  d l  m! Z! d  d l m" Z" d d d	 d
 g Z# d d „ Z$ e j% d d „ ƒ Z& e j% d „  ƒ Z' e j% d „  ƒ Z( e j% d „  ƒ Z) d e* f d „  ƒ  YZ+ d d! d „  ƒ  YZ, e j% d „  ƒ Z- d „  Z. e j% d „  ƒ Z/ e j% d „  ƒ Z0 d „  Z1 d „  Z2 d „  Z3 d d" d „  ƒ  YZ4 e5 e  d ƒ rNe  j6 g Z7 n g  Z7 d e4 f d „  ƒ  YZ8 e j9 e j: g  d j; ƒ  D] Z< e= e e< d ƒ ^ qƒƒ Z> d	 e! f d  „  ƒ  YZ? d S(#   iÿÿÿÿN(   t   six(   t   builtinst   mapt   java(   t   DistutilsError(   t   working_sett   AbstractSandboxt   DirectorySandboxt   SandboxViolationt	   run_setupc         B   s_   d } e  |  | ƒ � } | j ƒ  } Wd QX| d k r? | } n  e | |  d ƒ } | | | Ud S(   s.   
    Python 3 implementation of execfile.
    t   rbNt   exec(   t   opent   readt   Nonet   compile(   t   filenamet   globalst   localst   modet   streamt   scriptt   code(    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt	   _execfile#   s    	c         c   s>   t  j } |  d  k	 r# |  t  j (n  z	 | VWd  | t  j (Xd  S(   N(   t   syst   argvR   (   t   replt   saved(    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt	   save_argv0   s    
	c          c   s%   t  j }  z	 |  VWd  |  t  j (Xd  S(   N(   R   t   path(   R   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt	   save_path;   s    
	c         c   sB   t  j j |  d t ƒt j } |  t _ z	 d VWd | t _ Xd S(   sL   
    Monkey-patch tempfile.tempdir with replacement, ensuring it exists
    t   exist_okN(   t   pkg_resourcest
   py31compatt   makedirst   Truet   tempfilet   tempdir(   t   replacementR   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   override_tempD   s    			c         c   s7   t  j ƒ  } t  j |  ƒ z	 | VWd  t  j | ƒ Xd  S(   N(   t   ost   getcwdt   chdir(   t   targetR   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   pushdU   s
    	t   UnpickleableExceptionc           B   s   e  Z d  Z e d „  ƒ Z RS(   sP   
    An exception representing another Exception that could not be pickled.
    c         C   sa   y  t  j |  ƒ t  j | ƒ f SWn: t k
 r\ d d l m } | j | | t | ƒ ƒ ƒ SXd S(   s‰   
        Always return a dumped (pickled) type and exc. If exc can't be pickled,
        wrap it in UnpickleableException first.
        iÿÿÿÿ(   R-   N(   t   picklet   dumpst	   Exceptiont   setuptools.sandboxR-   t   dumpt   repr(   t   typet   exct   cls(    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR2   d   s
     (   t   __name__t
   __module__t   __doc__t   staticmethodR2   (    (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR-   _   s   t   ExceptionSaverc           B   s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   s^   
    A Context Manager that will save an exception, serialized, and restore it
    later.
    c         C   s   |  S(   N(    (   t   self(    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt	   __enter__x   s    c         C   s,   | s
 d  St  j | | ƒ |  _ | |  _ t S(   N(   R-   R2   t   _savedt   _tbR#   (   R<   R4   R5   t   tb(    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   __exit__{   s
    	c         C   sK   d t  |  ƒ k r d St t j |  j ƒ \ } } t j | | |  j ƒ d S(   s"   restore and re-raise any exceptionR>   N(   t   varsR   R.   t   loadsR>   R    t   reraiseR?   (   R<   R4   R5   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   resume†   s    (   R7   R8   R9   R=   RA   RE   (    (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR;   r   s   		c          #   sg   t  j j ƒ  ‰  t ƒ  � }  ˆ  VWd QXt  j j ˆ  ƒ ‡  f d †  t  j Dƒ } t | ƒ |  j ƒ  d S(   s    
    Context in which imported modules are saved.

    Translates exceptions internal to the context into the equivalent exception
    outside the context.
    Nc         3   s1   |  ]' } | ˆ  k r | j  d  ƒ r | Vq d S(   s
   encodings.N(   t
   startswith(   t   .0t   mod_name(   R   (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pys	   <genexpr>Ÿ   s    (   R   t   modulest   copyR;   t   updatet   _clear_modulesRE   (   t	   saved_exct   del_modules(    (   R   s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   save_modules�   s    
c         C   s%   x t  |  ƒ D] } t j | =q Wd  S(   N(   t   listR   RI   (   t   module_namesRH   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyRL   ©   s    c          c   s*   t  j ƒ  }  z	 |  VWd  t  j |  ƒ Xd  S(   N(   R    t   __getstate__t   __setstate__(   R   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   save_pkg_resources_state®   s    	c         c   s•   t  j j |  d ƒ } t ƒ  �q t ƒ  �a t ƒ  t ƒ  �J t ƒ  �: t | ƒ �' t	 |  ƒ � t
 d ƒ d  VWd  QXWd  QXWd  QXWd  QXWd  QXWd  QXd  S(   Nt   tempt
   setuptools(   R(   R   t   joinRT   RO   t   hide_setuptoolsR   R   R'   R,   t
   __import__(   t	   setup_dirt   temp_dir(    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   setup_context·   s    




c         C   s"   t  j d ƒ } t | j |  ƒ ƒ S(   sH  
    >>> _needs_hiding('setuptools')
    True
    >>> _needs_hiding('pkg_resources')
    True
    >>> _needs_hiding('setuptools_plugin')
    False
    >>> _needs_hiding('setuptools.__init__')
    True
    >>> _needs_hiding('distutils')
    True
    >>> _needs_hiding('os')
    False
    >>> _needs_hiding('Cython')
    True
    s1   (setuptools|pkg_resources|distutils|Cython)(\.|$)(   t   reR   t   boolt   match(   RH   t   pattern(    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   _needs_hidingÆ   s    c          C   s    t  t t j ƒ }  t |  ƒ d S(   s%  
    Remove references to setuptools' modules from sys.modules to allow the
    invocation to import the most appropriate setuptools. This technique is
    necessary to avoid issues such as #315 where setuptools upgrading itself
    would fail to find a function declared in the metadata.
    N(   t   filterRa   R   RI   RL   (   RI   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyRX   Û   s    c         C   s  t  j j t  j j |  ƒ ƒ } t | ƒ �á yª |  g t | ƒ t j (t j j d | ƒ t	 j
 ƒ  t	 j j d „  ƒ t |  t ƒ rŠ |  n |  j t j ƒ  ƒ } t | ƒ �' t d | d d ƒ } t |  | ƒ Wd QXWn/ t k
 r} | j r| j d r‚  qn XWd QXd S(   s8   Run a distutils setup script, sandboxed in its directoryi    c         S   s
   |  j  ƒ  S(   N(   t   activate(   t   dist(    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   <lambda>ï   t    t   __file__R7   t   __main__N(   R(   R   t   abspatht   dirnameR\   RP   R   R   t   insertR   t   __init__t	   callbackst   appendt
   isinstancet   strt   encodet   getfilesystemencodingR   t   dictR   t
   SystemExitt   args(   t   setup_scriptRu   RZ   t   dunder_filet   nst   v(    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR	   æ   s    
c           B   sÙ  e  Z d  Z e Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 x< d d d	 g D]+ Z e e e ƒ rX e
 e ƒ e ƒ  e <qX qX Wd) d
 „ Z e r« e d e ƒ Z n  e d e ƒ Z xl d d d d d d d d d d d d d d d d d d d g D]+ Z e e e ƒ rú e e ƒ e ƒ  e <qú qú Wd „  Z x9 d  d! g D]+ Z e e e ƒ r?e e ƒ e ƒ  e <q?q?Wd" „  Z x9 d# d$ g D]+ Z e e e ƒ r„e e ƒ e ƒ  e <q„q„Wd% „  Z d& „  Z d' „  Z d( „  Z RS(*   sD   Wrap 'os' module and 'open()' builtin for virtualizing setup scriptsc         C   sE   g  t  t ƒ D]+ } | j d ƒ r t |  | ƒ r | ^ q |  _ d  S(   Nt   _(   t   dirt   _osRF   t   hasattrt   _attrs(   R<   t   name(    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyRl     s    c         C   s1   x* |  j  D] } t t | t | | ƒ ƒ q
 Wd  S(   N(   R~   t   setattrR(   t   getattr(   R<   t   sourceR   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   _copy  s    c         C   s;   |  j  |  ƒ t r" |  j t _ n  |  j t _ t |  _ d  S(   N(   Rƒ   t   _fileR   t   filet   _openR   R#   t   _active(   R<   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR=     s
    c         C   s5   t  |  _ t r t t _ n  t t _ |  j t ƒ d  S(   N(	   t   FalseR‡   R„   R   R…   R†   R   Rƒ   R|   (   R<   t   exc_typet	   exc_valuet	   traceback(    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyRA     s
    		c         C   s   |  � | ƒ  SWd QXd S(   s   Run 'func' under os sandboxingN(    (   R<   t   func(    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   run  s    c            s%   t  t ˆ  ƒ ‰ ‡  ‡ f d †  } | S(   Nc            s@   |  j  r- |  j ˆ  | | | | Ž \ } } n  ˆ | | | | Ž S(   N(   R‡   t   _remap_pair(   R<   t   srct   dstRu   t   kw(   R   t   original(    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   wrap&  s    	$(   R�   R|   (   R   R“   (    (   R   R’   s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   _mk_dual_path_wrapper#  s    t   renamet   linkt   symlinkc            s+   ˆ p t  t ˆ  ƒ ‰ ‡  ‡ f d †  } | S(   Nc            s4   |  j  r$ |  j ˆ  | | | Ž } n  ˆ | | | Ž S(   N(   R‡   t   _remap_input(   R<   R   Ru   R‘   (   R   R’   (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR“   4  s    	(   R�   R|   (   R   R’   R“   (    (   R   R’   s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   _mk_single_path_wrapper1  s    R…   R   t   statt   listdirR*   t   chmodt   chownt   mkdirt   removet   unlinkt   rmdirt   utimet   lchownt   chroott   lstatt	   startfilet   mkfifot   mknodt   pathconft   accessc            s%   t  t ˆ  ƒ ‰ ‡  ‡ f d †  } | S(   Nc            sM   |  j  r= |  j ˆ  | | | Ž } |  j ˆ  ˆ | | | Ž ƒ Sˆ | | | Ž S(   N(   R‡   R˜   t   _remap_output(   R<   R   Ru   R‘   (   R   R’   (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR“   I  s    	(   R�   R|   (   R   R“   (    (   R   R’   s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   _mk_single_with_returnF  s    t   readlinkt   tempnamc            s%   t  t ˆ  ƒ ‰ ‡  ‡ f d †  } | S(   Nc            s,   ˆ | | Ž  } |  j  r( |  j ˆ  | ƒ S| S(   N(   R‡   R«   (   R<   Ru   R‘   t   retval(   R   R’   (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR“   X  s    	(   R�   R|   (   R   R“   (    (   R   R’   s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt	   _mk_queryU  s    R)   t   tmpnamc         C   s   | S(   s=   Called to remap or validate any path, whether input or output(    (   R<   R   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   _validate_pathd  s    c         O   s   |  j  | ƒ S(   s   Called for path inputs(   R²   (   R<   t	   operationR   Ru   R‘   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR˜   h  s    c         C   s   |  j  | ƒ S(   s   Called for path outputs(   R²   (   R<   R³   R   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR«   l  s    c         O   s6   |  j  | d | | | Ž |  j  | d | | | Ž f S(   s?   Called for path pairs like rename, link, and symlink operationss   -froms   -to(   R˜   (   R<   R³   R�   R�   Ru   R‘   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyRŽ   p  s    N(   R7   R8   R9   Rˆ   R‡   Rl   Rƒ   R=   RA   R�   R”   R   R}   R|   R   R   R™   R„   R†   R¬   R°   R²   R˜   R«   RŽ   (    (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR     sB   						

					t   devnullc           B   s¼   e  Z d  Z e j d d d d d d d d d	 d
 d d d g ƒ Z d g Z e d „ Z d „  Z	 e
 ru d d „ Z
 n  d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z RS(   s<   Restrict operations to a single subdirectory - pseudo-chrootR   Rœ   R�   Rž   RŸ   R    R¡   R¢   R£   R¤   R§   R¨   R®   s   .*lib2to3.*\.pickle$c         C   s�   t  j j t  j j | ƒ ƒ |  _ t  j j |  j d ƒ |  _ g  | D]$ } t  j j t  j j | ƒ ƒ ^ qC |  _ t j	 |  ƒ d  S(   NRf   (
   R(   R   t   normcaset   realpatht   _sandboxRW   t   _prefixt   _exceptionsR   Rl   (   R<   t   sandboxt
   exceptionsR   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyRl   Œ  s
    !1c         O   s&   d d l  m } | | | | ƒ ‚ d  S(   Niÿÿÿÿ(   R   (   R1   R   (   R<   R³   Ru   R‘   R   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt
   _violation•  s    t   rc         O   sK   | d k r8 |  j  | ƒ r8 |  j d | | | | Ž n  t | | | | Ž S(   NR½   t   rtR
   t   rUt   UR…   (   R½   R¾   R
   R¿   RÀ   (   t   _okR¼   R„   (   R<   R   R   Ru   R‘   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR„   ›  s    c         O   sK   | d k r8 |  j  | ƒ r8 |  j d | | | | Ž n  t | | | | Ž S(   NR½   R¾   R
   R¿   RÀ   R   (   R½   R¾   R
   R¿   RÀ   (   RÁ   R¼   R†   (   R<   R   R   Ru   R‘   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR†      s    c         C   s   |  j  d ƒ d  S(   NR±   (   R¼   (   R<   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR±   ¥  s    c         C   ss   |  j  } zY t |  _  t j j t j j | ƒ ƒ } |  j | ƒ p` | |  j k p` | j |  j	 ƒ SWd  | |  _  Xd  S(   N(
   R‡   Rˆ   R(   R   Rµ   R¶   t	   _exemptedR·   RF   R¸   (   R<   R   t   activeR¶   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyRÁ   ¨  s    		c            sN   ‡  f d †  |  j  Dƒ } ‡  f d †  |  j Dƒ } t j | | ƒ } t | ƒ S(   Nc         3   s   |  ] } ˆ  j  | ƒ Vq d  S(   N(   RF   (   RG   t	   exception(   t   filepath(    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pys	   <genexpr>·  s   c         3   s!   |  ] } t  j | ˆ  ƒ Vq d  S(   N(   R]   R_   (   RG   R`   (   RÅ   (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pys	   <genexpr>»  s   (   R¹   t   _exception_patternst	   itertoolst   chaint   any(   R<   RÅ   t   start_matchest   pattern_matchest
   candidates(    (   RÅ   s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyRÂ   µ  s    c         O   sH   | |  j  k rD |  j | ƒ rD |  j | t j j | ƒ | | Ž n  | S(   s   Called for path inputs(   t	   write_opsRÁ   R¼   R(   R   R¶   (   R<   R³   R   Ru   R‘   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR˜   Á  s    %c         O   sF   |  j  | ƒ s  |  j  | ƒ r< |  j | | | | | Ž n  | | f S(   s?   Called for path pairs like rename, link, and symlink operations(   RÁ   R¼   (   R<   R³   R�   R�   Ru   R‘   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyRŽ   Ç  s     iÿ  c         O   sR   | t  @r9 |  j | ƒ r9 |  j d | | | | | Ž n  t j | | | | | Ž S(   s   Called for low-level os.open()s   os.open(   t   WRITE_FLAGSRÁ   R¼   R|   R   (   R<   R…   t   flagsR   Ru   R‘   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR   Í  s    (   R7   R8   R9   Rs   t   fromkeysRÍ   RÆ   t   _EXCEPTIONSRl   R¼   R„   R†   R±   RÁ   RÂ   R˜   RŽ   R   (    (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR   ~  s    								s4   O_WRONLY O_RDWR O_APPEND O_CREAT O_TRUNC O_TEMPORARYi    c           B   s,   e  Z d  Z e j d ƒ j ƒ  Z d „  Z RS(   sE   A setup script attempted to modify the filesystem outside the sandboxs  
        SandboxViolation: {cmd}{args!r} {kwargs}

        The package setup script has attempted to modify files on your system
        that are not within the EasyInstall build area, and has been aborted.

        This package cannot be safely installed by EasyInstall, and may not
        support alternate installation locations even if you run its setup
        script by hand.  Please inform the package's author and the EasyInstall
        maintainers to find out if a fix or workaround is available.
        c         C   s%   |  j  \ } } } |  j j t ƒ  �  S(   N(   Ru   t   tmplt   formatR   (   R<   t   cmdRu   t   kwargs(    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   __str__é  s    (   R7   R8   R9   t   textwrapt   dedentt   lstripRÒ   RÖ   (    (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR   Ú  s   
(    (    (@   R(   R   R$   t   operatort	   functoolsRÇ   R]   t
   contextlibR.   R×   t   setuptools.externR    t   setuptools.extern.six.movesR   R   t   pkg_resources.py31compatR    t   platformRF   t$   org.python.modules.posix.PosixModulet   pythonRI   t   posixt   PosixModuleR|   R   R…   R„   t	   NameErrorR   R   R†   t   distutils.errorsR   R   t   __all__R   t   contextmanagerR   R   R'   R,   R0   R-   R;   RO   RL   RT   R\   Ra   RX   R	   R   R}   R´   RÑ   R   t   reducet   or_t   splitt   aR�   RÎ   R   (    (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   <module>   s^   


	
					wV	+