관리-도구
편집 파일: zipapp.cpython-36.pyc
3 \� � @ s� d dl Z d dlZd dlZd dlZd dlZd dlZd dlZdddgZdZej j d�rXdZnej� ZG dd� de �Ze jd d � �Zdd� Zdd d�Zddd�Zdd� Zddd�Zedkr�e� dS )� N�ZipAppError�create_archive�get_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 | tj�rt| �} t | t�r<t| |��}|V W d Q R X n| 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|� dS )zWrite a shebang line.s #!� N)�encode�shebang_encoding�write)r �interpreterZshebangr r r �_write_file_prefix0 s r c C s� t | d��Z}|jd�}|dkr*d}|j� t |d��&}t||� |j|� tj||� W dQ R X W dQ R X |r�t|t�r�t j |t j|�jtj B � dS )z8Copy an application archive, modifying the shebang line.�rb� s #!� �wbN)r �read�readliner r �shutilZcopyfileobjr r �os�chmod�stat�st_mode�S_IEXEC)r Znew_archiver �srcZfirst_2�dstr r r � _copy_archive7 s r( c C s� d}t | d�rt | d�rd}ntj| �} | j� r4d}|rHt| ||� dS | j� sXtd��| d j� }|rt|rttd��|pz|s�td ��d}|r�|jd �\}}} tdd� |j d �D ��} tdd� | j d �D ��}|d ko�| o�|s�td| ��t j|| d�}|dk�r| jd�}nt |d��s"tj|�}t |d��~}t||� tj|d��\} tj| �}x2|jd�D ]$}t|j|��}| jt|�|� �q\W |�r�| jd|jd�� W dQ R X W dQ R X |�r�t |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)�.0�partr 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: )�module�fnz.pyzr r �w�*zutf-8)�hasattrr r �is_filer( �existsr � partition�all�split� MAIN_TEMPLATE�formatZwith_suffixr r �zipfileZZipFileZrglobr Zrelative_tor Zwritestrr r"