
9Vc           @   s   d  d l  m 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 m	 Z	 m
 Z
 d d l m Z d d l m Z m Z m Z m Z m Z e j e  Z d j   Z e j d  Z d	 Z d
 e f d     YZ d S(   i(   t   BytesIONi   (   t	   sysconfigt   detect_encodingt   ZipFile(   t   finder(   t   FileOperatort   get_export_entryt   convert_patht   get_executablet   in_venvs  
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 <assemblyIdentity version="1.0.0.0"
 processorArchitecture="X86"
 name="%s"
 type="win32"/>

 <!-- Identify the application security requirements. -->
 <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
 <security>
 <requestedPrivileges>
 <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
 </requestedPrivileges>
 </security>
 </trustInfo>
</assembly>s   ^#!.*pythonw?[0-9.]*([ 	].*)?$s{  # -*- coding: utf-8 -*-
if __name__ == '__main__':
    import sys, re

    def _resolve(module, func):
        __import__(module)
        mod = sys.modules[module]
        parts = func.split('.')
        result = getattr(mod, parts.pop(0))
        for p in parts:
            result = getattr(result, p)
        return result

    try:
        sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])

        func = _resolve('%(module)s', '%(func)s')
        rc = func() # None interpreted as 0
    except Exception as e:  # only supporting Python >= 2.6
        sys.stderr.write('%%s\n' %% e)
        rc = 1
    sys.exit(rc)
t   ScriptMakerc           B   s   e  Z d  Z e Z d Z e e d d  Z	 d   Z
 e j j d  rZ d   Z d   Z n  d d d  Z d   Z e Z d	   Z d
   Z d d  Z d   Z e d    Z e j d    Z e j d k r d   Z n  d d  Z d d  Z RS(   s_   
    A class to copy or create scripts from source scripts or callable
    specifications.
    c         C   s   | |  _  | |  _ | |  _ t |  _ t |  _ t j d k pW t j d k oW t j d k |  _	 t
 d  |  _ | p{ t |  |  _ d  S(   Nt   posixt   javat    s   X.Y(   R   s   X.Y(   t
   source_dirt
   target_dirt   add_launcherst   Falset   forcet   clobbert   ost   namet   _namet   set_modet   sett   variantsR   t   _fileop(   t   selfR   R   R   t   dry_runt   fileop(    (    s8   /tmp/pip-build-5Z5nTX/pip/pip/_vendor/distlib/scripts.pyt   __init__K   s    					c         C   sg   | j  d t  rc t j d k rc t j j |  \ } } | j d d  } t j j | |  } n  | S(   Nt   guit   ntt   pythont   pythonw(   t   getR   R   R   t   patht   splitt   replacet   join(   R   t
   executablet   optionst   dnt   fn(    (    s8   /tmp/pip-build-5Z5nTX/pip/pip/_vendor/distlib/scripts.pyt   _get_alternate_executableX   s
    !R   c         C   s[   y, t  |   } | j d  d k SWd QXWn( t t f k
 rV t j d |  t SXd S(   sl   
            Determine if the specified executable is a script
            (contains a #! line)
            i   s   #!Ns   Failed to open %s(   t   opent   readt   OSErrort   IOErrort   loggert   warningR   (   R   R(   t   fp(    (    s8   /tmp/pip-build-5Z5nTX/pip/pip/_vendor/distlib/scripts.pyt	   _is_shell`   s    c         C   s^   |  j  |  r= d d  l } | j j j d  d k rV | Sn | j   j d  rV | Sd | S(   Nis   os.namet   Linuxs
   jython.exes   /usr/bin/env %s(   R4   R   t   langt   Systemt   getPropertyt   lowert   endswith(   R   R(   R   (    (    s8   /tmp/pip-build-5Z5nTX/pip/pip/_vendor/distlib/scripts.pyt   _fix_jython_executablel   s    R   c         C   s  t  } |  j r! |  j } t } n t j   s9 t   } nq t   rp t j j	 t j
 d  d t j d   } n: t j j	 t j d  d t j d  t j d  f  } | r |  j | |  } n  t j j d  r |  j |  } n  t j j |  } | rd | k rd	 | } n  | j d
  } t j d k r]d | k r]d | k r]| d 7} n  d | | d } y | j d
  Wn! t k
 rt d |   n X| d
 k ry | j |  Wqt k
 rt d | | f   qXn  | S(   Nt   scriptss   python%st   EXEt   BINDIRs
   python%s%st   VERSIONR   t    s   "%s"s   utf-8t   clis	   -X:Framess   -X:FullFramess
    -X:Framess   #!s   
s,   The shebang (%r) is not decodable from utf-8s?   The shebang (%r) is not decodable from the script encoding (%r)(   t   TrueR(   R   R   t   is_python_buildR   R	   R   R$   R'   t   get_patht   get_config_varR,   t   syst   platformt
   startswithR;   t   normcaset   encodet   decodet   UnicodeDecodeErrort
   ValueError(   R   t   encodingt   post_interpR)   t   enquoteR(   t   shebang(    (    s8   /tmp/pip-build-5Z5nTX/pip/pip/_vendor/distlib/scripts.pyt   _get_shebangx   sL    					c         C   s    |  j  t d | j d | j  S(   Nt   modulet   func(   t   script_templatet   dictt   prefixt   suffix(   R   t   entry(    (    s8   /tmp/pip-build-5Z5nTX/pip/pip/_vendor/distlib/scripts.pyt   _get_script_text   s    c         C   s   t  j j |  } |  j | S(   N(   R   R$   t   basenamet   manifest(   R   t   exenamet   base(    (    s8   /tmp/pip-build-5Z5nTX/pip/pip/_vendor/distlib/scripts.pyt   get_manifest   s    c         C   s  |  j  o t j d k } t j j d  } | sA | | | } n| | d k r_ |  j d  } n |  j d  } t   }	 t |	 d   }
 |
 j d |  Wd  QX|	 j	   } | | | | } x| D]} t j
 j |  j |  } | rt j
 j |  \ } } | j d  r| } n  d | } y |  j j | |  Wqxt k
 rt j d	  d
 | } t j
 j |  rt j |  n  t j | |  |  j j | |  t j d  y t j |  Wqt k
 rqXqxXn t j d k r| j d |  rd | | f } n  t j
 j |  rF|  j rFt j d |  q n  |  j j | |  |  j rx|  j j | g  n  | j |  q Wd  S(   NR    s   utf-8t   pyt   tt   ws   __main__.pys   .pys   %s.exes:   Failed to write executable - trying to use .deleteme logics   %s.deletemes0   Able to replace executable using .deleteme logict   .s   %s.%ss   Skipping existing file %s(   R   R   R   t   linesepRJ   t   _get_launcherR    R   t   writestrt   getvalueR$   R'   R   t   splitextRH   R   t   write_binary_filet	   ExceptionR1   R2   t   existst   removet   renamet   debugR:   R   R   t   set_executable_modet   append(   R   t   namesRQ   t   script_bytest	   filenamest   extt   use_launcherRd   t   launchert   streamt   zft   zip_dataR   t   outnamet   nt   et   dfname(    (    s8   /tmp/pip-build-5Z5nTX/pip/pip/_vendor/distlib/scripts.pyt   _write_script   sT    		

#	c         C   sQ  d } | rL | j  d g   } | rL d d j |  } | j d  } qL n  |  j d | d | } |  j |  j d  } | j } t   }	 d |  j k r |	 j |  n  d |  j k r |	 j d | t	 j
 d	 f  n  d
 |  j k r|	 j d | t	 j
 d  f  n  | r.| j  d t  r.d }
 n d }
 |  j |	 | | | |
  d  S(   NR   t   interpreter_argss    %sR@   s   utf-8R)   t   Xs   %s%si    s   X.Ys   %s-%si   R   t   pywR`   (   R#   R'   RJ   RR   RZ   R   R   R   t   addRF   t   versionR   R~   (   R   RY   Rs   R)   RO   t   argsRQ   t   scriptR   t   scriptnamesRt   (    (    s8   /tmp/pip-build-5Z5nTX/pip/pip/_vendor/distlib/scripts.pyt   _make_script   s(    		!!	c         C   s@  t  } t j j |  j t |   } t j j |  j t j j |   } |  j r| |  j	 j
 | |  r| t j d |  d  Sy t | d  } Wn& t k
 r |  j s   n  d  } n Xt | j  \ } } | j d  | j   } | s	t j d |  j   |  d  St j | j d d   }	 |	 rHt } |	 j d  pBd }
 n  | s| ra| j   n  |  j	 j | |  |  j r|  j	 j | g  n  | j |  n t j  d	 | |  j  |  j	 j s)|  j! | |
  } d
 | k rd } n d } t j j |  } |  j" | g | | j#   | |  n  | r<| j   n  d  S(   Ns   not copying %s (up-to-date)t   rbi    s"   %s: %s is an empty file (skipping)s   
s   
i   R   s   copying and adjusting %s -> %sR"   R   R`   ($   R   R   R$   R'   R   R   R   R[   R   R   t   newerR1   Rn   R-   R0   R   t   NoneR   t   readlinet   seekR2   t   get_command_namet   FIRST_LINE_REt   matchR&   RB   t   groupt   closet	   copy_fileR   Ro   Rp   t   infoRR   R~   R.   (   R   R   Rs   t   adjustRz   t   fRN   t   linest
   first_lineR   RO   RQ   Rt   R{   (    (    s8   /tmp/pip-build-5Z5nTX/pip/pip/_vendor/distlib/scripts.pyt   _copy_script  sR    $ 	
		
	%c         C   s
   |  j  j S(   N(   R   R   (   R   (    (    s8   /tmp/pip-build-5Z5nTX/pip/pip/_vendor/distlib/scripts.pyR   7  s    c         C   s   | |  j  _ d  S(   N(   R   R   (   R   t   value(    (    s8   /tmp/pip-build-5Z5nTX/pip/pip/_vendor/distlib/scripts.pyR   ;  s    R    c         C   sf   t  j d  d k r d } n d } d | | f } t j d d  d } t |  j |  j } | S(	   Nt   Pi   t   64t   32s   %s%s.exeRc   i   i    (   t   structt   calcsizet   __name__t   rsplitR   t   findt   bytes(   R   t   kindt   bitsR   t   distlib_packaget   result(    (    s8   /tmp/pip-build-5Z5nTX/pip/pip/_vendor/distlib/scripts.pyRe   C  s    	c         C   sK   g  } t  |  } | d k r1 |  j | |  n |  j | | d | | S(   s  
        Make a script.

        :param specification: The specification, which is either a valid export
                              entry specification (to make a script from a
                              callable) or a filename (to make a script by
                              copying from a source location).
        :param options: A dictionary of options controlling script generation.
        :return: A list of all absolute pathnames written to.
        R)   N(   R   R   R   R   (   R   t   specificationR)   Rs   RY   (    (    s8   /tmp/pip-build-5Z5nTX/pip/pip/_vendor/distlib/scripts.pyt   makeQ  s    c         C   s4   g  } x' | D] } | j  |  j | |   q W| S(   s   
        Take a list of specifications and make scripts from them,
        :param specifications: A list of specifications.
        :return: A list of all absolute pathnames written to,
        (   t   extendR   (   R   t   specificationsR)   Rs   R   (    (    s8   /tmp/pip-build-5Z5nTX/pip/pip/_vendor/distlib/scripts.pyt   make_multipled  s    N(    R   t
   __module__t   __doc__t   SCRIPT_TEMPLATERU   R   R(   RB   R   R   R,   RF   RG   RH   R4   R;   RR   RZ   t   _DEFAULT_MANIFESTR\   R_   R~   R   R   t   propertyR   t   setterR   R   Re   R   R   (    (    (    s8   /tmp/pip-build-5Z5nTX/pip/pip/_vendor/distlib/scripts.pyR
   B   s,   		8			2	4(   t   ioR    t   loggingR   t   reR   RF   t   compatR   R   R   t	   resourcesR   t   utilR   R   R   R   R	   t	   getLoggerR   R1   t   stripR   t   compileR   R   t   objectR
   (    (    (    s8   /tmp/pip-build-5Z5nTX/pip/pip/_vendor/distlib/scripts.pyt   <module>   s   (