a
    ǏPf)                     @   sp   d dl Z d dlZd dlmZmZ ee dddZee dddZee ddd	Zeeef dd
dZ	dS )    N)OptionalTuple)returnc                   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   Z/var/www/html/python-backend/venv/lib/python3.9/site-packages/pip/_internal/utils/glibc.pyglibc_version_string   s    r	   c               
   C   sV   t jdkrdS z(td} | du r(W dS |  \}}W n tttfyP   Y dS 0 |S )z@Primary implementation of glibc_version_string using os.confstr.win32NCS_GNU_LIBC_VERSION)sysplatformosconfstrsplitAttributeErrorOSError
ValueError)Zgnu_libc_version_versionr   r   r   r      s    

r   c                  C   sr   zddl } W n ty    Y dS 0 | d}z
|j}W n tyJ   Y dS 0 | j|_| }t|tsn|	d}|S )z=Fallback implementation of glibc_version_string using ctypes.r   Nascii)
ctypesImportErrorCDLLgnu_get_libc_versionr   c_char_prestype
isinstancestrdecode)r   process_namespacer   version_strr   r   r   r      s    



r   c                  C   s   t  } | du rdS d| fS d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_verN   s    r%   )
r   r   typingr   r   r   r	   r   r   r%   r   r   r   r   <module>   s   /