a
    [f&                     @   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   kC:\Users\91910\OneDrive\Desktop\vts_admin_rebuild-master\vts\Lib\site-packages\pip/_internal/utils/glibc.pyglibc_version_string	   s    r	   c               
   C   sD   t jdkrdS ztd \} }W n tttfy>   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)_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   /