???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................ó
•abc           @@  sq  d  Z  d d l m Z d d l Z d d l Z d d l Z d d l Z d d l Z y d d l Z Wn  e	 k
 r„ d d l
 j Z n Xd d l Z d d l m Z d d l Z e j e ƒ Z e j d ƒ Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z e e d „ Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d e# d d d d „ Z$ e$ ƒ  Z% e$ d e ƒ Z& e ƒ  Z' d S(   s2   Generate and work with PEP 425 Compatibility Tags.i    (   t   absolute_importN(   t   OrderedDicts   (.+)_(\d+)_(\d+)_(.+)c         C@  sE   y t  j |  ƒ SWn- t k
 r@ } t j d j | ƒ t ƒ d  SXd  S(   Ns   {0}(   t	   sysconfigt   get_config_vart   IOErrort   warningst   warnt   formatt   RuntimeWarningt   None(   t   vart   e(    (    s2   /usr/lib/python2.7/site-packages/pip/pep425tags.pyR      s
    c          C@  sU   t  t d ƒ r d }  n9 t j j d ƒ r3 d }  n t j d k rK d }  n d }  |  S(   s'   Return abbreviated implementation name.t   pypy_version_infot   ppt   javat   jyt   clit   ipt   cp(   t   hasattrt   syst   platformt
   startswith(   t   pyimpl(    (    s2   /usr/lib/python2.7/site-packages/pip/pep425tags.pyt   get_abbr_impl!   s    			c          C@  sD   t  d ƒ }  |  s" t ƒ  d k r@ d j t t t ƒ  ƒ ƒ }  n  |  S(   s   Return implementation version.t   py_version_nodotR   t    (   R   R   t   joint   mapt   strt   get_impl_version_info(   t   impl_ver(    (    s2   /usr/lib/python2.7/site-packages/pip/pep425tags.pyt   get_impl_ver.   s    c           C@  sK   t  ƒ  d k r/ t j d t j j t j j f St j d t j d f Sd S(   sQ   Return sys.version_info-like tuple for use in decrementing the minor
    version.R   i    i   N(   R   R   t   version_infoR   t   majort   minor(    (    (    s2   /usr/lib/python2.7/site-packages/pip/pep425tags.pyR   6   s    c           C@  s   d j  t ƒ  t ƒ  ƒ S(   s;   
    Returns the Tag for this specific implementation.
    s   {0}{1}(   R   R   R    (    (    (    s2   /usr/lib/python2.7/site-packages/pip/pep425tags.pyt   get_impl_tagA   s    c         C@  sB   t  |  ƒ } | d k r8 | r1 t j d |  ƒ n  | ƒ  S| | k S(   sg   Use a fallback method for determining SOABI flags if the needed config
    var is unset or unavailable.s>   Config variable '%s' is unset, Python ABI tag may be incorrectN(   R   R	   t   loggert   debug(   R
   t   fallbackt   expectedR   t   val(    (    s2   /usr/lib/python2.7/site-packages/pip/pep425tags.pyt   get_flagH   s    	
c       	   @  sg  t  d ƒ }  t ƒ  ‰  |  rˆ  d k rt t d ƒ rd } d } d } t d d „  d ˆ  d k ƒrp d	 } n  t d
 ‡  f d †  d ˆ  d k ƒr d } n  t d d „  d d d ˆ  d k oÊ t j d k  ƒrè t j d k  rè d } n  d ˆ  t ƒ  | | | f } n\ |  r6|  j d ƒ r6d |  j d ƒ d } n- |  r]|  j	 d d ƒ j	 d d ƒ } n d } | S(   sX   Return the ABI tag based on SOABI (if available) or emulate SOABI
    (CPython 2, PyPy).t   SOABIR   R   t
   maxunicodeR   t   Py_DEBUGc           S@  s   t  t d ƒ S(   Nt   gettotalrefcount(   R   R   (    (    (    s2   /usr/lib/python2.7/site-packages/pip/pep425tags.pyt   <lambda>^   R   R   t   dt   WITH_PYMALLOCc           @  s
   ˆ  d k S(   NR   (    (    (   t   impl(    s2   /usr/lib/python2.7/site-packages/pip/pep425tags.pyR/   b   R   t   mt   Py_UNICODE_SIZEc           S@  s   t  j d k S(   Niÿÿ (   R   R,   (    (    (    s2   /usr/lib/python2.7/site-packages/pip/pep425tags.pyR/   f   R   R(   i   i   t   us
   %s%s%s%s%ss   cpython-t   -i   t   .t   _(   R   R   (   i   i   (   i   i   N(   R   R   R   R   R*   R!   R    R   t   splitt   replaceR	   (   t   soabiR0   R3   R5   t   abi(    (   R2   s2   /usr/lib/python2.7/site-packages/pip/pep425tags.pyt   get_abi_tagT   s8    	"					!c           C@  s   t  j d k S(   Niÿÿÿ(   R   t   maxsize(    (    (    s2   /usr/lib/python2.7/site-packages/pip/pep425tags.pyt   _is_running_32bitv   s    c          C@  sÓ   t  j d k rŠ t j ƒ  \ }  } } |  j d ƒ } | d k rQ t ƒ  rQ d } n | d k ro t ƒ  ro d } n  d j | d | d	 | ƒ St j j ƒ  j	 d d
 ƒ j	 d d
 ƒ } | d k rÏ t ƒ  rÏ d } n  | S(   s0   Return our platform name 'win32', 'linux_x86_64't   darwinR7   t   x86_64t   i386t   ppc64t   ppcs   macosx_{0}_{1}_{2}i    i   R8   R6   t   linux_x86_64t
   linux_i686(
   R   R   t   mac_verR9   R?   R   t	   distutilst   utilt   get_platformR:   (   t   releaseR8   t   machinet	   split_vert   result(    (    s2   /usr/lib/python2.7/site-packages/pip/pep425tags.pyRJ   z   s    		'	c          C@  s`   t  ƒ  d k r t Sy d d  l }  t |  j ƒ SWn t t f k
 rI n Xt j j	 j
 d d ƒ S(   NRE   RF   i    i   i   (   RE   RF   (   RJ   t   Falset
   _manylinuxt   boolt   manylinux1_compatiblet   ImportErrort   AttributeErrort   pipt   utilst   glibct   have_compatible_glibc(   RP   (    (    s2   /usr/lib/python2.7/site-packages/pip/pep425tags.pyt   is_manylinux1_compatible”   s    c         @  s¾   g  } ‡  ‡ f d †  ‰  t  d d f d d f d d f d	 d f g ƒ ‰ ˆ  |  | | ƒ rj | j | ƒ n  x@ ˆ D]8 } | ˆ | k rq ˆ  |  | | ƒ rq | j | ƒ qq qq W| j d
 ƒ | S(   sŒ   Return a list of supported arches (including group arches) for
    the given major, minor and machine architecture of an macOS machine.
    c         @  s®   | d k r |  | f d k S| d k r8 |  | f d	 k S| d k rT |  | f d
 k S| d k rp |  | f d k S| ˆ k rª x+ ˆ | D] } ˆ  |  | | ƒ r‡ t  Sq‡ Wn  t S(   NRD   i
   i   RC   RB   i   RA   (   i
   i   (   i
   i   (   i
   i   (   i
   i   (   t   TrueRO   (   R"   R#   t   archt   garch(   t   _supports_archt   groups(    s2   /usr/lib/python2.7/site-packages/pip/pep425tags.pyR]   «   s    t   fatRB   RD   t   intelRA   t   fat64RC   t   fat32t	   universal(   RB   RD   (   RA   RB   (   RA   RC   (   RA   RB   RD   (   R   t   append(   R"   R#   RL   t   archesR\   (    (   R]   R^   s2   /usr/lib/python2.7/site-packages/pip/pep425tags.pyt   get_darwin_arches¥   s    $			"c         C@  sç  g  } |  d k ru g  }  t ƒ  } | d  } xG t | d d d ƒ D], } |  j d j t t | | f ƒ ƒ ƒ qB Wn  | p t ƒ  } g  }	 | p– t ƒ  } | r² | g |	 d d +n  t	 ƒ  }
 d d l
 } xK | j ƒ  D]= } | d j d ƒ rÔ |
 j | d j d d ƒ d ƒ qÔ qÔ W|	 j t t |
 ƒ ƒ ƒ |	 j d	 ƒ | s0| pMt ƒ  } | j d
 ƒ rt j | ƒ } | r| j ƒ  \ } } } } d j | | ƒ } g  } xj t t t | ƒ d ƒ ƒ D]@ } x7 t t | ƒ | | ƒ D] } | j | | | f ƒ qàWqÁWqM| g } n9 | d k rDt ƒ  rD| j d d ƒ | g } n	 | g } xC |	 D]; } x2 | D]* } | j d | |  d f | | f ƒ qaWqTWxd |  d D]X } | d k r´Pn  x? |
 D]7 } x. | D]& } | j d | | f | | f ƒ qÈWq»WqžWx3 | D]( } | j d |  d d d	 | f ƒ qWn  | j d | |  d f d	 d f ƒ | j d | |  d d f d	 d f ƒ xd t |  ƒ D]V \ } } | j d | f d	 d f ƒ | d k r‰| j d | d d	 d f ƒ q‰q‰W| S(   sc  Return a list of supported tags for each version specified in
    `versions`.

    :param versions: a list of string versions, of the form ["33", "32"],
        or None. The first version will be assumed to support our ABI.
    :param platform: specify the exact platform you want valid
        tags for, or None. If None, use the local system platform.
    :param impl: specify the exact implementation you want valid
        tags for, or None. If None, use the local interpreter impl.
    :param abi: specify the exact abi you want valid
        tags for, or None. If None, use the local interpreter abi.
    iÿÿÿÿR   i    Ns   .abiR7   i   i   t   nonet   macosxs   {0}_{1}_%i_%st   linuxt
   manylinux1s   %s%st   31t   30s   py%st   any(   Rk   Rl   (   R	   R   t   rangeRd   R   R   R   R   R=   t   sett   impt   get_suffixesR   t   addR9   t   extendt   sortedt   listRJ   t   _osx_arch_patt   matchR^   R   t   reversedt   intRf   RY   R:   t	   enumerate(   t   versionst   noarchR   R2   R<   t	   supportedR!   R"   R#   t   abist   abi3sRp   t   suffixR[   Rw   t   namet   actual_archt   tplRe   R3   t   at   versiont   i(    (    s2   /usr/lib/python2.7/site-packages/pip/pep425tags.pyt   get_supportedâ   sh    	
-	(#"	,,)$(%R|   ((   t   __doc__t
   __future__R    t   reR   R   R   t   loggingR   RS   t   distutils.sysconfigt   distutils.utilRH   t
   pip.compatR   t   pip.utils.glibcRU   t	   getLoggert   __name__R%   t   compileRv   R   R   R    R   R$   RZ   R*   R=   R?   RJ   RY   Rf   R	   RO   R‡   t   supported_tagst   supported_tags_noarcht   implementation_tag(    (    (    s2   /usr/lib/python2.7/site-packages/pip/pep425tags.pyt   <module>   s>   						"				=	^	