
>gTR)                 @   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   sB  | |  _  | |  _ | j d  |  _ } | r4 d n d |  _ | d k ra | rU d n d |  _ n] | d k r | ry d n d	 |  _ n9 | d
 k r | r d n d
 |  _ | r d n d |  _ n  | 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 |  n  d  S)N)r   add)r   valuer    r    r!   dependR   s    zDependencies.dependc             C   s,   | r( | |  j  k r( |  j  j |  n  d  S)N)r   append)r   r+   r    r    r!   	recommendV   s    zDependencies.recommendc             C   s,   | r( | |  j  k r( |  j  j |  n  d  S)N)r   r-   )r   r+   r    r    r!   suggestZ   s    zDependencies.suggestc             C   s,   | r( | |  j  k r( |  j  j |  n  d  S)N)r   r-   )r   r+   r    r    r!   enhance^   s    zDependencies.enhancec             C   s,   | r( | |  j  k r( |  j  j |  n  d  S)N)r   r-   )r   r+   r    r    r!   break_b   s    zDependencies.break_c             C   s&   | |  j  k r" |  j  j |  n  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  }	 }
 n  |	 r|  j d | |	 f  n  |
 r$|  j d | |
 f  q$n  |  j d	 k r| d rt | d  } | d
 }	 | d# }
 |	 t |  j  k r|  j d | |	 f  n  |
 t |  j  k r|  j d | |
 d f  qn  | d rYt | d  } | d
 }	 | d$ }
 |	 t |  j  k r#|  j d | |	 f  n  |
 t |  j  k rY|  j d | |
 d f  qYn  | d r|  j t k r|  j t |  j  n  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 rW|  j | |  q1t  j d | |  q1Wt d d   | j d g   D  r|  j |  n  t | j d t     } | r|  j d | | d
 f  |  j d | | d% d f  nD | j d  rF|  j d | | f  |  j d | | d f  n  | j d  r|  j t k r{|  j t |  j  n  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 r3|  j | | j	  q| j	 rY|  j d | | j	 f  n  | j
 r|  j d | | j
 d f  qn  x1 | j pg  D]  } | d | j d d  7} qW|  j | | f  qqW| j rx< | d D]0 } x' t |  j |  D] } |  j |  qWqWx | d D]v } t | d d d Y } xO | D]G } | j d   rL| d! d   j   } |  j t  |  j |   qLqLWWd  QXq'Wn  x0 | 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Wxc | j& pLg  D]R } t' |  sut  j( d" |  qMn  x' t |  j |  D] } |  j |  qWqM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      z%s%sr   z:any Zprivate_dirsc             s   s-   |  ]# } | j  r | j  j r | j  Vq d  S)N)versionminor).0r'   r    r    r!   	<genexpr>   s    z%Dependencies.parse.<locals>.<genexpr>zDdependency on %s (from shebang) ignored - it's not supported anymorec             s   s$   |  ] } | j  d  k r d Vq d  S)NT)r6   )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: %sr@   r@   r@   ))logdebugr   r   r   r   r   vrangeanyr:   r;   r,   r   r$   r   r   r   itemslistr#   infor   r	   lenZregexprreplacer2   Z
guess_depsr   open
startswithstripr   r   r   r.   r   r/   Zrequiresr   warn)r   ZstatsZoptionsZtplZvtplZtpl_maZvtpl_marC   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   rV   r    r    r    r!   r      s   r   )Zloggingos.pathr   r
   r   r   Zdhpython.pydistr   r   Zdhpython.versionr   r   r	   Z	getLoggerrA   r   r    r    r    r!   <module>   s   