£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
U
    .e-                     @   sx   d dl mZ d dlZd dlZd dlZd dlmZ erDd dlmZm	Z	 dd Z
dd Zd	d
 Zdd Zdd Zdd ZdS )    )absolute_importN)MYPY_CHECK_RUNNING)OptionalTuplec                   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   =/usr/lib/python3.8/site-packages/pip/_internal/utils/glibc.pyglibc_version_string   s    r
   c               
   C   s8   zt d \} }W n tttfk
r2   Y dS X |S )z@Primary implementation of glibc_version_string using os.confstr.CS_GNU_LIBC_VERSIONN)osconfstrsplitAttributeErrorOSError
ValueError)_versionr   r   r	   r      s
    r   c                  C   sv   zddl } W n tk
r"   Y dS X | d}z
|j}W n tk
rN   Y dS X | j|_| }t|tsr|	d}|S )z=Fallback implementation of glibc_version_string using ctypes.r   Nascii)
ctypesImportErrorZCDLLgnu_get_libc_versionr   Zc_char_pZrestype
isinstancestrdecode)r   Zprocess_namespacer   version_strr   r   r	   r   &   s    



r   c                 C   sH   t d| }|s$td|  t dS t|d|koFt|d|kS )Nz$(?P<major>[0-9]+)\.(?P<minor>[0-9]+)z=Expected glibc version with 2 components major.minor, got: %sFmajorminor)rematchwarningswarnRuntimeWarningintgroup)r   required_majorminimum_minormr   r   r	   check_glibc_versionF   s    r(   c                 C   s   t  }|d krdS t|| |S )NF)r
   r(   )r%   r&   r   r   r   r	   have_compatible_glibcW   s    r)   c                  C   s   t  } | dk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*   Zglibc)r
   )Zglibc_versionr   r   r	   libc_verp   s    r+   )Z
__future__r   r   r   r    Zpip._internal.utils.typingr   typingr   r   r
   r   r   r(   r)   r+   r   r   r   r	   <module>   s    