o
    h                     @  sH   d dl mZ d dlZd dlZdddZdddZdd	d
ZdddZdS )    )annotationsNreturn
str | Nonec                   C  s   t  pt S )z9Returns glibc version string, or None if not using glibc.)glibc_version_string_confstrglibc_version_string_ctypes r   r   L/var/www/html/venv/lib/python3.10/site-packages/pip/_internal/utils/glibc.pyglibc_version_string   s   r	   c               
   C  sT   t jdkrdS ztd} | du rW dS |  \}}W |S  tttfy)   Y dS w )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_versionr   r   r   r      s   

r   c                  C  s   zddl } W n
 ty   Y dS w z| d}W n
 ty"   Y dS w z|j}W n
 ty2   Y dS w | j|_| }t|t	sD|
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_strr   r   r   r       s(   


r   tuple[str, str]c                  C  s   t  } | du r	dS d| fS )zTry 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_versionr   r   r   libc_ver\   s   r'   )r   r   )r   r#   )
__future__r   r   r   r	   r   r   r'   r   r   r   r   <module>   s    


<