3 ©ft`êã@s„ddlmZddlmZddlmZddlmZddlmZddl Z ddl Z ddl Z ddl Z ddlZejdƒZGdd „d ejƒZdS) é)Úabsolute_import)Úunicode_literals)Úcommands)Ú_)Ú OptionParserNÚdnfc@sbeZdZdZejejejejejejdœZde ej ƒƒZ e dƒZ edd„ƒZd d „Zd d „Zd S)Ú RemoveCommandzRemove command.)zremove-nz remove-naz remove-nevrazerase-nzerase-naz erase-nevraÚremoveÚeraseÚrmz-remove a package or packages from your systemcCsf|jƒ}|jdddtdƒd�|jddtjd�|jddtd ƒd�|jd d td ƒtjtd ƒd�dS)Nz --duplicatesÚ store_trueÚ duplicatedzremove duplicated packages)ÚactionÚdestÚhelpz --duplicated)rrz--oldinstallonlyz*remove installonly packages over the limitZpackagesÚ*zPackage to removeZPACKAGE)ÚnargsrrÚmetavar)Zadd_mutually_exclusive_groupÚ add_argumentrÚargparseZSUPPRESSrZParseSpecGroupFileCallback)ÚparserZmgroup©rú/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)ZcliÚdemandsZ resolvingZ root_userZsack_activationÚoptsr Zavailable_reposrÚbaseÚ WITH_MODULESÚ grp_specsZfresh_metadataZ allow_erasing)ÚselfrrrrÚ configure?szRemoveCommand.configurecCs\g}|jj|jkr"|j|jjg}|jj|jj7_d}|jj�rD|jjjƒ}|jj |j ƒƒ}|jƒj |ƒ}|s‚t j jtdƒƒ‚x¼|jƒjƒD]¬\\}}}t|ƒdkrªq�|jdd�y|jjt|dƒƒWnHt j jk �rd} tdƒ} tj| |jjjjt|dƒƒ| ƒYnXx"|d d…D]} |jj| ƒ�q&Wq�WdS|jj�rä|jjjƒ}|jj |j ƒƒjdƒ}|jjjƒ} | dk �r¬|j | j!| j"| j#d �} | �r¬|j | ƒ}|�rÐx,|D]} |jj| ƒ�q¸Wnt j jtd ƒƒ‚dS|jj$�r*|�r*xÔ|jj$D]&}td ƒ} tj| |jjjj|ƒƒ�qþWn |jj$�rÊt jj%�rxt j&j'j(|jƒ}|j)|jj$ƒ}t|jj$ƒt|ƒk�r€d}n|jj$}|�rÊxB|D]:}y|jj*|gƒ�r¦d}Wnt j jk �rÂYnX�qŒWxx|jjD]l}y|jj)||d �WnLt j j+k �r8}z*dj,|j-|jjjj|ƒƒ} tj.| ƒWYdd}~XnXd}�qÔW|�sXtjtdƒƒdS)NFz)No duplicated packages found for removal.éT)ÚreverserÚz%Installed package %s%s not available.é)ÚepochÚversionÚreleasez.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Ú exceptionsÚErrorrZ_na_dictÚitemsÚlenÚsortZ reinstallÚstrZPackagesNotAvailableErrorÚloggerZwarningÚoutputZtermZboldZpackage_removeZoldinstallonlyZlatestZget_running_kernelÚfilterr%r&r'rrÚmoduleÚ module_baseZ ModuleBaser Zenv_group_removeZ MarkingErrorÚformatÚvalueÚinfo)rr(ÚdoneÚqZinstonlyZdupsÚnameZarchZ pkgs_listZxmsgÚmsgZpkgZkernelZrunning_installonlyZgrp_specr7Z skipped_grpsÚgroupZpkg_specÚerrrÚrunPs„    (             zRemoveCommand.runN)r r r )Ú__name__Ú __module__Ú __qualname__Ú__doc__ÚhawkeyZ FORM_NAMEZFORM_NAZ FORM_NEVRAr*ÚtupleÚkeysÚaliasesrZsummaryÚ staticmethodrr rArrrrr#s  r)Z __future__rrZdnf.clirZdnf.i18nrZdnf.cli.option_parserrZdnf.baserrrFZdnf.exceptionsZloggingZ getLoggerr3ZCommandrrrrrÚs