3 ©ft`?ã@sVddlmZddlmZddlmZddlmZddlZddlZ Gdd„dej ƒZ dS)é)Úabsolute_import)Úunicode_literals)Ú_)ÚcommandsNc@s8eZdZdZd ZedƒZedd„ƒZdd„Z dd „Z d S) Ú CheckCommandzSA class containing methods needed by the cli to execute the check command. Úcheckz#check for problems in the packagedbc Csœ|jddddtdƒd�|jddddtd ƒd�|jd ddd td ƒd�|jd dddtdƒd�|jddddtdƒd�|jddddd ddggtjd�dS)Nz--allÚ check_typesZ append_constÚallzshow all problems; default)ÚdestÚactionÚconstÚhelpz--dependenciesÚ dependencieszshow dependency problemsz --duplicatesÚ duplicateszshow duplicate problemsz --obsoletedÚ obsoletedzshow obsoleted packagesz --providesÚprovideszshow problems with providesÚcheck_yum_typesÚ*)ÚnargsÚchoicesr )Ú add_argumentrÚargparseZSUPPRESS)Úparser©rú/usr/lib/python3.6/check.pyÚ set_argparser$s$     zCheckCommand.set_argparsercCsxd|jj_|jjr<|jjr0|jj|jj|j_n |jj|j_|jjsPdh|j_nt|jjƒ|j_|jjj dg7_ dS)NTr ) ZcliZdemandsZsack_activationÚoptsrrÚsetÚbaseÚconfZdisable_excludes)ÚselfrrrÚ configure;s   zCheckCommand.configurec Cs˜tƒ}|jjjƒjƒ}|jjjddhƒ�r®d}�x||D�]r}xòt|jƒtt|j ƒt|j ƒƒBD]Ì}t |ƒj dƒrtq`t |j|gd�ƒs`t |ƒj dƒrú|dkrªtjj|jƒ}tjj|ƒ}|jt |ƒd�tjj|ƒ}|jjj|_|j|dd�|jƒ}|rúq`tdƒ} |j| j|jjjj|ƒ|jjjj|ƒƒƒq`Wxx|jD]n} |j| gt | ƒj ƒd d �} xJ| D]B} d } |j| j|jjjj|ƒ|jjjj| ƒ|jjjj| ƒƒƒ�q^W�q8Wq6W|jjjdd hƒ�rN|jj!|ƒ} |j"ƒj#| ƒj$ƒ}xl|j%ƒD]`\}}|j&ƒxL|d d…D]<}tdƒj|jjjj|d ƒ|jjjj|ƒƒ} |j| ƒ�qW�qêW|jjjddhƒ�ràx||D]t}xl|j'D]b}|j|gt |ƒj ƒd d �}t |ƒ�rttdƒj|jjjj|d ƒ|jjjj|ƒƒ} |j| ƒ�qtW�qhW|jjjddhƒ�r\xf|D]^}xV|j(D]L}||j|gd�k�rtdƒ} |j| j|jjjj|ƒ|jjjj|ƒƒƒ�qW�qúWxt)|ƒD]} t*| ƒ�qfW|�r”tj+j,djt |ƒƒƒ‚dS)Nr rZrpmlib)rú(F)ZselectZoptionalz{} has missing requires of {}r)rÚnamez"{} has installed conflict "{}": {}réz{} is a duplicate with {}rz{} is obsoleted by {}rz%{} provides {} but it cannot be foundzCheck discovered {} problem(s))-rrÚsackZqueryZ installedrrÚ intersectionZregular_requiresZ requires_preZprereq_ignoreinstÚstrÚ startswithÚlenÚfilterÚdnfZ rpmdb_sackÚselectorZSelectorÚgoalZGoalrZprotect_running_kernelZinstallÚrunrÚaddÚformatÚoutputZtermZboldZ conflictsÚsplitZ_get_installonly_queryZ duplicatedÚ differenceZ _name_dictÚitemsÚsortZ obsoletesrÚsortedÚprintÚ exceptionsÚError)r Z output_setÚqr%ZpkgZrequirer,r-ZsolvedÚmsgZconflictZ conflictedZ conflict_pkgZ installonlyZdupsr#ZpkgsÚdupZobsoleterZproviderrrr.Is„(     $       zCheckCommand.runN)r) Ú__name__Ú __module__Ú __qualname__Ú__doc__ÚaliasesrZsummaryÚ staticmethodrr!r.rrrrrs  r) Z __future__rrZdnf.i18nrZdnf.clirrZdnf.exceptionsr+ZCommandrrrrrÚs