Rez@sddlmZddlZddlZddlZddlZddlZddlZddlm Z e rddl m Z m Z ej eZejdZddZdd Zd d Zd d ZddZddZddZdS))absolute_importN)MYPY_CHECK_RUNNING)ListOptionalz8include-system-site-packages\s*=\s*(?Ptrue|false)cCstjttdtjkS)znChecks if sys.base_prefix and sys.prefix match. This handles PEP 405 compliant virtual environments. base_prefix)sysprefixgetattrr r /builddir/build/BUILDROOT/alt-python35-pip-20.2.4-5.el8.x86_64/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/utils/virtualenv.py_running_under_venvsr cCs ttdS)zmChecks if sys.real_prefix is set. This handles virtual environments created with pypa's virtualenv. real_prefix)hasattrrr r r r !_running_under_regular_virtualenvsrcCstptS)zGReturn True if we're running inside a virtualenv, False otherwise. )r rr r r r running_under_virtualenv(srcCshtjjtjd}y3tj|dd}|jjSWdQRXWnt k rcdSYnXdS)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.cfgencodingzutf-8N) ospathjoinrrioopenread splitlinesIOError)pyvenv_cfg_filefr r r _get_pyvenv_cfg_lines/s  rcCsot}|dkr&tjddSxB|D]:}tj|}|dk r-|jddkr-dSq-WdS)aZCheck `{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.TvaluefalseF)rloggerwarning#_INCLUDE_SYSTEM_SITE_PACKAGES_REGEXmatchgroup) cfg_linesliner"r r r _no_global_under_venv?s   !r&cCsFtjjtjjtj}tjj|d}tjj|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. zno-global-site-packages.txt)rrdirnameabspathsite__file__rexists) site_mod_dirno_global_site_packages_filer r r #_no_global_under_regular_virtualenv]s!  r.cCs$trtStr tSdS)zMReturns a boolean, whether running in venv with no system site-packages. F)r r&rr.r r r r virtualenv_no_globalks   r/) __future__rrloggingrrer)rpip._internal.utils.typingrtypingrr getLogger__name__rcompiler!r rrrr&r.r/r r r r s&