???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................
Yf                 @   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 d g Z d Z e j	 j
 d  r d Z n e j   Z Gd d   d e  Z e  j d	 d
    Z d d   Z d d d  Z d d d d d  Z d d   Z d d d  Z e d k re   d S)    NZipAppErrorcreate_archiveget_interpreterz8# -*- coding: utf-8 -*-
import {module}
{module}.{fn}()
winzutf-8c               @   s   e  Z d  Z d S)r   N)__name__
__module____qualname__ r	   r	   +/opt/alt/python35/lib64/python3.5/zipapp.pyr   !   s   c          	   c   sW   t  |  t j  r t |   }  t  |  t  rN t |  |   } | VWd  QRXn |  Vd  S)N)
isinstancepathlibPathstropen)archivemodefr	   r	   r
   _maybe_open%   s    r   c             C   s.   | r* d | j  t  d } |  j |  d S)zWrite a shebang line.s   #!s   
N)encodeshebang_encodingwrite)r   interpreterZshebangr	   r	   r
   _write_file_prefix0   s    r   c             C   s   t  |  d  u } | j d  } | d k r= d } | j   t  | d  1 } t | |  | j |  t j | |  Wd QRXWd QRX| r t | t  r t	 j
 | t	 j |  j t j B d S)z8Copy an application archive, modifying the shebang line.rb   s   #!    wbN)r   readreadliner   r   shutilZcopyfileobjr   r   oschmodstatst_modeS_IEXEC)r   Znew_archiver   srcZfirst_2Zdstr	   r	   r
   _copy_archive7   s    
r&   c             C   s  d } t  |  d  r- t  |  d  r- d } n! t j |   }  |  j   rN d } | rh t |  | |  d S|  j   s t d   |  d j   } | r | r t d   | p | s t d	   d } | rh| j d
  \ } } }	 t d d   | j	 d  D  }
 t d d   |	 j	 d  D  } | d
 k o=|
 o=| sPt d |   t
 j d | d |	  } | d k r|  j d  } n t  | d  st j |  } t | d   } t | |  t j | d  z } t j |   } xB | j d  D]1 } t | j |   } | j t |  |  qW| rK| j d | j d   Wd QRXWd QRX| rt  | d  r| j | j   j t j B d S)ab  Create an application archive from SOURCE.

    The SOURCE can be the name of a directory, or a filename or a file-like
    object referring to an existing archive.

    The content of SOURCE is packed into an application archive in TARGET,
    which can be a filename or a file-like object.  If SOURCE is a directory,
    TARGET can be omitted and will default to the name of SOURCE with .pyz
    appended.

    The created application archive will have a shebang line specifying
    that it should run with INTERPRETER (there will be no shebang line if
    INTERPRETER is None), and a __main__.py which runs MAIN (if MAIN is
    not specified, an existing __main__.py will be used).  It is an error
    to specify MAIN for anything other than a directory source with no
    __main__.py, and it is an error to omit MAIN if the directory has no
    __main__.py.
    Fr   r   TNzSource does not existz__main__.pyz8Cannot specify entry point if the source has __main__.pyzArchive has no entry point:c             s   s   |  ] } | j    Vq d  S)N)isidentifier).0partr	   r	   r
   	<genexpr>|   s    z!create_archive.<locals>.<genexpr>.c             s   s   |  ] } | j    Vq d  S)N)r(   )r)   r*   r	   r	   r
   r+   }   s    zInvalid entry point: modulefnz.pyzr   r   w*zutf-8)hasattrr   r   is_filer&   existsr   	partitionallsplitMAIN_TEMPLATEformatZwith_suffixr   r   zipfileZZipFileZrglobr   Zrelative_tor   Zwritestrr   r!   r"   r#   r$   )sourcetargetr   mainZsource_is_fileZhas_mainZmain_pymodsepr.   Zmod_okZfn_okfdzrootZchildZarcnamer	   r	   r
   r   N   sP    		""'c          	   C   sK   t  |  d  5 } | j d  d k r@ | j   j   j t  SWd  QRXd  S)Nr   r   s   #!)r   r   r   stripdecoder   )r   r   r	   r	   r
   r      s    c             C   s  d d l  } | j   } | j d d d d d d | j d d	 d d d d
 | j d d d d d d | j d d d d d d d | j d d d | j |   }  |  j rt j j |  j  s t	 d   t
 |  j  } t d j | p d   t j d  t j j |  j  r|  j d k s`t j j |  j  rlt j j |  j |  j  rlt	 d   |  j rt	 d   t |  j |  j d |  j d |  j d S)zRun the zipapp command line interface.

    The ARGS parameter lets you specify the argument list directly.
    Omitting ARGS (or setting it to None) works as for argparse, using
    sys.argv[1:] as the argument list.
    r   Nz--outputz-odefaulthelpzAThe name of the output archive. Required if SOURCE is an archive.z--pythonz-pzEThe name of the Python interpreter to use (default: no shebang line).z--mainz-mzLThe main function of the application (default: use an existing __main__.py).z--infoFaction
store_truez)Display the interpreter from the archive.r:   z'Source directory (or existing archive).z%Can only get info for an archive filezInterpreter: {}z<none>z-In-place editing of archives is not supportedz,Cannot change the main function when copyingr   r<   )argparseArgumentParseradd_argument
parse_argsinfor    pathisfiler:   
SystemExitr   printr8   sysexitoutputr3   samefiler<   r   python)argsrH   parserr   r	   r	   r
   r<      s6    	$	r<   __main__)
contextlibr    r   r   r"   rQ   r9   __all__r7   platform
startswithr   getfilesystemencoding
ValueErrorr   contextmanagerr   r   r&   r   r   r<   r   r	   r	   r	   r
   <module>   s(   	G-