MINI MINI MANI MO
3
  \                 @   s   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZdddgZdZej	j
drXdZnej ZG dd de
Ze jd	d
 Zdd Zdd
dZdddZdd ZdddZedkre  dS )    NZipAppErrorcreate_archiveget_interpreterz8# -*- coding: utf-8 -*-
import {module}
{module}.{fn}()
winzutf-8c               @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r	   r	   /usr/lib64/python3.6/zipapp.pyr   !   s   c          	   c   sF   t | tjrt| } t | tr<t| |}|V  W d Q R X n| V  d S )N)
isinstancepathlibPathstropen)archivemodefr	   r	   r
   _maybe_open%   s    
r   c             C   s$   |r d|j t d }| j| dS )zWrite a shebang line.s   #!   
N)encodeshebang_encodingwrite)r   interpreterZshebangr	   r	   r
   _write_file_prefix0   s    r   c             C   s   t | dZ}|jd}|dkr*d}|j  t |d&}t|| |j| tj|| W dQ R X W dQ R X |rt|trt	j
|t	j|jtj
B  dS )z8Copy an application archive, modifying the shebang line.rb   s   #!    wbN)r   readreadliner   r   shutilZcopyfileobjr   r   oschmodstatst_modeS_IEXEC)r   Znew_archiver   srcZfirst_2dstr	   r	   r
   
_copy_archive7   s    
 r(   c             C   s  d}t | drt | drd}ntj| } | j r4d}|rHt| || dS | j sXtd| d j }|rt|rttd|pz|std	d}|r|jd
\}}}	tdd |j	d
D }
tdd |	j	d
D }|d
ko|
o|std| t
j||	d}|dkr| jd}nt |ds"tj|}t
|d~}t|| tj|d\}
tj| }x2|jdD ]$}t|j|}|
jt|| q\W |r|
jd|jd W dQ R X W dQ R X |rt |d r|j|j jtjB  dS )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   TNzSource does not existz__main__.pyz8Cannot specify entry point if the source has __main__.pyzArchive has no entry point:c             s   s   | ]}|j  V  qd S )N)isidentifier).0partr	   r	   r
   	<genexpr>|   s    z!create_archive.<locals>.<genexpr>.c             s   s   | ]}|j  V  qd S )N)r*   )r+   r,   r	   r	   r
   r-   }   s    zInvalid entry point: )modulefnz.pyzr   r   w*zutf-8)hasattrr   r
   is_filer(   existsr   	partitionallsplit
MAIN_TEMPLATEformatZwith_suffixr   r   zipfileZZipFileZrglobr   Zrelative_tor   Zwritestrr   r"