ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     3
g`                 @   s  d dl mZ d dl mZ d dl mZ d dlZd dlmZ d dlm	Z	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d dl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ejjZejjZejjZ ejj!Z"eeB e B e"B Z#d	d
 Z$dd Z%dd Z&dd Z'd*ddZ(G dd de)Z*G dd de)Z+G dd de)Z,G dd de,Z-G dd de,Z.G dd de,Z/G d d! d!e,Z0G d"d# d#e)Z1G d$d% d%e)Z2G d&d' d'e)Z3G d(d) d)e)Z4dS )+    )absolute_import)print_function)unicode_literalsN)
CompsError)_ucd)reducednfc             C   s"   | j | j| jf}ttjtt|S )N)
categoriesgroupsenvironmentsr   operator__add__maplen)compscollections r   /usr/lib/python3.6/comps.py_internal_comps_length6   s    r   c             C   s   | d krd S t jj| S )N)r	   utilfirst)seqr   r   r   _first_if_iterable;   s    r   c                s   t jj   fdd|D }|r&|S |r>tjtj j}ntjtj tjdj}t	 }x`|D ]X}||j
r||j| qb|jdk	r||jr|j| qb|jdk	rb||jrb|j| qbW |S )z;Return items from sqn matching either exactly or glob-wise.c                s$   h | ]}|j  ks|j kr|qS r   )nameid).0g)patternr   r   	<setcomp>E   s    z_by_pattern.<locals>.<setcomp>)flagsN)r	   Zi18nr   recompilefnmatch	translatematchIsetr   addr   ui_name)r   case_sensitiveZsqnexactr%   retr   r   )r   r   _by_patternA   s     

r-   c             C   s   | j d krtjS | j S )N)Zdisplay_ordersysmaxsize)groupr   r   r   _fn_display_orderZ   s    r1   Tc             C   s   | |||||S )aF  
    Installs a group or an environment identified by grp_or_env_id.
    This method is preserved for API compatibility. It used to catch an
    exception thrown when a gorup or env was already installed, which is no
    longer thrown.
    `install_fnc` has to be Solver._group_install or
    Solver._environment_install.
    r   )Zinstall_fncZgrp_or_env_idtypesexcludestrictexclude_groupsr   r   r   install_or_skip^   s    
r6   c               @   s,   e Zd ZdZdd Zedd Zdd ZdS )	_Langsz6Get all usable abbreviations for the current language.c             C   s   d | _ d | _d S )N)last_localecache)selfr   r   r   __init__o   s    z_Langs.__init__c              C   s"   t jt j} | dkrdS dj| S )NC.)NN)localeZ	getlocaleLC_MESSAGESjoin)Zlclr   r   r   _dotted_locale_strs   s    z_Langs._dotted_locale_strc             C   sz   | j  }| j|kr| jS g | _|g}|dkr6|jd x6|D ].}x(tj|D ]}|| jkrL| jj| qLW q<W || _| jS )Nr<   )rA   r8   r9   appendgettextZ_expand_lang)r:   Zcurrent_localeZlocaleslZnlangr   r   r   getz   s    



z
_Langs.getN)__name__
__module____qualname____doc__r;   staticmethodrA   rE   r   r   r   r   r7   k   s   r7   c               @   s<   e Zd ZdZdZdZdZdd Zdd Zdd Z	d	d
 Z
dS )
CompsQuery      c             C   s   || _ || _|| _|| _d S )N)r   historykindsstatus)r:   r   rN   rO   rP   r   r   r   r;      s    zCompsQuery.__init__c             C   s`   t  }| j| j@ r&|jdd |D  | j| j@ r\x(|D ] }|j }|sJq8|j|j  q8W |S )Nc             S   s   h | ]
}|j qS r   )r   )r   ir   r   r   r      s    z)CompsQuery._get_groups.<locals>.<setcomp>)r'   rP   	AVAILABLEupdate	INSTALLEDZgetCompsGroupItemr(   
getGroupId)r:   	available	installedresultrQ   r0   r   r   r   _get_groups   s    
zCompsQuery._get_groupsc             C   s`   t  }| j| j@ r&|jdd |D  | j| j@ r\x(|D ] }|j }|sJq8|j|j  q8W |S )Nc             S   s   h | ]
}|j qS r   )r   )r   rQ   r   r   r   r      s    z'CompsQuery._get_envs.<locals>.<setcomp>)r'   rP   rR   rS   rT   ZgetCompsEnvironmentItemr(   ZgetEnvironmentId)r:   rV   rW   rX   rQ   envr   r   r   	_get_envs   s    
zCompsQuery._get_envsc       	      G   s  t jj }g |_g |_x|D ]}g  }}| j| j@ rf| jj|}| j	j
j|}| j||}|jj| | j| j@ r| jj|}| j	jj|}| j||}|jj| | o| r| j| jkrtdt| }n.| j| jkrtdt| }ntdt| }t|qW |S )Nz&Module or Group '%s' is not installed.z&Module or Group '%s' is not available.z$Module or Group '%s' does not exist.)r	   r   ZBunchr   r   rO   ENVIRONMENTSr   environments_by_patternrN   rZ   Zsearch_by_patternr[   extendGROUPSgroups_by_patternr0   rY   rP   rT   r   r   rR   r   )	r:   ZpatternsresZpatenvsgrpsrV   rW   msgr   r   r   rE      s.    

zCompsQuery.getN)rF   rG   rH   rR   rT   r\   r_   r;   rY   r[   rE   r   r   r   r   rK      s   rK   c               @   s<   e Zd Zdd Zdd Zdd Zedd Zed	d
 ZdS )	Forwarderc             C   s   || _ || _d S )N)_i_langs)r:   iobjlangsr   r   r   r;      s    zForwarder.__init__c             C   s   t | j|S )N)getattrrf   )r:   r   r   r   r   __getattr__   s    zForwarder.__getattr__c             C   s.   x(| j j D ]}|j|}|d k	r|S qW |S )N)rg   rE   )r:   defaultZdctrD   tr   r   r   _ui_text   s
    
zForwarder._ui_textc             C   s   | j | j| jS )N)rn   ZdescZdesc_by_lang)r:   r   r   r   ui_description   s    zForwarder.ui_descriptionc             C   s   | j | j| jS )N)rn   r   Zname_by_lang)r:   r   r   r   r)      s    zForwarder.ui_nameN)	rF   rG   rH   r;   rk   rn   propertyro   r)   r   r   r   r   re      s
   re   c                   s8   e Zd Z fddZdd Zdd Zedd Z  ZS )	Categoryc                s   t t| j|| || _d S )N)superrq   r;   _group_factory)r:   rh   ri   group_factory)	__class__r   r   r;      s    zCategory.__init__c             C   s0   | j |j}|d kr,d}t||j| jf |S )Nz no group '%s' from category '%s')rs   r   
ValueErrorr   )r:   grp_idgrprd   r   r   r   _build_group   s
    zCategory._build_groupc             c   s    x| j D ]}| j|V  qW d S )N)	group_idsry   )r:   rw   r   r   r   groups_iter   s    zCategory.groups_iterc             C   s   t | j S )N)listr{   )r:   r   r   r   r      s    zCategory.groups)	rF   rG   rH   r;   ry   r{   rp   r   __classcell__r   r   )ru   r   rq      s   rq   c                   sL   e Zd Z fddZdd Zdd Zdd Zed	d
 Zedd Z	  Z
S )Environmentc                s   t t| j|| || _d S )N)rr   r~   r;   rs   )r:   rh   ri   rt   )ru   r   r   r;      s    zEnvironment.__init__c             C   s0   | j |j}|d kr,d}t||j| jf |S )Nz#no group '%s' from environment '%s')rs   r   rv   r   )r:   rw   rx   rd   r   r   r   ry      s
    zEnvironment._build_groupc             C   sX   g }xN|D ]F}y|j | j| W q
 tk
rN } ztj| W Y d d }~X q
X q
W |S )N)rB   ry   rv   loggererror)r:   Zidsr   Zgier   r   r   _build_groups  s    
 zEnvironment._build_groupsc             c   s\   xVt j| j| jD ]B}y| j|V  W q tk
rR } ztj| W Y d d }~X qX qW d S )N)	itertoolschainrz   
option_idsry   rv   r   r   )r:   rw   r   r   r   r   r{     s
    zEnvironment.groups_iterc             C   s   | j | jS )N)r   rz   )r:   r   r   r   mandatory_groups  s    zEnvironment.mandatory_groupsc             C   s   | j | jS )N)r   r   )r:   r   r   r   optional_groups  s    zEnvironment.optional_groups)rF   rG   rH   r;   ry   r   r{   rp   r   r   r}   r   r   )ru   r   r~      s   
r~   c                   sh   e Zd Z fddZdd Zedd Zedd Zd	d
 Zedd Z	edd Z
edd Z  ZS )Groupc                s$   t t| j|| || _|j| _d S )N)rr   r   r;   _pkg_factoryrl   Zselected)r:   rh   ri   Zpkg_factory)ru   r   r   r;   "  s    zGroup.__init__c                s    fdd| j D S )Nc                s   g | ]}|j  kr|qS r   )type)r   pkg)type_r   r   
<listcomp>(  s    z+Group._packages_of_type.<locals>.<listcomp>)packages)r:   r   r   )r   r   _packages_of_type'  s    zGroup._packages_of_typec             C   s   | j tjS )N)r   libcompsPACKAGE_TYPE_CONDITIONAL)r:   r   r   r   conditional_packages*  s    zGroup.conditional_packagesc             C   s   | j tjS )N)r   r   PACKAGE_TYPE_DEFAULT)r:   r   r   r   default_packages.  s    zGroup.default_packagesc             C   s   t | j| jS )N)r   r   r   )r:   r   r   r   packages_iter2  s    zGroup.packages_iterc             C   s   | j tjS )N)r   r   PACKAGE_TYPE_MANDATORY)r:   r   r   r   mandatory_packages6  s    zGroup.mandatory_packagesc             C   s   | j tjS )N)r   r   PACKAGE_TYPE_OPTIONAL)r:   r   r   r   optional_packages:  s    zGroup.optional_packagesc             C   s   | j jS )N)rf   Zuservisible)r:   r   r   r   visible>  s    zGroup.visible)rF   rG   rH   r;   r   rp   r   r   r   r   r   r   r}   r   r   )ru   r   r      s   r   c               @   sL   e Zd ZdZejeejeej	e
ejeiZdd Zedd Zedd ZdS )	Packagez#Represents comps package data. :apic             C   s
   || _ d S )N)rf   )r:   ipkgr   r   r   r;   L  s    zPackage.__init__c             C   s   | j jS )N)rf   r   )r:   r   r   r   r   O  s    zPackage.namec             C   s   | j | j S )N)_OPT_MAPr   )r:   r   r   r   option_typeT  s    zPackage.option_typeN)rF   rG   rH   rI   r   r   CONDITIONALr   DEFAULTr   	MANDATORYr   OPTIONALr   r;   rp   r   r   r   r   r   r   r   B  s   
r   c               @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	e
dd Zd-ddZd.ddZdd Ze
dd Zdd Zd/ddZd0ddZd d! Ze
d"d# Zd$d% Zd1d&d'Zd2d(d)Zd*d+ Zd,S )3Compsc             C   s   t j | _t | _d S )N)r   r   rf   r7   rg   )r:   r   r   r   r;   \  s    
zComps.__init__c             C   s
   t | jS )N)r   rf   )r:   r   r   r   __len__`  s    zComps.__len__c             C   s   t || j| jS )N)rq   rg   _group_by_id)r:   Z	icategoryr   r   r   _build_categoryc  s    zComps._build_categoryc             C   s   t || j| jS )N)r~   rg   r   )r:   Zienvironmentr   r   r   _build_environmentf  s    zComps._build_environmentc             C   s   t || j| jS )N)r   rg   _build_package)r:   Zigroupr   r   r   ry   i  s    zComps._build_groupc             C   s   t |S )N)r   )r:   r   r   r   r   r   l  s    zComps._build_packagec             C   sV   t j }y|j| W n, t jk
rB   |j }tdj|Y nX |  j|7  _d S )N )r   r   Z	fromxml_fZParserErrorZget_last_errorsr   r@   rf   )r:   fnr   errorsr   r   r   _add_from_xml_filenameo  s    zComps._add_from_xml_filenamec             C   s   t | j S )N)r|   categories_iter)r:   r   r   r   r
   x  s    zComps.categoriesFc             C   s   | j ||}t|S )N)categories_by_patternr   )r:   r   r*   Zcatsr   r   r   category_by_pattern}  s    zComps.category_by_patternc             C   s   t ||| jS )N)r-   r
   )r:   r   r*   r   r   r   r     s    zComps.categories_by_patternc                s    fdd j jD S )Nc             3   s   | ]} j |V  qd S )N)r   )r   c)r:   r   r   	<genexpr>  s    z(Comps.categories_iter.<locals>.<genexpr>)rf   r
   )r:   r   )r:   r   r     s    zComps.categories_iterc             C   s   t | j tdS )N)key)sortedenvironments_iterr1   )r:   r   r   r   r     s    zComps.environmentsc                s   t jj fdd| j D S )Nc             3   s   | ]}|j  kr|V  qd S )N)r   )r   r   )r   r   r   r     s    z+Comps._environment_by_id.<locals>.<genexpr>)r	   r   r   r   )r:   r   r   )r   r   _environment_by_id  s    zComps._environment_by_idc             C   s   | j ||}t|S )N)r]   r   )r:   r   r*   rb   r   r   r   environment_by_pattern  s    zComps.environment_by_patternc             C   s$   t | j }t|||}t|tdS )N)r   )r|   r   r-   r   r1   )r:   r   r*   rb   Z
found_envsr   r   r   r]     s    zComps.environments_by_patternc                s    fdd j jD S )Nc             3   s   | ]} j |V  qd S )N)r   )r   r   )r:   r   r   r     s    z*Comps.environments_iter.<locals>.<genexpr>)rf   r   )r:   r   )r:   r   r     s    zComps.environments_iterc             C   s   t | j tdS )N)r   )r   r{   r1   )r:   r   r   r   r     s    zComps.groupsc                s   t jj fdd| j D S )Nc             3   s   | ]}|j  kr|V  qd S )N)r   )r   r   )id_r   r   r     s    z%Comps._group_by_id.<locals>.<genexpr>)r	   r   r   r{   )r:   r   r   )r   r   r     s    zComps._group_by_idc             C   s   | j ||}t|S )N)r`   r   )r:   r   r*   rc   r   r   r   group_by_pattern  s    zComps.group_by_patternc             C   s    t ||t| j }t|tdS )N)r   )r-   r|   r{   r   r1   )r:   r   r*   rc   r   r   r   r`     s    zComps.groups_by_patternc                s    fdd j jD S )Nc             3   s   | ]} j |V  qd S )N)ry   )r   r   )r:   r   r   r     s    z$Comps.groups_iter.<locals>.<genexpr>)rf   r   )r:   r   )r:   r   r{     s    zComps.groups_iterN)F)F)F)F)F)F)rF   rG   rH   r;   r   r   r   ry   r   r   rp   r
   r   r   r   r   r   r   r]   r   r   r   r   r`   r{   r   r   r   r   r   Y  s*   	





r   c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
CompsTransPkgc             C   s   t jj|r&d| _|| _d| _d | _n\t|tj	j
r\d| _|j | _|j tj@ | _d | _n&|j| _|j| _|jtj@ | _|j| _d S )NFT)r	   r   Zis_string_typebasearchonlyr   optionalrequires
isinstancelibdnftransactionZCompsGroupPackagegetNameZgetPackageTyper   r   r   )r:   Zpkg_or_namer   r   r   r;     s    
zCompsTransPkg.__init__c             C   s0   | j |j ko.| j| jko.| j| jko.| j| jkS )N)r   r   r   r   )r:   otherr   r   r   __eq__  s    zCompsTransPkg.__eq__c             C   s   | j S )N)r   )r:   r   r   r   __str__  s    zCompsTransPkg.__str__c             C   s   t | j| j| j| jfS )N)hashr   r   r   r   )r:   r   r   r   __hash__  s    zCompsTransPkg.__hash__N)rF   rG   rH   r;   r   r   r   r   r   r   r   r     s   r   c               @   s   e Zd Zdd Zdd Zdd Zedd Zed	d
 Z	e	j
dd
 Z	edd Zej
dd Zedd Zej
dd Zedd Zej
dd ZdS )TransactionBunchc             C   s$   t  | _t  | _t  | _t  | _d S )N)r'   _install_install_opt_remove_upgrade)r:   r   r   r   r;     s    zTransactionBunch.__init__c             C   sN   | j j|j  | jj|j | jj|j | j|jB | j  | j | j | _| S )N)r   rS   r   r   r   )r:   r   r   r   r   __iadd__  s
     zTransactionBunch.__iadd__c             C   s(   t | jt | j t | j t | j S )N)r   installinstall_optupgraderemove)r:   r   r   r   r     s    zTransactionBunch.__len__c             C   s6   x0|D ](}t |tr | j| q| jt| qW d S )N)r   r   r(   )Zparamvalitemr   r   r   
_set_value  s    

zTransactionBunch._set_valuec             C   s   | j S )z
        Packages to be installed with strict=True - transaction will
        fail if they cannot be installed due to dependency errors etc.
        )r   )r:   r   r   r   r     s    zTransactionBunch.installc             C   s   | j | j| d S )N)r   r   )r:   valuer   r   r   r   	  s    c             C   s   | j S )zw
        Packages to be installed with strict=False - they will be
        skipped if they cannot be installed
        )r   )r:   r   r   r   r     s    zTransactionBunch.install_optc             C   s   | j | j| d S )N)r   r   )r:   r   r   r   r   r     s    c             C   s   | j S )N)r   )r:   r   r   r   r     s    zTransactionBunch.removec             C   s   | j | j| d S )N)r   r   )r:   r   r   r   r   r     s    c             C   s   | j S )N)r   )r:   r   r   r   r   !  s    zTransactionBunch.upgradec             C   s   | j | j| d S )N)r   r   )r:   r   r   r   r   r   %  s    N)rF   rG   rH   r;   r   r   rJ   r   rp   r   setterr   r   r   r   r   r   r   r     s   r   c               @   s   e Zd Zdd Zedd Zedd Zeg fddZd	d
 Zdd Z	dddZ
dd Zdd ZdddZdd Zdd Zdd ZdS )Solverc             C   s   || _ || _|| _d S )N)rN   r   Z
_reason_fn)r:   rN   r   Z	reason_fnr   r   r   r;   +  s    zSolver.__init__c             C   s   dd | j D S )Nc             S   s   h | ]
}|j qS r   )r   )r   rx   r   r   r   r   2  s    z.Solver._mandatory_group_set.<locals>.<setcomp>)r   )rZ   r   r   r   _mandatory_group_set0  s    zSolver._mandatory_group_setc             C   s"   dd | j | j | j | j D S )Nc             S   s   h | ]}|j  qS r   )r   )r   r   r   r   r   r   6  s    z+Solver._full_package_set.<locals>.<setcomp>)r   r   r   r   )rx   r   r   r   _full_package_set4  s    zSolver._full_package_setc                sv    fdd}t  }|t@ r*|j|| j |t@ rB|j|| j |t@ rZ|j|| j |t@ rr|j|| j	 |S )Nc                s    fdd| D S )Nc                s   g | ]}|j  kr|qS r   )r   )r   r   )r3   r   r   r   =  s    z8Solver._pkgs_of_type.<locals>.filter.<locals>.<listcomp>r   )pkgs)r3   r   r   filter<  s    z$Solver._pkgs_of_type.<locals>.filter)
r'   r   rS   r   r   r   r   r   r   r   )r0   	pkg_typesr3   r   r   r   )r3   r   _pkgs_of_type:  s    zSolver._pkgs_of_typec             C   s   | j jj|S )N)rN   r0   Zis_removable_pkg)r:   Zpkg_namer   r   r   _removable_pkgK  s    zSolver._removable_pkgc             C   s   | j jj|S )N)rN   rZ   Zis_removable_group)r:   group_idr   r   r   _removable_grpO  s    zSolver._removable_grpNTc       
      C   s   | j j|}|s$ttdt| | jjj||j|j	|}| jjj
| t }xD|jD ]:}	|rl|	j|krlqX|| j|	j|||7 }|j|	jdt qXW x.|jD ]$}	|r|	j|krq|j|	jdt qW |S )Nz#Environment id '%s' does not exist.TF)r   r   r   r   r   rN   rZ   newr   r)   r   r   r   r   _group_installaddGroupr   r   r   )
r:   env_idr   r3   r4   r5   	comps_envswdb_envtranscomps_groupr   r   r   _environment_installS  s     zSolver._environment_installc             C   sx   | j jj|}|s"ttd| | j jj| t }tdd |j D }x&|D ]}| j	|sbqR|| j
|7 }qRW |S )Nz%Environment id '%s' is not installed.c             S   s   g | ]}|j  qS r   )rU   )r   rQ   r   r   r   r   s  s    z.Solver._environment_remove.<locals>.<listcomp>)rN   rZ   rE   r   r   r   r   r'   	getGroupsr   _group_remove)r:   r   r   r   rz   r   r   r   r   _environment_removej  s    

zSolver._environment_removec             C   s>  | j j|}| jjj|}|s.ttd| |sBttd| tdd |j D }|j	 }| jjj
|j|j|j|}t }x\|jD ]R}|j|kr| jjj|jr|| j|j7 }n|| j|j|7 }|j|jdt qW xL|jD ]B}|j|kr| jjj|jr|| j|j7 }|j|jdt qW | jjj| |S )Nz"Environment '%s' is not installed.z"Environment '%s' is not available.c             S   s   g | ]}|j  qS r   )rU   )r   rQ   r   r   r   r     s    z/Solver._environment_upgrade.<locals>.<listcomp>TF)r   r   rN   rZ   rE   r   r   r'   r   getPackageTypesr   r   r   r)   r   r   r0   _group_upgrader   r   r   r   r   r   )r:   r   r   r   old_setr   r   r   r   r   r   _environment_upgradez  s,    
zSolver._environment_upgradec       
      C   s   | j j|}|s$ttdt| | jjj||j|j	|}x(|j
 D ]}|j|jdtj|j  qFW | jjj| t }	|r|	jj| j||g d n|	jj| j||g d |	S )NzGroup id '%s' does not exist.F)r3   )r   r   r   r   r   rN   r0   r   r   r)   r   
addPackager   r   r   r   r   rS   r   r   )
r:   r   r   r3   r4   r5   r   
swdb_grouprQ   r   r   r   r   r     s    zSolver._group_installc                sR    j jj|}|s"ttd|  j jj| t } fdd|j D |_|S )Nz&Module or Group '%s' is not installed.c                s   h | ]} j |j r|qS r   )r   r   )r   r   )r:   r   r   r     s    z'Solver._group_remove.<locals>.<setcomp>)rN   r0   rE   r   r   r   r   getPackages)r:   r   r   r   r   )r:   r   r     s    zSolver._group_removec       	         s  | j j|}| jjj|}g }|s@|r,|jn|}ttd| |sTttd| |j }t	dd |j
 D | j||| | jjj||j|j|}x(|j D ]}|j|jdtj|j  qW | jjj| t }fdd D |_ fddD |_fd	d D |_|S )
Nz&Module or Group '%s' is not installed.z&Module or Group '%s' is not available.c             S   s   g | ]}|j  qS r   )r   )r   rQ   r   r   r   r     s    z)Solver._group_upgrade.<locals>.<listcomp>Fc                s   h | ]}|j  kr|qS r   )r   )r   r   )r   r   r   r     s    z(Solver._group_upgrade.<locals>.<setcomp>c                s"   h | ]}|d d  D kr|qS )c             S   s   g | ]
}|j qS r   )r   )r   r   r   r   r   r     s    z3Solver._group_upgrade.<locals>.<setcomp>.<listcomp>r   )r   r   )new_setr   r   r     s    c                s   h | ]}|j  kr|qS r   )r   )r   r   )r   r   r   r     s    )r   r   rN   r0   rE   r)   r   r   r   r'   r   r   r   r   r   r   r   r   r   r   r   r   r   )	r:   r   r   r   r3   Zargumentr   rQ   r   r   )r   r   r   r     s(    zSolver._group_upgradec             C   sl   xf| j jD ]Z}| j j|}|jr
t|jt|j }|jj j j	|d}x|D ]}|j
j| qPW q
W d S )N)r   )Z	persistorr   r0   rW   r'   Z	full_listZpkg_excludeZsackZqueryZfiltermZ_goalr   )r:   baser0   Zp_grpZinstalled_pkg_namesZinstalled_pkgsr   r   r   r   '_exclude_packages_from_installed_groups  s    
z.Solver._exclude_packages_from_installed_groups)NTN)NTN)rF   rG   rH   r;   rJ   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   *  s   
#

r   )NTN)5Z
__future__r   r   r   Zlibdnf.transactionr   Zdnf.exceptionsr   Zdnf.i18nr   r   	functoolsr   r	   Zdnf.utilr#   rC   r   r   r>   Zloggingr   r!   r.   Z	getLoggerr   r   ZCompsPackageType_CONDITIONALr   ZCompsPackageType_DEFAULTr   ZCompsPackageType_MANDATORYr   ZCompsPackageType_OPTIONALr   Z	ALL_TYPESr   r   r-   r1   r6   objectr7   rK   re   rq   r~   r   r   r   r   r   r   r   r   r   r   <module>   sP   
 
!A'"f(C