
U]+                 @   s   d  d l  Z  d  d l m Z d  d l m Z m Z d  d l m Z m Z d  d l	 m
 Z
 m Z m Z e  j d  Z Gd d   d  Z d S)	    N)exists)PKG_PREFIX_MAP	MINPYCDEP)parse_pydepguess_dependency)default	supportedVersionRangedhpythonc               @   s   e  Z d  Z d Z d d d  Z d d   Z d d   Z d	 d
   Z d d   Z d d   Z	 d d   Z
 d d   Z d d   Z d d   Z d S)Dependenciesz6Store relations (dependencies, etc.) between packages.cpython3c             C   s?  | |  _  | |  _ | j d  |  _ } | r4 d n d |  _ | d k ra | rU d n d |  _ nZ | d k r | ry d n d	 |  _ n6 | d
 k r | r d n d
 |  _ | r d n d |  _ | d
 k r |  j |  _ |  j |  _ n  |  j d |  _ |  j d |  _ t   |  _	 g  |  _
 g  |  _ g  |  _ g  |  _ g  |  _ d  S)Nz-dbgzpython%s-dbgzpython%sr   zpython3-dbgpython3cpython2z
python-dbgpythonpypyzpypy-dbgz
pypy%s-dbgzpypy%sz:any)implpackageendswithZis_debug_package	ipkg_vtplipkg_tplipkg_tpl_maipkg_vtpl_masetdepends
recommendssuggestsenhancesbreaks	rtscripts)selfr   r   Zdbgpkg r    (/usr/share/dh-python/dhpython/depends.py__init__!   s,    						zDependencies.__init__c             C   sc  t  j |  j d  } x6 t |  j  D]% } | j |  j d j |  |  q% Wx6 t |  j  D]% } | j |  j d j |  |  q^ Wx6 t |  j	  D]% } | j |  j d j |  |  q Wx6 t |  j
  D]% } | j |  j d j |  |  q Wx6 t |  j  D]% } | j |  j d j |  |  q	Wx* t |  j  D] } | j |  j |  qBWd S)zFill in debhelper's substvars.Zmiscz
{}:Dependsz{}:Recommendsz{}:Suggestsz{}:Enhancesz	{}:BreaksN)r   getr   sortedr   Zaddsubstvarr   formatr   r   r   r   r   Zadd_rtupdate)r   Zdhprefixir    r    r!   	export_to=   s    #####zDependencies.export_toc             C   s,   d |  j  |  j |  j |  j |  j |  j f S)Nz#D=%s; R=%s; S=%s; E=%s, B=%s; RT=%s)r   r   r   r   r   r   )r   r    r    r!   __str__M   s    zDependencies.__str__c             C   s)   | r% | |  j  k r% |  j  j |  d  S)N)r   add)r   valuer    r    r!   dependR   s    zDependencies.dependc             C   s)   | r% | |  j  k r% |  j  j |  d  S)N)r   append)r   r+   r    r    r!   	recommendV   s    zDependencies.recommendc             C   s)   | r% | |  j  k r% |  j  j |  d  S)N)r   r-   )r   r+   r    r    r!   suggestZ   s    zDependencies.suggestc             C   s)   | r% | |  j  k r% |  j  j |  d  S)N)r   r-   )r   r+   r    r    r!   enhance^   s    zDependencies.enhancec             C   s)   | r% | |  j  k r% |  j  j |  d  S)N)r   r-   )r   r+   r    r    r!   break_b   s    zDependencies.break_c             C   s#   | |  j  k r |  j  j |  d  S)N)r   r-   )r   r+   r    r    r!   rtscriptf   s    zDependencies.rtscriptc             C   s  t  j d |  j  |  j } |  j } |  j } |  j } | j } | rt | d | d | d | d | d f  rt | d | d | d f  r | } n | } | j	 }	 | j
 }
 |	 |
 k r |  j | |	  d  }	 }
 |	 r |  j d | |	 f  |
 r|  j d | |
 f  |  j d	 k r| d rt | d  } | d
 }	 | d& }
 |	 t |  j  k r|  j d | |	 f  |
 t |  j  k r|  j d | |
 d f  |  j d k r| j d  r|  j d j d d   t | d  D   | d rt | d  } | d
 }	 | d' }
 |	 t |  j  k rV|  j d | |	 f  |
 t |  j  k r|  j d | |
 d f  | d r|  j t k r|  j t |  j  x> | d D]2 } |  j d | |  j d k rd n d f  qWt |  j  } t |  j  } x| d j   D]\ } } t d d   | j d g   D  } xB | D]: } | | k r|  j | |  q[t  j d | |  q[Wt d d   | j d g   D  r|  j |  t | j d t     } | r)|  j d | | d
 f  |  j d | | d( d f  nA | j d  rj|  j d | | f  |  j d | | d f  | j d  r#|  j t k r|  j t |  j  d } | r| d t d | d
 d | d)  7} n t |  d k r| d | d
 7} n | j d  r| d | 7} n | r| d | 7} | j	 | j
 k rT|  j | | j	  nJ | j	 rw|  j d | | j	 f  | j
 r|  j d | | j
 d f  x1 | j pg  D]  } | d | j d d  7} qW|  j | | f  q#W| j rx< | d D]0 } x' t |  j |  D] } |  j |  qWqWx | d D]t } t | d  d! d" V } xL | D]D } | j d#  ra| d$ d   j    } |  j t! |  j |   qaWWd  QRXq<Wx0 | j" pg  D] } |  j t! |  j |   qWx0 | j# pg  D] } |  j$ t! |  j |   qWx0 | j% p)g  D] } |  j& t! |  j |   q*Wx` | j' p\g  D]O } t( |  st  j) d% |  q]x' t |  j |  D] } |  j |  qWq]Wt  j |   d  S)*Nz&generating dependencies for package %scompileZpublic_versZext_versZext_no_versionZshebangsz%s (>= %s~)z
%s (<< %s)r   r      r   Z	ext_soabi|c             s   s!   |  ] } | j  d  d  Vq d S)-z-abi-N)replace).0Zsoabir    r    r!   	<genexpr>   s   z%Dependencies.parse.<locals>.<genexpr>z%s%s z:anyZprivate_dirsc             s   s-   |  ]# } | j  r | j  j r | j  Vq d  S)N)versionminor)r8   r'   r    r    r!   r9      s    zDdependency on %s (from shebang) ignored - it's not supported anymorec             s   s$   |  ] } | j  d  k r d Vq d  S)NT)r;   )r8   r'   r    r    r!   r9      s    z-V %sminvermaxverz -X '%s''z'\''zrequires.txtzegg-inforencodingzutf-8z
Requires: 
   z!cannot find requirements file: %srC   rC   rC   )*logdebugr   r   r   r   r   vrangeanyr=   r>   r,   r   r$   r   r#   joinr   r   itemslistinfor   r	   lenZregexprr7   r2   Z
guess_depsr   open
startswithstripr   r   r   r.   r   r/   Zrequiresr   warn)r   ZstatsZoptionsZtplZvtplZtpl_maZvtpl_marF   Ztpl_tmpZminvZmaxvZsorted_versZipreterZsupported_versionsZdefault_versionZprivate_dirZdetailsZversionsv
extensionsargspatternfnr'   ZfpathfplineZreqitemr    r    r!   parsej   s    					!			





0%	%"(			(zDependencies.parseN)__name__
__module____qualname____doc__r"   r(   r)   r,   r.   r/   r0   r1   r2   rY   r    r    r    r!   r      s   r   )Zloggingos.pathr   r
   r   r   Zdhpython.pydistr   r   Zdhpython.versionr   r   r	   Z	getLoggerrD   r   r    r    r    r!   <module>   s   