
b]c           @@  s   d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l m Z e rc d  d l m Z m	 Z	 n  d   Z
 d   Z d   Z d   Z d	   Z d
   Z d S(   i    (   t   absolute_importN(   t   MYPY_CHECK_RUNNING(   t   Optionalt   Tuplec           C@  s   t    p t   S(   s9   Returns glibc version string, or None if not using glibc.(   t   glibc_version_string_confstrt   glibc_version_string_ctypes(    (    (    s8   lib/python2.7/site-packages/pip/_internal/utils/glibc.pyt   glibc_version_string   s    c          C@  sA   y t  j d  j   \ }  } Wn t t t f k
 r< d SX| S(   s@   Primary implementation of glibc_version_string using os.confstr.t   CS_GNU_LIBC_VERSIONN(   t   ost   confstrt   splitt   AttributeErrort   OSErrort
   ValueErrort   None(   t   _t   version(    (    s8   lib/python2.7/site-packages/pip/_internal/utils/glibc.pyR      s
    c          C@  s   y d d l  }  Wn t k
 r$ d SX|  j d  } y | j } Wn t k
 rU d SX|  j | _ |   } t | t	  s | j
 d  } n  | S(   s=   Fallback implementation of glibc_version_string using ctypes.i    Nt   ascii(   t   ctypest   ImportErrorR   t   CDLLt   gnu_get_libc_versionR   t   c_char_pt   restypet
   isinstancet   strt   decode(   R   t   process_namespaceR   t   version_str(    (    s8   lib/python2.7/site-packages/pip/_internal/utils/glibc.pyR   #   s    	c         C@  sd   t  j d |   } | s0 t j d |  t  t St | j d   | k oc t | j d   | k S(   Ns$   (?P<major>[0-9]+)\.(?P<minor>[0-9]+)s=   Expected glibc version with 2 components major.minor, got: %st   majort   minor(   t   ret   matcht   warningst   warnt   RuntimeWarningt   Falset   intt   group(   R   t   required_majort   minimum_minort   m(    (    s8   lib/python2.7/site-packages/pip/_internal/utils/glibc.pyt   check_glibc_versionC   s    	c         C@  s)   t    } | d  k r t St | |  |  S(   N(   R   R   R$   R*   (   R'   R(   R   (    (    s8   lib/python2.7/site-packages/pip/_internal/utils/glibc.pyt   have_compatible_glibcT   s    	c          C@  s'   t    }  |  d k r d Sd |  f Sd S(   s   Try to determine the glibc version

    Returns a tuple of strings (lib, version) which default to empty strings
    in case the lookup fails.
    t    t   glibcN(   R,   R,   (   R   R   (   t   glibc_version(    (    s8   lib/python2.7/site-packages/pip/_internal/utils/glibc.pyt   libc_verm   s    	(   t
   __future__R    R   R   R!   t   pip._internal.utils.typingR   t   typingR   R   R   R   R   R*   R+   R/   (    (    (    s8   lib/python2.7/site-packages/pip/_internal/utils/glibc.pyt   <module>   s   			 		