File: D:/Python311/Lib/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-311.pyc
�
�mi� � �B � d dl mZ d dlZd dlZd
d�Zd
d�Zd
d�Zdd �ZdS )� )�annotationsN�return�
str | Nonec �: � t � � p
t � � S )z9Returns glibc version string, or None if not using glibc.)�glibc_version_string_confstr�glibc_version_string_ctypes� � �;D:\Python311\Lib\site-packages\pip/_internal/utils/glibc.py�glibc_version_stringr s � �'�)�)�J�-H�-J�-J�Jr
c �� � t j dk rdS t j d� � } | �dS | � � � \ }}n# t
t t f$ r Y dS w xY w|S )z@Primary implementation of glibc_version_string using os.confstr.�win32N�CS_GNU_LIBC_VERSION)�sys�platform�os�confstr�split�AttributeError�OSError�
ValueError)�gnu_libc_version�_�versions r r r s� � � �|�w�� ��t���:�&;�<�<��� ��4�%�+�+�-�-�
��7�7���G�Z�0� � � ��t�t����� �Ns �A �A �A�Ac �8 � ddl } n# t $ r Y dS w xY w | � d� � }n# t $ r Y dS w xY w |j }n# t
$ r Y dS w xY w| j |_ |� � }t |t � � s|�
d� � }|S )z=Fallback implementation of glibc_version_string using ctypes.r N�ascii)�ctypes�ImportError�CDLLr �gnu_get_libc_versionr �c_char_p�restype�
isinstance�str�decode)r �process_namespacer �version_strs r r r s� � ���
�
�
�
��� � � ��t�t����� �"�K�K��-�-����� � � ��t�t������0�E����� � � � �t�t����� $*�?�� �+�+�-�-�K��k�3�'�'� 2�!�(�(��1�1���s* � �
��/ �
=�=�A �
A�A�tuple[str, str]c �. � t � � } | �dS d| fS )z�Try to determine the glibc version
Returns a tuple of strings (lib, version) which default to empty strings
in case the lookup fails.
N)� r* �glibc)r )�
glibc_versions r �libc_verr- \ s'