ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     3
ft`>              	   @   sH  d dl mZmZ d dl mZ d dlZd dlmZmZ d dl	Z
d dlZ
d dlZ
d dlZd dlZd dlZd dlZd dlZd dlZd dlZdZdZdZdZd	Zd
ZdZdZeeegZeeegZejjejj ejj!ejj"ejj#ejj$ejj%ejj&ejj'h	Z(ej)dZ*dd Z+G dd de,Z-G dd de-Z.G dd de-Z/G dd de,Z0dS )    )print_functionabsolute_import)unicode_literalsN)_ucd
      (   2   <   F   Z   d   dnfc                s   t  fdd}|S )zb
    Wrapper to return a deprecated action constant
    while printing a deprecation warning.
    c                s2   d| j j  f }tj|tdd ttj }|S )Nz1%s.%s is deprecated. Use dnf.callback.%s instead.   )
stacklevel)	__class____name__warningswarnDeprecationWarninggetattrr   callback)selfmsgvalue)name /usr/lib/python3.6/rpmtrans.py_funcC   s
    z%_add_deprecated_action.<locals>._func)property)r   r   r   )r   r   _add_deprecated_action>   s    r!   c               @   s   e Zd Zdd ZedZedZedZeZedZ	edZ
edZed	Zed
ZedZedZedZdd Zdd Zdd Zdd Zdd ZdS )TransactionDisplayc             C   s   d S )Nr   )r   r   r   r   __init__P   s    zTransactionDisplay.__init__PKG_CLEANUPPKG_DOWNGRADE
PKG_REMOVEPKG_INSTALLPKG_OBSOLETEPKG_REINSTALLPKG_UPGRADE
PKG_VERIFYTRANS_PREPARATIONPKG_SCRIPTLET
TRANS_POSTc             C   s   dS )a  Report ongoing progress on a transaction item. :api

        :param package: a package being processed
        :param action: the action being performed
        :param ti_done: number of processed bytes of the transaction
           item being processed
        :param ti_total: total number of bytes of the transaction item
           being processed
        :param ts_done: number of actions processed in the whole
           transaction
        :param ts_total: total number of actions in the whole
           transaction

        Nr   )r   packageactionZti_doneZti_totalZts_doneZts_totalr   r   r   progressb   s    zTransactionDisplay.progressc             C   s   dS )z_Hook for reporting an rpm scriptlet output.

        :param msgs: the scriptlet output
        Nr   )r   msgsr   r   r   	scriptouts   s    zTransactionDisplay.scriptoutc             C   s   dS )z:Report an error that occurred during the transaction. :apiNr   )r   messager   r   r   errorz   s    zTransactionDisplay.errorc             C   s   dS )z|package is the same as in progress() - a package object or simple
           string action is also the same as in progress()Nr   )r   r/   r0   r   r   r   filelog~   s    zTransactionDisplay.filelogc             C   s   | j |tjjdd|| d S )Nr   )r1   r   transactionr+   )r   pkgcounttotalr   r   r   verify_tsi_package   s    z%TransactionDisplay.verify_tsi_packageN)r   
__module____qualname__r#   r!   r$   r%   r&   Z	PKG_ERASEr'   r(   r)   r*   r+   r,   r-   r.   r1   r3   r5   r6   r;   r   r   r   r   r"   M   s$   r"   c                   s    e Zd ZdZ fddZ  ZS )ErrorTransactionDisplayz@An RPMTransaction display that prints errors to standard output.c                s&   t t| j| tjjd|tj d S )Nprint)superr>   r5   r   utilZ_terminal_messengersysstderr)r   r4   )r   r   r   r5      s    zErrorTransactionDisplay.error)r   r<   r=   __doc__r5   __classcell__r   r   )r   r   r>      s   r>   c                   s8   e Zd ZdZ fddZdd Zdd Zdd	 Z  ZS )
LoggingTransactionDisplayz@
    Base class for a RPMTransaction display callback class
    c                s   t t| j  tjd| _d S )Nzdnf.rpm)r@   rF   r#   logging	getLogger
rpm_logger)r   )r   r   r   r#      s    z"LoggingTransactionDisplay.__init__c             C   s   | j j| d S )N)rI   r5   )r   r4   r   r   r   r5      s    zLoggingTransactionDisplay.errorc             C   s.   t jj| }d||f }| jjt jj| d S )Nz%s: %s)r   r7   ZFILE_ACTIONSrI   logrG   ZSUBDEBUG)r   r/   r0   Z
action_strr   r   r   r   r6      s    z!LoggingTransactionDisplay.filelogc             C   s   |r| j jt| d S )N)rI   infor   )r   r2   r   r   r   r3      s    z#LoggingTransactionDisplay.scriptout)	r   r<   r=   rD   r#   r5   r6   r3   rE   r   r   )r   r   rF      s
   rF   c               @   s   e Zd Zdf fddZd8d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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-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7S )9RPMTransactionFc             C   sn   |st  g}|| _|| _|| _d| _d | _d| _d| _d| _t	 | _
d| _| j|jj g | _d| _d | _d S )NFr   )r>   displaysbasetesttrans_runningfdtotal_actionstotal_installedcomplete_actionssetinstalled_pkg_namestotal_removed_setupOutputLoggingZconfrpmverbosity_te_list	_te_index
_tsi_cache)r   rN   rO   rM   r   r   r   r#      s     zRPMTransaction.__init__rK   c             C   s~   t j }|| _t|jd| _| jjj| j ddddddj	||}d|j
  }tt|s^d	}tjtt| tj| j d S )
Nzw+bZcritZemergerrrK   Zwarning)criticalZ	emergencyr5   Zinformationr   ZRPMLOG_ZRPMLOG_INFO)tempfileZNamedTemporaryFile	_readpipeopenr   
_writepiperN   _tsZsetScriptFdgetupperhasattrrpmsetVerbosityr   
setLogFile)r   rY   Zio_rr   r   r   rX      s    
z"RPMTransaction._setupOutputLoggingc          	   C   s8   t jt j t jtj y| jj  W n   Y nX d S )N)rg   rh   ZRPMLOG_NOTICEri   rB   rC   rb   close)r   r   r   r   _shutdownOutputLogging   s    z%RPMTransaction._shutdownOutputLoggingc             C   sB   y(| j j| j j  | j j }|s&d S |S  tk
r<   Y nX d S )N)r`   seektellreadIOError)r   outr   r   r   _scriptOutput   s    
zRPMTransaction._scriptOutputc             c   s,   | j  }|r(x|j D ]}t|V  qW d S )N)rq   
splitlinesr   )r   messagesliner   r   r   rs      s    zRPMTransaction.messagesc             C   s4   | j  }x| jD ]}|j| qW | jjj| d S )N)rq   rM   r3   rN   historyZlog_scriptlet_output)r   r2   displayr   r   r   
_scriptout   s    zRPMTransaction._scriptoutc             C   s   | j   d S )N)rk   )r   r   r   r   __del__   s    zRPMTransaction.__del__c             C   s   t |dr|}|gS | j| j }tjj|}| jrJt| jd |krJ| jS g }x2| jj	D ]&}|j
tkrhqXt||krX|j| qXW |r|| _|S td| dS )z3Obtain the package related to the calling callback.r8   r   z%TransactionItem not found for key: %sN)rf   rZ   r[   r   rA   Z	_te_nevrar\   strrN   r7   r0   RPM_ACTIONS_SETappendRuntimeError)r   ZcbkeyZtsiZteZte_nevraitemsr   r   r   _extract_cbkey   s$    

zRPMTransaction._extract_cbkeyc       
      C   s  yt |trt|}|tjkr.| j| nv|tjkr<nh|tjkrV| j|| nN|tj	krp| j
|| n4|tjkr| j|S |tjkr| j| n|tjkr| j| n|tjkr| j| n|tjkr| j||| n|tjkr| j| n|tjkr| j| n|tjkr,| j||| nx|tjkrD| j| n`|tjkr\| j| nH|tjkrx| j ||| n,|tj!kr| j"| n|tj#kr| j$  W nB t%k
r   t&j' \}}}t(j)|||}	t*j+dj,|	 Y nX d S )N )-
isinstancery   r   rg   ZRPMCALLBACK_TRANS_START_transStartZRPMCALLBACK_TRANS_STOPZRPMCALLBACK_TRANS_PROGRESS_trans_progressZRPMCALLBACK_ELEM_PROGRESS_elemProgressZRPMCALLBACK_INST_OPEN_FILE_instOpenFileZRPMCALLBACK_INST_CLOSE_FILE_instCloseFileZRPMCALLBACK_INST_START_inst_startZRPMCALLBACK_INST_STOP
_inst_stopZRPMCALLBACK_INST_PROGRESS_instProgressZRPMCALLBACK_UNINST_START_uninst_startZRPMCALLBACK_UNINST_STOP_unInstStopZRPMCALLBACK_UNINST_PROGRESS_uninst_progressZRPMCALLBACK_CPIO_ERROR
_cpioErrorZRPMCALLBACK_UNPACK_ERROR_unpackErrorZRPMCALLBACK_SCRIPT_ERROR_scriptErrorZRPMCALLBACK_SCRIPT_START_script_startZRPMCALLBACK_SCRIPT_STOP_scriptStop	ExceptionrB   exc_info	tracebackformat_exceptionloggerr^   join)
r   Zwhatamountr:   keyZclient_dataexc_type	exc_valueexc_tracebackZexcept_listr   r   r   r     sR    











zRPMTransaction.callbackc             C   s(   || _ | jrd S d| _t| jj| _d S )NT)rR   rO   rP   listrN   rc   rZ   )r   r:   r   r   r   r   <  s
     zRPMTransaction._transStartc             C   s4   t jj}x&| jD ]}|jd||d |dd qW d S )Nr      )r   r7   r,   rM   r1   )r   r   r:   r0   rv   r   r   r   r   B  s    zRPMTransaction._trans_progressc             C   sP   || _ |  jd7  _| jsL| j|}x&| jD ]}|j|d j|d j q,W d S )Nr   r   )r[   rT   rO   r~   rM   r6   r8   r0   )r   r   indextransaction_listrv   r   r   r   r   G  s    
zRPMTransaction._elemProgressc             C   s   d | _ | j|}|d j}|j }yt|| _W nD tk
rt } z(x | jD ]}|jd||f  qJW W Y d d }~X n.X | j	r|  j
d7  _
| jj|j | jj S d S )Nr   zError: Cannot open file %s: %sr   )Zlastmsgr~   r8   ZlocalPkgra   rQ   ro   rM   r5   rP   rS   rV   addr   fileno)r   r   r   r8   Zrpmlocerv   r   r   r   r   O  s    

(zRPMTransaction._instOpenFilec             C   s   | j j  d | _ d S )N)rQ   rj   )r   r   r   r   r   r   _  s    
zRPMTransaction._instCloseFilec             C   s   d S )Nr   )r   r   r   r   r   r   c  s    zRPMTransaction._inst_startc             C   sV   | j s| j rd S | j  | j| jkrRtjj}x"| jD ]}|j	d |d d d d  q6W d S )N)
rO   rP   rw   rT   rR   r   r7   r.   rM   r1   )r   r   r0   rv   r   r   r   r   f  s    zRPMTransaction._inst_stopc             C   sJ   | j |}|d j}|d j}x&| jD ]}|j||||| j| j q&W d S )Nr   )r~   r8   r0   rM   r1   rT   rR   )r   r   r:   r   r   r8   r0   rv   r   r   r   r   r  s
    


zRPMTransaction._instProgressc             C   s   |  j d7  _ d S )Nr   )rW   )r   r   r   r   r   r   y  s    zRPMTransaction._uninst_startc             C   sJ   | j |}|d j}|d j}x&| jD ]}|j||||| j| j q&W d S )Nr   )r~   r8   r0   rM   r1   rT   rR   )r   r   r:   r   r   r8   r0   rv   r   r   r   r   |  s
    


zRPMTransaction._uninst_progressc             C   s   | j r
d S | j  d S )N)rO   rw   )r   r   r   r   r   r     s    zRPMTransaction._unInstStopc             C   s6   | j |}d|d j }x| jD ]}|j| q W d S )Nz'Error in cpio payload of rpm package %sr   )r~   r8   rM   r5   )r   r   r   r   rv   r   r   r   r     s    
zRPMTransaction._cpioErrorc             C   s6   | j |}d|d j }x| jD ]}|j| q W d S )NzError unpacking rpm package %sr   )r~   r8   rM   r5   )r   r   r   r   rv   r   r   r   r     s    
zRPMTransaction._unpackErrorc       	      C   sN   t jj|d}| j|}|d jj}d||f }x| jD ]}|j| q8W d S )Nz	<unknown>r   z'Error in %s scriptlet in rpm package %s)rg   Ztagnamesrd   r~   r8   r   rM   r5   )	r   r   r:   r   Zscriptlet_namer   r   r   rv   r   r   r   r     s    
zRPMTransaction._scriptErrorc             C   s   t jj}|d kr | jg kr d}n| j|}|d j}| jdkrN| jdkrN| jnd}| jdkrl| jdkrl| jnd}x"| jD ]}|j	||dd|| qxW d S )NNoner   r   r   )
r   r7   r-   rZ   r~   r8   rR   rT   rM   r1   )r   r   r0   r8   r   Zcompleter:   rv   r   r   r   r     s    

zRPMTransaction._script_startc             C   s   | j   d S )N)rw   )r   r   r   r   r     s    zRPMTransaction._scriptStopc             C   s"   x| j D ]}|j||| qW d S )N)rM   r;   )r   r8   r9   r:   rv   r   r   r   r;     s    z!RPMTransaction.verify_tsi_packageN)rK   )r   r<   r=   r#   rX   rk   rq   rs   rw   rx   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r;   r   r   r   r   rL      s4   
	.rL   )1Z
__future__r   r   r   Zlibdnf.transactionZlibdnfZdnf.i18nr   r   Zdnf.callbackr   Zdnf.transactionZdnf.utilrg   osrG   rB   r_   r   r   Z	TS_UPDATEZ
TS_INSTALLZTS_ERASEZTS_OBSOLETEDZTS_OBSOLETINGZTS_AVAILABLEZ
TS_UPDATEDZ	TS_FAILEDZTS_INSTALL_STATESZTS_REMOVE_STATESr7   ZTransactionItemAction_INSTALLZTransactionItemAction_DOWNGRADEZ TransactionItemAction_DOWNGRADEDZTransactionItemAction_OBSOLETEZTransactionItemAction_OBSOLETEDZTransactionItemAction_UPGRADEZTransactionItemAction_UPGRADEDZTransactionItemAction_REMOVEZ!TransactionItemAction_REINSTALLEDrz   rH   r   r!   objectr"   r>   rF   rL   r   r   r   r   <module>   sL   



<	