a !c`@sddlmZddlmZddlmZddlZddlmZddlm Z m Z ddl m Z ddlZ ddlZ ddlZddlZddlZddlZddlZddlZddlZddlZddlZedZejjZejjZejjZ ejj!Z"eeBe Be"BZ#d d Z$d d Z%d dZ&ddZ'd*ddZ(Gddde)Z*Gddde)Z+Gddde)Z,Gddde,Z-Gddde,Z.Gddde,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)reducednfcCs"|j|j|jf}ttjtt|SN) categoriesgroups environmentsroperator__add__maplen)comps collectionsr-/usr/lib/python3.9/site-packages/dnf/comps.py_internal_comps_length6srcCs|dur dStj|Sr )r utilfirst)seqrrr_first_if_iterable;srcstjfdd|D}|r&|S|r>ttj}ntjttjdj}t }|D]X}||j rz| |q`|j dur||j r| |q`|j dur`||j r`| |q`|S)z;Return items from sqn matching either exactly or glob-wise.cs$h|]}|jks|jkr|qSr)nameid.0gpatternrr Ez_by_pattern..)flagsN)r Zi18nrrecompilefnmatch translatematchIsetraddrui_name)r!case_sensitiveZsqnexactr)retrrr r _by_patternAs      r1cCs|jdurtjS|jSr )Z display_ordersysmaxsize)grouprrr_fn_display_orderZsr5TcCs||||||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_idtypesexcludestrictexclude_groupsrrrinstall_or_skip^s r:c@s,eZdZdZddZeddZddZdS) _Langsz6Get all usable abbreviations for the current language.cCsd|_d|_dSr ) last_localecacheselfrrr__init__osz_Langs.__init__cCs"ttj}|dkrdSd|S)N)NNC.)locale getlocale LC_MESSAGESjoin)Zlclrrr_dotted_locale_strss z_Langs._dotted_locale_strcCsr|}|j|kr|jSg|_|g}|dkr6|d|D]*}t|D]}||jvrH|j|qHq:||_|jS)NrA)rGr<r=appendgettext _expand_lang)r?Zcurrent_localeZlocaleslZnlangrrrgetzs   z _Langs.getN)__name__ __module__ __qualname____doc__r@ staticmethodrGrLrrrrr;ks  r;c@s<eZdZdZdZdZdZddZddZddZ d d Z d S) CompsQuerycCs||_||_||_||_dSr )rhistorykindsstatus)r?rrUrVrWrrrr@szCompsQuery.__init__cCs\t}|j|j@r&|dd|D|j|j@rX|D] }|}|sHq6||q6|S)NcSsh|] }|jqSrrrirrrr"r#z)CompsQuery._get_groups..)r+rW AVAILABLEupdate INSTALLEDZgetCompsGroupItemr, getGroupId)r? available installedresultrZr4rrr _get_groupss  zCompsQuery._get_groupscCs\t}|j|j@r&|dd|D|j|j@rX|D] }|}|sHq6||q6|S)NcSsh|] }|jqSrrXrYrrrr"r#z'CompsQuery._get_envs..)r+rWr[r\r]ZgetCompsEnvironmentItemr,ZgetEnvironmentId)r?r_r`rarZenvrrr _get_envss  zCompsQuery._get_envsc Gstj}g|_g|_|D]}g}}|j|j@rd|j|}|j j |}| ||}|j ||j|j@r|j|}|j j |}|||}|j ||s|s|j|jkrtdt|}n.|j|jkrtdt|}ntdt|}t|q|S)N&Module or Group '%s' is not installed.&Module or Group '%s' is not available.z$Module or Group '%s' does not exist.)r rZBunchr r rV ENVIRONMENTSrenvironments_by_patternrUrcZsearch_by_patternrdextendGROUPSgroups_by_patternr4rbrWr]rrr[r) r?patternsrespatenvsgrpsr_r`msgrrrrLs.            zCompsQuery.getN) rMrNrOr[r]rgrjr@rbrdrLrrrrrRs  rRc@s<eZdZddZddZddZeddZed d Zd S) ForwardercCs||_||_dSr )_i_langs)r?iobjlangsrrrr@szForwarder.__init__cCs t|j|Sr )getattrrs)r?rrrr __getattr__szForwarder.__getattr__cCs.|jD]}||}|dur |Sq |Sr )rtrL)r?defaultZdctrKtrrr_ui_texts   zForwarder._ui_textcCs||j|jSr )r{ZdescZ desc_by_langr>rrrui_descriptionszForwarder.ui_descriptioncCs||j|jSr )r{rZ name_by_langr>rrrr-szForwarder.ui_nameN) rMrNrOr@rxr{propertyr|r-rrrrrrs rrcs8eZdZfddZddZddZeddZZS) Categorycstt|||||_dSr )superr~r@_group_factoryr?rurvZ group_factory __class__rrr@szCategory.__init__cCs0||j}|dur,d}t||j|jf|S)Nz no group '%s' from category '%s'rr ValueErrorrr?grp_idgrprqrrr _build_groups  zCategory._build_groupccs|jD]}||VqdSr ) group_idsr)r?rrrr groups_iters zCategory.groups_itercCs t|Sr )listrr>rrrr szCategory.groups) rMrNrOr@rrr}r __classcell__rrrrr~s  r~csLeZdZfddZddZddZddZed d Zed d Z Z S) Environmentcstt|||||_dSr )rrr@rrrrrr@szEnvironment.__init__cCs0||j}|dur,d}t||j|jf|S)Nz#no group '%s' from environment '%s'rrrrrrs  zEnvironment._build_groupc CsVg}|D]H}z|||WqtyN}zt|WYd}~qd}~00q|Sr )rHrrloggererror)r?Zidsr Zgierrr _build_groupss"zEnvironment._build_groupsc csZt|j|jD]D}z||VWqtyR}zt|WYd}~qd}~00qdSr ) itertoolschainr option_idsrrrr)r?rrrrrrs zEnvironment.groups_itercCs ||jSr )rrr>rrrmandatory_groupsszEnvironment.mandatory_groupscCs ||jSr )rrr>rrroptional_groupsszEnvironment.optional_groups) rMrNrOr@rrrr}rrrrrrrrs   rcsheZdZfddZddZeddZeddZd d Zed d Z ed dZ eddZ Z S)Groupcs$tt|||||_|j|_dSr )rrr@ _pkg_factoryryZselected)r?rurvZ pkg_factoryrrrr@"szGroup.__init__csfdd|jDS)Ncsg|]}|jkr|qSr)typerpkgtype_rr (r#z+Group._packages_of_type..)packages)r?rrrr_packages_of_type'szGroup._packages_of_typecCs |tjSr )rlibcompsPACKAGE_TYPE_CONDITIONALr>rrrconditional_packages*szGroup.conditional_packagescCs |tjSr )rrPACKAGE_TYPE_DEFAULTr>rrrdefault_packages.szGroup.default_packagescCst|j|jSr )rrrr>rrr packages_iter2szGroup.packages_itercCs |tjSr )rrPACKAGE_TYPE_MANDATORYr>rrrmandatory_packages6szGroup.mandatory_packagescCs |tjSr )rrPACKAGE_TYPE_OPTIONALr>rrroptional_packages:szGroup.optional_packagescCs|jjSr )rsZ uservisibler>rrrvisible>sz Group.visible) rMrNrOr@rr}rrrrrrrrrrrr s     rc@sLeZdZdZejeejeej e ej e iZ ddZeddZeddZdS) Packagez#Represents comps package data. :apicCs ||_dSr )rsr?Zipkgrrrr@LszPackage.__init__cCs|jjSr )rsrr>rrrrOsz Package.namecCs |j|jSr )_OPT_MAPrr>rrr option_typeTszPackage.option_typeN)rMrNrOrPrr CONDITIONALrDEFAULTr MANDATORYrOPTIONALrr@r}rrrrrrrBs rc@seZdZddZddZddZddZd d Zd d Zd dZ e ddZ d-ddZ d.ddZ ddZe ddZddZd/ddZd0ddZd d!Ze d"d#Zd$d%Zd1d&d'Zd2d(d)Zd*d+Zd,S)3CompscCst|_t|_dSr )rrrsr;rtr>rrrr@\s zComps.__init__cCs t|jSr )rrsr>rrr__len__`sz Comps.__len__cCst||j|jSr )r~rt _group_by_id)r?Z icategoryrrr_build_categorycszComps._build_categorycCst||j|jSr )rrtr)r?Z ienvironmentrrr_build_environmentfszComps._build_environmentcCst||j|jSr )rrt_build_package)r?ZigrouprrrriszComps._build_groupcCst|Sr )rrrrrrlszComps._build_packagecCsTt}z||Wn*tjy@|}td|Yn0|j|7_dS)N )rrZ fromxml_fZ ParserErrorZget_last_errorsrrFrs)r?fnrerrorsrrr_add_from_xml_filenameoszComps._add_from_xml_filenamecCs t|Sr )rcategories_iterr>rrrr xszComps.categoriesFcCs$tj|sJ|||}t|Sr )r ris_string_typecategories_by_patternr)r?r!r.Zcatsrrrcategory_by_pattern}s zComps.category_by_patterncCstj|sJt|||jSr )r rrr1r )r?r!r.rrrrszComps.categories_by_patterncsfddjjDS)Nc3s|]}|VqdSr )r)rcr>rr r#z(Comps.categories_iter..)rsr r>rr>rrszComps.categories_itercCst|tdSN)key)sortedenvironments_iterr5r>rrrr szComps.environmentscs.tjsJtjfdd|DS)Nc3s|]}|jkr|VqdSr rXrrXrrrr#z+Comps._environment_by_id..)r rrrr)r?rrrXr_environment_by_idszComps._environment_by_idcCs$tj|sJ|||}t|Sr )r rrrhr)r?r!r.rorrrenvironment_by_patterns zComps.environment_by_patterncCs4tj|sJt|}t|||}t|tdSr)r rrrrr1rr5)r?r!r.roZ found_envsrrrrhs  zComps.environments_by_patterncsfddjjDS)Nc3s|]}|VqdSr )r)rrr>rrrr#z*Comps.environments_iter..)rsr r>rr>rrszComps.environments_itercCst|tdSr)rrr5r>rrrr sz Comps.groupscs.tjsJtjfdd|DS)Nc3s|]}|jkr|VqdSr rXrid_rrrr#z%Comps._group_by_id..)r rrrr)r?rrrrrszComps._group_by_idcCs$tj|sJ|||}t|Sr )r rrrkrr?r!r.rprrrgroup_by_patterns zComps.group_by_patterncCs0tj|sJt||t|}t|tdSr)r rrr1rrrr5rrrrrkszComps.groups_by_patterncsfddjjDS)Nc3s|]}|VqdSr )rrr>rrrr#z$Comps.groups_iter..)rsr r>rr>rrszComps.groups_iterN)F)F)F)F)F)F)rMrNrOr@rrrrrrr}r rrrr rrrhrr rrrkrrrrrrYs0          rc@s,eZdZddZddZddZddZd S) CompsTransPkgcCstj|r&d|_||_d|_d|_n\t|tj j r\d|_| |_| t j@|_d|_n&|j|_|j|_|jt j@|_|j|_dS)NFT)r rr basearchonlyroptionalrequires isinstancelibdnf transactionZCompsGroupPackagegetNameZgetPackageTyperrr)r?Z pkg_or_namerrrr@s  zCompsTransPkg.__init__cCs0|j|jko.|j|jko.|j|jko.|j|jkSr )rrrrr?otherrrr__eq__s    zCompsTransPkg.__eq__cCs|jSr rr>rrr__str__szCompsTransPkg.__str__cCst|j|j|j|jfSr )hashrrrrr>rrr__hash__s zCompsTransPkg.__hash__N)rMrNrOr@rrrrrrrrsrc@seZdZddZddZddZeddZed d Z e j d d Z ed d Z e j dd Z eddZ e j ddZ eddZ e j ddZ dS)TransactionBunchcCs$t|_t|_t|_t|_dSr )r+_install _install_opt_remove_upgrader>rrrr@szTransactionBunch.__init__cCsN|j|j|j|j|j|j|j|jB|j|j|j|_|Sr )rr\rrrrrrr__iadd__s zTransactionBunch.__iadd__cCs(t|jt|jt|jt|jSr )rinstall install_optupgraderemover>rrrrszTransactionBunch.__len__cCs2|D](}t|tr||q|t|qdSr )rrr,)Zparamvalitemrrr _set_values  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. )rr>rrrrszTransactionBunch.installcCs||j|dSr )rrr?valuerrrr scCs|jS)zw Packages to be installed with strict=False - they will be skipped if they cannot be installed )rr>rrrr szTransactionBunch.install_optcCs||j|dSr )rrrrrrrscCs|jSr )rr>rrrrszTransactionBunch.removecCs||j|dSr )rrrrrrrscCs|jSr )rr>rrrr!szTransactionBunch.upgradecCs||j|dSr )rrrrrrr%sN)rMrNrOr@rrrQrr}rsetterrrrrrrrrs*        rc@seZdZddZeddZeddZegfddZd d Zd d Z dddZ ddZ ddZ dddZ ddZddZddZd S)SolvercCs||_||_||_dSr )rUrZ _reason_fn)r?rUrZ reason_fnrrrr@+szSolver.__init__cCsdd|jDS)NcSsh|] }|jqSrrX)rrrrrr"2r#z.Solver._mandatory_group_set..)r)rcrrr_mandatory_group_set0szSolver._mandatory_group_setcCs"dd|j|j|j|jDS)NcSsh|] }|qSrrrrrrr"6r#z+Solver._full_package_set..)rrrr)rrrr_full_package_set4s zSolver._full_package_setcsvfdd}t}|t@r*|||j|t@rB|||j|t@rZ|||j|t@rr|||j |S)Ncsfdd|DS)Ncsg|]}|jvr|qSrrrr7rrr=s z8Solver._pkgs_of_type..filter..r)pkgsrrrfilter<sz$Solver._pkgs_of_type..filter) r+rr\rrrrrrr)r4 pkg_typesr7rrrrr _pkgs_of_type:s zSolver._pkgs_of_typecCstj|sJ|jj|Sr )r rrrUr4Zis_removable_pkg)r?pkg_namerrr_removable_pkgKszSolver._removable_pkgcCstj|sJ|jj|Sr )r rrrUrcZis_removable_group)r?group_idrrr_removable_grpOszSolver._removable_grpNTc Cstj|sJ|j|}|s4ttdt||jj ||j |j |}|jj |t}|jD]:} |rz| j|vrzqf||| j|||7}|| jdtqf|jD]$} |r| j|vrq|| jdtq|S)Nz#Environment id '%s' does not exist.TF)r rrrrrrrrUrcnewrr-rrrr_group_installaddGrouprrr) r?env_idrr7r8r9 comps_envswdb_envtrans comps_grouprrr_environment_installSs"   zSolver._environment_installcCstj|dusJ|jj|}|s6ttd||jj|t }t dd| D}|D]}| |stqd|| |7}qd|S)NTz%Environment id '%s' is not installed.cSsg|] }|qSrr^rYrrrrsr#z.Solver._environment_remove..)r rrrUrcrLrrrrr+ getGroupsr _group_remove)r?rrrrrrrr_environment_removejs zSolver._environment_removecCsFtj|sJ|j|}|jj|}|s>tt d||sRtt d|t dd| D}| }|jj |j|j|j|}t}|jD]R}|j|vr|jj|jr|||j7}n|||j|7}||jdtq|jD]B}|j|vr"|jj|jr"|||j7}||jdtq|jj||S)Nz"Environment '%s' is not installed.z"Environment '%s' is not available.cSsg|] }|qSrrrYrrrrr#z/Solver._environment_upgrade..TF)r rrrrrUrcrLrrr+rgetPackageTypesrrrr-rrr4_group_upgraderrrrrr)r?rrrold_setrrrrrr_environment_upgradezs.    zSolver._environment_upgradec Cstj|sJ|j|}|s4ttdt||jj ||j |j |}| D]}||j dtj|jqT|jj |t} |r| j|j||gdn| j|j||gd| S)NzGroup id '%s' does not exist.Fr)r rrrrrrrrUr4rrr-r addPackagerrrrrr\rr) r?rrr7r8r9r swdb_grouprZrrrrrs  zSolver._group_installcsbtj|sJjj|}|s2ttd|jj|t }fdd| D|_|S)Nrecsh|]}|r|qSr)rrrr>rrr"r#z'Solver._group_remove..) r rrrUr4rLrrrr getPackages)r?rr rrr>rrszSolver._group_removec s"tj|sJ|j|}|jj|}g}|sP|r<|jn|}t t d||sdt t d|| }t dd| D|||||jj||j|j|}|D]}||jdtj|jq|jj|t}fddD|_fddD|_fd dD|_|S) NrerfcSsg|] }|qSrrrYrrrrr#z)Solver._group_upgrade..Fcsh|]}|jvr|qSrrrr rrr"r#z(Solver._group_upgrade..cs"h|]}|ddDvr|qS)cSsg|] }|jqSrrrrrrrr#z3Solver._group_upgrade...r)rr)new_setrrr"scsh|]}|jvr|qSrrrrrrr"r#)r rrrrrUr4rLr-rrrr+rrrrrr rrrrrrr) r?rrr r7argumentrrZrr)rr rr s*  zSolver._group_upgradecCsd|jjD]V}|j|}|jrt|jt|j}|jj |d}|D]}|j |qLqdS)Nr) Z persistorr r4r`r+Z full_listZ pkg_excludeZsackqueryZfiltermZ_goalr)r?baser4Zp_grpZinstalled_pkg_namesZinstalled_pkgsrrrr'_exclude_packages_from_installed_groupss  z.Solver._exclude_packages_from_installed_groups)NTN)NTN)rMrNrOr@rQrrrrrrrr rrr rrrrrr*s    #  r)NTN)5Z __future__rrrZlibdnf.transactionrZdnf.exceptionsrZdnf.i18nrr functoolsrr Zdnf.utilr'rIrrrCZloggingrr%r2Z getLoggerrrZCompsPackageType_CONDITIONALrZCompsPackageType_DEFAULTrZCompsPackageType_MANDATORYrZCompsPackageType_OPTIONALrZ ALL_TYPESrrr1r5r:objectr;rRrrr~rrrrrrrrrrrsR       !A'"f(C