ó
b-äQc           @   sÐ  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z e  j d k rf 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 l m Z m Z m Z d d d d	 g Z d
 „  Z d d d „  ƒ  YZ e e  d ƒ r(e  j g Z n g  Z y' d  d l m  Z  e j! e  ƒ  ƒ [  Wn e" k
 rhn Xd e f d „  ƒ  YZ# e e j$ g  d j% ƒ  D] Z& e' e e& d ƒ ^ q•ƒ Z( d e f d „  ƒ  YZ) d S(   iÿÿÿÿNt   java(   t   DistutilsError(   t   working_set(   t   builtinst   execfilet   reducet   AbstractSandboxt   DirectorySandboxt   SandboxViolationt	   run_setupc            sú  t  j ƒ  } t j } t j } t  j j t  j j ˆ  ƒ ƒ } t  j j | d ƒ } t  j j | ƒ su t  j	 | ƒ n  t
 j } t j j ƒ  } t j ƒ  }	 zÁ | t
 _ t  j | ƒ yg ˆ  g t | ƒ t j (t j j d | ƒ t j ƒ  t j j d „  ƒ t | ƒ j ‡  f d †  ƒ Wn= t k
 rXt j ƒ  d }
 |
 j rY|
 j d rY‚  qYn XWd t j |	 ƒ t j j | ƒ g  t j D]( } | | k r„| j d ƒ r„| ^ q„} t t t j j  | ƒ ƒ t  j | ƒ | t j (| t j (| t
 _ Xd S(   s8   Run a distutils setup script, sandboxed in its directoryt   tempi    c         S   s
   |  j  ƒ  S(   N(   t   activate(   t   dist(    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   <lambda>C   s    c              s   t  d i ˆ  d 6d d 6ƒ S(   Ns   setup.pyt   __file__t   __main__t   __name__(   R   (    (   t   setup_script(    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR   E   s   i   Ns
   encodings.(!   t   ost   getcwdt   syst   argvt   patht   abspatht   dirnamet   joint   isdirt   makedirst   tempfilet   tempdirt   modulest   copyt   pkg_resourcest   __getstate__t   chdirt   listt   insertR   t   __init__t	   callbackst   appendR   t   runt
   SystemExitt   exc_infot   argst   __setstate__t   updatet
   startswitht   mapt   __delitem__(   R   R+   t   old_dirt	   save_argvt	   save_patht	   setup_dirt   temp_dirt   save_tmpt   save_modulest   pr_statet   vt   mod_namet   del_modules(    (   R   s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR	   0   sD    

 		


c           B   sÇ  e  Z d  Z e Z d „  Z d „  Z d „  Z d „  Z x< d d d g D]+ Z	 e
 e e	 ƒ rF e e	 ƒ e ƒ  e	 <qF qF 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	 ƒ rre e	 ƒ e ƒ  e	 <qrqr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   _osR.   t   hasattrt   _attrs(   t   selft   name(    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR%   f   s    c         C   s1   x* |  j  D] } t t | t | | ƒ ƒ q
 Wd  S(   N(   R@   t   setattrR   t   getattr(   RA   t   sourceRB   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   _copyl   s    c         C   s{   zB |  j  |  ƒ t r% |  j t _ n  |  j t _ t |  _ | ƒ  SWd t |  _ t r` t t _ n  t t _ |  j  t	 ƒ Xd S(   s   Run 'func' under os sandboxingN(
   RF   t   _fileR   t   filet   _opent   opent   Truet   _activet   FalseR>   (   RA   t   func(    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR(   p   s    			c            s%   t  t ˆ  ƒ ‰ ‡  ‡ f d †  } | S(   Nc            s@   |  j  r- |  j ˆ  | | | | Ž \ } } n  ˆ | | | | Ž S(   N(   RL   t   _remap_pair(   RA   t   srct   dstR+   t   kw(   RB   t   original(    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   wrap‚   s    	$(   RD   R>   (   RB   RT   (    (   RB   RS   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(   RL   t   _remap_input(   RA   R   R+   RR   (   RB   RS   (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyRT   Ž   s    	(   RD   R>   (   RB   RS   RT   (    (   RB   RS   s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   _mk_single_path_wrapperŒ   s    RH   RJ   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(   RL   RY   t   _remap_output(   RA   R   R+   RR   (   RB   RS   (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyRT       s    	(   RD   R>   (   RB   RT   (    (   RB   RS   s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   _mk_single_with_returnž   s    t   readlinkt   tempnamc            s%   t  t ˆ  ƒ ‰ ‡  ‡ f d †  } | S(   Nc            s,   ˆ | | Ž  } |  j  r( |  j ˆ  | ƒ S| S(   N(   RL   Rl   (   RA   R+   RR   t   retval(   RB   RS   (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyRT   ¬   s    	(   RD   R>   (   RB   RT   (    (   RB   RS   s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt	   _mk_queryª   s    R   t   tmpnamc         C   s   | S(   s=   Called to remap or validate any path, whether input or output(    (   RA   R   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   _validate_path¶   s    c         O   s   |  j  | ƒ S(   s   Called for path inputs(   Rs   (   RA   t	   operationR   R+   RR   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyRY   º   s    c         C   s   |  j  | ƒ S(   s   Called for path outputs(   Rs   (   RA   Rt   R   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyRl   ¾   s    c         O   s6   |  j  | d | | | Ž |  j  | d | | | Ž f S(   s?   Called for path pairs like rename, link, and symlink operationss   -froms   -to(   RY   (   RA   Rt   RP   RQ   R+   RR   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyRO   Â   s    N(   R   t
   __module__t   __doc__RM   RL   R%   RF   R(   RU   RB   R?   R>   t   localst   NoneRZ   RG   RI   Rm   Rq   Rs   RY   Rl   RO   (    (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR   a   s>   				  		 		 			t   devnull(   t   GetGeneratePathc           B   s³   e  Z d  Z e j d d d d d d d d d	 d
 d d d g ƒ Z e d „ Z d „  Z e	 rl 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-chrootRJ   R]   R^   R_   R`   Ra   Rb   Rc   Rd   Re   Rh   Ri   Ro   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(   Nt    (
   R   R   t   normcaset   realpatht   _sandboxR   t   _prefixt   _exceptionsR   R%   (   RA   t   sandboxt
   exceptionsR   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR%   ß   s    !4c         O   s   t  | | | ƒ ‚ d  S(   N(   R   (   RA   Rt   R+   RR   (    (    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   rtt   rbt   rUt   URH   (   R„   R…   s   rbs   rURˆ   (   t   _okRƒ   RG   (   RA   R   t   modeR+   RR   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyRG   é   s    c         O   sK   | d k r8 |  j  | ƒ r8 |  j d | | | | Ž n  t | | | | Ž S(   NR„   R…   R†   R‡   Rˆ   RJ   (   R„   s   rts   rbs   rURˆ   (   R‰   Rƒ   RI   (   RA   R   RŠ   R+   RR   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyRI   î   s    c         C   s   |  j  d ƒ d  S(   NRr   (   Rƒ   (   RA   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyRr   ó   s    c         C   sy   |  j  } z_ t |  _  t j j t j j | ƒ ƒ } |  j | ƒ sc | |  j k sc | j |  j	 ƒ rg t
 SWd  | |  _  Xd  S(   N(   RL   RM   R   R   R|   R}   t	   _exemptedR~   R.   R   RK   (   RA   R   t   activeR}   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR‰   ö   s    		c         C   s   t  | j |  j ƒ } t | k S(   N(   R/   R.   R€   RK   (   RA   t   filepatht   exception_matches(    (    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}   (   RA   Rt   R   R+   RR   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyRY     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ƒ   (   RA   Rt   RP   RQ   R+   RR   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyRO     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>   RJ   (   RA   RH   t   flagsRŠ   R+   RR   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyRJ     s    (   R   Ru   Rv   t   dictt   fromkeysR   t   _EXCEPTIONSR%   Rƒ   RG   RI   Rr   R‰   R‹   RY   RO   RJ   (    (    (    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 d „  Z RS(   sE   A setup script attempted to modify the filesystem outside the sandboxc         C   s   d |  j  S(   Ns³  SandboxViolation: %s%r %s

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.(   R+   (   RA   (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   __str__  s    	(   R   Ru   Rv   R•   (    (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyR     s   (    (*   R   R   R   t   operatorR    RB   t$   org.python.modules.posix.PosixModulet   pythonR   t   posixt   PosixModuleR>   RH   RG   t	   NameErrorRx   RJ   RI   t   distutils.errorsR   R   t   setuptools.compatR   R   R   t   __all__R	   R   R?   Ry   R”   t   win32com.client.gencacheRz   R'   t   ImportErrorR   t   or_t   splitt   aRD   R   R   (    (    (    s6   /usr/lib/python2.7/site-packages/setuptools/sandbox.pyt   <module>   s8   <

	1i@	+