%PDF- %PDF-
Direktori : /snap/core20/2318/lib/python3.8/venv/__pycache__/ |
Current File : //snap/core20/2318/lib/python3.8/venv/__pycache__/__init__.cpython-38.pyc |
U k�]eV � @ s� d Z ddlZddlZddlZddlZddlZddlZddlZe�e �Z G dd� d�Zddd�Zddd �Z e d kr�dZze � dZW n4 ek r� Z zede ejd � W 5 dZ[X Y nX e�e� dS )z� Virtual environment (venv) package for Python. Based on PEP 405. Copyright (C) 2011-2014 Vinay Sajip. Licensed to the PSF under a contributor agreement. � Nc @ s� e Zd ZdZddd�Zdd� Zdd � Zd d� Zdd � Ze j dkrLddd�Zn d dd�Zdd� Zdd� Z dd� Zdd� Zdd� Zdd� ZdS )!� EnvBuildera� This class exists to allow virtual environment creation to be customized. The constructor parameters determine the builder's behaviour when called upon to create a virtual environment. By default, the builder makes the system (global) site-packages dir *un*available to the created environment. If invoked using the Python -m option, the default is to use copying on Windows platforms but symlinks elsewhere. If instantiated some other way, the default is to *not* use symlinks. :param system_site_packages: If True, the system (global) site-packages dir is available to created environments. :param clear: If True, delete the contents of the environment directory if it already exists, before environment creation. :param symlinks: If True, attempt to symlink rather than copy files into virtual environment. :param upgrade: If True, upgrade an existing virtual environment. :param with_pip: If True, ensure pip is installed in the virtual environment :param prompt: Alternative terminal prefix for the environment. FNc C s( || _ || _|| _|| _|| _|| _d S �N��system_site_packages�clear�symlinks�upgrade�with_pip�prompt)�selfr r r r r r � r �#/usr/lib/python3.8/venv/__init__.py�__init__+ s zEnvBuilder.__init__c C sx t j�|�}| �|�}| j}d| _| �|� | �|� | jrF| �|� | j s`| � |� | �|� |rtd| _| �|� dS )z� Create a virtual environment in a directory. :param env_dir: The target directory to create an environment in. FTN)�os�path�abspath�ensure_directoriesr �create_configuration�setup_pythonr � _setup_pipr � setup_scripts� post_setup)r �env_dir�contextZtrue_system_site_packagesr r r �create4 s zEnvBuilder.createc C s\ t �|�D ]L}t j�||�}t j�|�s4t j�|�r@t �|� q t j�|�r t� |� q d S r ) r �listdirr �join�islink�isfile�remove�isdir�shutilZrmtree)r r �fnr r r �clear_directoryN s zEnvBuilder.clear_directoryc C s� dd� }t j�|�r$| jr$| �|� t�� }||_t j�|�d |_ | j dk rT| j n|j }d| |_ ||� tj}t j�t j� |��\}}||_||_||_tjdkr�d}d} t j�|d d �} n(d}d} t j�|d dtjdd� d �} t j�|| � |_}||� || � tjdk�rXt jdk�rXtjdk�rXt j�|d�}t j�|��sXt �d |� t j�||� |_} ||_t j�| |�|_|| � |S )z� Create the directories for the environment. Returns a context object which holds paths in the environment, for use by subsequent logic. c S s@ t j�| �st �| � n$t j�| �s0t j�| �r<td| ��d S )NzUnable to create directory %r)r r �exists�makedirsr r � ValueError)�dr r r �create_if_needed^ s z7EnvBuilder.ensure_directories.<locals>.create_if_needed� Nz(%s) Zwin32ZScriptsZInclude�Libz site-packages�binZincludeZlibzpython%d.%d� l �posix�darwinZlib64)r r r$ r r# �types�SimpleNamespacer �split�env_namer �sys�_base_executabler � executable� python_dirZ python_exe�platformr �version_infoZinc_path�maxsize�name�symlink�bin_path�bin_name�env_exe)r r r( r r r5 �dirnameZexenameZbinnameZincpathZlibpathr Z link_path�binpathr r r r V sL ��zEnvBuilder.ensure_directoriesc C s� t j�|jd� |_}t|ddd��j}|�d|j � | jrBd}nd}|�d| � |�d t j d d� � | jd k r�|�d| j�d �� W 5 Q R X d S )aA Create a configuration file indicating where the environment's Python was copied from, and whether the system site-packages should be made available in the environment. :param context: The information for the environment creation request being processed. z pyvenv.cfg�w�utf-8)�encodingz home = %s ZtrueZfalsez"include-system-site-packages = %s zversion = %d.%d.%d N� z prompt = � )r r r r Zcfg_path�open�writer6 r r3 r8 r )r r r �fZinclr r r r � s zEnvBuilder.create_configuration�ntc C s� | j }|s�zRtj�|�s\|rPtj�|�tj�|�ks:t�t�tj�|�|� nt�||� W n& tk r� t � d||� d}Y nX |r�t�||� dS )�Y Try symlinking a file, and if that fails, fall back to copying. �Unable to symlink %r to %rTN) r r r r r? �AssertionErrorr; �basename� Exception�logger�warningr! �copyfile)r �src�dst�relative_symlinks_okZ force_copyr r r �symlink_or_copy� s zEnvBuilder.symlink_or_copyc C s| t j�|�ot j�|� }| jr�|s�t j�|�s�zH|rht j�|�t j�|�ksRt�t �t j� |�|� nt �||� W dS t k r� t�d||� Y nX t j� t j� |��\}}t j�t j�t�dd|| �}t�d�s�t j�|��sD|�d��r d| }|dd� }|dk�rd }n|d k�r(d}t j�t j�|�|| �}n|}t j�|��sl|�sht�d|� dS t�||� dS ) rJ NrK �scriptsrI TZ_d����pythonZvenvlauncherZpythonwZ venvwlauncherzUnable to copy %r)r r �lexistsr$ r r r? rL r; rM rN rO rP �splitextr �__file__� sysconfig�is_python_buildr �endswithr! rQ )r rR rS rT Zbad_srcrM ZextZsrcfnr r r rU � s>