ó
zÛ^c           @   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 e j e  j Z y
 e	 Z
 Wn e k
 r{ d Z
 n Xe Z d  d l 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
 rn Xd e f d „  ƒ  YZ e e j g  d j ƒ  D] Z e  e e d ƒ ^ qKƒ Z! d e f d „  ƒ  YZ" d S(   iÿÿÿÿN(   t   DistutilsErrort   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 | ƒ 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 j | ƒ x0 t t j ƒ D] } | | k r_t j | =q_q_Wt  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(    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyt   <lambda>   s   N(   t   ost   getcwdt   syst   argvt   patht   abspatht   dirnamet   joint   isdirt   makedirst   tempfilet   tempdirt   modulest   copyt   pkg_resourcest   __getstate__t   chdirt   listt   insertR   t   runt
   SystemExitt   argst   __setstate__t   update(   R
   R!   t   old_dirt	   save_argvt	   save_patht	   setup_dirt   temp_dirt   save_tmpt   save_modulest   pr_statet   vt   key(    (   R
   sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/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 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   _ost
   startswitht   hasattrt   _attrs(   t   selft   name(    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyt   __init__6   s    c         C   s1   x* |  j  D] } t t | t | | ƒ ƒ q
 Wd  S(   N(   R3   t   setattrR   t   getattr(   R4   t   sourceR5   (    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyt   _copy<   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(
   R:   t   _filet   __builtin__t   filet   _opent   opent   Truet   _activet   FalseR0   (   R4   t   func(    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyR   @   s    			c            s%   t  t ˆ  ƒ ‰ ‡  ‡ f d †  } | S(   Nc            s@   |  j  r- |  j ˆ  | | | | Ž \ } } n  ˆ | | | | Ž S(   N(   RA   t   _remap_pair(   R4   t   srct   dstR!   t   kw(   R5   t   original(    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyt   wrapS   s    	$(   R8   R0   (   R5   RI   (    (   R5   RH   sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyt   _mk_dual_path_wrapperQ   s    t   renamet   linkt   symlinkc            s+   ˆ p t  t ˆ  ƒ ‰ ‡  ‡ f d †  } | S(   Nc            s4   |  j  r$ |  j ˆ  | | | Ž } n  ˆ | | | Ž S(   N(   RA   t   _remap_input(   R4   R   R!   RG   (   R5   RH   (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyRI   `   s    	(   R8   R0   (   R5   RH   RI   (    (   R5   RH   sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyt   _mk_single_path_wrapper^   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(   RA   RN   t   _remap_output(   R4   R   R!   RG   (   R5   RH   (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyRI   s   s    	(   R8   R0   (   R5   RI   (    (   R5   RH   sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyt   _mk_single_with_returnq   s    t   readlinkt   tempnamc            s%   t  t ˆ  ƒ ‰ ‡  ‡ f d †  } | S(   Nc            s,   ˆ | | Ž  } |  j  r( |  j ˆ  | ƒ S| S(   N(   RA   Ra   (   R4   R!   RG   t   retval(   R5   RH   (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyRI      s    	(   R8   R0   (   R5   RI   (    (   R5   RH   sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyt	   _mk_query}   s    R   t   tmpnamc         C   s   | S(   s=   Called to remap or validate any path, whether input or output(    (   R4   R   (    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyt   _validate_path‰   s    c         O   s   |  j  | ƒ S(   s   Called for path inputs(   Rh   (   R4   t	   operationR   R!   RG   (    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyRN      s    c         C   s   |  j  | ƒ S(   s   Called for path outputs(   Rh   (   R4   Ri   R   (    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyRa   ‘   s    c         O   s6   |  j  | d | | | Ž |  j  | d | | | Ž f S(   s?   Called for path pairs like rename, link, and symlink operationss   -froms   -to(   RN   (   R4   Ri   RE   RF   R!   RG   (    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyRD   •   s    N(   R   t
   __module__t   __doc__RB   RA   R6   R:   R   RJ   R5   R2   R0   t   localst   NoneRO   R;   R>   Rb   Rf   Rh   RN   Ra   RD   (    (    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyR   1   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-chrootR?   RR   RS   RT   RU   RV   RW   RX   RY   RZ   R]   R^   Rd   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   R6   (   R4   t   sandboxt
   exceptionsR   (    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyR6   ²   s    !4c         O   s   t  | | | ƒ ‚ d  S(   N(   R   (   R4   Ri   R!   RG   (    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyt
   _violation¸   s    t   rc         O   sK   | d k r8 |  j  | ƒ r8 |  j d | | | | Ž n  t | | | | Ž S(   NRy   t   rtt   rbt   rUt   UR=   (   Ry   s   rts   rbs   rUR}   (   t   _okRx   R;   (   R4   R   t   modeR!   RG   (    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyR;   ¼   s    c         O   sK   | d k r8 |  j  | ƒ r8 |  j d | | | | Ž n  t | | | | Ž S(   NRy   Rz   R{   R|   R}   R?   (   Ry   s   rts   rbs   rUR}   (   R~   Rx   R>   (   R4   R   R   R!   RG   (    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyR>   Á   s    c         C   s   |  j  d ƒ d  S(   NRg   (   Rx   (   R4   (    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyRg   Æ   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(   RA   RB   R   R   Rq   Rr   t	   _exemptedRs   R1   Rt   R@   (   R4   R   t   activeRr   (    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyR~   É   s    		c         C   s   t  | j |  j ƒ } t | k S(   N(   t   mapR1   Ru   R@   (   R4   t   filepatht   exception_matches(    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/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~   Rx   R   R   Rr   (   R4   Ri   R   R!   RG   (    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyRN   Ø   s    %c         O   sF   |  j  | ƒ s  |  j  | ƒ r< |  j | | | | | Ž n  | | f S(   s?   Called for path pairs like rename, link, and symlink operations(   R~   Rx   (   R4   Ri   RE   RF   R!   RG   (    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyRD   Þ   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_FLAGSR~   Rx   R0   R?   (   R4   R=   t   flagsR   (    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyR?   ä   s    (   R   Rj   Rk   t   dictt   fromkeysR…   t   _EXCEPTIONSR6   Rx   R;   R>   Rg   R~   R€   RN   RD   R?   (    (    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/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!   (   R4   (    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyt   __str__÷   s    	(   R   Rj   Rk   R‹   (    (    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyR   ô   s   (    (#   R   R   R<   R   t   operatorR   R   R5   R0   R=   R;   t	   NameErrorRm   R?   R>   t   distutils.errorsR    t   __all__R   R   R2   Rn   RŠ   t   win32com.client.gencacheRo   t   appendt   ImportErrorR   t   reducet   or_t   splitt   aR8   R†   R   (    (    (    sg   /opt/eff.org/certbot/venv/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/setuptools/sandbox.pyt   <module>   s2   H

	%lA+