î
œ>gTÝ  ã               @   s
  d  d l  Z  d  d l m Z d  d l m Z d  d l m Z d  d l m Z m	 Z	 i d g d 6d g d 6d  g d 6Z
 i d! d 6d" d 6d# d 6Z e  j d ƒ Z d d „  Z d d „  Z e d ƒ Z e d	 ƒ Z e d  rë e d  e d <n  e d  re d  e d <n  e d r!e d e
 d <n  e d r<e d e
 d <n  e d k rd  d l m Z m Z e e ƒ d	 k re d d e ƒe d ƒ n  e d d k rÈe d j d d „  e e d Dƒ ƒ ƒ qe d d k re d j d d „  e
 e d Dƒ ƒ ƒ qn  d S)$é    N)ÚConfigParser)Úenviron)Úexists)ÚPopenÚPIPEé   é   Úcpython2é   é   Úcpython3ZpypyZdhpythonc             C   s¶  d  d  g } |  d k r d n d } t  j d j | ƒ ƒ } t  j d j | ƒ ƒ } | sb | rÜ t ƒ  } | j d j | ƒ ƒ | s¬ | j d d d	 d ƒd
 d  … } n  | sÜ | j d d d	 d ƒj d d ƒ } qÜ n  | rGy* t d d „  | j d ƒ Dƒ ƒ | d <WqGt k
 rC} z t	 j
 d | ƒ WYd  d  } ~ XqGXn  | r²y* t d d „  | j d ƒ Dƒ ƒ | d <Wq²t k
 r®} z t	 j
 d | ƒ WYd  d  } ~ Xq²Xn  | S)Nr   Ú Ú3zDEBPYTHON{}_SUPPORTEDzDEBPYTHON{}_DEFAULTz#/usr/share/python{}/debian_defaultsÚDEFAULTzdefault-versionZfallbacké   zsupported-versionsÚpythonc             s   s   |  ] } t  | ƒ Vq d  S)N)Úint)Ú.0Úi© r   ú*/usr/share/dh-python/dhpython/_defaults.pyú	<genexpr>7   s    z#cpython_versions.<locals>.<genexpr>Ú.r   z invalid debian_defaults file: %sc             s   s7   |  ]- } t  d  d „  | j ƒ  j d ƒ Dƒ ƒ Vq d S)c             s   s   |  ] } t  | ƒ Vq d  S)N)r   )r   Újr   r   r   r   <   s    z-cpython_versions.<locals>.<genexpr>.<genexpr>r   N)ÚtupleÚstripÚsplit)r   r   r   r   r   r   <   s   ú,é   )r   ÚgetÚformatr   ÚreadÚreplacer   r   Ú	ExceptionÚlogÚwarn)ÚmajorÚresultZverÚ	supportedÚdefaultÚconfigÚerrr   r   r   Úcpython_versions(   s.    	%**&&r,   c          
   C   s~   t  |  ƒ s t d |  ƒ ‚ n  d j |  ƒ } t | d d d t ƒ( } | j ƒ  \ } } t | d ƒ } Wd  QXt | ƒ d  S)Nzmissing interpreter: %sz{} --versionÚshellTÚstdoutzutf-8)r   Ú
ValueErrorr    r   r   ZcommunicateÚstrÚprint)ZfpathZcommandZprocessr.   Ústderrr   r   r   Ú	from_fileC   s    r3   r   Ú__main__)Úargvr2   zinvalid number of argumentsÚfiler)   r   c             c   s   |  ] } t  | ƒ Vq d  S)N)r0   )r   r   r   r   r   r   a   s    r   r(   r   c             c   s+   |  ]! } d  j  d d „  | Dƒ ƒ Vq d S)r   c             s   s   |  ] } t  | ƒ Vq d  S)N)r0   )r   r   r   r   r   r   c   s    z<genexpr>.<genexpr>N)Újoin)r   Úvr   r   r   r   c   s    )r   r   )r
   r   )r   r   )r   r   )r
   r   )r   r   )ZloggingZconfigparserr   Úosr   Úos.pathr   Ú
subprocessr   r   Z	SUPPORTEDr   Z	getLoggerr$   r,   r3   r	   r   Ú__name__Úsysr5   r2   Úlenr1   Úexitr7   r   r   r   r   Ú<module>   sD   






+