Ye2TddlZddlZddlZdadadadejdddDa da ddZ dZ dZ dd Zdd Zdd Zdd ZddZddZddZGddeZGddeZdZ dZedkr edSdS)Ncdg|]-}|d|z.Szpython%sstrip.0vers !/usr/share/python3/py3versions.py r sA'''C))++'zCIIKK/'''DEBPYTHON3_SUPPORTED,cZddlm}m}tsctjdrD|}td}||| |atr1|r/ t d|}n#|$rtwxYw|SdS)Nr) ConfigParser NoOptionErrorz"/usr/share/python3/debian_defaultsDEFAULT) configparserrr _defaultsospathexistsopen read_filecloseget ValueError)namerrconfig defaultsfilevalues r read_defaultr"s88888888  7>>> ? ? !\^^F DEEL   \ * * *    IT MM)T22EE      4s =B B&cZtd|dDS)Nc34K|]}t|VdSN)int)rparts r z#version_to_tuple..(s(::tT::::::r .)tuplesplit)versions r version_to_tupler-'s+ ::w}}S'9'9::: : ::r c t|ddkrtdddl}|j|j|j|j|jd}i}t}ttd}d}|dD]'}| }|d kr|d vr#| d ttj d }||} | std | d| dc} d\} } t!| dkr| dvr|nd}||  fd|D} #t$$rtd wxYwd |vr||d <|r|||d <|S)NrzDtoo many arguments provided for X-Python3-Version: min and max only.r)N=z>=z<=z<=|<=|<<|=)? *(\d\.\d+)$z'error parsing Python3-Version attributer))Nr0c`g|]*}t|t(|+Sr-)ravfiltopvs r r z"parse_versions..KsW!@!@!@vv$R((*:1*=*=@?@?!@!@!@!@r )lenr+roperatoreqgeleltsetsupported_versionsr setdefaultrecompilematchgroupr&add Exceptionunion)vstringr@ operatorsvinfoexact_versions version_range relop_seenfieldvemopvmajvminr=r>s @@r parse_versionsr[+s: 7==  ""_```OOO{{(+{$$I EUUN*===>>MJs##HH  E>>  . . .  SUU+++ Z4 5 5 HHUOO H L !JKKKGGAJJ EBJD$4yy1}}[  ""1%%%%! "2!@!@!@!@!@m!@!@!@  H H HFGG G HU*j  D . 4 4] C CE*  LsA'F-83F--GFctsB td}d|dDan#t$rgaYnwxYw|rdtDStS)Nz old-versionsc6g|]}|Sr:rrss r r z old_versions..[s AAA1QWWYYAAAr rc"g|] }|dd SNr:rr>s r r z old_versions.._s ---!!""---r ) _old_versionsr"r+rr2r!s r old_versionsrfVs   00EAA C0@0@AAAMM   MMM --}----.8 AActsB td}d|dDan#t$rgaYnwxYw|rdtDStS)Nzunsupported-versionsc6g|]}|Sr:rr^s r r z(unsupported_versions..is $I$I$I1QWWYY$I$I$Ir rc"g|] }|dd Srar:rcs r r z(unsupported_versions..ms 555!!""555r )_unsupported_versionsr"r+rres r unsupported_versionsrlds ' ' !788E$I$I C8H8H$I$I$I ! ! ' ' '$& ! ! ! '%5545555$$rgctts% td}d|dDan#t$rgd} ddl}||dd|j}|j}n7#t$r*tj d |}YnwxYwd}|D]X}| d rA|d ddd}Y|d |D}|aYnwxYwttt$}tt||rd tDStS)Nzsupported-versionsc6g|]}|Sr:rr^s r r z&supported_versions..xs "G"G"G17799"G"G"Gr r)z/usr/bin/apt-cachez--no-all-versionsshowz python3-allrr7F)bufsizeshellstdout zDepends::c:g|]}tjdd|S)z\s*(\S+)[ (]?.*z\1)rHsubr^s r r z&supported_versions..s'MMMrv0%;;MMMr c"g|] }|dd Srar:rcs r r z&supported_versions..s 333!!""333r )default_version_supported_versionsr"r+r subprocessPopenPIPErr ImportErrorrpopenjoin startswithrrpopindex_default_versionsortappend) r2r!cmdrzpfddependslinedefaults r rFrFrs * * !566E"G"Gekk#6F6F"G"G"G   * * ****C -!!!!$$S!+0%JJX - - -Xchhsmm,, -G G G??:..G"jja00399;;AA#FFG HHJJJMMWMMMG")   ! *""%%&9&?&?@P&Q&QRRGw'''#3323333""s6.AD9)B?D91B41D93B44BD98D9ctstjdatd}t|tjd|fvrt d|z|a|rtddStS)Nz/usr/bin/python3zdefault-versionz/usr/binzkthe symlink /usr/bin/python3 does not point to the python3 default version. It must be reset to point to %srb)rrreadlinkr"rrr)r2debian_defaults r rxrxs ;;'9::!"344N  Z0X0XY Y Y*,:;<< <& ##r c,td}t|}td}t|dkr|d|}g}|D]}|| ||tdd}n #d}YnxYw| |r||ntd|std|r|Sd |DS) NTr1r7r6rbrz/No supported python3 versions in version stringzempty set of versionscg|]}d|zSrr:rcs r r z&requested_versions..s+++1 Q+++r ) rxr[rFr? intersectionrrrrrr)rOr2r6rQ supportedvlr,rs r requested_versionsrs*H 7 # #E"555I 5zzQ$11)<< 33G7!3!3!3!3 ffRXX&6qrr&:;;<.sN5557##A&&)33  ##333r z/usr/bin/python3.[0-9]z/usr/bin/python3.[0-9][0-9]c"g|] }|dd Srar:rcs r r z&installed_versions..s (((!!""(((r )globrFr)r2rr6rs @r installed_versionsrsKKK"$$I5555#;<.s+NNs%c**NNNNNNr z%d.%dpython)rF)minmaxr2supported_versions_listr, version_strs r minmax_supported_versionrsR066fNN6MNNNNNGG#K&+%%r ceZdZdS)ControlFileValueErrorN__name__ __module__ __qualname__r:r r rrDr rceZdZdS)MissingVersionValueErrorNrr:r r rrrr rcBd}d}d}t|d5}d|D}dddn #1swxYwY|D]}|dkr|dkr |dkrnd}|drd}1|d|zr|}L|d rC|dkrtd |d d d }|t d |dkr|td|S|S)zFread the debian/control file, extract the X-Python3-Version field.Nzutf-8)encodingc6g|]}|Sr:r)rrs r r z/extract_pyversion_attribute..s 666$666r rSourcezSource:z Package: zx-python3-version:z1attribute X-Python3-Version not in Source sectionrtr7znot a control filez$no X-Python3-Version in control file)rrlowerrr+rrr)fnpkgr,sversionsection controlfilelinesrs r extract_pyversion_attributersGHG b7 # # #7{66+666777777777777777 5 5 2::'T//hGG __Y ' ' 5GG __[3. / / 5GG ZZ\\ $ $%9 : : 5("" !TUUUzz#q))!,2244H#$8999 h  *+QRR R Ns 155c ddlm}d} ||}|ddddd |d d d dd |ddddd |ddddd |dddd |dddd |dddd dd!"|\}}tjtjd}|j rvt|dkrc tt|j dS#t$r2}td#|z|tjd$Yd}~dSd}~wwxYw|jrIt|dkr6td%t%|j dS|jrIt|dkr6td%t)|j dS|jr) ;;; dMA) === dMM* ===  dMK) === 'H)@@@ 'H)@@@ dK=#L~OOO""$$JD$gsx{++G |*D Q  /$"344 5 5 5 5 5    %'/3 ' ' ' HQKKKKKKKKK  $CIINN chh)$*;<<==>>>>> "CIINN chh)$*;<<==>>>>>  s4yyA~~ &sD,=>>????? s4yyA~~ &sD,=>>????? CIINN t99>>'HHAwH w~~h'' E ?9"hGGG+GT5FGGBB,   J$$(/&5666HQKKKKK/???J$$&H%,&-...,D,=>>BBB ? ($2CDD #((2,,         J  777CCC8 9 9 9 HQKKKKKKKKK  WWWeee<===  sa,!E F 'FF /!O:%L76O:7AN>:O:;O:=N>>:O:: Q9QQ__main__r%)F)rrHrrrdrkenvironrr+ryrr"r-r[rfrlrFrxrrrrrrrrrr:r r rs   ''z~~&