ó ²<ac@sØddlZddlZddlmZddlmZddlmZddlm Z dgZ dZ dZ ej e ƒZejeƒZejd ƒZejd ƒZe s·e reƒZejd ƒesìejd d ƒdZnesejd dƒjddƒZqny#ed„ejdƒDƒƒZ Wnek rYejdƒnXy#ed„ejdƒDƒƒZ Wnek rejdƒnXddd„Zd„Zd„Zd„Z dd„Z!dS(iÿÿÿÿN(tSafeConfigParser(tenviron(texists(t GeneratorTypeiis(-)?(\d\.\d+)(?:(-)(\d\.\d+)?)?tDEBPYTHON_SUPPORTEDtDEBPYTHON_DEFAULTs!/usr/share/python/debian_defaultstDEFAULTsdefault-versionissupported-versionstpythontccs|]}t|ƒVqdS(N(tint(t.0ti((s&/usr/share/python/debpython/version.pys 3st.scannot read debian_defaultsccs4|]*}td„|jƒjdƒDƒƒVqdS(css|]}t|ƒVqdS(N(R (R tj((s&/usr/share/python/debpython/version.pys 7sR N(ttupletstriptsplit(R R ((s&/usr/share/python/debpython/version.pys 7st,cs&t|tƒrt|ƒ}n| s=t|ƒddgkrLttƒ}n’|ddkrbdn|d‰|ddkr‚d n|d‰ˆˆkr¿tˆtkr°ˆfntƒƒ}nt‡‡fd†tDƒƒ}|rýtd„|Dƒƒ}n%|tkr"td„|Dƒƒ}n|S( s>Return a set of requested and supported Python versions. :param available: if set to `True`, return installed versions only, if set to `False`, return requested versions that are not installed. By default returns all requested versions. :type available: bool >>> sorted(get_requested_versions([(2, 5), (3, 0)])) [(2, 7)] >>> sorted(get_requested_versions('')) == sorted(SUPPORTED) True >>> sorted(get_requested_versions([None, None])) == sorted(SUPPORTED) True >>> get_requested_versions([(5, 0), None]) set([]) iiicc3s1|]'}ˆ|ko ˆknr|VqdS(N((R tv(tmaxvtminv(s&/usr/share/python/debpython/version.pys Yscss%|]}td|ƒr|VqdS(s/usr/bin/python%d.%dN(R(R R((s&/usr/share/python/debpython/version.pys \scss%|]}td|ƒs|VqdS(s/usr/bin/python%d.%dN(R(R R((s&/usr/share/python/debpython/version.pys _sN(ii(icic( t isinstancet basestringt parse_vrangetlisttNonetsett SUPPORTEDRtFalse(tvranget availabletversions((RRs&/usr/share/python/debpython/version.pytget_requested_versions=s   ' cCsL|d krd Stj|ƒ}|s8td|ƒ‚n|jƒ}t|ƒjd ƒdkrŒtd„|djdƒDƒƒ}||fSd }}|dr­|d}n|d}|d}|rætd „|jdƒDƒƒnd }|rtd „|jdƒDƒƒnd }|rB|rB||krBtd|ƒ‚n||fS(sƒReturn minimum and maximum Python version from given range. >>> parse_vrange('2.4-') ((2, 4), None) >>> parse_vrange('2.4-2.6') ((2, 4), (2, 6)) >>> parse_vrange('2.4-3.0') ((2, 4), (3, 0)) >>> parse_vrange('-2.7') (None, (2, 7)) >>> parse_vrange('2.5') ((2, 5), (2, 5)) >>> parse_vrange('') == parse_vrange('-') == (None, None) True Rt-sversion range is invalid: %sicss|]}t|ƒVqdS(N(R (R R ((s&/usr/share/python/debpython/version.pys ~siR icss|]}t|ƒVqdS(N(R (R R ((s&/usr/share/python/debpython/version.pys ˆscss|]}t|ƒVqdS(N(R (R R ((s&/usr/share/python/debpython/version.pys ‰s(RR!N(NN( RtRANGE_REtmatcht ValueErrortgroupsRtcountRR(tvalueR#R%RR((s&/usr/share/python/debpython/version.pyRes&  #      ++cCs­t|tƒr|St|ttfƒ rSt|dtƒrSdjd„|DƒƒSg}xM|D]E}t|tƒr…|j|ƒq`|jdjd„|Dƒƒƒq`W|S(s¨ >>> vrepr(([2, 7], [3, 2])) ['2.7', '3.2'] >>> vrepr(('2.6', '3.1')) ['2.6', '3.1'] >>> vrepr('2.7') '2.7' >>> vrepr((2, 7)) '2.7' iR css|]}t|ƒVqdS(N(tstr(R R ((s&/usr/share/python/debpython/version.pys  scss|]}t|ƒVqdS(N(R((R R ((s&/usr/share/python/debpython/version.pys §s(RRRRR tjointappend(R'tresulttversion((s&/usr/share/python/debpython/version.pytvrepr‘s  $cCs.|s dStd„|jddƒDƒƒd S(s•Return pair of integers that represent version. >>> getver('2.5') (2, 5) >>> getver('2.6.4') (2, 6) >>> getver(None) '' Rcss|]}t|ƒVqdS(N(R (R R ((s&/usr/share/python/debpython/version.pys ·sR i(RR(R'((s&/usr/share/python/debpython/version.pytgetver«s cCs—g}g}x[t|ƒD]M}t|tƒr=t|ƒ}n|tkrY|j|ƒq|j|ƒqW|jt|ƒƒ|r“|r“t|ƒS|S(s£Return sorted list of versions starting with default Python version (if available) then list of suppored versions greater than default one followed by reversed list of older versions. List of versions sorted this way can be used in Depends field. :param vrepr: return string represenatations of versions, by default the same format is used as in :param:`versions` >>> debsorted([(2, 6), (3, 1), (2, 5), (2, 4), (2, 7)])[0] == DEFAULT True >>> debsorted(('2.4', '3.2', '2.6', '2.7'))[-1] (2, 4) >>> debsorted(set([(2, 1), (2, 2)])) [(2, 2), (2, 1)] >>> debsorted([(2, 1), (2, 2)], return_str=True) ['2.2', '2.1'] ( tsortedRRR.RR*textendtreversedR-(Rt return_strR+t old_versionsR,((s&/usr/share/python/debpython/version.pyt debsortedºs   (ii(ii("tloggingtret ConfigParserRtosRtos.pathRttypesRRRt RANGE_PATTERNtcompileR"t getLoggert__name__tlogtgett _supportedt_defaultt_configtreadtreplaceRRt Exceptiont exceptionRR RR-R.R4(((s&/usr/share/python/debpython/version.pytsD     #   ( ,