Ë
    pzi2  ã                   óŠ  — d dl Z d dlZd dlZdadadae j                  j                  dd«      j                  d«      D � cg c]%  } | j                  «       rd| j                  «       z  ‘Œ' c} a
dadd„Zd„ Zd„ Zdd	„Zdd
„Zdd„Zdd„Zdd„Zdd„Zdd„Z G d„ de«      Z G d„ de«      Zd„ Z	 d„ Zedk(  r e«        yyc c} w )é    NÚDEBPYTHON3_SUPPORTEDÚ ú,úpython%sc                 ó(  — ddl m}m} t        sTt        j
                  j                  d«      r5 |«       }t        d«      }|j                  |«       |j                  «        |at        r| r	 t        j                  d| «      }|S y # |$ r t        ‚w xY w)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ÝÜ�7‰7�>‰>Ð>Ô?Ù!“^ˆFÜÐ DÓEˆLØ×Ñ˜\Ô*Ø×ÑÔ ØˆIå‘Tð	Ü—M‘M )¨TÓ2ˆEð ˆØøð ò 	ÜÐð	ús   Á,B ÂBc                 óD   — t        d„ | j                  d«      D «       «      S )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­w©N)Úint)Ú.0Úparts     r   ú	<genexpr>z#version_to_tuple.<locals>.<genexpr>(   s   è ø€ Ò:˜t”�T—Ñ:ùó   ‚ú.)ÚtupleÚsplit)Úversions    r   Úversion_to_tupler'   '   s   € ÜÑ: w§}¡}°SÓ'9Ô:Ó:Ð:ó    c           
      ó¨  — t        | j                  d«      «      dkD  rt        d«      ‚dd l}|j                  |j                  |j
                  |j                  |j                  dœ}i }t        «       }t        t        d¬«      «      }d}| j                  d«      D ]ø  }|j                  «       }|d	k(  rŒ|d
v rŒ|j                  dt        «       «       t        j                  d«      }|j                  |«      }		 |	st        d«      ‚|	j                  d«      |	j                  d«      }}
|j                  d«      \  }}t!        |«      dk  rŒ±|
dv r|j#                  |«       n2d}||
   }|D �cg c]   } |t%        |«      t%        |«      «      sŒ|‘Œ" }}Œú d|v r||d<   |r|j)                  |«      |d<   |S c c}w # t&        $ r t        d«      ‚w xY w)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)Úvstringr5   Ú	operatorsÚvinfoÚexact_versionsÚversion_rangeÚ
relop_seenÚfieldÚveÚmÚopÚvÚvmajÚvminÚfiltopÚavs                   r   Úparse_versionsrT   +   sÕ  € Ü
ˆ7�=‰=˜ÓÓ Ò"ÜÐ_Ó`Ð`ÛØ—{‘{¨¯©Ø—{‘{¨(¯+©+Ø—{‘{ñ$€Ið €EÜ“U€NÜÔ*¸Ô=Ó>€MØ€JØ—‘˜sÓ#ò HˆØ—‘“ˆØ�EŠ>ØØÐ.Ñ.ØØ×Ñ˜¤S£UÔ+Ü�Z‰ZÐ4Ó5ˆØ�H‰H�U‹Oˆð	HÙÜ Ð!JÓKÐKØ—G‘G˜A“J §¡¨£
�ˆBØŸ™ ›‰JˆD�$Ü�4‹y˜1Š}ØØ�[Ñ Ø×"Ñ" 1Õ%à!�
Ø" 2™�Ø.;ö !@¨¹vÜ$ RÓ(Ô*:¸1Ó*=õ@?¢ð !@�ð !@øð+Hð2 �UÑØ*ˆˆjÑÙØ .× 4Ñ 4°]Ó CˆE�*ÑØ€Lùò!@øäò 	HÜÐFÓGÐGð	Hús+   Ã:AF<Å!F<Å- F7ÆF7ÆF<Æ7F<Æ<Gc                 óô   — t         s9	 t        d«      }|j                  d«      D �cg c]  }|j                  «       ‘Œ c}a | rt         D �cg c]  }|dd  ‘Œ	 c}S t         S c c}w # t        $ r g a Y Œ1w xY wc c}w )Nzold-versionsr   é   )Ú_old_versionsr   r%   r<   r   ©r-   r   ÚsrO   s       r   Úold_versionsrZ   V   ss   € åð	Ü  Ó0ˆEØ05·±¸CÓ0@ÖA¨1˜QŸW™W�YÒAˆMñ Ü,Ö-˜!��!�"’Ò-Ð-äÐùò BøÜò 	ØŠMð	üò .ó'   ˆA$ ¦A½A$ Á
A5ÁA$ Á$A2Á1A2c                 óô   — t         s9	 t        d«      }|j                  d«      D �cg c]  }|j                  «       ‘Œ c}a | rt         D �cg c]  }|dd  ‘Œ	 c}S t         S c c}w # t        $ r g a Y Œ1w xY wc c}w )Nzunsupported-versionsr   rV   )Ú_unsupported_versionsr   r%   r<   r   rX   s       r   Úunsupported_versionsr^   d   sv   € å ð	'Ü Ð!7Ó8ˆEØ8=¿¹ÀCÓ8HÖ$I°1 Q§W¡W¥YÒ$IÐ!ñ Ü4Ö5˜!��!�"’Ò5Ð5ä$Ð$ùò %JøÜò 	'Ø$&Ò!ð	'üò 6r[   c           	      ó’  — t        «        t        s9	 t        d«      }|j                  d«      D �cg c]  }|j	                  «       ‘Œ c}at        j%                  t        j'                  t(        «      «      }	t        j+                  «        t        j-                  |	«       | rt        D �
cg c]  }
|
dd  ‘Œ	 c}
S t        S c c}w # t
        $ rõ g d¢}	 dd l}|j                  |dd|j                  ¬«      }|j                  }n3# t        $ r' t        j                  dj                  |«      «      }Y nw xY wd }|D ]F  }|j                  d	«      sŒ|j                  d
d«      d   j	                  «       j                  d«      }ŒH |j                  «        |D �cg c]  }t!        j"                  dd|«      ‘Œ nc c}w }}|aY �Œvw xY wc c}
w )Nzsupported-versionsr   )z/usr/bin/apt-cachez--no-all-versionsÚshowzpython3-allr   r2   F)ÚbufsizeÚshellÚstdoutú zDepends:ú:z\s*(\S+)[ (]?.*z\1rV   )Údefault_versionÚ_supported_versionsr   r%   r<   r   Ú
subprocessÚPopenÚPIPErc   ÚImportErrorr   ÚpopenÚjoinÚ
startswithr   r>   ÚsubÚpopÚindexÚ_default_versionÚsortÚappend)r-   r   rY   Úcmdrh   ÚpÚfdÚdependsÚlineÚdefaultrO   s              r   r;   r;   r   s�  € äÔÝð	*Ü Ð!5Ó6ˆEØ6;·k±kÀ#Ó6FÖ"G° 1§7¡7¥9Ò"GÐô$ "×%Ñ%Ô&9×&?Ñ&?Ô@PÓ&QÓR€GÜ×ÑÔÜ×Ñ˜wÔ'ÙÜ2Ö3˜!��!�"’Ò3Ð3ä"Ð"ùò1 #HøÜò 	*ò*ˆCð-Û!Ø×$Ñ$ S°!Ø+0¸¿¹ð %ó J�à—X‘X‘øÜò -Ü—X‘X˜cŸh™h s›mÓ,’ð-úàˆGØò G�Ø—?‘? :Õ.Ø"Ÿj™j¨¨aÓ0°Ñ3×9Ñ9Ó;×AÑAÀ#ÓF‘GðGð �H‰HŒJØELÖMÀ”r—v‘vÐ0°%¸Õ;ÑMùÒMˆGÐMØ")Óð!	*üò* 4s_   ’C °B>ÁC Â)GÂ>C ÃGÃ/DÄ GÄ-D1Ä.GÄ0D1Ä1GÅAGÆF4Æ3
GÇ Gc                 óà   — t         st        j                  d«      a t        d«      }t         |t        j                  j                  d|«      fvrt        d|z  «      ‚|a | r	t         dd  S t         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 %srV   )rr   r   Úreadlinkr   r   rm   r   )r-   Údebian_defaults     r   rf   rf   “   st   € åÜŸ;™;Ð'9Ó:Ðä!Ð"3Ó4€NÜ ´·±·±¸ZÈÓ0XÐYÑYÜð *à,:ñ;ó <ð 	<ð &ÐÙÜ  Ð#Ð#äÐr(   c                 óÒ  — t        «        d }t        | «      }t        d¬«      }t        |«      dk(  rz|d   j	                  |«      }g }|D ]  }|j                  |«       Œ 	 |j                  |j                  t        dd  «      «      }|j                  «        |r|j                  |«       nt        d«      ‚|st        d«      ‚|r|S |D �cg c]  }d	|z  ‘Œ	 c}S #  d}Y ŒYxY wc c}w )
NTr,   r2   r1   rV   r   z/No supported python3 versions in version stringzempty set of versionsr   )rf   rT   r;   r4   Úintersectionrt   rp   rq   rr   rs   r   )	rE   r-   r1   rG   Ú	supportedÚvlr&   rz   rO   s	            r   Úrequested_versionsr‚   ¤   sâ   € äÔØ€HÜ˜7Ó#€EÜ"°Ô5€IÜ
ˆ5ƒz�Q‚Ø˜Ñ$×1Ñ1°)Ó<ˆØˆØÒ3ˆG §¡¨7Õ!3Ð3ð	Ø—f‘f˜RŸX™XÔ&6°q°rÐ&:Ó;Ó<ˆGð 	�‰Œ	ÙØ�I‰I�gÕäÐJÓKÐKÙÜÐ0Ó1Ð1ÙØˆ	à(*Ö+ 1�
˜Q“Ò+Ð+øð	ØŠGüò ,s   Á!'C ÃC$ÃC!c                 ó\  — dd l }t        «       }|j                  d«      |j                  d«      z   D �cg c]B  }t        j                  j	                  |«      |v rt        j                  j	                  |«      ‘ŒD }}|j                  «        | r|D �cg c]  }|dd  ‘Œ	 c}S |S c c}w c c}w )Nr   z/usr/bin/python3.[0-9]z/usr/bin/python3.[0-9][0-9]rV   )Úglobr;   r   r   Úbasenamers   )r-   r„   r€   rY   r1   rO   s         r   Úinstalled_versionsr†   ¿   s�   € ÛÜ"Ó$€IàŸ™Ð#;Ó<¸t¿y¹yÐIfÓ?gÑgö5ØÜ—7‘7×#Ñ# AÓ&¨)Ñ3ô —‘× Ñ  Õ#ð 5€Hð 5ð ‡M�M„OÙØ'Ö(˜!��!�"’Ò(Ð(àˆùò5ùò
 )s   ´AB$ÂB)c                 óR   — t        d«      } | d„ |D «       «      }d|z  }|r|S d|z   S )NTc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr   )r'   )r   Úvers     r   r!   z+minmax_supported_version.<locals>.<genexpr>Î   s   è ø€ ÒN¨sÔ% c×*ÑNù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                   ó   — e Zd Zy)ÚControlFileValueErrorN©Ú__name__Ú
__module__Ú__qualname__© r(   r   r�   r�   Ö   ó   „ Ør(   r�   c                   ó   — e Zd Zy)ÚMissingVersionValueErrorNr‘   r•   r(   r   r˜   r˜   Ú   r–   r(   r˜   c                 ó  — d}d}d}t        | d¬«      5 }|D �cg c]  }|j                  «       ‘Œ }}ddd«       D ]”  }|dk(  r|dk7  r
|dk(  r nƒd}Œ|j                  d«      rd}Œ+|j                  d|z   «      r|}ŒB|j                  «       j                  d«      sŒb|dk7  rt	        d	«      ‚|j                  d
d«      d   j                  «       }Œ– |€t        d«      ‚|dk(  r|€t        d«      ‚|S |S c c}w # 1 sw Y   ŒÊxY w)zFread 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 sectionre   r2   znot a control filez$no X-Python3-Version in control file)r   r<   rn   Úlowerr   r%   r�   r˜   )ÚfnÚpkgr&   ÚsversionÚsectionÚcontrolfilery   Úliness           r   Úextract_pyversion_attributer£   Þ   s!  € ð €GØ€HØ€GÜ	ˆb˜7Ô	#ð 7 {Ø*5Ö6 $�—‘•Ð6ˆÐ6÷7àò 5ˆØ�2Š:˜' Tš/Ø�hŠÙØ‰GØ�_‰_˜YÔ'Ø‰GØ�_‰_˜[¨3Ñ.Ô/Ø‰GØ�Z‰Z‹\×$Ñ$Ð%9Õ:Ø˜(Ò"Ü Ð!TÓUÐUØ—z‘z # qÓ)¨!Ñ,×2Ñ2Ó4‰Hð5ð €Ü#Ð$8Ó9Ð9Ø
ˆh‚ØÐÜ*Ð+QÓRÐRØˆØ€Nùò) 7÷7ð 7ús   ”C;™C6°C;Ã6C;Ã;Dc                  óZ  — ddl m}  d}	  | |¬«      }|j                  ddddd	¬
«       |j                  ddddd¬
«       |j                  ddddd¬
«       |j                  ddddd¬
«       |j                  dddd¬
«       |j                  dddd¬
«       |j                  dddd dd!¬"«       |j                  «       \  }}t        j
                  j                  t        j                  d   «      }|j                  r.t        |«      dk(  r 	 t        t        |j                  «      «       y |j                   r<t        |«      dk(  r.t        d%j#                  t%        |j                  «      «      «       y |j&                  r<t        |«      dk(  r.t        d%j#                  t)        |j                  «      «      «       y |j*                  r2t        |«      dk(  r$t        t-        t.        |j                  «      «       y |j0                  r2t        |«      dk(  r$t        t-        t2        |j                  «      «       y |j4                  r›t        |«      d$k  r�t        |«      dk(  rd&}n|d   }	 t        j
                  j7                  |«      r&|}	 t9        |d'«      }	t;        |	|j                  «      }
nt;        ||j                  «      }
t        d%j#                  
«      «       y t        j>                  jA                  d-|›d%|›d,�«       t        j                  d$«       y # t        $ r.}t        d#|z  |«       t        j                  d$«       Y d }~y d }~ww xY w# t<        $ r= t        j>                  jA                  |›d(|›d)�«       t        j                  d$«       Y ŒÖtB        $ r; t        j>                  jA                  d*|z  «       t%        |j                  «      }
Y �Œw xY w# t        $ rD}t        j>                  jA                  |›d+|›d,�«       t        j                  d$«       Y d }~y d }~ww xY w).Nr   )ÚOptionParserz;[-v] [-h] [-d|--default] [-s|--supported] [-i|--installed] )Úusagez-dz	--defaultz!print the default python3 versionÚ
store_truerz   )Ú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¨   rz   r©   rª   z%s:r2   rd   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Úargvrz   r4   Úprintrf   r-   r   Úexitr€   rm   r;   r¬   r†   r­   rŽ   Úminr®   Úmaxr«   Úisfiler£   r‚   r�   ÚstderrÚwriter˜   )r¥   r¦   ÚparserÚoptsÚargsÚprogramÚmsgr1   r�   rE   Ú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°T×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ûð	úsa   Ä
L É&!O Ê"M Ê*1O Ì	MÌ!$M
Í
MÍAOÎO Î?OÏO ÏOÏO Ï	P*Ï&:P%Ð%P*Ú__main__r   )F)r   r>   r³   r   rW   r]   Úenvironr   r%   r<   rg   rr   r   r'   rT   rZ   r^   r;   rf   r‚   r†   rŽ   r   r�   r˜   r£   rÂ   r’   )r‰   s   0r   ú<module>rÅ      sæ   ðó 
Û 	Û 
à€	Ø€ØÐ à—z‘z—~‘~Ð&<¸bÓA×GÑGÈÓLö'°CàŸ)™)œ+ð " C§I¡I£KÓ/ò 'Ð ð Ð óò(;ò(óVó%ó#óB ó",ó6
ó&ô	˜Jô 	ô	˜zô 	òð>ò<IðV ˆzÒÙ…Fð ùòy
's   Á *C 