509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
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rÎtdƒt|ƒ }n.| j| jkrìt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r²qž|j|	jdtƒ qžW |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ƒ qˆW xL|jD ]B}|j|k�r| jjj|jƒ�r|| j|jƒ7 }|j|jdtƒ qæW | 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 ƒ q¢W | 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