File: //lib64/python3.9/__pycache__/zipapp.cpython-39.pyc
a
    �DOgo  �                   @   s�   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZg d�ZdZej	�
d�rVdZne�� ZG dd� de
�Ze jdd	� �Zd
d� Zddd
�Zddd�Zdd� Zddd�Zedkr�e�  dS )�    N)�ZipAppError�create_archive�get_interpreterz8# -*- coding: utf-8 -*-
import {module}
{module}.{fn}()
�win�utf-8c                   @   s   e Zd ZdS )r   N)�__name__�
__module__�__qualname__� r
   r
   �/usr/lib64/python3.9/zipapp.pyr   !   s   r   c                 c   sL   t | ttjf�rBt| |��}|V  W d   � qH1 s60    Y  n| V  d S �N)�
isinstance�str�os�PathLike�open)�archive�mode�fr
   r
   r   �_maybe_open%   s    &r   c                 C   s$   |r d|� t� d }| �|� dS )zWrite a shebang line.�   #!�   
N)�encode�shebang_encoding�write)r   �interpreterZshebangr
   r
   r   �_write_file_prefix.   s    r   c              	   C   s�   t | d��x}|�d�}|dkr*d}|��  t |d��0}t||� |�|� t�||� W d  � n1 sj0    Y  W d  � n1 s�0    Y  |r�t|t�r�t	�
|t	�|�jtj
B � dS )z8Copy an application archive, modifying the shebang line.�rb�   r   �    �wbN)r   �read�readliner   r   �shutil�copyfileobjr
   r   r   �chmod�stat�st_mode�S_IEXEC)r   Znew_archiver   �srcZfirst_2�dstr
   r
   r   �
_copy_archive5   s    
Hr+   Fc              	   C   s   d}t | d�rt | d�rd}nt�| �} | �� r4d}|rHt| ||� dS | �� sXtd��| d �� }|rt|rttd��|s�|s�td	��d}|r�|�d
�\}	}
}tdd� |	�	d
�D ��}tdd� |�	d
�D ��}
|
d
kr�|r�|
s�td| ��t
j|	|d�}|du �r| �d�}nt |d��s"t�|�}t
|d���}t||� |�rDtjntj}tj|d|d��h}| �d�D ]4}|�| �}|du �s�||��rf|�||�� � �qf|�r�|�d|�d�� W d  � n1 �s�0    Y  W d  � n1 �s�0    Y  |�rt |d��s|�|�� 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"