3 ft`@sddlmZddlmZddlmZddlmZddlmZddl Z ddl Z ddl Z ddl Z ddlZejdZGdd d ejZdS) )absolute_import)unicode_literals)commands)_) OptionParserNdnfc@sbeZdZdZejejejejejejdZde ej Z e dZ eddZd d Zd d Zd S) RemoveCommandzRemove command.)zremove-nz remove-naz remove-nevrazerase-nzerase-naz erase-nevraremoveerasermz-remove a package or packages from your systemcCsf|j}|jdddtdd|jddtjd|jddtd d|jd d td tjtd ddS)Nz --duplicates store_true duplicatedzremove duplicated packages)actiondesthelpz --duplicated)rrz--oldinstallonlyz*remove installonly packages over the limitZpackages*zPackage to removeZPACKAGE)nargsrrmetavar)Zadd_mutually_exclusive_group add_argumentrargparseZSUPPRESSrZParseSpecGroupFileCallback)parserZmgroupr/usr/lib/python3.6/remove.py set_argparser0s   zRemoveCommand.set_argparsercCs^|jj}d|_d|_d|_|jjr*d|_n0tj j rN|jj rNd|_d|_ d|_ n d|_ d|_dS)NTF)ZclidemandsZ resolvingZ root_userZsack_activationoptsr Zavailable_reposrbase WITH_MODULES grp_specsZfresh_metadataZ allow_erasing)selfrrrr configure?szRemoveCommand.configurecCs\g}|jj|jkr"|j|jjg}|jj|jj7_d}|jjrD|jjj}|jj |j }|jj |}|st j jtdx|jjD]\\}}}t|dkrq|jddy|jjt|dWnHt j jk rd} td} tj| |jjjjt|d| YnXx"|d dD]} |jj| q&WqWdS|jjr|jjj}|jj |j jd}|jjj} | dk r|j | j!| j"| j#d } | r|j | }|rx,|D]} |jj| qWnt j jtd dS|jj$r*|r*x|jj$D]&}td } tj| |jjjj|qWn|jj$rt jj%rxt j&j'j(|j}|j)|jj$}t|jj$t|krd}n|jj$}|rxB|D]:}y|jj*|grd}Wnt j jk rYnXqWxx|jjD]l}y|jj)||d WnLt j j+k r8}z*dj,|j-|jjjj|} tj.| WYdd}~XnXd}qW|sXtjtddS)NFz)No duplicated packages found for removal.T)reverserz%Installed package %s%s not available.)epochversionreleasez.No old installonly packages found for removal.zNot a valid form: %s)formsz{}: {}zNo packages marked for removal.)/rZcommand nevra_formsZ pkg_specs filenamesr rZsackZqueryZ_get_installonly_queryZ installed differencer exceptionsErrorrZ_na_dictitemslensortZ reinstallstrZPackagesNotAvailableErrorloggerZwarningoutputZtermZboldZpackage_removeZoldinstallonlyZlatestZget_running_kernelfilterr%r&r'rrmodule module_baseZ ModuleBaser Zenv_group_removeZ MarkingErrorformatvalueinfo)rr(doneqZinstonlyZdupsnameZarchZ pkgs_listZxmsgmsgZpkgZkernelZrunning_installonlyZgrp_specr7Z skipped_grpsgroupZpkg_specerrrrunPs    (             zRemoveCommand.runN)r r r )__name__ __module__ __qualname____doc__hawkeyZ FORM_NAMEZFORM_NAZ FORM_NEVRAr*tuplekeysaliasesrZsummary staticmethodrr rArrrrr#s  r)Z __future__rrZdnf.clirZdnf.i18nrZdnf.cli.option_parserrZdnf.baserrrFZdnf.exceptionsZloggingZ getLoggerr3ZCommandrrrrrs