eaiovnaovbqoebvqoeavibavo  fc@@sdZddlmZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z ejdZdZd Zd Zd Zd Zeed ZdZdZdZdZdZdeddddZeZdS(s2Generate and work with PEP 425 Compatibility Tags.i(tabsolute_importN(t OrderedDicti(tglibcs(.+)_(\d+)_(\d+)_(.+)cC@sEytj|SWn-tk r@}tjdj|tdSXdS(Ns{}(t sysconfigtget_config_vartIOErrortwarningstwarntformattRuntimeWarningtNone(tvarte((s9/usr/lib/python2.7/site-packages/setuptools/pep425tags.pyRs cC@sUttdrd}n9tjjdr3d}ntjdkrKd}nd}|S(s'Return abbreviated implementation name.tpypy_version_infotpptjavatjytclitiptcp(thasattrtsystplatformt startswith(tpyimpl((s9/usr/lib/python2.7/site-packages/setuptools/pep425tags.pyt get_abbr_impls   cC@sDtd}| s"tdkr@djttt}n|S(sReturn implementation version.tpy_version_nodotRt(RRtjointmaptstrtget_impl_version_info(timpl_ver((s9/usr/lib/python2.7/site-packages/setuptools/pep425tags.pyt get_impl_ver(s cC@sKtdkr/tjdtjjtjjfStjdtjdfSdS(sQReturn sys.version_info-like tuple for use in decrementing the minor version.RiiN(RRt version_infoR tmajortminor(((s9/usr/lib/python2.7/site-packages/setuptools/pep425tags.pyR0s cC@sdjttS(s; Returns the Tag for this specific implementation. s{}{}(RRR!(((s9/usr/lib/python2.7/site-packages/setuptools/pep425tags.pyt get_impl_tag;scC@sNt|}|dkrD|r=tjdj|tdn|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(RR RRRR (R tfallbacktexpectedRtval((s9/usr/lib/python2.7/site-packages/setuptools/pep425tags.pytget_flagBs   c @smtd}t| r ddhkr ttdr d}d}d}tddddkrvd }ntd fd ddkrd }ntd dddddkotjdkrtjdkrd}ndt|||f}n\|r<|jdr<d|jdd}n-|rc|j ddj dd}nd}|S(sXReturn the ABI tag based on SOABI (if available) or emulate SOABI (CPython 2, PyPy).tSOABIRRt maxunicodeRtPy_DEBUGcS@s ttdS(Ntgettotalrefcount(RR(((s9/usr/lib/python2.7/site-packages/setuptools/pep425tags.pytXRRtdt WITH_PYMALLOCc@s dkS(NR(((timpl(s9/usr/lib/python2.7/site-packages/setuptools/pep425tags.pyR.\RtmtPy_UNICODE_SIZEcS@s tjdkS(Ni(RR+(((s9/usr/lib/python2.7/site-packages/setuptools/pep425tags.pyR.`RR'iitus %s%s%s%s%sscpython-t-it.t_(ii(iiN( RRRRR)R"R!RtsplittreplaceR (tsoabiR/R2R4tabi((R1s9/usr/lib/python2.7/site-packages/setuptools/pep425tags.pyt get_abi_tagNs8  (      !cC@s tjdkS(Ni(Rtmaxsize(((s9/usr/lib/python2.7/site-packages/setuptools/pep425tags.pyt_is_running_32bitpscC@stjdkrtj\}}}|jd}|dkrQtrQd}n|dkrotrod}ndj|d|d |Stjjj dd j d d }|d krtrd }n|S(s0Return our platform name 'win32', 'linux_x86_64'tdarwinR6tx86_64ti386tppc64tppcsmacosx_{}_{}_{}iiR7R5t linux_x86_64t linux_i686( RRtmac_verR8R>Rt distutilstutilt get_platformR9(treleaseR7tmachinet split_vertresult((s9/usr/lib/python2.7/site-packages/setuptools/pep425tags.pyRIts  ' cC@s`tddhkrtSyddl}t|jSWnttfk rOnXtjddS(NRDREiii( RItFalset _manylinuxtbooltmanylinux1_compatiblet ImportErrortAttributeErrorRthave_compatible_glibc(RO((s9/usr/lib/python2.7/site-packages/setuptools/pep425tags.pytis_manylinux1_compatibles c@sg}fdtdd fdd fdd fd dfg|||rj|j|nx@D]8}||krq|||rq|j|qqqqW|jd |S(sReturn a list of supported arches (including group arches) for the given major, minor and machine architecture of an macOS machine. c@s|dkr||fdkS|dkr8||fd kS|dkrT||fd kS|dkrp||fd kS|krx+|D]}|||rtSqWntS( NRCi iRBRAiR@(i i(i i(i i(i i(tTrueRN(R#R$tarchtgarch(t_supports_archtgroups(s9/usr/lib/python2.7/site-packages/setuptools/pep425tags.pyRYs      tfatRARCtintelR@tfat64RBtfat32t universal(RARC(R@RA(R@RB(R@RARC(Rtappend(R#R$RKtarchesRX((RYRZs9/usr/lib/python2.7/site-packages/setuptools/pep425tags.pytget_darwin_archess$    " cC@sg}|dkrug}t}|d }xGt|dddD],}|jdjtt||fqBWn|pt}g} |pt}|r|g| dd+nt } ddl } xK| j D]=} | dj dr| j | djdddqqW| jtt| | jd |s6|pMt} | j d rtj| }|r|j\}}}}d j||}g}xjttt|dD]@}x7tt|||D]}|j|||fqWqWqM| g}n9|dkrDtrD| jd d | g}n | g}xC| D];}x2|D]*} |jd||df|| fqaWqTWxj|dD]^}|ddhkrPnx?| D]7}x.|D]&} |jd||f|| fqWqWqWx3|D](} |jd|ddd | fqWn|jd||dfd df|jd||ddfd dfxdt|D]V\}}|jd|fd df|dkr|jd|dd dfqqW|S(scReturn 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. iRiNs.abiR6iitnonetmacosxs {}_{}_%i_%stlinuxt manylinux1s%s%st31t30spy%stany(R RtrangeR`RRRRR<tsettimpt get_suffixesRtaddR8textendtsortedtlistRIt _osx_arch_pattmatchRZRtreversedtintRbRUR9t enumerate(tversionstnoarchRR1R;t supportedR"R#R$tabistabi3sRltsuffixRWRstnamet actual_archttplRaR2tatversionti((s9/usr/lib/python2.7/site-packages/setuptools/pep425tags.pyt get_supportedsh   -  ( #"    ,  , )$( %( t__doc__t __future__Rtdistutils.utilRGRtreRRRt collectionsRRRtcompileRrRRR!RR%RVR)R<R>RIRURbR RNRtimplementation_tag(((s9/usr/lib/python2.7/site-packages/setuptools/pep425tags.pyts0          "    = _