
0c@_z                 @   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 Z d  d l m	 Z	 e	 r d  d l
 m Z m Z e j e  Z e j 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
   =/tmp/pip-build-jynh7p1z/pip/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   sh   t  j j t j d  }  y3 t j |  d d  } | j   j   SWd QRXWn t	 k
 rc d SYn Xd S)zReads {sys.prefix}/pyvenv.cfg and returns its contents as list of lines

    Returns None, if it could not read/access the file.
    z
pyvenv.cfgencodingzutf-8N)
ospathjoinr   r   ioopenread
splitlinesIOError)Zpyvenv_cfg_filefr
   r
   r   _get_pyvenv_cfg_lines/   s    r   c              C   so   t    }  |  d k r& t j d  d SxB |  D]: } t j |  } | d k	 r- | j d  d k r- d Sq- Wd 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.
    NzCould 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   sF   t  j j t  j j t j   }  t  j j |  d  } t  j j |  S)zCheck 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)site_mod_dirZno_global_site_packages_filer
   r
   r   #_no_global_under_regular_virtualenv]   s    !	r+   c               C   s$   t    r t   St   r  t   Sd S)zMReturns a boolean, whether running in venv with no system site-packages.
    F)r   r$   r   r+   r
   r
   r
   r   virtualenv_no_globalk   s
    		r,   )
__future__r   r   loggingr   rer'   r   Zpip._internal.utils.typingr   Ztypingr   r   	getLogger__name__r   compiler    r   r   r   r   r$   r+   r,   r
   r
   r
   r   <module>   s&   		
