a
    ©!c?  ã                   @   sV   d dl mZ d dl mZ d dlmZ d dlmZ d dlZd dlZ	G dd„ dej
ƒZdS )é    )Úabsolute_import)Úunicode_literals)Ú_)ÚcommandsNc                   @   s8   e Zd ZdZdZedƒZedd„ ƒZdd„ Z	dd	„ Z
d
S )ÚCheckCommandzSA class containing methods needed by the cli to execute the check
    command.
    )Zcheckz#check for problems in the packagedbc              	   C   sœ   | j ddddtdƒd | j ddddtd	ƒd | j d
dddtdƒd | j ddddtdƒd | j ddddtdƒd | j dddddddg gtjd d S )Nz--allÚcheck_typesZappend_constÚallzshow all problems; default)ÚdestÚactionÚconstÚhelpz--dependenciesÚdependencieszshow dependency problemsz--duplicatesÚ
duplicateszshow duplicate problemsz--obsoletedÚ	obsoletedzshow obsoleted packagesz
--providesÚprovideszshow problems with providesÚcheck_yum_typesÚ*)ÚnargsÚchoicesr   )Úadd_argumentr   ÚargparseZSUPPRESS)Úparser© r   ú:/usr/lib/python3.9/site-packages/dnf/cli/commands/check.pyÚset_argparser$   s2    þþþþþÿþzCheckCommand.set_argparserc                 C   sx   d| j j_| jjr<| jjr0| jj| jj | j_n| jj| j_| jjsPdh| j_nt| jjƒ| j_| jj j	dg7  _	d S )NTr   )
ZcliZdemandsZsack_activationÚoptsr   r   ÚsetÚbaseÚconfZdisable_excludes)Úselfr   r   r   Ú	configure;   s    
ÿ
zCheckCommand.configurec                 C   sj  t ƒ }| jj ¡  ¡ }| jj ddh¡rœd }|D ]f}t |jƒt t |j	ƒt |j
ƒ ƒB D ]Ì}t|ƒ d¡rnqZt|j|gdƒsZt|ƒ d¡rô|d u r¤tj | j¡}tj |¡}|j t|ƒd tj |¡}| jjj|_|j|dd | ¡ }|rôqZtdƒ}	| |	 | jjj |¡| jjj |¡¡¡ qZ|jD ]j}
|j|
gt|
ƒ  ¡ d	 d
}|D ]B}d}	| |	 | jjj |¡| jjj |
¡| jjj |¡¡¡ qRq.q2| jj ddh¡r4| j !|¡}| "¡  #|¡ $¡ }| %¡ D ]\\}}| &¡  |dd … D ]<}tdƒ | jjj |d	 ¡| jjj |¡¡}	| |	¡ qòqÖ| jj ddh¡r¾|D ]p}|j'D ]b}|j|gt|ƒ  ¡ d	 d
}t|ƒrVtdƒ | jjj |d	 ¡| jjj |¡¡}	| |	¡ qVqL| jj ddh¡r2|D ]Z}|j(D ]L}||j|gdvràtdƒ}	| |	 | jjj |¡| jjj |¡¡¡ qàqÖt)|ƒD ]}	t*|	ƒ q:|rftj+ ,d t|ƒ¡¡‚d S )Nr   r   Zrpmlib)r   ú(F)ZselectZoptionalz{} has missing requires of {}r   )r   Únamez"{} has installed conflict "{}": {}r   é   z{} is a duplicate with {}r   z{} is obsoleted by {}r   z%{} provides {} but it cannot be foundzCheck discovered {} problem(s))-r   r   ÚsackÚqueryZ	installedr   r   ÚintersectionZregular_requiresZrequires_preZprereq_ignoreinstÚstrÚ
startswithÚlenÚfilterÚdnfZ
rpmdb_sackÚselectorZSelectorÚgoalZGoalr   Zprotect_running_kernelZinstallÚrunr   ÚaddÚformatÚoutputZtermZboldZ	conflictsÚsplitZ_get_installonly_queryZ
duplicatedÚ
differenceZ
_name_dictÚitemsÚsortZ	obsoletesr   ÚsortedÚprintÚ
exceptionsÚError)r   Z
output_setÚqr$   ZpkgZrequirer,   r-   ZsolvedÚmsgZconflictZ
conflictedZconflict_pkgZinstallonlyZdupsr"   ZpkgsÚdupZobsoleter   Zprovider   r   r   r.   I   s”    
&þ
ÿýþ
ÿ
þ
þÿzCheckCommand.runN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úaliasesr   ZsummaryÚstaticmethodr   r    r.   r   r   r   r   r      s   
r   )Z
__future__r   r   Zdnf.i18nr   Zdnf.clir   r   Zdnf.exceptionsr+   ZCommandr   r   r   r   r   Ú<module>   s   