3 ÌÐgô`ã@sÄddlmZddlmZddlmZddlZddlmZddlm Z m Z ddl m Z ddlZ ddlZ ddlZddlZddlZddlZddlZddlZddlZddlZddlZejdƒZejjZejjZejjZ ejj!Z"eeBe Be"BZ#d d „Z$d d „Z%d d„Z&dd„Z'd*dd„Z(Gdd„de)ƒZ*Gdd„de)ƒZ+Gdd„de)ƒZ,Gdd„de,ƒZ-Gdd„de,ƒZ.Gdd„de,ƒZ/Gd d!„d!e,ƒZ0Gd"d#„d#e)ƒZ1Gd$d%„d%e)ƒZ2Gd&d'„d'e)ƒZ3Gd(d)„d)e)ƒZ4dS)+é)Úabsolute_import)Úprint_function)Úunicode_literalsN)Ú CompsError)Ú_Úucd)ÚreduceÚdnfcCs"|j|j|jf}ttjtt|ƒƒS)N)Ú categoriesÚgroupsÚ environmentsrÚoperatorÚ__add__ÚmapÚlen)ÚcompsÚ collections©rú/usr/lib/python3.6/comps.pyÚ_internal_comps_length6srcCs|dkr dStjj|ƒS)N)r ÚutilÚfirst)ÚseqrrrÚ_first_if_iterable;srcsÂtjjˆƒ‰‡fdd„|Dƒ}|r&|S|r>tjtjˆƒƒj}ntjtjˆƒtjd�j}t ƒ}x`|D]X}||j ƒr||j |ƒqb|j dk rœ||j ƒrœ|j |ƒqb|j dk rb||j ƒrb|j |ƒqbW|S)z;Return items from sqn matching either exactly or glob-wise.cs$h|]}|jˆks|jˆkr|’qSr)ÚnameÚid)Ú.0Úg)Úpatternrrú Esz_by_pattern..)ÚflagsN)r Zi18nrÚreÚcompileÚfnmatchÚ translateÚmatchÚIÚsetrÚaddrÚui_name)rÚcase_sensitiveZsqnÚexactr%Úretrr)rrÚ _by_patternAs      r-cCs|jdkrtjS|jS)N)Z display_orderÚsysÚmaxsize)ÚgrouprrrÚ_fn_display_orderZsr1TcCs||||||ƒ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_groupsrrrÚinstall_or_skip^s r6c@s,eZdZdZdd„Zedd„ƒZdd„ZdS) Ú_Langsz6Get all usable abbreviations for the current language.cCsd|_d|_dS)N)Ú last_localeÚcache)ÚselfrrrÚ__init__osz_Langs.__init__cCs"tjtjƒ}|dkrdSdj|ƒS)NÚCÚ.)NN)ÚlocaleZ getlocaleÚ LC_MESSAGESÚjoin)ZlclrrrÚ_dotted_locale_strss z_Langs._dotted_locale_strcCsz|jƒ}|j|kr|jSg|_|g}|dkr6|jdƒx6|D].}x(tj|ƒD]}||jkrL|jj|ƒqLWq.)r'rPÚ AVAILABLEÚupdateÚ INSTALLEDZgetCompsGroupItemr(Ú getGroupId)r:Ú availableÚ installedÚresultrQr0rrrÚ _get_groupsšs   zCompsQuery._get_groupscCs`tƒ}|j|j@r&|jdd„|Dƒƒ|j|j@r\x(|D] }|jƒ}|sJq8|j|jƒƒq8W|S)NcSsh|] }|j’qSr)r)rrQrrrr©sz'CompsQuery._get_envs..)r'rPrRrSrTZgetCompsEnvironmentItemr(ZgetEnvironmentId)r:rVrWrXrQÚenvrrrÚ _get_envs¦s   zCompsQuery._get_envsc Gs tjjƒ}g|_g|_xð|D]è}g}}|j|j@rf|jj|ƒ}|j j j |ƒ}|j ||ƒ}|jj |ƒ|j|j@r¤|jj|ƒ}|j jj |ƒ}|j||ƒ}|jj |ƒ| o®| r|j|jkrÎtdƒt|ƒ}n.|j|jkrìtdƒt|ƒ}ntdƒt|ƒ}t|ƒ‚qW|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 rZBunchr r rOÚ ENVIRONMENTSrÚenvironments_by_patternrNrZZsearch_by_patternr[ÚextendÚGROUPSÚgroups_by_patternr0rYrPrTrrrRr) r:ZpatternsÚresZpatÚenvsÚgrpsrVrWÚmsgrrrrE²s.              zCompsQuery.getN) rFrGrHrRrTr\r_r;rYr[rErrrrrKŒs  rKc@s<eZdZdd„Zdd„Zdd„Zedd„ƒZed d „ƒZd S) Ú ForwardercCs||_||_dS)N)Ú_iÚ_langs)r:ÚiobjÚlangsrrrr;ÎszForwarder.__init__cCs t|j|ƒS)N)Úgetattrrf)r:rrrrÚ __getattr__ÒszForwarder.__getattr__cCs.x(|jjƒD]}|j|ƒ}|dk r |Sq W|S)N)rgrE)r:ÚdefaultZdctrDÚtrrrÚ_ui_textÕs  zForwarder._ui_textcCs|j|j|jƒS)N)rnZdescZ desc_by_lang)r:rrrÚui_descriptionÜszForwarder.ui_descriptioncCs|j|j|jƒS)N)rnrZ name_by_lang)r:rrrr)àszForwarder.ui_nameN) rFrGrHr;rkrnÚpropertyror)rrrrreÍs  recs8eZdZ‡fdd„Zdd„Zdd„Zedd„ƒZ‡ZS) ÚCategorycstt|ƒj||ƒ||_dS)N)Úsuperrqr;Ú_group_factory)r:rhriÚ group_factory)Ú __class__rrr;æszCategory.__init__cCs0|j|jƒ}|dkr,d}t||j|jfƒ‚|S)Nz no group '%s' from category '%s')rsrÚ ValueErrorr)r:Úgrp_idÚgrprdrrrÚ _build_groupês  zCategory._build_groupccs x|jD]}|j|ƒVqWdS)N)Ú group_idsry)r:rwrrrÚ groups_iterñs zCategory.groups_itercCs t|jƒƒS)N)Úlistr{)r:rrrr õszCategory.groups) rFrGrHr;ryr{rpr Ú __classcell__rr)rurrqäs rqcsLeZdZ‡fdd„Zdd„Zdd„Zdd„Zed d „ƒZed d „ƒZ ‡Z S) Ú Environmentcstt|ƒj||ƒ||_dS)N)rrr~r;rs)r:rhrirt)rurrr;üszEnvironment.__init__cCs0|j|jƒ}|dkr,d}t||j|jfƒ‚|S)Nz#no group '%s' from environment '%s')rsrrvr)r:rwrxrdrrrrys  zEnvironment._build_groupcCsXg}xN|D]F}y|j|j|ƒƒWq tk rN}ztj|ƒWYdd}~Xq Xq W|S)N)rBryrvÚloggerÚerror)r:Zidsr ZgiÚerrrÚ _build_groupss  zEnvironment._build_groupsccs\xVtj|j|jƒD]B}y|j|ƒVWqtk rR}ztj|ƒWYdd}~XqXqWdS)N)Ú itertoolsÚchainrzÚ option_idsryrvrr€)r:rwr�rrrr{s zEnvironment.groups_itercCs |j|jƒS)N)r‚rz)r:rrrÚmandatory_groupsszEnvironment.mandatory_groupscCs |j|jƒS)N)r‚r…)r:rrrÚoptional_groupsszEnvironment.optional_groups) rFrGrHr;ryr‚r{rpr†r‡r}rr)rurr~ùs    r~csheZdZ‡fdd„Zdd„Zedd„ƒZedd„ƒZd d „Zed d „ƒZ ed d„ƒZ edd„ƒZ ‡Z S)ÚGroupcs$tt|ƒj||ƒ||_|j|_dS)N)rrrˆr;Ú _pkg_factoryrlZselected)r:rhriZ pkg_factory)rurrr;"szGroup.__init__cs‡fdd„|jDƒS)Ncsg|]}|jˆkr|‘qSr)Útype)rÚpkg)Útype_rrú (sz+Group._packages_of_type..)Úpackages)r:rŒr)rŒrÚ_packages_of_type'szGroup._packages_of_typecCs |jtjƒS)N)r�ÚlibcompsÚPACKAGE_TYPE_CONDITIONAL)r:rrrÚconditional_packages*szGroup.conditional_packagescCs |jtjƒS)N)r�r�ÚPACKAGE_TYPE_DEFAULT)r:rrrÚdefault_packages.szGroup.default_packagescCst|j|jƒS)N)rr‰rŽ)r:rrrÚ packages_iter2szGroup.packages_itercCs |jtjƒS)N)r�r�ÚPACKAGE_TYPE_MANDATORY)r:rrrÚmandatory_packages6szGroup.mandatory_packagescCs |jtjƒS)N)r�r�ÚPACKAGE_TYPE_OPTIONAL)r:rrrÚoptional_packages:szGroup.optional_packagescCs|jjS)N)rfZ uservisible)r:rrrÚvisible>sz Group.visible) rFrGrHr;r�rpr’r”r•r—r™ršr}rr)rurrˆ s     rˆc@sLeZdZdZejeejeej e ej e iZ dd„Zedd„ƒZedd„ƒZdS) ÚPackagez#Represents comps package data. :apicCs ||_dS)N)rf)r:Úipkgrrrr;LszPackage.__init__cCs|jjS)N)rfr)r:rrrrOsz Package.namecCs |j|jS)N)Ú_OPT_MAPrŠ)r:rrrÚ option_typeTszPackage.option_typeN)rFrGrHrIr�r‘Ú CONDITIONALr“ÚDEFAULTr–Ú MANDATORYr˜ÚOPTIONALr�r;rprržrrrrr›Bs  r›c@sÌeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z e dd„ƒZ d-dd„Z d.dd„Z dd„Ze dd„ƒZdd„Zd/dd„Zd0dd„Zd d!„Ze d"d#„ƒZd$d%„Zd1d&d'„Zd2d(d)„Zd*d+„Zd,S)3ÚCompscCstjƒ|_tƒ|_dS)N)r�r£rfr7rg)r:rrrr;\s zComps.__init__cCs t|jƒS)N)rrf)r:rrrÚ__len__`sz Comps.__len__cCst||j|jƒS)N)rqrgÚ _group_by_id)r:Z icategoryrrrÚ_build_categorycszComps._build_categorycCst||j|jƒS)N)r~rgr¥)r:Z ienvironmentrrrÚ_build_environmentfszComps._build_environmentcCst||j|jƒS)N)rˆrgÚ_build_package)r:ZigrouprrrryiszComps._build_groupcCst|ƒS)N)r›)r:rœrrrr¨lszComps._build_packagec CsVtjƒ}y|j|ƒWn,tjk rB|jƒ}tdj|ƒƒ‚YnX|j|7_dS)Nú )r�r£Z fromxml_fZ ParserErrorZget_last_errorsrr@rf)r:ÚfnrÚerrorsrrrÚ_add_from_xml_filenameoszComps._add_from_xml_filenamecCs t|jƒƒS)N)r|Úcategories_iter)r:rrrr xszComps.categoriesFcCs|j||ƒ}t|ƒS)N)Úcategories_by_patternr)r:rr*ZcatsrrrÚcategory_by_pattern}s zComps.category_by_patterncCst|||jƒS)N)r-r )r:rr*rrrr®ƒszComps.categories_by_patterncs‡fdd„ˆjjDƒS)Nc3s|]}ˆj|ƒVqdS)N)r¦)rÚc)r:rrú Šsz(Comps.categories_iter..)rfr )r:r)r:rr­ˆszComps.categories_itercCst|jƒtd�S)N)Úkey)ÚsortedÚenvironments_iterr1)r:rrrr ŒszComps.environmentscstjj‡fdd„|jƒDƒƒS)Nc3s|]}|jˆkr|VqdS)N)r)rr)rrrr±“sz+Comps._environment_by_id..)r rrr´)r:rr)rrÚ_environment_by_id‘szComps._environment_by_idcCs|j||ƒ}t|ƒS)N)r]r)r:rr*rbrrrÚenvironment_by_pattern•s zComps.environment_by_patterncCs$t|jƒƒ}t|||ƒ}t|td�S)N)r²)r|r´r-r³r1)r:rr*rbZ found_envsrrrr]›s  zComps.environments_by_patterncs‡fdd„ˆjjDƒS)Nc3s|]}ˆj|ƒVqdS)N)r§)rr�)r:rrr±¤sz*Comps.environments_iter..)rfr )r:r)r:rr´¢szComps.environments_itercCst|jƒtd�S)N)r²)r³r{r1)r:rrrr ¦sz Comps.groupscstjj‡fdd„|jƒDƒƒS)Nc3s|]}|jˆkr|VqdS)N)r)rr)Úid_rrr±­sz%Comps._group_by_id..)r rrr{)r:r·r)r·rr¥«szComps._group_by_idcCs|j||ƒ}t|ƒS)N)r`r)r:rr*rcrrrÚgroup_by_pattern¯s zComps.group_by_patterncCs t||t|jƒƒƒ}t|td�S)N)r²)r-r|r{r³r1)r:rr*rcrrrr`µszComps.groups_by_patterncs‡fdd„ˆjjDƒS)Nc3s|]}ˆj|ƒVqdS)N)ry)rr)r:rrr±½sz$Comps.groups_iter..)rfr )r:r)r:rr{»szComps.groups_iterN)F)F)F)F)F)F)rFrGrHr;r¤r¦r§ryr¨r¬rpr r¯r®r­r rµr¶r]r´r r¥r¸r`r{rrrrr£Ys*         r£c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) Ú CompsTransPkgcCs†tjj|ƒr&d|_||_d|_d|_n\t|tj j ƒr\d|_|j ƒ|_|j ƒt j@|_d|_n&|j|_|j|_|jt j@|_|j|_dS)NFT)r rZis_string_typeÚ basearchonlyrÚoptionalÚrequiresÚ isinstanceÚlibdnfÚ transactionZCompsGroupPackageÚgetNameZgetPackageTyper�r˜rŠ)r:Z pkg_or_namerrrr;Às  zCompsTransPkg.__init__cCs0|j|jko.|j|jko.|j|jko.|j|jkS)N)rrºr»r¼)r:ÚotherrrrÚ__eq__Øs   zCompsTransPkg.__eq__cCs|jS)N)r)r:rrrÚ__str__ÞszCompsTransPkg.__str__cCst|j|j|j|jfƒS)N)Úhashrrºr»r¼)r:rrrÚ__hash__ászCompsTransPkg.__hash__N)rFrGrHr;rÂrÃrÅrrrrr¹¿sr¹c@s˜eZdZdd„Zdd„Zdd„Zedd„ƒZed d „ƒZ e j d d „ƒZ ed d „ƒZ e j dd „ƒZ edd„ƒZ e j dd„ƒZ edd„ƒZ e j dd„ƒZ dS)ÚTransactionBunchcCs$tƒ|_tƒ|_tƒ|_tƒ|_dS)N)r'Ú_installÚ _install_optÚ_removeÚ_upgrade)r:rrrr;èszTransactionBunch.__init__cCsN|jj|jƒ|jj|jƒ|jj|jƒ|j|jB|j|j|j|_|S)N)rÇrSrÈrÊrÉ)r:rÁrrrÚ__iadd__îs  zTransactionBunch.__iadd__cCs(t|jƒt|jƒt|jƒt|jƒS)N)rÚinstallÚ install_optÚupgradeÚremove)r:rrrr¤öszTransactionBunch.__len__cCs6x0|D](}t|tƒr |j|ƒq|jt|ƒƒqWdS)N)r½r¹r()ZparamÚvalÚitemrrrÚ _set_valueùs   zTransactionBunch._set_valuecCs|jS)z• Packages to be installed with strict=True - transaction will fail if they cannot be installed due to dependency errors etc. )rÇ)r:rrrrÌszTransactionBunch.installcCs|j|j|ƒdS)N)rÒrÇ)r:ÚvaluerrrrÌ scCs|jS)zw Packages to be installed with strict=False - they will be skipped if they cannot be installed )rÈ)r:rrrrÍ szTransactionBunch.install_optcCs|j|j|ƒdS)N)rÒrÈ)r:rÓrrrrÍscCs|jS)N)rÉ)r:rrrrÏszTransactionBunch.removecCs|j|j|ƒdS)N)rÒrÉ)r:rÓrrrrÏscCs|jS)N)rÊ)r:rrrrÎ!szTransactionBunch.upgradecCs|j|j|ƒdS)N)rÒrÊ)r:rÓrrrrÎ%sN)rFrGrHr;rËr¤rJrÒrprÌÚsetterrÍrÏrÎrrrrrÆçs     rÆc@sˆeZdZdd„Zedd„ƒZedd„ƒZegfdd„ƒZd d „Zd d „Z ddd„Z dd„Z dd„Z ddd„Z dd„Zdd„Zdd„Zd S)ÚSolvercCs||_||_||_dS)N)rNrZ _reason_fn)r:rNrZ reason_fnrrrr;+szSolver.__init__cCsdd„|jDƒS)NcSsh|] }|j’qSr)r)rrxrrrr2sz.Solver._mandatory_group_set..)r†)rZrrrÚ_mandatory_group_set0szSolver._mandatory_group_setcCs"dd„|j|j|j|jDƒS)NcSsh|] }|jƒ’qSr)rÀ)rr‹rrrr6sz+Solver._full_package_set..)r—r”r™r’)rxrrrÚ_full_package_set4szSolver._full_package_setcsv‡fdd„}tƒ}|t@r*|j||jƒƒ|t@rB|j||jƒƒ|t@rZ|j||jƒƒ|t@rr|j||j ƒƒ|S)Ncs‡fdd„|DƒS)Ncsg|]}|jˆkr|‘qSr)r)rr‹)r3rrr�=sz8Solver._pkgs_of_type..filter..r)Úpkgs)r3rrÚfilter<sz$Solver._pkgs_of_type..filter) r'r¡rSr—r r”r¢r™rŸr’)r0Ú pkg_typesr3rÙrØr)r3rÚ _pkgs_of_type:s zSolver._pkgs_of_typecCs|jjj|ƒS)N)rNr0Zis_removable_pkg)r:Zpkg_namerrrÚ_removable_pkgKszSolver._removable_pkgcCs|jjj|ƒS)N)rNrZZis_removable_group)r:Úgroup_idrrrÚ_removable_grpOszSolver._removable_grpNTc CsÊ|jj|ƒ}|s$ttdƒt|ƒƒ‚|jjj||j|j |ƒ}|jjj |ƒt ƒ}xD|j D]:} |rl| j |krlqX||j| j |||ƒ7}|j| j dtƒqXWx.|jD]$} |r²| j |kr²qž|j| j dtƒqžW|S)Nz#Environment id '%s' does not exist.TF)rrµrrrrNrZÚnewrr)rÌrÆr†rÚ_group_installÚaddGroupr¡r‡r¢) r:Úenv_idrÚr3r4r5Ú comps_envÚswdb_envÚtransÚ comps_grouprrrÚ_environment_installSs    zSolver._environment_installcCsx|jjj|ƒ}|s"ttdƒ|ƒ‚|jjj|ƒtƒ}tdd„|jƒDƒƒ}x&|D]}|j |ƒsbqR||j |ƒ7}qRW|S)Nz%Environment id '%s' is not installed.cSsg|] }|jƒ‘qSr)rU)rrQrrrr�ssz.Solver._environment_remove..) rNrZrErrrÏrÆr'Ú getGroupsrÞÚ _group_remove)r:rârärårzrÝrrrÚ_environment_removejs  zSolver._environment_removecCs>|jj|ƒ}|jjj|ƒ}|s.ttdƒ|ƒ‚|sBttdƒ|ƒ‚tdd„|jƒDƒƒ}|j ƒ}|jjj |j |j |j |ƒ}tƒ}x\|jD]R}|j |kr¸|jjj|j ƒrÊ||j|j ƒ7}n||j|j |ƒ7}|j|j dtƒqˆWxL|jD]B}|j |k�r|jjj|j ƒ�r||j|j ƒ7}|j|j dtƒqæW|jjj|ƒ|S)Nz"Environment '%s' is not installed.z"Environment '%s' is not available.cSsg|] }|jƒ‘qSr)rU)rrQrrrr�ƒsz/Solver._environment_upgrade..TF)rrµrNrZrErrr'rèÚgetPackageTypesrßrrr)rÆr†r0Ú_group_upgraderàrár¡r‡r¢rÎ)r:rârãräÚold_setrÚrårærrrÚ_environment_upgradezs,    zSolver._environment_upgradec Cs´|jj|ƒ}|s$ttdƒt|ƒƒ‚|jjj||j|j |ƒ}x(|j ƒD]}|j |jdt j |jƒqFW|jjj|ƒtƒ} |r˜| jj|j||gd�ƒn| jj|j||gd�ƒ| S)NzGroup id '%s' does not exist.F)r3)rr¥rrrrNr0rßrr)r•Ú addPackager›r�rŠrÌrÆrSrÛrÍ) r:rÝrÚr3r4r5ræÚ swdb_grouprQrårrrrà�s zSolver._group_installcsRˆjjj|ƒ}|s"ttdƒ|ƒ‚ˆjjj|ƒtƒ}‡fdd„|jƒDƒ|_|S)Nz&Module or Group '%s' is not installed.csh|]}ˆj|jƒƒr|’qSr)rÜrÀ)rr‹)r:rrr·sz'Solver._group_remove..)rNr0rErrrÏrÆÚ getPackages)r:rÝrðrår)r:rré°szSolver._group_removec s|jj|ƒ}|jjj|ƒ}g}|s@|r,|jn|}ttdƒ|ƒ‚|sTttdƒ|ƒ‚|jƒ}t dd„|j ƒDƒƒ‰|j |||ƒ‰|jjj ||j |j|ƒ}x(|jƒD]}|j|j dtj|jƒq¢W|jjj|ƒtƒ}‡fdd„ˆDƒ|_‡fdd„ˆDƒ|_‡fd d„ˆDƒ|_|S) Nz&Module or Group '%s' is not installed.z&Module or Group '%s' is not available.cSsg|] }|jƒ‘qSr)rÀ)rrQrrrr�Æsz)Solver._group_upgrade..Fcsh|]}|jˆkr|’qSr)r)rr‹)rírrrÐsz(Solver._group_upgrade..cs"h|]}|dd„ˆDƒkr|’qS)cSsg|] }|j‘qSr)r)rr‹rrrr�Òsz3Solver._group_upgrade...r)rr)Únew_setrrrÑscsh|]}|jˆkr|’qSr)r)rr‹)rírrrÓs)rr¥rNr0rEr)rrrër'rñrÛrßrr•rïr›r�rŠrÎrÆrÌrÏ) r:rÝrærðr3ZargumentrÚrQrår)ròrírrìºs( zSolver._group_upgradecCslxf|jjD]Z}|jj|ƒ}|jr t|jƒt|jƒ}|jjƒjƒj |d�}x|D]}|j j |ƒqPWq WdS)N)r) Z persistorr r0rWr'Z full_listZ pkg_excludeZsackZqueryZfiltermZ_goalrÌ)r:Úbaser0Zp_grpZinstalled_pkg_namesZinstalled_pkgsr‹rrrÚ'_exclude_packages_from_installed_groupsÖs  z.Solver._exclude_packages_from_installed_groups)NTN)NTN)rFrGrHr;rJrÖr×rÛrÜrÞrçrêrîràrérìrôrrrrrÕ*s   #  rÕ)NTN)5Z __future__rrrZlibdnf.transactionr¾Zdnf.exceptionsrZdnf.i18nrrÚ functoolsrr Zdnf.utilr#rCrƒr�r>Zloggingr r!r.Z getLoggerrr¿ZCompsPackageType_CONDITIONALrŸZCompsPackageType_DEFAULTr ZCompsPackageType_MANDATORYr¡ZCompsPackageType_OPTIONALr¢Z ALL_TYPESrrr-r1r6Úobjectr7rKrerqr~rˆr›r£r¹rÆrÕrrrrÚsP       !A'"f(C