o
    h&                     @   sp   d dl Z d dlZd dlmZmZ dee fddZdee fddZdee fdd	Zdeeef f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   [/var/www/html/optinet_system/venv/lib/python3.10/site-packages/pip/_internal/utils/glibc.pyglibc_version_string	   s   r	   c               
   C   sB   t jdkrdS ztd \} }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)_versionr   r   r   r      s   
r   c                  C   sr   zddl } W n
 ty   Y dS w | d}z|j}W n
 ty%   Y dS w | j|_| }t|ts7|	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 )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   /