a
    Íññ^"  ã                   @   s0   d dl Z d dlZd dlmZ G dd„ deƒZdS )é    N)Útsc                   @   sº   e Zd Z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d „Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-S )/ÚTransactionSetr   c                 C   s   t | |ƒ}t| ||ƒ |S ©N)ÚgetattrÚsetattr)ÚselfÚattrÚvalZoval© r
   ú5/usr/lib64/python3.9/site-packages/rpm/transaction.pyÚ_wrapSetGet	   s    
zTransactionSet._wrapSetGetc                 C   s   |   d|¡S )NÚ_vsflags©r   ©r   Úflagsr
   r
   r   Ú
setVSFlags   s    zTransactionSet.setVSFlagsc                 C   s   | j S r   )r   ©r   r
   r
   r   Ú
getVSFlags   s    zTransactionSet.getVSFlagsc                 C   s   |   d|¡S )NÚ	_vfyflagsr   r   r
   r
   r   ÚsetVfyFlags   s    zTransactionSet.setVfyFlagsc                 C   s   | j S r   )r   r   r
   r
   r   ÚgetVfyFlags   s    zTransactionSet.getVfyFlagsc                 C   s   | j S r   )Ú	_vfylevelr   r
   r
   r   ÚgetVfyLevel   s    zTransactionSet.getVfyLevelc                 C   s   |   d|¡S )Nr   r   r   r
   r
   r   ÚsetVfyLevel   s    zTransactionSet.setVfyLevelc                 C   s   |   d|¡S )NZ_colorr   ©r   Zcolorr
   r
   r   ÚsetColor    s    zTransactionSet.setColorc                 C   s   |   d|¡S )NZ
_prefcolorr   r   r
   r
   r   ÚsetPrefColor#   s    zTransactionSet.setPrefColorc                 C   s   |   d|¡S )NZ_flagsr   r   r
   r
   r   ÚsetFlags&   s    zTransactionSet.setFlagsc                 C   s   |   d|¡S )NÚ_probFilterr   )r   Z	ignoreSetr
   r
   r   ÚsetProbFilter)   s    zTransactionSet.setProbFilterc                 C   s
   t  |¡S r   )ÚrpmÚspec)r   Zspecfiler
   r
   r   Ú	parseSpec,   s    zTransactionSet.parseSpecc                 C   s0   g }| D ]}|  | ¡ ¡ q|s$d S t|ƒS d S r   )ÚappendZKeyÚtuple)r   ÚkeysZter
   r
   r   ÚgetKeys/   s    zTransactionSet.getKeysc                 C   s^   t |tƒr>t|ƒ}|  |¡}W d   ƒ qZ1 s20    Y  nt |tjƒrP|}n
|  |¡}|S r   )Ú
isinstanceÚstrÚopenÚhdrFromFdnor    Úhdr)r   ÚitemÚfÚheaderr
   r
   r   Ú_f2hdr9   s    

*
zTransactionSet._f2hdrÚuc                 C   sP   |   |¡}|dvrtdƒ‚|dk}t | |||¡sL|rBt d¡‚n
t d¡‚d S )N)r0   Úizhow argument must be "u" or "i"r0   z$adding upgrade to transaction failedz$adding install to transaction failed)r/   Ú
ValueErrorÚTransactionSetCoreÚ
addInstallr    Úerror)r   r,   ÚkeyZhowr.   Zupgrader
   r
   r   r4   C   s    
zTransactionSet.addInstallc                 C   s&   |   |¡}t | ||¡s"t d¡‚d S )Nz&adding reinstall to transaction failed)r/   r3   ÚaddReinstallr    r5   )r   r,   r6   r.   r
   r
   r   r7   P   s    
zTransactionSet.addReinstallc                 C   s´   g }t |tjƒr|}nzt |tjƒr.| |¡ nbt |ttfƒr€t |tƒrNtj}ntj}|  	||¡D ]}| |¡ q`|st 
d¡‚ntdt|ƒ ƒ‚|D ]}t | |¡s”t 
d¡‚q”d S )Nzpackage not installedzinvalid type %sz$adding erasure to transaction failed)r'   r    Úmir+   r#   Úintr(   ZRPMDBI_PACKAGESZRPMDBI_LABELZdbMatchr5   Ú	TypeErrorÚtyper3   ÚaddErase)r   r,   ZhdrsZdbiÚhr
   r
   r   r<   V   s"    
zTransactionSet.addErasec                 C   s^   t  | ||| j¡}|dkrd S g }|dkrZ|  ¡ D ]&}d| |j|j|jff}| |¡ q2|S )Nr   z%s)r3   Úrunr   Úproblemsr;   Ú_strZ_numr#   )r   ÚcallbackÚdataZrcÚresZprobr,   r
   r
   r   r>   o   s    zTransactionSet.runc                 O   s  t j| g|¢R i |¤Ž g }|  ¡ D ]â}|jtjkr<tj}n|jtjkr$tj}nq$|j	 
dd¡d }| 
dd¡\}}}	|j ¡ }
|
d }tj}t|
ƒdkrâ|
d }d|v r´|tjO }d|v rÆ|tjO }d	|v rØ|tjO }|
d }nd
}| |||	f||f|||jf¡ q$|S )NÚ.é   r   ú-é   é   ú<ú=ú>Ú )r3   Úcheckr?   r;   r    ZRPMPROB_CONFLICTZRPMDEP_SENSE_CONFLICTSZRPMPROB_REQUIRESZRPMDEP_SENSE_REQUIRESZaltNEVRÚrsplitr@   ÚsplitZRPMSENSE_ANYÚlenZRPMSENSE_LESSZRPMSENSE_EQUALZRPMSENSE_GREATERr#   r6   )r   ÚargsÚkwdsrC   ÚpZsenseZnevrÚnÚvÚrZneedsZneednameZ	needflagsZneedopZneedverr
   r
   r   rM      s6    




ÿzTransactionSet.checkc                 C   sT   t  | |¡\}}|tjkr&t d¡‚n*|tjkr<t d¡‚n|tjkrPt |¡‚d S )Núpublic key not availableúpublic key not trusted)r3   ÚhdrCheckr    ÚRPMRC_NOKEYr5   ÚRPMRC_NOTTRUSTEDÚRPMRC_OK)r   ZblobrC   Úmsgr
   r
   r   rY   ¦   s    


zTransactionSet.hdrCheckc                 C   sT   t  | |¡\}}|tjkr&t d¡‚n*|tjkr<t d¡‚n|tjkrPt d¡‚|S )NrW   rX   zerror reading package header)r3   r*   r    rZ   r5   r[   r\   )r   ÚfdrC   r=   r
   r
   r   r*   °   s    



zTransactionSet.hdrFromFdnoN)r0   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r   r   r   r   r"   r&   r/   r4   r7   r<   r>   rM   rY   r*   r
   r
   r
   r   r      s,   


'
r   )Úsysr    Zrpm._rpmr   r3   r   r
   r
   r
   r   Ú<module>   s   