ó `8(Zc@sšdZddlZddlZddlZddlZddlZd„Zd„Zd„Z d„Z e e d„Z d„Z d „Zddd „ZdS( s2Generate and work with PEP 425 Compatibility Tags.iÿÿÿÿNcCsEytj|ƒSWn-tk r@}tjdj|ƒtƒdSXdS(Ns{0}(t sysconfigtget_config_vartIOErrortwarningstwarntformattRuntimeWarningtNone(tvarte((s//tmp/pip-build-0nEYGB/wheel/wheel/pep425tags.pyR s cCs`tjƒ}|dkrdS|dkr,dS|dkr<dS|dkrLdStd |ƒ‚d S( s'Return abbreviated implementation name.tPyPytpptJythontjyt IronPythontiptCPythontcpsUnknown Python implementation: N(tplatformtpython_implementationt LookupError(timpl((s//tmp/pip-build-0nEYGB/wheel/wheel/pep425tags.pyt get_abbr_impls     cCsDtdƒ}| s"tƒdkr@djtttƒƒƒ}n|S(sReturn implementation version.tpy_version_nodotR t(RRtjointmaptstrtget_impl_version_info(timpl_ver((s//tmp/pip-build-0nEYGB/wheel/wheel/pep425tags.pyt get_impl_ver!s cCsKtƒdkr/tjdtjjtjjfStjdtjdfSdS(sQReturn sys.version_info-like tuple for use in decrementing the minor version.R iiN(Rtsyst version_infotpypy_version_infotmajortminor(((s//tmp/pip-build-0nEYGB/wheel/wheel/pep425tags.pyR)s cCsNt|ƒ}|dkrD|r=tjdj|ƒtdƒn|ƒS||kS(sgUse 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 incorrectiN(RRRRRR(RtfallbacktexpectedRtval((s//tmp/pip-build-0nEYGB/wheel/wheel/pep425tags.pytget_flag4s   c sgtdƒ}tƒ‰| rˆdkrttdƒrd}d}d}tdd„dˆdkƒrpd }ntd ‡fd †dˆdkƒrd }ntd d„dddˆdkoÊtjdkƒrètjdkrèd}ndˆtƒ|||f}n\|r6|jdƒr6d|jdƒd}n-|r]|j ddƒj ddƒ}nd}|S(sXReturn the ABI tag based on SOABI (if available) or emulate SOABI (CPython 2, PyPy).tSOABIRR t maxunicodeRtPy_DEBUGcSs ttdƒS(Ntgettotalrefcount(thasattrR(((s//tmp/pip-build-0nEYGB/wheel/wheel/pep425tags.pytJsRtdt WITH_PYMALLOCcs ˆdkS(NR(((R(s//tmp/pip-build-0nEYGB/wheel/wheel/pep425tags.pyR-NstmtPy_UNICODE_SIZEcSs tjdkS(Niÿÿ(RR)(((s//tmp/pip-build-0nEYGB/wheel/wheel/pep425tags.pyR-RsR%iitus %s%s%s%s%sscpython-t-it.t_(scpspp(ii(iiN( RRR,RR'R Rt startswithtsplittreplaceR(tsoabiR.R0R2tabi((Rs//tmp/pip-build-0nEYGB/wheel/wheel/pep425tags.pyt get_abi_tag@s8  "      !cCsOtjjƒjddƒjddƒ}|dkrKtjdkrKd}n|S(s0Return our platform name 'win32', 'linux_x86_64'R4R5R3t linux_x86_64iÿÿÿt linux_i686(t distutilstutilt get_platformR8Rtmaxsize(tresult((s//tmp/pip-build-0nEYGB/wheel/wheel/pep425tags.pyR@bs' cCs g}|dkrug}tƒ}|d }xGt|dddƒD],}|jdjtt||fƒƒƒqBWntƒ}g}tƒ}|r¦|g|dd+nt ƒ} ddl } xK| j ƒD]=} | dj dƒrÈ| j | djddƒdƒqÈqÈW|jtt| ƒƒƒ|jd ƒg} |rK| j|ƒn| jtƒƒxC|D];}x2| D]*} |jd ||df|| fƒqoWqbWxd|dD]X}|dkrÂPnx?| D]7}x.| D]&} |jd ||f|| fƒqÖWqÉWq¬Wxqt|ƒD]c\}}|jd ||fd d fƒ|dkr|jd ||ddfd d fƒqqW|jd|ddd | fƒxdt|ƒD]V\}}|jd|fd d fƒ|dkr«|jd|dd 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ÿÿÿÿRiNs.abiR4iitnones%s%st31t30tanyspy%s(s31s30(RRtrangetappendRRRRR;tsettimpt get_suffixesR6taddR7textendtsortedtlistR@t enumerate(tversionstsupplied_platformt supportedR R"R#RtabisR:tabi3sRJtsuffixt platformstarchtversionti((s//tmp/pip-build-0nEYGB/wheel/wheel/pep425tags.pyt get_supportedlsT   -    (   ,   ,  /" %(t__doc__tdistutils.utilR>RRRRRRRRtTrueR'R;R@RR[(((s//tmp/pip-build-0nEYGB/wheel/wheel/pep425tags.pyts          "