ó
    î9bh2  ã                   ó°  • S SK r S SKrS SKrSqSqSq\ R                  R                  SS5      R                  S5       V s/ s H-  n U R                  5       (       d  M  SU R                  5       -  PM/     sn q
SqSS jrS rS rSS	 jrSS
 jrSS jrSS jrSS jrSS jrSS jr " S S\5      r " S S\5      rS r S r\S:X  a  \" 5         ggs  sn f )é    NÚDEBPYTHON3_SUPPORTEDÚ Ú,úpython%sc                 óR  • SSK JnJn  [        (       dY  [        R
                  R                  S5      (       a5  U" 5       n[        S5      nUR                  U5        UR                  5         Uq[        (       a   U (       a   [        R                  SU 5      nU$ g ! U a    [        ef = f)Nr   )ÚConfigParserÚNoOptionErrorz"/usr/share/python3/debian_defaultsÚDEFAULT)Úconfigparserr   r	   Ú	_defaultsÚosÚpathÚexistsÚopenÚ	read_fileÚcloseÚgetÚ
ValueError)Únamer   r	   ÚconfigÚdefaultsfileÚvalues         Ú!/usr/share/python3/py3versions.pyÚread_defaultr      sŒ   € ç8ßŠ9Ü�7‰7�>‰>Ð>×?Ñ?Ù!“^ˆFÜÐ DÓEˆLØ×Ñ˜\Ô*Ø×ÑÔ ØˆIç‚y–Tð	Ü—M‘M )¨TÓ2ˆEð ˆØøð ó 	ÜÐð	ús   Â B ÂB&c                 óD   • [        S U R                  S5       5       5      $ )Nc              3   ó8   #   • U  H  n[        U5      v •  M     g 7f©N)Úint)Ú.0Úparts     r   Ú	<genexpr>Ú#version_to_tuple.<locals>.<genexpr>(   s   é € Ð:Ò'9˜t”�T—�Ò'9ùó   ‚Ú.)ÚtupleÚsplit)Úversions    r   Úversion_to_tupler(   '   s   € ÜÑ: w§}¡}°SÔ'9Ó:Ó:Ð:ó    c           
      óä  • [        U R                  S5      5      S:”  a  [        S5      eSS KnUR                  UR                  UR
                  UR                  UR                  S.n0 n[        5       n[        [        SS95      nSnU R                  S5       GH  nUR                  5       nUS	:X  a  M  US
;   a  M$  UR                  S[        5       5        [        R                  " S5      nUR                  U5      n	 U	(       d  [        S5      eU	R                  S5      U	R                  S5      pºUR                  S5      u  pÍ[!        U5      S:  a  M½  U
S;   a  UR#                  U5        MÖ  SnX*   nU Vs/ s H&  oþ" [%        U5      [%        U5      5      (       d  M$  UPM(     nnGM     SU;   a  XCS'   U(       a  UR)                  U5      US'   U$ s  snf ! [&         a    [        S5      ef = f)Nr   é   zDtoo many arguments provided for X-Python3-Version: min and max only.r   )NÚ=z>=z<=z<<T©Úversion_onlyFÚall)ÚcurrentÚcurrent_extÚversionsz(>=|<=|<<|=)? *(\d\.\d+)$z'error parsing Python3-Version attributeé   r$   é   )Nr,   )Úlenr&   r   ÚoperatorÚeqÚgeÚleÚltÚsetÚsupported_versionsÚstripÚ
setdefaultÚreÚcompileÚmatchÚgroupr   Úaddr(   Ú	ExceptionÚunion)Úvstringr6   Ú	operatorsÚvinfoÚexact_versionsÚversion_rangeÚ
relop_seenÚfieldÚveÚmÚopÚvÚvmajÚvminÚfiltopÚavs                   r   Úparse_versionsrU   +   sÅ  € Ü
ˆ7�=‰=˜ÓÓ Ó"ÜÐ_Ó`Ð`ÛØ—{‘{¨¯©Ø—{‘{¨(¯+©+Ø—{‘{ñ$€Ið €EÜ“U€NÜÔ*¸Ñ=Ó>€MØ€JØ—‘˜s×#ˆØ—‘“ˆØ�E‹>ÙØÐ.Ó.ÙØ×Ñ˜¤S£UÔ+Ü�ZŠZÐ4Ó5ˆØ�H‰H�U‹Oˆð	HÞÜ Ð!JÓKÐKØ—G‘G˜A“J §¡¨£
�ØŸ™ ›‰JˆDÜ�4‹y˜1‹}ÙØ�[Ó Ø×"Ñ" 1Ö%à!�
Ø"™�Ù.;ó !@ªm¨¸vÜ$ RÓ(Ô*:¸1Ó*=÷@?§©m�ð !@’ñ+ $ð2 �UÓØ*ˆjÑÞØ .× 4Ñ 4°]Ó CˆE�*ÑØ€Lùò!@øäó 	HÜÐFÓGÐGð	Hús1   Ã?AGÅGÅ/
GÅ9#GÆ GÆ&GÇGÇG/c                 ó  • [         (       d;   [        S5      nUR                  S5       Vs/ s H  o"R                  5       PM     snq U (       a  [          Vs/ s H  o3SS  PM	     sn$ [         $ s  snf ! [         a    / q  N9f = fs  snf )Nzold-versionsr   é   )Ú_old_versionsr   r&   r=   r   ©r.   r   ÚsrP   s       r   Úold_versionsr[   V   s{   € çŠ=ð	Ü  Ó0ˆEØ05·±¸CÔ0@ÓAÒ0@¨1ŸW™WžYÑ0@ÑAˆMö Ý,Ó-š}˜!�!�"“™}Ñ-Ð-äÐùò BøÜó 	ØŠMð	üò .ó(   �A2 «A-ÁA2 ÁBÁ-A2 Á2BÂ Bc                 ó  • [         (       d;   [        S5      nUR                  S5       Vs/ s H  o"R                  5       PM     snq U (       a  [          Vs/ s H  o3SS  PM	     sn$ [         $ s  snf ! [         a    / q  N9f = fs  snf )Nzunsupported-versionsr   rW   )Ú_unsupported_versionsr   r&   r=   r   rY   s       r   Úunsupported_versionsr_   d   s�   € ç Ò ð	'Ü Ð!7Ó8ˆEØ8=¿¹ÀCÔ8HÓ$IÒ8H°1§W¡W¦YÑ8HÑ$IÐ!ö Ý4Ó5Ò4˜!�!�"“Ñ4Ñ5Ð5ä$Ð$ùò %JøÜó 	'Ø$&Ò!ð	'üò 6r\   c           	      óÈ  • [        5         [        (       d;   [        S5      nUR                  S5       Vs/ s H  o"R	                  5       PM     snq[        R%                  [        R'                  [(        5      5      n	[        R+                  5         [        R-                  U	5        U (       a  [         V
s/ s H  oªSS  PM	     sn
$ [        $ s  snf ! [
         Ga     / SQn SS KnUR                  USSUR                  S9nUR                  nO5! [         a(    [        R                  " SR                  U5      5      n Of = fS nU HM  nUR                  S	5      (       d  M  UR                  S
S5      S   R	                  5       R                  S5      nMO     UR                  5         U Vs/ s H  n[         R"                  " SSU5      PM     Os  snf nnUq GNŠf = fs  sn
f )Nzsupported-versionsr   )z/usr/bin/apt-cachez--no-all-versionsÚshowzpython3-allr   r3   F)ÚbufsizeÚshellÚstdoutÚ zDepends:Ú:z\s*(\S+)[ (]?.*z\1rW   )Údefault_versionÚ_supported_versionsr   r&   r=   r   Ú
subprocessÚPopenÚPIPErd   ÚImportErrorr   ÚpopenÚjoinÚ
startswithr   r?   ÚsubÚpopÚindexÚ_default_versionÚsortÚappend)r.   r   rZ   Úcmdri   ÚpÚfdÚdependsÚlineÚdefaultrP   s              r   r<   r<   r   s•  € äÔßÒð	*Ü Ð!5Ó6ˆEØ6;·k±kÀ#Ô6FÓ"GÒ6F°§7¡7¦9Ñ6FÑ"GÐô$ "×%Ñ%Ô&9×&?Ñ&?Ô@PÓ&QÓR€GÜ×ÑÔÜ×Ñ˜wÔ'ÞÝ2Ó3Ò2˜!�!�"“Ñ2Ñ3Ð3ä"Ð"ùò1 #HøÜô 	*ò*ˆCð-Û!Ø×$Ñ$ S°!Ø+0¸¿¹ð %ð J�à—X‘X‘øÜó -Ü—X’X˜cŸh™h s›mÓ,’ð-úàˆGÛ�Ø—?‘? :×.Ó.Ø"Ÿj™j¨¨aÓ0°Ñ3×9Ñ9Ó;×AÑAÀ#ÓF’Gñ ð �H‰HŒJÙELÓMÂWÀ”r—v’vÐ0°%¸Ö;ÂWùÒMˆGÐMØ")Óð!	*üò* 4s_   —C µCÁC Â5GÃC ÃGÃ!,DÄGÄ/E Ä=GÄ?E Å GÅ"A
GÆ,"GÇ
GÇGc                 óú   • [         (       d  [        R                  " S5      q [        S5      n[         U[        R                  R                  SU5      4;  a  [        SU-  5      eUq U (       a	  [         SS  $ [         $ )Nz/usr/bin/python3zdefault-versionz/usr/binzkthe symlink /usr/bin/python3 does not point to the python3 default version. It must be reset to point to %srW   )rs   r   Úreadlinkr   r   rn   r   )r.   Údebian_defaults     r   rg   rg   “   sw   € çÒÜŸ;š;Ð'9Ó:Ðä!Ð"3Ó4€NÜ ´·±·±¸ZÈÓ0XÐYÓYÜð *à,:ñ;ó <ð 	<ð &ÐÞÜ  Ð#Ð#äÐr)   c                 óô  • [        5         S n[        U 5      n[        SS9n[        U5      S:X  a€  US   R	                  U5      n/ nU H  oeR                  U5        M      UR                  UR                  [        SS  5      5      nUR                  5         U(       a  UR                  U5        O[        S5      eU(       d  [        S5      eU(       a  U$ U Vs/ s H  nS	U-  PM
     sn$ !   Sn Nk= fs  snf )
NTr-   r3   r2   rW   r   z/No supported python3 versions in version stringzempty set of versionsr   )rg   rU   r<   r5   Úintersectionru   rq   rr   rs   rt   r   )	rF   r.   r2   rH   Ú	supportedÚvlr'   r{   rP   s	            r   Úrequested_versionsrƒ   ¤   sá   € äÔØ€HÜ˜7Ó#€EÜ"°Ñ5€IÜ
ˆ5ƒz�QƒØ˜Ñ$×1Ñ1°)Ó<ˆØˆÛˆG§¡¨7Ö!3‘xð	Ø—f‘f˜RŸX™XÔ&6°q°rÐ&:Ó;Ó<ˆGð 	�‰Œ	ÞØ�I‰I�gÔøäÐJÓKÐKÞÜÐ0Ó1Ð1ÞØˆ	á(*Ó+ª 1�
˜Q”©Ñ+Ð+øð	ØŠGüò ,s   Á 'C, ÃC5Ã,C2c                 óx  • SS K n[        5       nUR                  S5      UR                  S5      -    Vs/ s HG  n[        R                  R	                  U5      U;   d  M(  [        R                  R	                  U5      PMI     nnUR                  5         U (       a  U Vs/ s H  oUSS  PM	     sn$ U$ s  snf s  snf )Nr   z/usr/bin/python3.[0-9]z/usr/bin/python3.[0-9][0-9]rW   )Úglobr<   r   r   Úbasenamert   )r.   r…   r�   rZ   r2   rP   s         r   Úinstalled_versionsr‡   ¿   s¤   € ÛÜ"Ó$€IàŸ™Ð#;Ó<¸t¿y¹yÐIfÓ?gÒgó5Úg�AÜ—7‘7×#Ñ# AÓ&¨)Ñ3ó $”—‘× Ñ  Ö#Ùgð ð 5ð ‡M�M„OÞÙ'Ó(šx˜!�!�"“™xÑ(Ð(àˆùò5ùò
 )s   ´'B2Á#B2ÂB7c                 ó\   • [        S5      nU " S U 5       5      nSU-  nU(       a  U$ SU-   $ )NTc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr   )r(   )r   Úvers     r   r!   Ú+minmax_supported_version.<locals>.<genexpr>Î   s   é € ÐNÒ6M¨sÔ% c×*Ð*Ò6Mùr#   z%d.%dÚpython)r<   )Úminmaxr.   Úsupported_versions_listr'   Úversion_strs        r   Úminmax_supported_versionr�   Ì   s<   € Ü0°Ó6ÐÙÑNÑ6MÓNÓN€GØ˜GÑ#€KÞØÐà˜+Ñ%Ð%r)   c                   ó   • \ rS rSrSrg)ÚControlFileValueErroréÖ   © N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r”   r)   r   r’   r’   Ö   ó   † Úr)   r’   c                   ó   • \ rS rSrSrg)ÚMissingVersionValueErroréÚ   r”   Nr•   r”   r)   r   r�   r�   Ú   r›   r)   r�   c                 óN  • SnSnSn[        U SS9 nU Vs/ s H  ofR                  5       PM     nnSSS5        W H¬  nUS:X  a  US:w  a  US:X  a    O™SnM  UR                  S5      (       a  SnM5  UR                  SU-   5      (       a  UnMR  UR                  5       R                  S5      (       d  Mx  US:w  a  [	        S	5      eUR                  S
S5      S   R                  5       nM®     Uc  [        S5      eUS:X  a  Uc  [        S5      eU$ U$ s  snf ! , (       d  f       Në= f)zBread the debian/control file, extract the X-Python3-Version
field.Nzutf-8)Úencodingr   ÚSourcezSource:z	Package: zx-python3-version:z1attribute X-Python3-Version not in Source sectionrf   r3   znot a control filez$no X-Python3-Version in control file)r   r=   ro   Úlowerr   r&   r’   r�   )ÚfnÚpkgr'   ÚsversionÚsectionÚcontrolfilerz   Úliness           r   Úextract_pyversion_attributer©   Þ   s  € ð €GØ€HØ€GÜ	ˆb˜7Ò	# {Ù*5Ó6ª+ $—‘–©+ˆÐ6÷ 
$ãˆØ�2‹:˜' T›/Ø�h‹ÙØŠGØ�_‰_˜Y×'Ñ'ØŠGØ�_‰_˜[¨3Ñ.×/Ñ/ØŠGØ�Z‰Z‹\×$Ñ$Ð%9×:Ó:Ø˜(Ó"Ü Ð!TÓUÐUØ—z‘z # qÓ)¨!Ñ,×2Ñ2Ó4ŠHñ ð �Ü#Ð$8Ó9Ð9Ø
ˆhƒØÑÜ*Ð+QÓRÐRØˆØ€Nùò) 7÷ 
$Õ	#ús   ‘D–D¯DÄDÄ
D$c            	      ó”  • SSK Jn   Sn U " US9nUR                  SSSSS	S
9  UR                  SSSSSS
9  UR                  SSSSSS
9  UR                  SSSSSS
9  UR                  SSSSS
9  UR                  SSSSS
9  UR                  SSSS SS!S"9  UR                  5       u  p4[        R
                  R                  [        R                  S   5      nUR                  (       a/  [        U5      S:X  a    [        [        UR                  5      5        g UR                   (       a=  [        U5      S:X  a.  [        S%R#                  [%        UR                  5      5      5        g UR&                  (       a=  [        U5      S:X  a.  [        S%R#                  [)        UR                  5      5      5        g UR*                  (       a3  [        U5      S:X  a$  [        [-        [.        UR                  5      5        g UR0                  (       a3  [        U5      S:X  a$  [        [-        [2        UR                  5      5        g UR4                  (       a   [        U5      S$::  a‘  [        U5      S:X  a  S&nOUS   n [        R
                  R7                  U5      (       a%  Un [9        US'5      n	[;        X“R                  5      n
O[;        XsR                  5      n
[        S%R#                  W
5      5        g [        R>                  RA                  S-U< S%U< S,35        [        R                  " S$5        g ! [         a/  n[        S#U-  U5        [        R                  " S$5         S nAg S nAff = f! [<         a@    [        R>                  RA                  U< S(U< S)35        [        R                  " S$5         Nß[B         a;    [        R>                  RA                  S*U-  5        [%        UR                  5      n
 GN"f = f! [         aG  n[        R>                  RA                  U< S+U< S,35        [        R                  " S$5         S nAg S nAff = f).Nr   )ÚOptionParserz;[-v] [-h] [-d|--default] [-s|--supported] [-i|--installed] )Úusagez-dz	--defaultz!print the default python3 versionÚ
store_truer{   )ÚhelpÚactionÚdestz-sz--supportedz$print the supported python3 versionsr�   z-rz--requestedz’print the python3 versions requested by a build; the argument is either the name of a control file or the value of the X-Python3-Version attributeÚ	requestedz-iz--installedz.print the installed supported python3 versionsÚ	installedz--min-supportedz+print the minimum supported python3 versionÚminsupportedz--max-supportedz+print the maximum supported python3 versionÚmaxsupportedz-vz	--versionz print just the version number(s)Fr.   )r®   r{   r¯   r°   z%s:r3   re   zdebian/controlr¡   z: not a control file: z, zC%s: no X-Python3-Version in control file, using supported versions
z: Ú
zusage: )"Úoptparser«   Ú
add_optionÚ
parse_argsr   r   r†   ÚsysÚargvr{   r5   Úprintrg   r.   r   Úexitr�   rn   r<   r²   r‡   r³   r�   Úminr´   Úmaxr±   Úisfiler©   rƒ   r’   ÚstderrÚwriter�   )r«   r¬   ÚparserÚoptsÚargsÚprogramÚmsgr2   r£   rF   Úvss              r   ÚmainrÈ     s�  € Ý%ØI€EØ6Ù Ñ&€FØ
×Ñ�d˜KØ>Ø)°	ð ñ ;ð ×Ñ�d˜MØAØ)°ð ñ =ð ×Ñ�d˜MðMð *°ð	 ñ =ð
 ×Ñ�d˜MØKØ)°ð ñ =ð ×ÑÐ'ØHØ)°ð ñ @ð ×ÑÐ'ØHØ)°ð ñ @ð ×Ñ�d˜KØ=Ø#¨L¸~ð ñ Oð ×"Ñ"Ó$�J€DÜ�g‰g×ÑœsŸx™x¨™{Ó+€Gà‡|‡|œ˜D›	 Q›ð	Ü”/ $×"3Ñ"3Ó4Õ5ð 
��œC ›I¨›NÜˆc�h‰hÔ)¨$×*;Ñ*;Ó<Ó=Õ>Ø	��œC ›I¨›NÜˆc�h‰hÔ)¨$×*;Ñ*;Ó<Ó=Õ>Ø	×	×	œs 4›y¨A›~ÜÔ&¤s¨D×,=Ñ,=Ó>Õ?Ø	×	×	œs 4›y¨A›~ÜÔ&¤s¨D×,=Ñ,=Ó>Õ?Ø	��œC ›I¨›NÜˆt‹9˜‹>Ø'‰Hà˜A‘wˆHð	Ü�w‰w�~‰~˜h×'Ñ'Ø�ð?Ü9¸"¸hÓG�GÜ+¨G×5FÑ5FÓG‘Bô (¨×2CÑ2CÓD�Ü�#—(‘(˜2“,Õô
 	�
‰
×Ò«W³eÐ<Ô=Ü�Š��øôO ó 	Ü�%˜'‘/ 3Ô'Ü�HŠH�Q�K‰Kûð	ûô, -ó  Ü—J‘J×$Ñ$Û(/³ð&5ô 6ä—H’H˜Q–KÜ/ó ?Ü—J‘J×$Ñ$ð &Hà%,ñ&-ô .ô ,¨D×,=Ñ,=Ó>“Bð	?ûô ó 	Ü�J‰J×Ñ«7³CÐ8Ô9Ü�HŠH�Q�K‰Kûð	úsb   Ã7L* É2&O6 Ê!M& Ê:0O6 Ì*
M#Ì4%MÍM#Í&AO3Î-O6 Î/A O3Ï/O6 Ï2O3Ï3O6 Ï6
QÐ =QÑQÚ__main__r   )F)r   r?   r¹   r   rX   r^   Úenvironr   r&   r=   rh   rs   r   r(   rU   r[   r_   r<   rg   rƒ   r‡   r�   r   r’   r�   r©   rÈ   r–   )rŠ   s   0r   Ú<module>rË      sñ   ðó 
Û 	Û 
à€	Ø€ØÐ à—z‘z—~‘~Ð&<¸bÓA×GÑGÈÔLó'ÚLð 58àŸ)™)Ÿ+ó 0�z C§I¡I£KÔ/ÙLñ'Ð ð Ð ôò(;ò(ôVô%ô#ôB ô",ô6
ô&ô	˜Jô 	ô	˜zô 	òð>ò<IðV ˆzÓÙ…Fð ùòy
's   Á CÁC