a
    ©!c  ã                   @   sd   d dl mZ d dl mZ d dlmZ d dlZd dlZe d¡ZdZ	dZ
G dd„ deƒZdd	d
„ZdS )é    )Úabsolute_import)Úunicode_literals)Ú_NZdnfc                   @   s‚   e 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d„ Zdd„ Zdd„ Zi fdd„ZdS ) ÚTransactionWrapperú/c                 C   s&   t  |¡| _g d¢| _g | _d| _d S )N)ZcheckÚorderZaddEraseZ
addInstallZaddReinstallÚrunZpgpImportPubkeyZ
pgpPrtPktsZproblemsÚsetFlagsÚ
setVSFlagsÚsetProbFilterZhdrFromFdnoÚnextZcleanT)ÚrpmZTransactionSetÚtsÚ_methodsÚtsflagsÚopen)ÚselfÚroot© r   ú7/usr/lib/python3.9/site-packages/dnf/rpm/transaction.pyÚ__init__   s    
zTransactionWrapper.__init__c                 C   s   |   ¡  d S ©N)Úclose©r   r   r   r   Ú__del__-   s    zTransactionWrapper.__del__c                 C   s    | j r| j ¡  d | _d| _ d S )NF)r   r   ZcloseDBr   r   r   r   r   1   s    
zTransactionWrapper.closec                 O   sL   d|v r|  d¡}ng }| jj|i |¤Ž}|D ]\}}}| |||¡ q.|S )NÚpatterns)Úpopr   ÚdbMatchÚpattern)r   ÚargsÚkwdsr   ÚmiÚtagÚtpÚpatr   r   r   r   7   s    zTransactionWrapper.dbMatchc                 C   sD   | j  ¡ dkr t tdƒ¡ dS | j  ¡ }|s@t tdƒ¡ dS |S )Nr   z/The openDB() function cannot open rpm database.Ú z>The dbCookie() function did not return cookie of rpm database.)r   ZopenDBÚ_loggerÚerrorr   ÚdbCookie)r   Zcookier   r   r   r(   B   s    
zTransactionWrapper.dbCookiec                 C   s    || j v r|  |¡S t|ƒ‚d S r   )r   Ú	getMethodÚAttributeError)r   Úattrr   r   r   Ú__getattr__P   s    

zTransactionWrapper.__getattr__c                 C   s   | j S r   )r   r   r   r   r   Ú__iter__V   s    zTransactionWrapper.__iter__c                 C   s   t | j|ƒS r   )Úgetattrr   )r   Úmethodr   r   r   r)   Y   s    zTransactionWrapper.getMethodc                 C   s"   | j  |¡ | j | j d ¡ d S )Néÿÿÿÿ)r   Úappendr   r
   )r   Úflagsr   r   r   ÚpushVSFlagsa   s    zTransactionWrapper.pushVSFlagsc                 C   s    | j  d¡}| j  ||B ¡ d S ©Nr   ©r   r	   )r   ÚflagÚcurflagsr   r   r   Ú	addTsFlage   s    zTransactionWrapper.addTsFlagc                 C   s   | j  d¡}| j  |¡ |S r4   r5   )r   r7   r   r   r   Ú
getTsFlagsi   s    zTransactionWrapper.getTsFlagsc                 C   s   |   ¡ }t||@ ƒS r   )r9   Úbool)r   r6   Úvalr   r   r   ÚisTsFlagSetn   s    zTransactionWrapper.isTsFlagSetc                 C   s   |  ¡ | j_d S r   )Úfilenor   ZscriptFd)r   Úfdr   r   r   ÚsetScriptFdr   s    zTransactionWrapper.setScriptFdc           
      C   sŒ   |   ¡ }|  tj¡ | d¡dkr0| j tj¡ | j |j	d¡}| j 
|¡ g }|durˆ|D ]\}\}}}	| |¡ q\|sˆ| tdƒ¡ |S )zetests the ts we've setup, takes a callback function and a conf dict
           for flags and what notZdiskspacecheckr   r%   Nz(Errors occurred during test transaction.)r9   r8   r   ZRPMTRANS_FLAG_TESTÚgetr   r   ZRPMPROB_FILTER_DISKSPACEr   Úcallbackr	   r1   r   )
r   ÚcbZconfZ	origflagsZtserrorsZ	reserrorsZdescrÚetypeZmountZneedr   r   r   Útestu   s    zTransactionWrapper.testN)r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r(   r,   r-   r)   r3   r8   r9   r<   r?   rD   r   r   r   r   r      s   
r   r   c                 C   s    t | d}| tjtjB ¡ |S )N)r   )r   r3   r   Z_RPMVSF_NOSIGNATURESZ_RPMVSF_NODIGESTS)r   Úread_tsr   r   r   ÚinitReadOnlyTransaction‹   s    
rI   )r   )Z
__future__r   r   Zdnf.i18nr   Zloggingr   Z	getLoggerr&   rH   r   Úobjectr   rI   r   r   r   r   Ú<module>   s   
s