
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
©ft`ê  ã               @   s„   d dl mZ 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d dlZd dlZ
d dlZejdƒZG dd	„ d	ejƒZdS )
é    )Úabsolute_import)Úunicode_literals)Úcommands)Ú_)ÚOptionParserNÚdnfc               @   sb   e Zd ZdZejejejejejejdœZde	ej
ƒ ƒ ZedƒZedd„ ƒZd	d
„ Zdd„ ZdS )ÚRemoveCommandzRemove command.)zremove-nz	remove-nazremove-nevrazerase-nzerase-nazerase-nevraÚremoveÚeraseÚrmz-remove a package or packages from your systemc             C   sf   | j ƒ }|jdddtdƒd� |jddtjd� |jddtd	ƒd� | jd
dtdƒtjtdƒd� d S )Nz--duplicatesÚ
store_trueÚ
duplicatedzremove duplicated packages)ÚactionÚdestÚhelpz--duplicated)r   r   z--oldinstallonlyz*remove installonly packages over the limitZpackagesÚ*zPackage to removeZPACKAGE)Únargsr   r   Úmetavar)Zadd_mutually_exclusive_groupÚadd_argumentr   ÚargparseZSUPPRESSr   ZParseSpecGroupFileCallback)ÚparserZmgroup© r   ú/usr/lib/python3.6/remove.pyÚset_argparser0   s    

zRemoveCommand.set_argparserc             C   s^   | j j}d|_d|_d|_| jjr*d|_n0tj	j
rN| jjrNd|_d|_d|_nd|_d|_d S )NTF)ZcliÚdemandsZ	resolvingZ	root_userZsack_activationÚoptsr   Zavailable_reposr   ÚbaseÚWITH_MODULESÚ	grp_specsZfresh_metadataZallow_erasing)Úselfr   r   r   r   Ú	configure?   s    zRemoveCommand.configurec             C   s\  g }| j j| jkr"| j| j j g}| j  j| j j7  _d}| j j�rD| jjjƒ }| jj	|j
ƒ ƒ}|jƒ j|ƒ}|s‚tjjtdƒƒ‚x¼|jƒ jƒ D ]¬\\}}}t|ƒdk rªq�|jdd� y| jjt|d ƒƒ W nH tjjk
�r   d}	tdƒ}
tj|
| jjjjt|d ƒƒ|	ƒ Y nX x"|d	d … D ]}| jj|ƒ �q&W q�W d S | j j�rä| jjjƒ }| jj	|j
ƒ ƒjdƒ}| jjjƒ }|d k	�r¬|j |j!|j"|j#d
�}|�r¬|j|ƒ}|�rÐx,|D ]}| jj|ƒ �q¸W ntjjtdƒƒ‚d S | j j$�r*|�r*xÔ| j j$D ]&}tdƒ}
tj|
| jjjj|ƒƒ �qþW n | j j$�rÊtjj%�rxtj&j'j(| jƒ}|j)| j j$ƒ}t| j j$ƒt|ƒk�r€d}n| j j$}|�rÊxB|D ]:}y| jj*|gƒ�r¦d}W n tjjk
�rÂ   Y nX �qŒW xx| j jD ]l}y| jj)||d� W nL tjj+k
�r8 } z*dj,|j-| jjjj|ƒƒ}
tj.|
ƒ W Y d d }~X nX d}�qÔW |�sXtjtdƒƒ d S )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.zNot a valid form: %s)Úformsz{}: {}zNo packages marked for removal.éÿÿÿÿ)/r   ZcommandÚnevra_formsZ	pkg_specsÚ	filenamesr   r   ZsackZqueryZ_get_installonly_queryZ	installedÚ
differencer   Ú
exceptionsÚErrorr   Z_na_dictÚitemsÚlenÚsortZ	reinstallÚstrZPackagesNotAvailableErrorÚloggerZwarningÚoutputZtermZboldZpackage_removeZoldinstallonlyZlatestZget_running_kernelÚfilterr%   r&   r'   r   r   ÚmoduleÚmodule_baseZ
ModuleBaser	   Zenv_group_removeZMarkingErrorÚformatÚvalueÚinfo)r   r(   ÚdoneÚqZinstonlyZdupsÚnameZarchZ	pkgs_listZxmsgÚmsgZpkgZkernelZrunning_installonlyZgrp_specr7   Zskipped_grpsÚgroupZpkg_specÚer   r   r   ÚrunP   s„    
(




 



zRemoveCommand.runN)r	   r
   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚhawkeyZ	FORM_NAMEZFORM_NAZ
FORM_NEVRAr*   ÚtupleÚkeysÚaliasesr   ZsummaryÚstaticmethodr   r    rA   r   r   r   r   r   #   s   
r   )Z
__future__r   r   Zdnf.clir   Zdnf.i18nr   Zdnf.cli.option_parserr   Zdnf.baser   r   rF   Zdnf.exceptionsZloggingZ	getLoggerr3   ZCommandr   r   r   r   r   Ú<module>   s   
