ó
ÏrOc           @   s÷   d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z e j e  j Z e Z	 d  d l
 m Z d d d d g Z d „  Z d d d „  ƒ  YZ d 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ÿÿÿÿN(   t   DistutilsErrort   AbstractSandboxt   DirectorySandboxt   SandboxViolationt	   run_setupc   	         sF  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 } z– | t
 _ t  j | ƒ yJ ˆ  g t | ƒ t j (t j j d | ƒ t | ƒ j ‡  f d †  ƒ Wn/ t k
 r} | j r| j d r‚  qn XWd t  j | ƒ | t j (| t j (| t
 _ Xd S(   s8   Run a distutils setup script, sandboxed in its directoryt   tempi    c              s   t  d i ˆ  d 6d d 6ƒ S(   Ns   setup.pyt   __file__t   __main__t   __name__(   t   execfile(    (   t   setup_script(    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyt   <lambda>   s   N(   t   ost   getcwdt   syst   argvt   patht   abspatht   dirnamet   joint   isdirt   makedirst   tempfilet   tempdirt   chdirt   listt   insertR   t   runt
   SystemExitt   args(	   R
   R   t   old_dirt	   save_argvt	   save_patht	   setup_dirt   temp_dirt   save_tmpt   v(    (   R
   s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyR   	   s.    

 		

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 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	 ƒ rZe e	 ƒ e ƒ  e	 <qZqZ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   _ost
   startswitht   hasattrt   _attrs(   t   selft   name(    (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyt   __init__/   s    c         C   s1   x* |  j  D] } t t | t | | ƒ ƒ q
 Wd  S(   N(   R*   t   setattrR   t   getattr(   R+   t   sourceR,   (    (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyt   _copy5   s    c         C   sb   z4 |  j  |  ƒ |  j t _ t _ t |  _ | ƒ  SWd t |  _ t t _ t _ |  j  t ƒ Xd S(   s   Run 'func' under os sandboxingN(	   R1   t   _opent   __builtin__t   opent   filet   Truet   _activet   FalseR'   (   R+   t   func(    (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyR   9   s    		c            s%   t  t ˆ  ƒ ‰ ‡  ‡ f d †  } | S(   Nc            s@   |  j  r- |  j ˆ  | | | | Ž \ } } n  ˆ | | | | Ž S(   N(   R7   t   _remap_pair(   R+   t   srct   dstR   t   kw(   R,   t   original(    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyt   wrapH   s    	$(   R/   R'   (   R,   R?   (    (   R,   R>   s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyt   _mk_dual_path_wrapperF   s    t   renamet   linkt   symlinkc            s+   ˆ p t  t ˆ  ƒ ‰ ‡  ‡ f d †  } | S(   Nc            s4   |  j  r$ |  j ˆ  | | | Ž } n  ˆ | | | Ž S(   N(   R7   t   _remap_input(   R+   R   R   R=   (   R,   R>   (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyR?   U   s    	(   R/   R'   (   R,   R>   R?   (    (   R,   R>   s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyt   _mk_single_path_wrapperS   s    R5   t   statt   listdirR   R4   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(   R7   RD   t   _remap_output(   R+   R   R   R=   (   R,   R>   (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyR?   f   s    	(   R/   R'   (   R,   R?   (    (   R,   R>   s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyt   _mk_single_with_returnd   s    t   readlinkt   tempnamc            s%   t  t ˆ  ƒ ‰ ‡  ‡ f d †  } | S(   Nc            s,   ˆ | | Ž  } |  j  r( |  j ˆ  | ƒ S| S(   N(   R7   RW   (   R+   R   R=   t   retval(   R,   R>   (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyR?   r   s    	(   R/   R'   (   R,   R?   (    (   R,   R>   s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyt	   _mk_queryp   s    R   t   tmpnamc         C   s   | S(   s=   Called to remap or validate any path, whether input or output(    (   R+   R   (    (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyt   _validate_path|   s    c         O   s   |  j  | ƒ S(   s   Called for path inputs(   R^   (   R+   t	   operationR   R   R=   (    (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyRD   €   s    c         C   s   |  j  | ƒ S(   s   Called for path outputs(   R^   (   R+   R_   R   (    (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyRW   „   s    c         O   s6   |  j  | d | | | Ž |  j  | d | | | Ž f S(   s?   Called for path pairs like rename, link, and symlink operationss   -froms   -to(   RD   (   R+   R_   R;   R<   R   R=   (    (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyR:   ˆ   s    N(   R   t
   __module__t   __doc__R8   R7   R-   R1   R   R@   R,   R)   R'   t   localst   NoneRE   R2   RX   R\   R^   RD   RW   R:   (    (    (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyR   *   s:   					  		 		 			c           B   s’   e  Z d  Z e j d d d d d d d d d	 d
 d d d g ƒ Z d „  Z d „  Z d d „ Z d „  Z	 d „  Z
 d „  Z d „  Z d d „ Z RS(   s<   Restrict operations to a single subdirectory - pseudo-chrootR4   RH   RI   RJ   RK   RL   RM   RN   RO   RP   RS   RT   RZ   c         C   sM   t  j j t  j j | ƒ ƒ |  _ t  j j |  j d ƒ |  _ t j |  ƒ d  S(   Nt    (	   R   R   t   normcaset   realpatht   _sandboxR   t   _prefixR   R-   (   R+   t   sandbox(    (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyR-   ˜   s    !c         O   s   t  | | | ƒ ‚ d  S(   N(   R   (   R+   R_   R   R=   (    (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyt
   _violation   s    t   rc         O   sK   | d k r8 |  j  | ƒ r8 |  j d | | | | Ž n  t | | | | Ž S(   NRk   t   rtt   rbt   rUt   UR4   (   Rk   s   rts   rbs   rURo   (   t   _okRj   R2   (   R+   R   t   modeR   R=   (    (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyR2       s    c         C   s   |  j  d ƒ d  S(   NR]   (   Rj   (   R+   (    (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyR]   ¥   s    c         C   sj   |  j  } zP t |  _  t j j t j j | ƒ ƒ } | |  j k sT | j |  j ƒ rX t	 SWd  | |  _  Xd  S(   N(
   R7   R8   R   R   Re   Rf   Rg   R(   Rh   R6   (   R+   R   t   activeRf   (    (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyRp   ¨   s    		!c         O   sH   | |  j  k rD |  j | ƒ rD |  j | t j j | ƒ | | Ž n  | S(   s   Called for path inputs(   t	   write_opsRp   Rj   R   R   Rf   (   R+   R_   R   R   R=   (    (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyRD   ²   s    %c         O   sF   |  j  | ƒ s  |  j  | ƒ r< |  j | | | | | Ž n  | | f S(   s?   Called for path pairs like rename, link, and symlink operations(   Rp   Rj   (   R+   R_   R;   R<   R   R=   (    (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyR:   ¸   s     iÿ  c         C   sF   | t  @r3 |  j | ƒ r3 |  j d | | | ƒ n  t j | | | ƒ S(   s   Called for low-level os.open()s   os.open(   t   WRITE_FLAGSRp   Rj   R'   R4   (   R+   R5   t   flagsRq   (    (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyR4   ¾   s    (   R   R`   Ra   t   dictt   fromkeysRs   R-   Rj   R2   R]   Rp   RD   R:   R4   (    (    (    s6   /var/www/python/setuptools-0.6c9/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   (   R+   (    (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyt   __str__Ñ   s    	(   R   R`   Ra   Rx   (    (    (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyR   Î   s   (    (   R   R   R3   R   t   operatort   modulesR,   R'   R4   R2   t   distutils.errorsR    t   __all__R   R   R   t   reducet   or_t   splitt   aR/   Rt   R   (    (    (    s6   /var/www/python/setuptools-0.6c9/setuptools/sandbox.pyt   <module>   s   <	!f5+