ó
^†êWc           @   sµ   d  Z  d d l Z d d l Z y d d l Z Wn  e k
 rP d d l j Z n Xd d l Z d „  Z d „  Z	 d „  Z
 d „  Z e e d „ Z d „  Z d	 „  Z d d d
 „ Z d S(   s2   Generate and work with PEP 425 Compatibility Tags.iÿÿÿÿNc         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(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/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(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/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(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/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(    (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/pep425tags.pyR   +   s    c         C   sN   t  |  ƒ } | d k rD | r= t j d j |  ƒ t 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 '{0}' is unset, Python ABI tag may be incorrecti   N(   R   R   R   R   R   R   (   R   t   fallbackt   expectedR   t   val(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/pep425tags.pyt   get_flag6   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   (    (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/pep425tags.pyt   <lambda>L   s    R   t   dt   WITH_PYMALLOCc              s
   ˆ  d k S(   NR   (    (    (   t   impl(    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/pep425tags.pyR*   P   s    t   mt   Py_UNICODE_SIZEc           S   s   t  j d k S(   Niÿÿ (   R   R'   (    (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/pep425tags.pyR*   T   s    R#   i   i   t   us
   %s%s%s%s%ss   cpython-t   -i   t   .t   _(   s   cps   pp(   i   i   (   i   i   N(   R   R   R   R   R%   R   R   R   t   splitt   replaceR   (   t   soabiR+   R.   R0   t   abi(    (   R-   sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/pep425tags.pyt   get_abi_tagB   s8    	"					!c          C   sO   t  j j ƒ  j d d ƒ j d d ƒ }  |  d k rK t j d k rK d }  n  |  S(   s0   Return our platform name 'win32', 'linux_x86_64'R2   R3   R1   t   linux_x86_64iÿÿÿt
   linux_i686(   t	   distutilst   utilt   get_platformR5   R   t   maxsize(   t   result(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/pep425tags.pyR=   d   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  t ƒ  } g  } 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	 ƒ g  } | rK| j | ƒ n  | j t ƒ  ƒ xC | D]; } x2 | D]* } | j d
 | |  d f | | f ƒ qoWqbWxd |  d D]X } | d k rÂPn  x? |	 D]7 } x. | D]& } | j d
 | | f | | f ƒ qÖWqÉWq¬Wxq t |  ƒ D]c \ } } | j d
 | | f d	 d f ƒ | d k r| j d
 | |  d d f d	 d f ƒ qqW| j d |  d 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(   så   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.
    iÿÿÿÿR   i    Ns   .abiR2   i   i   t   nones   %s%st   31t   30t   anys   py%s(   RA   RB   (   R   R   t   ranget   appendR   R   R   R   R8   t   sett   impt   get_suffixesR   t   addR4   t   extendt   sortedt   listR=   t	   enumerate(   t   versionst   supplied_platformt	   supportedR   R    R!   R-   t   abisR7   t   abi3sRG   t   suffixt	   platformst   archt   versiont   i(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/pep425tags.pyt   get_supportedn   sT    	
-			(,, /"%(   t   __doc__R   R   R    t   ImportErrort   distutils.sysconfigt   distutils.utilR;   R   R   R   R   t   TrueR%   R8   R=   R   RX   (    (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/pep425tags.pyt   <module>   s   					"	
