PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  [/\c@@sddlmZddlmZddlmZddlmZmZddlm Z ddl Z ddl Z ddl Z ddlZ ddlZ ddlZ ddlZddlZddlZddlZddlZejjjZejjjZejjjZejjjZejjj Z!ejjj"Z#ejjj$Z%ejjj&Z'ejjj(Z)ej*dZ+de,fd YZ-d e,fd YZd efd YZ.defdYZ/defdYZ0defdYZ1defdYZ2defdYZ3defdYZ4defdYZ5de,fdYZ6de6fdYZ7d e6fd!YZ8d"e6fd#YZ9dS($i(tabsolute_import(tunicode_literals(tmisc(tucdt_(t basestringNudnftValuecB@s eZdZdZdZRS(uEValue of an Option consists of an actual value and its priority. cC@s||_||_dS(N(tvaluetpriority(tselfRR((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyt__init__7s cC@sd|jj|j|jfS(Nu%s(value=%r, priority=%r)(t __class__t__name__RR(R ((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyt__repr__;s (R t __module__t__doc__R R (((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyR4s tOptioncB@s5eZdZdZdZdZedZRS(u This class handles a single configuration file option. Create subclasses for each type of supported configuration option. Each option remembers its default value and can inherit from a parent option (e.g. repo.gpgcheck inherits from main.gpgcheck). Some options can may be runtimeonly which means they are not read from or written to config file. cC@s:t|tjjr!||_ntjj||_dS(N(t isinstancetlibdnftconfRt_optiont OptionString(R toption((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyR Hs cC@s |jjS(uGet option's value.(RtgetValue(R ((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyt_getNscC@s |jjS(uGet option's priority.(Rt getPriority(R ((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyt _get_priorityRscC@s:|dkr:y|jj||Wq6tk r6q6Xnyt|ts[t|tr}|jj|tjj |nnt|jtjj st|jtjj rt|t r|jj|t |n|jj||WnGtk r5}tjjtd|t|fdt|nXdS(uRSet option's value if priority is equal or higher than curent priority.uError parsing '%s': %st raw_errorN(tNoneRtsett ExceptionRtlistttupleRRt VectorStringt OptionBooltOptionChildBooltinttboolt RuntimeErrortdnft exceptionst ConfigErrorRtstr(R RRte((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyt_setVs"  "(R RRR RRt PRIO_RUNTIMER,(((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyR@s    t IntOptioncB@seZddZRS(icC@s,tjj|}tt|j|dS(N(RRtOptionNumberInt32tsuperR.R (R tdefaultR((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyR os(R RR (((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyR.nst LongOptioncB@seZddZRS(icC@s,tjj|}tt|j|dS(N(RRtOptionNumberInt64R0R2R (R R1R((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyR us(R RR (((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyR2tst BoolOptioncB@seZedZRS(cC@s,tjj|}tt|j|dS(N(RRR"R0R4R (R R1R((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyR {s(R RtFalseR (((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyR4zstSelectionOptioncB@seZdZdddZRS(u=Handles string values where only specific values are allowed.cC@s;tjj|tjj|}tt|j|dS(N(RRtOptionEnumStringR!R0R6R (R R1tchoicesR((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyR s!N((R RRRR (((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyR6st ListOptioncB@seZdZddZRS(u=Handles string values where only specific values are allowed.cC@s8tjjtjj|}tt|j|dS(N(RRtOptionStringListR!R0R9R (R R1R((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyR sN(R RRRR (((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyR9st SecondsOptioncB@seZddZRS(icC@s,tjj|}tt|j|dS(N(RRt OptionSecondsR0R;R (R R1R((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyR s(R RR (((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyR;st StringOptioncB@seZddZRS(ucC@s,tjj|}tt|j|dS(N(RRRR0R=R (R R1R((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyR s(R RR (((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyR=st PathOptioncB@seZdeedZRS(ucC@s2tjj|||}tt|j|dS(N(RRt OptionPathR0R>R (R R1texiststabsPathR((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyR s(R RR5R (((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyR>st BaseConfigcB@seZdZd d d dZdZdZdZdZdZ e dZ e dZ d Zd d d Zed ZRS(ulBase class for storing configuration definitions. Subclass when creating your own definitions. cC@s#||jd<||_||_dS(Nu_config(t__dict__t_sectiont_parser(R tconfigtsectiontparser((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyR s  cC@sd|jkr-tdj|j|nt|j|}|dkrOdSy|j}Wntk rx}dSXt |t rt |S|S(Nu_configu!'{}' object has no attribute '{}'( RCtAttributeErrortformatR tgetattrt_configRRRRR*R(R tnameRRtex((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyt __getattr__s  cC@st|j|d}|dkr:tt|j||St|tr^|j}|j }nt }|dkry|j ||Wqt k rqXnyt|t st|tr|j |tjj|nnt|tjjst|tjjr<t|tr<|j |t|n|j ||WnGtk r}tjjtd|t|fdt|nXdS(NuError parsing '%s': %sR(RKRLRR0RBt __setattr__RRRRR-RRRR RRR!R"R#R$R%R&R'R(R)RR*(R RMRRRR+((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyRPs.     "'cC@sg}|jd|j|jrxa|jjD]M}y|jj}Wntk red}nX|jd|j|fq3Wndj|S(Nu[%s]uu%s: %su ( tappendRDRLtoptBindstsecondtgetValueStringR&tfirsttjoin(R touttoptBindR((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyt__str__s   !cC@s2t|j|d}|dkr%dSt|S(N(RKRLRR(R RMtmethod((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyt _get_options cC@s)|j|}|dkrdS|jS(N(R[RR(R RMtopt((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyt _get_values cC@sB|j|}|dkr2td|dn|j||S(NuOption udoes not exists(R[RRR,(R RMRRR\((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyt _set_values c C@sC|j|r?x-|j|D]}|j||}| sK|dkrTd}nt|j|ry&|jjj|j||Wq8tk r}t j t dt |t |t |t |q8Xq |dkr t||r t|||q t j t dt |t |t |q WndS(u+Set option values from an INI file section.uNoneuu,Unknown configuration value: %s=%s in %s; %suarchu+Unknown configuration option: %s = %s in %sN(t hasSectiontgetDatatgetSubstitutedValuethasattrRLRRtatt newStringR&tloggertdebugRRR*tsetattr(R RHRGtfilenameRRMRR+((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyt _populates  &/ cC@sd|jg}|jrqxU|jjD]A}y'|jd|j|jjfWq)tk riq)Xq)Wndj|dS(u]Return a string representing the values of all the configuration options. u[%s]u%s = %su ( RDRLRRRQRURSRTR&RV(R toutputRX((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pytdump s '  cC@s|dkr6|jdkr*tdn|j}n|jj|}|jrx~|jjD]j}|dks|j|ks|jj t ks|j|kra|jj ||j|jj qaqaWn|jj |dS(uWrite out the configuration to a file-like object. :param fileobj: File-like object to write to :param section: Section name to use. If not specified, the section name used during parsing will be used :param always: A sequence of option names to always write out. Options not listed here will only be written out if they are at non-default values. Set to None to dump out all options u!not populated, don't know sectionN(RRDt ValueErrorREtoptionsRLRRRURSRt PRIO_DEFAULTRRTtwrite(R tfileobjRGtalwayst cfg_optionsRX((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyt_writes   ,c C@st|}tj|}WdQX||krkx8|D]-}tjjj|||kr7|}q7q7WnxI|jD];\}}t|t rdj |}n||||tTruet modulesdirtmoduledefaultsdir(R RGRHRFRRR+tmsg((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyR Xs&""  cC@sld}x3|jdD]"}tjj|r|}PqqW|sh|jdd}tjj|n|S(uReturns the value of reposdirureposdiriN(RR]tostpathR@R'Rt ensure_dir(R t myrepodirtrdir((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyt get_reposdirtsc@sj|}|j}|tkr+dS|j}t|tstfd|Dr|jtj j g|D]}j |^qx|qnOt j jt j jjd|jdr|jj ||ndS(Nc3@sB|]8}tjjtjjjd|jdVqdS(u installrootu/N(RRR@RVR]tlstrip(t.0tp(R (s3/usr/lib/python2.7/site-packages/dnf/conf/config.pys su installrootu/(R[RtPRIO_COMMANDLINERRR*tanyR,RRR!t_prepend_installroot_pathRRR@RVR]R(R toptnameR\tpriotvalR((R s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyt_search_inside_installroots    1 cC@sD|j|}|j}|j|j}|j||dS(N(R[RRRR,(R RR\Rtnew_path((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pytprepend_installroots cC@s@tjj|jd|jd}tjjj||j S(Nu installrootu/( RRRVR]RRRRwRxR{(R Rt root_path((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyRs'c C@s(ddddddddd d d d dd dddddddddddddg}x|D]y}t||d!}|d!k r^|gkr^|j|}|d!k rt}|jry"|jjj|j}Wqtk rqXn|rtt j j }||j kr$|j }nxc|D]B}|rW|j |j|g|q+|j gt j j q+Wq|j |t j j qt||rt|||qtjtdt|t|q^q^Wt|d d!tkr|jd}|j tt j j nt|dr$x|jjD]\}} x| D]} t|j|ry&|jjj|jt | Wqtk r} t jjtd|| t| fdt| qXqMt||rt||| qMtd } tj| |qMWq:Wnd!S("u%Configure parts of CLI from the opts upluginsuversionuconfig_file_pathu debuglevelu errorlevelu installrootubestu assumeyesuassumenouclean_requirements_on_removeugpgcheckushowdupesfromreposu ip_resolveu rpmverbosityudisable_excludesucoloru downloadonlyuexcludeu excludepkgsu skip_brokenutsflagsuarchubasearchu ignorearchu cacheonlyucommentu%Unknown configuration option: %s = %sulocalpkg_gpgchecku main_setoptsu4Error parsing --setopt with key '%s', value '%s': %sRu1Main config did not have a %s attr. before setoptN(RKRR[R5RLRRRct getAddValueR&R'RRRR,RRbRgRetwarningRRt main_setoptsRyRdR(R)R*( R toptst config_argsRMRR\t appendValuet add_prioritytitemtvaluesRR+R((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyt_configure_from_optionss`        "     &  , cC@sxd}|dk rt|gkrt|j|}|rL|j|tjjqttjtdt |t |ndS(Nu excludepkgsu%Unknown configuration option: %s = %s( RR[R,R'RRReRRR(R tpkgsRMtconfopt((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyt exclude_pkgsscC@sN|jd}|j}|rJ|jd}|j| |jndS(u Adjust conf options interactionsu skip_brokenustrictN(R[RR,R(R t skip_brokentskip_broken_valtstrict((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyt_adjust_conf_optionss  cC@s|jjdS(Nu releasever(R{tget(R ((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pyt releaseverscC@s:|dkr#|jjdddSt||jdRBRRR(((s3/usr/lib/python2.7/site-packages/dnf/conf/config.pytsN            .$