MINI MINI MANI MO
3
  \H                 @   s   d Z ddlZddlZddlZddlZddlZddlZejeZ	G dd dZ
dddZddd	Zed
krdZ
ye  dZ
W n4 ek
r Z zede ejd
 W Y ddZ[X nX eje
 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 ZdZdddZdd Zdd	 Zd
d Zdd
 Ze	j
dkrHdd Zd ddZdd Z
dd Zdd 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_packagesclearsymlinksupgradewith_pipprompt)selfr   r   r   r   r   r    r
   %/usr/lib64/python3.6/venv/__init__.py__init__*   s    zEnvBuilder.__init__c             C   sx   t jj|}| j|}| j}d| _| j| | j| | jrF| j| | j	s`| j
| | j| |rtd| _| j| dS )z
        Create a virtual environment in a directory.
        :param env_dir: The target directory to create an environment in.
        FTN)ospathabspathensure_directoriesr   create_configurationsetup_pythonr   
_setup_pipr   
setup_scripts
post_setup)r	   env_dircontextZtrue_system_site_packagesr
   r
   r   create3   s    
zEnvBuilder.createc             C   s`   xZt j|D ]L}t jj||}t jj|s6t jj|rBt j| qt jj|rtj	| qW d S )N)
r
   listdirr   joinislinkisfileremoveisdirshutilZrmtree)r	   r   fnr
   r
   r   clear_directoryM   s    zEnvBuilder.clear_directoryc             C   s  dd }t jj|r$| jr$| j| tj }||_t jj|d |_	| j
dk	rT| j
n|j	}d| |_
|| t j}tj
dkrd|krt jd }ntj}t jjt jj|\}}||_||_||_tj
dkrd	}	d
}
t jj|dd}n(d
}	d}
t jj|ddtjdd  d}t jj||
 |_}|| || tjdkr|t jdkr|tj
dkr|t jj|d}
t jj|
s|t jd|
 t jj||	 |_}|	|_t jj|||_|| |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 jj| st j|  n$t jj| s0t jj| r<td|  d S )NzUnable to create directory %r)r
   r   existsmakedirsr   r   
ValueError)dr
   r
   r   create_if_needed]   s    z7EnvBuilder.ensure_directories.<locals>.create_if_needed   Nz(%s) darwin__PYVENV_LAUNCHER__Zwin32ZScriptsZIncludeLibz
site-packagesbinincludelibzpython%d.%d       posixlib64l        )r
   r   r"