
    Dc``                     f    d dl Z d dlZd dlmZ d Zd Z G d de          Z G d de          Z	dS )	    N)_c                 .    |                                  dv S )N)1yestruewithonenable)lowervalues    $/usr/share/apt-listchanges/ALCApt.py_parse_apt_boolr      s     ;;==JJJ    c                 D    	 t          |           S # t          $ r Y dS w xY w)Nr   )int	Exceptionr   s    r   _parse_apt_intr   $   s5    5zz   qqs    
c                       e Zd ZdS )AptPipelineErrorN)__name__
__module____qualname__ r   r   r   r   ,   s        Dr   r   c                   <     e Zd Z fdZd Zd Zd Zd Zd Z xZ	S )AptPipelinec                 V    t                                                       || _        d S )N)super__init___config)selfconfig	__class__s     r   r   zAptPipeline.__init__0   s$    r   c                    | j         j        r!t          j        t          d                     |                                 5 }|                     |           |                     |           |                     |          }d d d            n# 1 swxY w Y   | j         j        rQt          j        t          d                     |D ]}t          j        d|z             t          j        d           |S )NzAPT pipeline messages:zPackages list:	%s )r    debugALCLogr   _open_apt_fd_read_version_read_options_read_packages)r!   fddebsds       r   readzAptPipeline.read4   s*   < 	6L344555   	+Br"""r"""&&r**D	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+
 < 	L+,,--- ) )VaZ((((Ls   A BBBc                    dt           j        vrt          t          d                    	 t	          t           j        d                   }n/# t
          $ r"}t          t          d                    |d }~ww xY w| j        j        r$t          j        t          d          |z             |dk    r"t          j	        t          d                     n"|dk     rt          t          d                    	 t          j
        |d	          S # t
          $ r5}t          t          d
          |t          |          dz            |d }~ww xY w)NAPT_HOOK_INFO_FDz{APT_HOOK_INFO_FD environment variable is not defined
(is Dpkg::Tools::Options::/usr/bin/apt-listchanges::InfoFD set to 20?)zDInvalid (non-numeric) value of APT_HOOK_INFO_FD environment variablez7Will read apt pipeline messages from file descriptor %dr   zIncorrect value (0) of APT_HOOK_INFO_FD environment variable.
If the warning persists after restart of the package manager (e.g. aptitude),
please check if the /etc/apt/apt.conf.d/20listchanges file was properly updated.   zAPT_HOOK_INFO_FD environment variable is incorrectly defined
(Dpkg::Tools::Options::/usr/bin/apt-listchanges::InfoFD should be greater than 2).rtz3Cannot read from file descriptor %(fd)d: %(errmsg)s)r-   errmsg)osenvironr   r   r   r   r    r'   r(   warningfdopenstr)r!   apt_hook_info_fd_valexs      r   r)   zAptPipeline._open_apt_fdD   s   RZ//"1 &] $^ $^ _ _ _	G#&rz2D'E#F#F   	G 	G 	G"1 &= $> $> ? ?DFG	G < 	nLTUUXllmmm1$$N1 p q q r r r r "A%%"1 &i $j $j k k k	^914888 	^ 	^ 	^"1%Z#[#[+?3r77$T$T$U V V[]^	^s/   A 
A8A33A86D 
E
0EE
c                     |                                                                 }|dk    rt          t          d                    | j        j        rt          j        d|z             d S d S )Nz	VERSION 2zqWrong or missing VERSION from apt pipeline
(is Dpkg::Tools::Options::/usr/bin/apt-listchanges::Version set to 2?)r%   )readlinerstripr   r   r    r'   r(   )r!   r-   versions      r   r*   zAptPipeline._read_version`   s    ++--&&((k!!"1 &Y $Z $Z [ [ [< 	+L')*****	+ 	+r   c                 D   	 |                                                                 }| j        j        rt	          j        d|z             |sd S | j        j        sj|                    d          rUt          |t          d          d                    r1d| j        _	        t          d| j        j                  | j        _        n[|                    d          rFt          t          |t          d          d                    | j        j                  | j        _         )NTr%   zAPT::Get::Assume-Yes=F   zquiet=)r>   r?   r    r'   r(   ignore_apt_assume
startswithr   lenconfirmmaxquietr   )r!   r-   lines      r   r+   zAptPipeline._read_optionsh   s   	c;;==''))D|! ,Vd]+++ L2 c//"9::c!$s+B'C'C'D'D"EFFc (-$%(DL,>%?%?""** c%(S]]^^8L)M)Mt|Oa%b%b"	cr   c                 p   i }g }g }d}|                                 D ]}|                                }| j        j        rt	          j        d|z             |s no|                    d d          \  }}}	}
}|	dk    r`|dk    s|dk    r|                    |           |dk    rd}|d	k    r|                    |           |||<   |sg S |D ]	}||v r||= 
g }|D ]$}||v r|                    ||                    ||= %|                    t          |	                                                     |S )
NFr%      <z
**REMOVE**z	**ERROR**-Tz**CONFIGURE**)
	readlinesr?   r    r'   r(   splitappendextendsortedvalues)r!   r-   	filenamestoconfigtoremove
hasupgradepkglinepkgname
oldversioncompare
newversionfilenamepkgordered_filenamess                 r   r,   zAptPipeline._read_packagesy   s   	
||~~ 	. 	.Gnn&&G|! /Vg-... CJ==QUWXCYCY@Wj':x#~~<''8{+B+B(((
 S  !
?**((((%-	'""  	I  	# 	#CicN 	# 	#Ci!((3888cN  	(8(8(:(:!;!;<<<  r   )
r   r   r   r   r0   r)   r*   r+   r,   __classcell__)r#   s   @r   r   r   /   s               ^ ^ ^8+ + +c c c";! ;! ;! ;! ;! ;! ;!r   r   )
r6   r(   ALChacksr   r   r   r   r   objectr   r   r   r   <module>rc      s   4 
			       K K K
  	 	 	 	 	y 	 	 	E! E! E! E! E!& E! E! E! E! E!r   