U
    ißŽiD  ã                   @   s¤   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ erTd dl	m
Z
mZ e e¡Ze d¡Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )é    )Úabsolute_importN)ÚMYPY_CHECK_RUNNING)ÚListÚOptionalz8include-system-site-packages\s*=\s*(?P<value>true|false)c                   C   s   t jtt dt jƒkS )znChecks if sys.base_prefix and sys.prefix match.

    This handles PEP 405 compliant virtual environments.
    Úbase_prefix)ÚsysÚprefixÚgetattr© r
   r
   ú\/var/www/html/IITS/school/venv/lib/python3.8/site-packages/pip/_internal/utils/virtualenv.pyÚ_running_under_venv   s    r   c                   C   s
   t tdƒS )zmChecks if sys.real_prefix is set.

    This handles virtual environments created with pypa's virtualenv.
    Úreal_prefix)Úhasattrr   r
   r
   r
   r   Ú!_running_under_regular_virtualenv   s    r   c                   C   s   t ƒ p
tƒ S )zGReturn True if we're running inside a virtualenv, False otherwise.
    )r   r   r
   r
   r
   r   Úrunning_under_virtualenv'   s    r   c               
   C   sZ   t j tjd¡} z.t| ƒ�}| ¡  ¡ W  5 Q R £ W S Q R X W n tk
rT   Y dS X dS )z…Reads {sys.prefix}/pyvenv.cfg and returns its contents as list of lines

    Returns None, if it could not read/access the file.
    z
pyvenv.cfgN)	ÚosÚpathÚjoinr   r   ÚopenÚreadÚ
splitlinesÚIOError)Zpyvenv_cfg_fileÚfr
   r
   r   Ú_get_pyvenv_cfg_lines.   s    
$r   c                  C   sP   t ƒ } | dkrt d¡ dS | D ]*}t |¡}|dk	r | d¡dkr  dS q dS )aZ  Check `{sys.prefix}/pyvenv.cfg` for system site-packages inclusion

    PEP 405 specifies that when system site-packages are not supposed to be
    visible from a virtual environment, `pyvenv.cfg` must contain the following
    line:

        include-system-site-packages = false

    Additionally, log a warning if accessing the file fails.
    NzŽCould not access 'pyvenv.cfg' despite a virtual environment being active. Assuming global site-packages is not accessible in this environment.TÚvalueÚfalseF)r   ÚloggerÚwarningÚ#_INCLUDE_SYSTEM_SITE_PACKAGES_REGEXÚmatchÚgroup)Z	cfg_linesÚliner   r
   r
   r   Ú_no_global_under_venv<   s    ÿ
r"   c                  C   s0   t j t j tj¡¡} t j | d¡}t j |¡S )zÅCheck if "no-global-site-packages.txt" exists beside site.py

    This mirrors logic in pypa/virtualenv for determining whether system
    site-packages are visible in the virtual environment.
    zno-global-site-packages.txt)r   r   ÚdirnameÚabspathÚsiteÚ__file__r   Úexists)Zsite_mod_dirZno_global_site_packages_filer
   r
   r   Ú#_no_global_under_regular_virtualenvZ   s     ÿr(   c                   C   s   t ƒ rtƒ S tƒ rtƒ S dS )zMReturns a boolean, whether running in venv with no system site-packages.
    F)r   r(   r   r"   r
   r
   r
   r   Úvirtualenv_no_globalh   s
    r)   )Ú
__future__r   Úloggingr   Úrer%   r   Úpip._internal.utils.typingr   Útypingr   r   Ú	getLoggerÚ__name__r   Úcompiler   r   r   r   r   r"   r(   r)   r
   r
   r
   r   Ú<module>   s&   
ÿ	
