�
��^i�
� �� � d dl Z d dlZd dlZd dlZd dlZd dlmZmZ e j e � � Z
ej d� � Zde
fd�Zde
fd�Zde
fd�Zdeee fd�Zde
fd �Zde
fd
�Zde
fd�ZdS )� N)�List�Optionalz8include-system-site-packages\s*=\s*(?Ptrue|false)�returnc �^ � t j t t dt j � � k S )znChecks if sys.base_prefix and sys.prefix match.
This handles PEP 405 compliant virtual environments.
�base_prefix)�sys�prefix�getattr� � ��/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_internal/utils/virtualenv.py�_running_under_venvr s � �
�:���m�S�Z�@�@�@�@r c �, � 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
�!_running_under_regular_virtualenvr s � � �3�
�&�&�&r c �: � t � � p
t � � S )zBReturn True if we're running inside a virtualenv, False otherwise.)r r r r r
�running_under_virtualenvr s � �� � �G�$E�$G�$G�Gr c � � t j � t j d� � } t | d�� � 5 }|� � � � � � cddd� � S # 1 swxY w Y dS # t $ r Y dS w xY w)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.cfgzutf-8)�encodingN) �os�path�joinr r �open�read�
splitlines�OSError)�pyvenv_cfg_file�fs r
�_get_pyvenv_cfg_linesr $ s� � �
�g�l�l�3�:�|�<�<�O�� �/�G�
4�
4�
4� )���6�6�8�8�&�&�(�(� )� )� )� )� )� )� )� )� )� )� )� )���� )� )� )� )� )� )��� � � ��t�t����s4 �A= �&A0�#A= �0A4�4A= �7A4�8A= �=
B�
Bc �� � t � � } | �t � d� � dS | D ]:}t � |� � }|�|� d� � dk r dS �;dS )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)� cfg_lines�liner' s r
�_no_global_under_venvr+ 3 s� � � &�'�'�I��� ���
#�
�
�
�
�t�� � ��3�9�9�$�?�?�������W�!5�!5��!@�!@��4�4���5r c � � 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.
zno-global-site-packages.txt)r r �dirname�abspath�site�__file__r �exists)�site_mod_dir�no_global_site_packages_files r
�#_no_global_under_regular_virtualenvr4 P sZ � � �7�?�?�2�7�?�?�4�=�#A�#A�B�B�L�#%�7�<�<��%�$� $� � �7�>�>�6�7�7�7r c �v � t � � rt � � S t � � rt � � S dS )zHReturns a boolean, whether running in venv with no system site-packages.F)r r+ r r4 r r r
�virtualenv_no_globalr6 ^ s= � � ��� '�$�&�&�&�(�*�*� 5�2�4�4�4��5r )�loggingr �rer/ r �typingr r � getLogger�__name__r$ �compiler&