[/\c@@ssddlmZddlmZddlmZddlZddlmZddlm Z m Z ddl m Z ddlZ ddlZ ddlZddlZddlZddlZddlZddlZddlZddlZddlZejdZejjZejjZejjZ ejj!Z"eeBe Be"BZ#d Z$d Z%d Z&d Z'de)dd Z*de+fdYZ,de+fdYZ-de+fdYZ.de.fdYZ/de.fdYZ0de.fdYZ1de.fdYZ2de+fdYZ3de+fdYZ4d e+fd!YZ5d"e+fd#YZ6dS($i(tabsolute_import(tprint_function(tunicode_literalsN(t CompsError(t_tucd(treduceudnfcC@s1|j|j|jf}ttjtt|S(N(t categoriestgroupst environmentsRtoperatort__add__tmaptlen(tcompst collections((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt_internal_comps_length6scC@s |dkrdStjj|S(N(tNonetdnftutiltfirst(tseq((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt_first_if_iterable;s c@stjjfd|D}|r2|S|rVtjtjjn$tjtjdtjjfd|DS(u;Return items from sqn matching either exactly or glob-wise.c@s4h|]*}|jks*|jkr|qS((tnametid(t.0tg(tpattern(s-/usr/lib/python2.7/site-packages/dnf/comps.pys Es tflagsc@sCh|]9}|js9|js9|jr|qS((RRtui_name(RR(tmatch(s-/usr/lib/python2.7/site-packages/dnf/comps.pys Ns ( Rti18nRtretcompiletfnmatcht translateRtI(Rtcase_sensitivetsqntexact((RRs-/usr/lib/python2.7/site-packages/dnf/comps.pyt _by_patternAs$cC@s|jdkrtjS|jS(N(t display_orderRtsystmaxsize(tgroup((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt_fn_display_orderQscC@s]y||||||SWn<tjjk rX}tjdt|d tdnXdS(uEither mark in persistor as installed given `grp_or_env` (group or environment) or skip it (if it's already installed). `install_fnc` has to be Solver._group_install or Solver._environment_install. u%s, %siu skipping.N(RRRtloggertwarningRR(t install_fnct grp_or_env_idttypestexcludetstricttexclude_groupste((s-/usr/lib/python2.7/site-packages/dnf/comps.pytinstall_or_skipUst_LangscB@s/eZdZdZedZdZRS(u6Get all usable abbreviations for the current language.cC@sd|_d|_dS(N(Rt last_localetcache(tself((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt__init__fs cC@s/tjtj}|dkr"dSdj|S(NuCu.(NN(tlocalet getlocalet LC_MESSAGESRtjoin(tlcl((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt_dotted_locale_strjs cC@s|j}|j|kr"|jSg|_|g}|dkrP|jdnxJ|D]B}x9tj|D](}||jkrm|jj|qmqmWqWW||_|jS(NuC(RBR9R:tappendtgettextt _expand_lang(R;tcurrent_localetlocalestltnlang((s-/usr/lib/python2.7/site-packages/dnf/comps.pytgetqs      (t__name__t __module__t__doc__R<t staticmethodRBRJ(((s-/usr/lib/python2.7/site-packages/dnf/comps.pyR8bs t CompsQuerycB@sDeZdZdZdZdZdZdZdZdZ RS(iicC@s(||_||_||_||_dS(N(Rthistorytkindststatus(R;RRPRQRR((s-/usr/lib/python2.7/site-packages/dnf/comps.pyR<s   cC@st}|j|j@r3|jd|Dn|j|j@rx<|D]1}|j}|shqJn|j|jqJWn|S(NcS@sh|]}|jqS((R(Rti((s-/usr/lib/python2.7/site-packages/dnf/comps.pys s (tsetRRt AVAILABLEtupdatet INSTALLEDtgetCompsGroupItemtaddt getGroupId(R;t availablet installedtresultRSR,((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt _get_groupss   cC@st}|j|j@r3|jd|Dn|j|j@rx<|D]1}|j}|shqJn|j|jqJWn|S(NcS@sh|]}|jqS((R(RRS((s-/usr/lib/python2.7/site-packages/dnf/comps.pys s (RTRRRURVRWtgetCompsEnvironmentItemRYtgetEnvironmentId(R;R[R\R]RStenv((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt _get_envss   c G@sVtjj}g|_g|_x.|D]&}g}}|j|j@r|jj|}|j j j |}|j ||}|jj |n|j|j@r|jj|}|j jj |}|j||}|jj |n| r(| r(|j|jkr)tdt|}ntdt|}t|q(q(W|S(NuGroup '%s' is not installed.uGroup '%s' does not exist.(RRtBunchR RRQt ENVIRONMENTSRtenvironments_by_patternRPRatsearch_by_patternRbtextendtGROUPStgroups_by_patternR,R^RRRWRRR( R;tpatternstrestpattenvstgrpsR[R\tmsg((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRJs*    ( RKRLRURWRdRhR<R^RbRJ(((s-/usr/lib/python2.7/site-packages/dnf/comps.pyROs  t ForwardercB@sAeZdZdZdZedZedZRS(cC@s||_||_dS(N(t_it_langs(R;tiobjtlangs((s-/usr/lib/python2.7/site-packages/dnf/comps.pyR<s cC@st|j|S(N(tgetattrRq(R;R((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt __getattr__scC@s=x6|jjD]%}|j|}|dk r|SqW|S(N(RrRJR(R;tdefaulttdctRHtt((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt_ui_texts  cC@s|j|j|jS(N(Rztdesct desc_by_lang(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pytui_descriptionscC@s|j|j|jS(N(RzRt name_by_lang(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRs(RKRLR<RvRztpropertyR}R(((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRps    tCategorycB@s2eZdZdZdZedZRS(cC@s&tt|j||||_dS(N(tsuperRR<t_group_factory(R;RsRtt group_factory((s-/usr/lib/python2.7/site-packages/dnf/comps.pyR<scC@sG|j|j}|dkrCd}t||j|jfn|S(Nu no group '%s' from category '%s'(RRRt ValueErrorR(R;tgrp_idtgrpRo((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt _build_groups  cc@s&x|jD]}|j|Vq WdS(N(t group_idsR(R;R((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt groups_iterscC@st|jS(N(tlistR(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRs(RKRLR<RRRR(((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRs   t EnvironmentcB@sJeZdZdZdZdZedZedZRS(cC@s&tt|j||||_dS(N(RRR<R(R;RsRtR((s-/usr/lib/python2.7/site-packages/dnf/comps.pyR<scC@sG|j|j}|dkrCd}t||j|jfn|S(Nu#no group '%s' from environment '%s'(RRRRR(R;RRRo((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRs  cC@sXg}xK|D]C}y|j|j|Wq tk rO}tj|q Xq W|S(N(RCRRR.terror(R;tidsRtgiR6((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt _build_groupss cc@s\xUtj|j|jD];}y|j|VWqtk rS}tj|qXqWdS(N(t itertoolstchainRt option_idsRRR.R(R;RR6((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRs cC@s|j|jS(N(RR(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pytmandatory_groups scC@s|j|jS(N(RR(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pytoptional_groupss( RKRLR<RRRRRR(((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRs    tGroupcB@sneZdZdZedZedZdZedZedZ edZ RS(cC@s/tt|j||||_t|_dS(N(RRR<t _pkg_factorytFalsetselected(R;RsRtt pkg_factory((s-/usr/lib/python2.7/site-packages/dnf/comps.pyR<s cC@s)g|jD]}|j|kr |^q S(N(tpackagesttype(R;ttype_tpkg((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt_packages_of_typescC@s|jtjS(N(RtlibcompstPACKAGE_TYPE_CONDITIONAL(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pytconditional_packagesscC@s|jtjS(N(RRtPACKAGE_TYPE_DEFAULT(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pytdefault_packages#scC@st|j|jS(N(R RR(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt packages_iter'scC@s|jtjS(N(RRtPACKAGE_TYPE_MANDATORY(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pytmandatory_packages+scC@s|jtjS(N(RRtPACKAGE_TYPE_OPTIONAL(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pytoptional_packages/scC@s |jjS(N(Rqt uservisible(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pytvisible3s( RKRLR<RRRRRRRR(((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRs   tPackagecB@sceZdZieej6eej6eej 6e ej 6Z dZ edZedZRS(u#Represents comps package data. :apicC@s ||_dS(N(Rq(R;tipkg((s-/usr/lib/python2.7/site-packages/dnf/comps.pyR<AscC@s |jjS(N(RqR(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRDscC@s|j|jS(N(t_OPT_MAPR(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt option_typeIs(RKRLRMt CONDITIONALRRtDEFAULTRt MANDATORYRtOPTIONALRRR<RRR(((s-/usr/lib/python2.7/site-packages/dnf/comps.pyR7s     tCompscB@seZdZdZdZdZdZdZdZe dZ e dZ e d Z d Ze d Zd Ze d Ze dZdZe dZdZe dZe dZdZRS(cC@stj|_t|_dS(N(RRRqR8Rr(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pyR<QscC@s t|jS(N(RRq(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt__len__UscC@st||j|jS(N(RRrt _group_by_id(R;t icategory((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt_build_categoryXscC@st||j|jS(N(RRrR(R;t ienvironment((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt_build_environment[scC@st||j|jS(N(RRrt_build_package(R;tigroup((s-/usr/lib/python2.7/site-packages/dnf/comps.pyR^scC@s t|S(N(R(R;R((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRascC@shtj}y|j|Wn5tjk rT|j}tdj|nX|j|7_dS(Nu (RRt fromxml_ft ParserErrortget_last_errorsRR@Rq(R;tfnRterrors((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt_add_from_xml_filenameds  cC@st|jS(N(Rtcategories_iter(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRmscC@s|j||}t|S(N(tcategories_by_patternR(R;RR%tcats((s-/usr/lib/python2.7/site-packages/dnf/comps.pytcategory_by_patternrscC@st|||jS(N(R(R(R;RR%((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRxsc@sfdjjDS(Nc3@s|]}j|VqdS(N(R(Rtc(R;(s-/usr/lib/python2.7/site-packages/dnf/comps.pys s(RqR(R;((R;s-/usr/lib/python2.7/site-packages/dnf/comps.pyR}scC@st|jdtS(Ntkey(tsortedtenvironments_iterR-(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pyR sc@s&tjjfd|jDS(Nc3@s$|]}|jkr|VqdS(N(R(RR(R(s-/usr/lib/python2.7/site-packages/dnf/comps.pys s(RRRR(R;R((Rs-/usr/lib/python2.7/site-packages/dnf/comps.pyt_environment_by_idscC@s|j||}t|S(N(ReR(R;RR%Rm((s-/usr/lib/python2.7/site-packages/dnf/comps.pytenvironment_by_patternscC@s4t|j}t|||}t|dtS(NR(RRR(RR-(R;RR%Rmt found_envs((s-/usr/lib/python2.7/site-packages/dnf/comps.pyResc@sfdjjDS(Nc3@s|]}j|VqdS(N(R(RR6(R;(s-/usr/lib/python2.7/site-packages/dnf/comps.pys s(RqR (R;((R;s-/usr/lib/python2.7/site-packages/dnf/comps.pyRscC@st|jdtS(NR(RRR-(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRsc@s&tjjfd|jDS(Nc3@s$|]}|jkr|VqdS(N(R(RR(tid_(s-/usr/lib/python2.7/site-packages/dnf/comps.pys s(RRRR(R;R((Rs-/usr/lib/python2.7/site-packages/dnf/comps.pyRscC@s|j||}t|S(N(RiR(R;RR%Rn((s-/usr/lib/python2.7/site-packages/dnf/comps.pytgroup_by_patternscC@s.t||t|j}t|dtS(NR(R(RRRR-(R;RR%Rn((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRisc@sfdjjDS(Nc3@s|]}j|VqdS(N(R(RR(R;(s-/usr/lib/python2.7/site-packages/dnf/comps.pys s(RqR(R;((R;s-/usr/lib/python2.7/site-packages/dnf/comps.pyRs(RKRLR<RRRRRRRRRRRRR RRReRRRRRiR(((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRNs*                 t CompsTransPkgcB@s,eZdZdZdZdZRS(cC@stjj|r9t|_||_t|_d|_ nt |t j j rt|_|j|_|jtj@|_d|_ n7|j|_|j|_|jtj@|_|j |_ dS(N(RRtis_string_typeRt basearchonlyRtTruetoptionalRtrequirest isinstancetlibdnft transactiontCompsGroupPackagetgetNametgetPackageTypeRRR(R;t pkg_or_name((s-/usr/lib/python2.7/site-packages/dnf/comps.pyR<s        cC@sF|j|jkoE|j|jkoE|j|jkoE|j|jkS(N(RRRR(R;tother((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt__eq__scC@s|jS(N(R(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt__str__scC@s"t|j|j|j|jfS(N(thashRRRR(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt__hash__s (RKRLR<RRR(((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRs   tTransactionBunchcB@seZdZdZdZedZedZej dZedZ e j dZ edZ e j d Z ed Z e j d Z RS( cC@s4t|_t|_t|_t|_dS(N(RTt_installt _install_optt_removet_upgrade(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pyR<s   cC@se|jj|j|jj|j|jj|j|j|jB|j|j|j|_|S(N(RRVRRR(R;R((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt__iadd__s (cC@s4t|jt|jt|jt|jS(N(R tinstallt install_opttupgradetremove(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRscC@sGx@|D]8}t|tr,|j|q|jt|qWdS(N(RRRY(tparamtvaltitem((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt _set_values cC@s|jS(u Packages to be installed with strict=True - transaction will fail if they cannot be installed due to dependency errors etc. (R(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRscC@s|j|j|dS(N(RR(R;tvalue((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRscC@s|jS(uw Packages to be installed with strict=False - they will be skipped if they cannot be installed (R(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRscC@s|j|j|dS(N(RR(R;R((s-/usr/lib/python2.7/site-packages/dnf/comps.pyR scC@s|jS(N(R(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRscC@s|j|j|dS(N(RR(R;R((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRscC@s|jS(N(R(R;((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRscC@s|j|j|dS(N(RR(R;R((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRs( RKRLR<RRRNRRRtsetterRRR(((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRs   tSolvercB@seZdZedZedZegdZdZdZe d dZ dZ dZ d e d d Zd Zd Zd ZRS(cC@s||_||_||_dS(N(RPRt _reason_fn(R;RPRt reason_fn((s-/usr/lib/python2.7/site-packages/dnf/comps.pyR< s  cC@sd|jDS(NcS@sh|]}|jqS((R(RR((s-/usr/lib/python2.7/site-packages/dnf/comps.pys 's (R(Ra((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt_mandatory_group_set%scC@s&d|j|j|j|jDS(NcS@sh|]}|jqS((R(RR((s-/usr/lib/python2.7/site-packages/dnf/comps.pys +s (RRRR(R((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt_full_package_set)sc@sfd}t}|t@r;|j||jn|t@r^|j||jn|t@r|j||jn|t@r|j||j n|S(Nc@s&g|D]}|jkr|^qS(N(R(tpkgsR(R3(s-/usr/lib/python2.7/site-packages/dnf/comps.pytfilter1s ( RTRRVRRRRRRR(R,t pkg_typesR3RR((R3s-/usr/lib/python2.7/site-packages/dnf/comps.pyt _pkgs_of_type/s     cC@s|jjj|S(N(RPR,tis_removable_pkg(R;tpkg_name((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt_removable_pkg@scC@s|jjj|S(N(RPRatis_removable_group(R;tgroup_id((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt_removable_grpDsc C@s|jj|}|jjj||j|j|}|jjj|t}xa|j D]V} |r}| j |kr}q\n||j | j |||7}|j | j t tq\WxB|jD]7} |r| j |krqn|j | j ttqW|S(N(RRRPRatnewRRRRRRt_group_installtaddGroupRRRRR( R;tenv_idRR3R4R5t comps_envtswdb_envttranst comps_group((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt_environment_installHs$ cC@s|jjj|}|s4ttd|n|jjj|t}tg|jD]}|j ^q`}x6|D].}|j |sqn||j |7}qW|S(Nu"Environment '%s' is not installed.( RPRaRJRRRRRTt getGroupsRZRt _group_remove(R;RRRRSRR((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt_environment_remove\s + c C@sh|jj|}|jjj|j}|sIttd|ntg|j D]}|j rY|j ^qY}|j }|jjj |j|j|j|}t}xh|jD]]}|j|kr||j|j7}n||j|j|7}|j|jttqWx'|jD]}|j|jttq1W|jjj||S(Nu"Environment '%s' is not installed.(RRRPRaRJRRRRTR t getInstalledRZtgetPackageTypesRRRRRt_group_upgradeRRRRRRRR( R;RRRRStold_setRRR((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt_environment_upgradels"7 ' c C@s|jj|}|s7ttdt|n|jjj||j|j |}x-|j D]}|j |jt |j qhW|jjj|t} |r| jj|j||dgn"| jj|j||dg| S(NuGroup_id '%s' does not exist.R3(RRRRRRPR,RRRRt addPackageRRRRRVRR( R;RRR3R4R5Rt swdb_groupRSR((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRs$ %"c@sTjjj|}jjj|t}fd|jD|_|S(Nc@s+h|]!}j|jr|qS((RR(RR(R;(s-/usr/lib/python2.7/site-packages/dnf/comps.pys s (RPR,RJRRt getPackages(R;RRR((R;s-/usr/lib/python2.7/site-packages/dnf/comps.pyR s  c@sZ|jj|}|jjj|}g}|sOttd|jn|j}t g|j D]}|j ^qk|j ||||jjj ||j|j|}x-|jD]}|j|jt|jqW|jjj|t}fdD|_fdD|_fdD|_|S(NuGroup '%s' not installed.c@s%h|]}|jkr|qS((R(RR(R(s-/usr/lib/python2.7/site-packages/dnf/comps.pys s c@s8h|].}|gD]}|j^qkr|qS((R(RRR(tnew_set(s-/usr/lib/python2.7/site-packages/dnf/comps.pys s c@s%h|]}|jkr|qS((R(RR(R(s-/usr/lib/python2.7/site-packages/dnf/comps.pys s (RRRPR,RJRRRR RTRRRRRRRRRRRRR(R;RRRR3RRSR((RRs-/usr/lib/python2.7/site-packages/dnf/comps.pyRs$  +$ cC@sx|jjD]}|jj|}|jr t|jt|j}|jjjj d|}x!|D]}|j j |qrWq q WdS(NR( t persistorRR,R\RTt full_listt pkg_excludetsacktquerytfiltermt_goalR(R;tbaseR,tp_grptinstalled_pkg_namestinstalled_pkgsR((s-/usr/lib/python2.7/site-packages/dnf/comps.pyt'_exclude_packages_from_installed_groupss ! N(RKRLR<RNRRRRRRRRR RRR RR (((s-/usr/lib/python2.7/site-packages/dnf/comps.pyRs      (7t __future__RRRtlibdnf.transactionRtdnf.exceptionsRtdnf.i18nRRt functoolsRRtdnf.utilR"RDRRR=tloggingR R R*t getLoggerR.RtCompsPackageType_CONDITIONALRtCompsPackageType_DEFAULTRtCompsPackageType_MANDATORYRtCompsPackageType_OPTIONALRt ALL_TYPESRRR(R-RRR7tobjectR8RORpRRRRRRRR(((s-/usr/lib/python2.7/site-packages/dnf/comps.pytsP                     !?'"f(C