PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /usr/lib/python2.7/site-packages/yum
Viewing File: /usr/lib/python2.7/site-packages/yum/yumRepo.pyc
� � v_c@s�ddlZddlZddlZddlZddlZejjd�ddlZddlZddl m Z ddl m Z ddl m Z ddlZddl mZddlZddlZddlmZddlZddlZddlZddlmZdd lmZdd lmZdd lmZdd lTddlZddlZddl Z ddl!Z!ddl"Z"ddl#Z#ddl$Z$ddl%Z%ddl&Z&e'Z(y9ddl)Z)e*e)d � p�e*e)d� r�e+Z)nWne,k r e+Z)nXd�Z-d�Z.e!j/dej0�ej1d�Z2ej1d�Z3dej4fd��YZ5deej6fd��YZ7e+d�Z8dfd��YZ9dS(i����Ntmedia(t URLGrabber(tdefault_grabber(t format_number(t URLGrabError(t Repository(tconfig(tmisc(tcomps(t_(t*tgettsetcCs3ts dSytj|d|�}WndSX|S(Nsuser.yum.checksum.(txattrtNoneR (tfilenametchktypetret((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_xattr_get_chksumQscCs4ts dSytj|d||�WntSXtS(Nsuser.yum.checksum.(R RR tFalsetTrue(RRtchksum((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_xattr_set_chksum\stignores yum.Repossyum.verbose.RepostYumPackageSackcBsteZdZd�Zd�Zd�Zd d�Zd�Zdd dd�Z d �Z d �Z d �Z d �Z RS(s;imports/handles package objects from an mdcache dict objectcCs&tjj|�||_i|_dS(N(t packageSackt PackageSackt__init__tpctadded(tselft packageClass((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRos cCsTy|j�Wn?tjk rO}tjdt|�t|�|jf�nXdS(NsException %s %s in %s ignored(tclosetErrorst RepoErrortverbose_loggertdebugtreprtstrt__del__(Rte((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR'tscCs i|_dS(N(R(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR zsc Cs�||jkr)||j|kr)dSnt|�}|dkrd}x||D]t}|d7}|rz|j|||�n||}|j||�} || _|j|j|| �|j| �qNW||jkr�g|j|<n|j|jd�d|_ n�|dkr�||jkrRd|j|krRt j d||j f�qRnd}xu|D]m}|d7}|r�|j|||�n||}||jkr_x%|j|D]} | j |�q�Wq_q_W|j|j|�d|_ ndS(Ntmetadataiit filelistst otherdatas$%s md for %s imported before primary(R*R+(Rtlent progressbarRtidt_addToDictAsListtpkgsByIDt addPackagetappendt indexesBuiltR!R"tui_idtimportFromDict( Rtrepotdatatypetdataobjtcallbackttotaltcurrenttpkgidtpkgdicttpo((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytaddDict}sH             cCs�x�|D]�}||jj|g�kr.qn|dkrCd}n-|dkrXd}n|dkrd}nq|j||�r|j||�s�|j|dtdd �q�qqWd S( s& Just schedule the metadata downloads R)t primary_dbR*t filelists_dbR+tother_dbtasynctfailfuncN(RR t_check_db_versiont_check_uncompressed_db_gent _retrieveMDRR(RR6tdatatitemtmydbtype((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_retrieve_async�s       R)icCs�|dkrdddg}n |g}t|d�s`tjd|jd|jd|�|_nx,|D]$}||jkr�||j|kr�qgq�n|dkr�d }d }|j} |jj} nc|dkr�d }d}|j } |jj } n3|dkrgd }d }|j } |jj } nqg|j ||�r�|j||�} | sj|j||�} n| s�|j|�} | r�tj|jd|�|j||�} n| s�tjd|�q�n|jj| �} n�t|_| �}|d}tj||d|j�}|s3tjd|�n|}|jj|�}|j\}}| ||�} |s�|j||| |�n~ qgW|`dS(NtallR)R*R+t cacheHandlertstoredirtrepoidR9R@tprimaryRARBtothers/gen/%s.sqlites %s: Check uncompressed DB faileds.xmltcacheds%s: Decompress DB failed(thasattrt sqlitecachectRepodataParserSqlitetcachedirR.RMRt getPrimaryXMLt getPrimarytgetFileListsXMLt getFilelistst getOtherXMLt getOtherdataREt_check_uncompressed_dbRFRGRtunlink_fR!R"t open_databaseRt_xml2sqlite_localtrepo_gen_decompresstcachetrepoXMLtgetDatatchecksumR?(RR6tmdtypeR9t cacheonlyRHRIRJtmymdtypetrepo_get_functiontrepo_cache_functiontdb_un_fntdb_fntdobjtxmltgenRtxmldatatctypetcsum((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytpopulate�sn                  c Cs�|jj|�}|j\}}tjj|�}|jd|}|d}|j||d|dt�spdSt j ||d|j �} | r�|j ||| �SdS(s7return file name of db in gen/ dir if good, None if nott/s.sqliteRHtcheck_can_failRRN(RcRdtlocationtostpathtbasenameRVt_checkMDRRRRaRbt_check_uncompressed_db_fn( RR6Rftmydbdatatr_basetremotetfnamet compressed_fnRkR((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRFs   c Csl|jj|�}|j\}}tjj|�}|jd|}tj|dt �}|j |||�S(s8return file name of uncompressed db is good, None if notRttfn_only( RcRdRvRwRxRyRVRt decompressRR{( RR6RfR|R}R~RR�Rk((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR]$s cCsld}tjj|�rhy|j||dt�Wn*tk r^|jsetj |�qeqhX|}n|S(Nt openchecksum( RRwRxtexiststcheckMDRRRbRR^(RR6RfRktresult((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR{.s   cCs |j|�S(N(RE(RR6Rf((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRE>sN(t__name__t __module__t__doc__RR'R RR?RKRsRFR]R{RE(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRms    , T  t YumRepositoryc Bs eZdZd�Zd�Zd�Zee�Zd�Zee�Z d�Z d�Z d�Z ee �Z d�Zd �Zd �Zd �Zdyedzd�Zd�Zd�Zd�Zd�Zd�Zed�Zd�Zd�Zed�Zd�Zd�Z ed��Z!ed��Z"d�Z#d�Z$d�Z%d�Z&ed ��Z'ed!��Z(ed"�d#��Z)ed$�d%��Z*ed&�d'��Z+ed(�d)��Z,ed*��Z-d+�Z.d,�Z/d-�Z0d.�Z1d/�Z2ed0d1�d2d3�d4d5��Z3d6�Z4ed0d7�d2d8�d4d9��Z5d:�Z6dzdzdzdzdzdzdzdzd;edzd<� Z7e7Z8dzdzed=�Z9dzd;ed>�Z:d?�Z;d@�Z<dA�Z=edB�Z>dC�Z?dzdzdzdzdD�Z@dE�ZAdzdzdF�ZBdzdG�ZCdH�ZDdI�ZEdJ�ZFdzdK�ZGedL�ZHdM�ZIeJdN��ZKdzdzdO�ZLdP�ZMdzdQ�ZNdzdR�ZOedS�ZPdzdT�ZQdU�ZRdV�ZSdzdzdW�ZTdX�ZUdzdY�ZVdZ�ZWed0d[�d2d\�d4d]��ZXd^�ZYd_�ZZed`�Z[edzeda�Z\db�Z]edc�Z^dd�Z_de�Z`df�Zadg�Zbdzdh�Zcdi�Zddj�Zedk�Zfdzdl�Zgdm�Zhdn�Zidodzdp�Zjdq�Zkdr�Zlds�Zmdt�Zndu�Zodvdwgdx�ZpRS({so This is an actual repository object Configuration attributes are pulled in from config.RepoConf. cCs�tjj|�tj||�d|_g|_g|_d|_d|_ d|_ d|_ i|_ d|_ t|_d|_i|_i|_d|_d|_d|_t|_i|_d|_d|_d|_d|_d|_idd6dd6dd 6dd 6dd 6dd 6|_t|_d|_d|_ d|_!d|_"d|_#t|_$d|_%d|_&d|_'d|_(t)|_*d|_+d|_,d|_-t|_.dS( Nis yumgroups.xmlsrepodata/repomd.xmlt cachecookieti�RPR*RQtgroupt updateinfot prestodelta(/RtRepoConfRRRtrepofilet mirrorurlst_urlst enablegroupstgroupsfilenamet repoMDFilet_repoXMLt_oldRepoMDDataRbRt_retry_no_cachetmirrorlistparsedtyumvart _proxy_dicttmetadata_cookie_fnt_metadataCurrentt _metalinkt groups_addedt http_headerstrepo_config_aget basecachedirtbase_persistdirtcostt copy_localt retrievedt_preloaded_repomdR9tmulti_callbackt failure_objtmirror_failure_objtinterrupt_callbackt_callbacks_changedt mediafunctgpg_import_functgpgca_import_funct confirm_funcRttimestamp_checkt_sackt _grabfunct_grabt_async(RRO((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRHsV                                      cCs`|dkrdSt|d�r+|j}nd}t|j|�}|rM|St|j|j�S(s@ Sort yum repos. by cost, and then by alphanumeric on their id. iR�i�N(RRSR�tcmpR.(RRQtocostR((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt__cmp__�s  cCs.|jdkr'tjtj�|_n|jS(N(R�Rt sqlitesacktYumSqlitePackageSacktYumAvailablePackageSqlite(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_getSack�scCst|d�rt|d�Stj|�}|s:d}ng|\}}||}d|kri|d}n8d|kr�|d}nd|kr�|d}nd}|j}xE|jD]:}d||kr�|d7}|t|j|�7}q�q�Wt|d|�|S(s@ Show self.id, but include any $releasever/$basearch/etc. data. t__cached_ui_idR�tmetalinkt mirrorlisttbaseurlt$Rt( RStgetattrRt_readRawRepoFileR.tui_repoid_varsR&R�tsetattr(Rtvaltinit section_idRtvar((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_ui_id�s*            cCs0|jdk r|jj�ntj|�dS(N(R�RtsackR R(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR �scCs d|_dS(N(RR�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt _resetSack�scCs|j�|jr|jSdS(N(t doProxyDictR�R(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt__getProxyDict�s  cCs|jS(s7Returns the instance of this repository's package sack.(R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytgetPackageSack�scCs t|d�r|jdk StS(s;Returns true if this repository is setup and ready for use.tmetadata_cookieN(RSRcRR(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytready�s cCsCd|jj�kr*|jjd�}n|jjd�}|jS(s"Returns the location of the group.tgroup_gzR�(Rct fileTypesRdRv(Rtthisdata((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytgetGroupLocation�scCs|jS(N(R.(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt__str__�siicCs�ytj||||�SWn`tjtfk r|}|r?dSd|}t|tj�rjt|�}ntj |��nXdS(s�takes filename, hand back Checksum of it sumtype = md5 or sha filename = /path/to/file CHUNK=65536 by defaults#Error opening file for checksum: %sN( RReR!t MiscErrortEnvironmentErrorRt isinstancetFIPSNonCompliantErrorR&R"(RtsumtypetfiletCHUNKtchecksum_can_failtdatasizeR(tmsg((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt _checksum�s c!Cs�d|j}d(}x�t|�D]�}|jd#�r;q n||krMq ntt||�tj�rnq nt||�}| r�t|�tt�td$�fkr�d%}nt|�tj kr�d&j |�}n|d'||f}q W|S()Ns[%s] R�R�t metalink_datatgrabtgrabfuncRctcfgR�R�R�R�R�R9R�R�R�R.R�R�R�R�R�R�R�R�tquick_enable_disableR�R�turlsR�R�R�R�R iR�s, s%s = %s (!s mediafuncssacks metalink_datasgrabsgrabfuncsrepoXMLR�s retrievedsmirrorlistparsedsgpg_import_funcsgpgca_import_funcs failure_objscallbacks confirm_funcs groups_addedsinterrupt_callbacksidsmirror_failure_objsrepo_config_agesgroupsfilenames copy_locals basecachedirs http_headerssmetadata_cookiesmetadata_cookie_fnR�s repoMDFilestimestamp_checksurlss mirrorurlssyumvarsrepofilesmulti_callback( R.tdirt startswithR�R�ttypest MethodTypettypeRtListTypetjoin(Rtoutputt excluded_varstattrtres((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytdump�s4  + cCso|j�ytj|ddg�WnDtk rj}|jtjkrXtj|�qktt|��nXdS(s%Persistently enables this repository.tonlytenabledN( tenableRtwriteRawRepoFiletIOErrorterrnotEACCEStloggertwarningR&(RR(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytenablePersistents cCso|j�ytj|ddg�WnDtk rj}|jtjkrXtj|�qktt|��nXdS(s&Persistently disables this repository.R�R�N( tdisableRR�R�R�R�R�R�R&(RR(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytdisablePersistent"s cCs9t|j�dkr5|j r5tjd|j�ndS(shself-check the repo information - if we don't have enough to move on then raise a repo erroris(Cannot find a valid baseurl for repo: %sN(R,R�tmediaidR!R"R4(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytcheck-scCs|jr dSi|_d}d }|j|kr:d}n�|jr�d|j}|j|kr�tj|j�}|j|kr�|dtj|j�7}ntjd|�j �\}}d|||f}q�n|dk r ||jd<||jd<||jd <ndS( Nt_none_R�s%st:s (\w+://)(.+)s%s%s@%sthttpthttpstftp(NRR�( R�Rtproxytproxy_usernameturllibtquotetproxy_passwordtretmatchtgroups(Rt proxy_stringtemptytauthtprototrest((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR�4s&        cCs]g}x+|jD] }|j||j|f�qW|pFd|jksY|jd�n|S(sAConvert our dict of headers to a list of 2-tuples for urlgrabber.tPragmasno-cache(Rsno-cache(R�R2(RRbtheaderstkey((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt__headersListFromDictMs cCs'tjdtjdd�|j�dS(Ns5setupGrab() will go away in a future version of Yum. t stackleveli(twarningstwarnR!tYumFutureDeprecationWarningt _setupGrab(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt setupGrabXs cs��jdkrtjj}n tjj}�j�}td�jd�jd�j d�j d�j dd|��_ �fd �}�j }�jr�t||�}n�fd �}|�j |d|��_d S( s_sets up the grabber functions with the already stocked in urls for the mirror groupst roundrobint progress_objtmulti_progress_objtfailure_callbackR�R�tregettsimplecs|tj|�jjd�d}�jjj|�}|rxitj|�d6i|j d6|j d6|j d6d6}n|S(Nt@i����tmirrortmax_connectionst preferencetprivatetkwargs( turlparseturlsplittnetloctsplitR�t_host2mcR Rtto_utf8R'R(R)(turlthosttmc(R(s//usr/lib/python2.7/site-packages/yum/yumRepo.pytadd_mcns  c s�i}|j}|jdksE|jdkr�t|dd�d kr�t|d�j�}|�jt�j�kr�t|d<q�n|jd kr�t|d <n�j}|r�t |�r�|d ifp�|\}}}|j ||||��n|S( Ni itcodeiii�ttriestremovei����tfail(ii�(( t exceptionR�R�tretriesR,R�RRR�tcallabletupdate(tobjtactionR(R6tcbtfuntargtkarg(R(s//usr/lib/python2.7/site-packages/yum/yumRepo.pytmirror_failures '  *N(tfailovermethodt urlgrabberR&t MGRandomOrdert MirrorGroupt_default_graboptsRR9R�R�R�R�R�R�R�tmapR�(RtmgclasstugoptsR4R�RC((Rs//usr/lib/python2.7/site-packages/yum/yumRepo.pyR]s$         cCs�i|jd6|jd6|jd6|jd6|jd6|jd6|jd6t|jd|��d 6|j d 6|j d 6|j d 6|j d 6|j d6t jjd6|jd6|jd6|jd6}|jdkr�t|d<n |j|d<|S(Nt keepalivet bandwidthtretrytthrottlettimeouttminratet ip_resolveRbR�tssl_verify_peertssl_verify_hostt ssl_ca_certtssl_certtssl_keyt user_agenttusernametpasswordtftp_disable_epsvtlibproxytproxies(RLRMR:RORPRQRRttuplet#_YumRepository__headersListFromDictt sslverifyt sslcacertt sslclientcertt sslclientkeyRtoptsRXRYRZR[RRt proxy_dict(RRbRd((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRH�s*                  cCs0|j s|jr)|j�t|_n|jS(N(R�R�RR(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt _getgrabfunc�s  cCs0|j s|jr)|j�t|_n|jS(N(R�R�RR(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_getgrab�s  cCs |j�S(N(Rf(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt<lambda>�scCs |j�S(N(Rg(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRh�scCs{tjj|�r(tjj|�r(dSytj|dd�Wn5tk rv}dd|d|f}tj|�nXdS(s@make the necessary directory path, if possible, raise on failureNtmodei�s %s: %s %s: %ssError making cache directorys error was(RwRxR�tisdirtmakedirstOSErrorR!R"(RtdpathR(R�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_dirSetupMkdir_p�s$c Cs�tjj|j|j�}tjj|j|j�}tjj|d�}tjj|d�}|jd|�|jd|�|jd|�|jd|�d}tj�dkr�d }n|jd |d |�|jd |d |�|jd|j }|jd|�x1|j|jd|j gD]}|j |�q2Wx>|j gD]0}y|j |�WqVt jk r�}qVXqVW|jd�r�t|_n|jd�|jd�|jd�dS(s6make the necessary dirs, if possible, raise on failuretpackagesRt_dir_setup_cachedirt_dir_setup_pkgdirt_dir_setup_hdrdirt_dir_setup_persistdirR�is-rot_dir_setup_gpgdirs/gpgdirt_dir_setup_gpgcadirs /gpgcadirRtt_dir_setup_metadata_cookies/gens repomd.xmlR�smirrorlist.txts metalink.xmlN(RwRxR�R�R.R�t setAttributetgeteuidRVR�tpkgdirRnt persistdirR!R"t_preload_md_from_system_cacheRR�( RRVRzRythdrdirtexttcookieR�R(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytdirSetup�s6 #   cCs3d|}t||�s&|j�nt||�S(s; Make the directory attributes call .dirSetup() if needed. t _dir_setup_(RSRR�(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt _dirGetAttr�s  cCs�d|}t||�s&|j�n|dkrit|d�sMg|_n|jjt||��nt|||�}|dkr�|j|�n|S(s; Make the directory attributes call .dirSetup() if needed. R�Rqt _old_pkgdirs(s_dir_setup_pkgdir(RSRR�R2R�R�Rn(RR�R�R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt _dirSetAttr�s     cCs |jd�S(NRV(R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRh scCs |jd�S(NRz(R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRh scCs |jd�S(NRy(R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRh scCs|jd|�S(NRy(R�(Rtx((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRh scCs |jd�S(NR|(R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRhscCs|jd|�S(NR|(R�(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRhscCs |jd�S(Ntgpgdir(R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRhscCs|jd|�S(NR�(R�(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRhscCs |jd�S(Ntgpgcadir(R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRhscCs|jd|�S(NR�(R�(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRhscCs |jd�S(NR�(R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRhscCs'tjdtjdd�|j�dS(Ns8baseurlSetup() will go away in a future version of Yum. Ri(RRR!Rt _baseurlSetup(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt baseurlSetups cCsF|jr dS|jsdS|jjd�dkr6dS|j|_dS(NR�i����(R�R�tfind(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_hack_mirrorlist_for_anacondas  c Cs�|j|j�|_|j|_g}|j�|jrl|j rl|jt|jj ���t |_n|j r�|j r�|j|j ��t |_n|j|�|_ |j|j |_t|j�dkrlt|d�rltjj|j�rl|jsiytj|j�Wn3ttfk rN}tjd|j|f�qfXtjd|j�qiqln|j|_|j�dS(s�go through the baseurls and mirrorlists and populate self.urls with valid ones, run self.check() at the end to make sure it workeditmirrorlist_files-Could not delete bad mirrorlist file: %s - %ss-removing mirrorlist with no valid mirrors: %sN(t_replace_and_check_urlR�t _orig_baseurlR�R�R�textendtlistR�R�RR�t_getMirrorListR�R�R,RSRwRxR�R�RbRR^R�RlR�terrorR�R(RR�R(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR�*s,    $  c Cs g}d}x�|D]�}|d kr+qntj||j�}|ddkr]|d}ny%tj|�\}}}}} } Wn"tttfk r�} d}nX|d kr�|}qq|j|�qW|dk r|r�t j d t j |��qt j d t j |��n|S( NR�i����RttblahRRR�RsMYumRepo Warning: Some mirror URLs are not using ftp, http[s] or file. Eg. %ssJYumRepo Error: All mirror URLs are not using ftp, http[s] or file. Eg. %s(R�N(shttpsftpsfileshttps(Rtparsert varReplaceR�R+t ValueErrort IndexErrortKeyErrorR2R�R�RR0R�( Rturl_listtgoodurlstskippedR1tstbtptqtftoR(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR�Ns*   %   cCs|js|j�n|jS(N(R�R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_geturlsls  tfgetcCs |j�S(N(R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRhqstfsetcCst|d|�S(NR�(R�(Rtvalue((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRhrstfdelcCst|dd�S(NR�(R�R(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRhsscCs�|js�|jdd|_|jd}|j�stj|j�}|jd|jdk�}y8t d|j |�}|j ||dd|j �}Wqt k r}tjj|j�s�d |j }tj|�ntjd ||jd tj|jd �f�t|_qXn|js�y)tj|�|_tj||j�Wq�tjk r�}tjd ||f�t|_tj|�q�Xn|jr�tj|j�|_q�n|jS(NRts metalink.xmls.tmpRbRLR ttexts %s/metalinksQCannot retrieve metalink for repository: %s. Please verify its path and try agains*Could not get metalink %s error was %s: %siis)Could not parse metalink %s error was %s(R�RVtmetalink_filenamet_metalinkCurrentRR0R�RHt http_cachingRR9turlgrabR4RRwRxR�R!R"R�R�targst to_unicodeRR�tMetaLinkRepoMDtshutiltmovetMetaLinkRepoErrorParseFailR^(RtlocalR1RKtugR�R(R�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt _getMetalinkus6   # 1   cCs |j�S(N(R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRh�scCst|d|�S(NR�(R�(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRh�s cCst|dd�S(NR�(R�R(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRh�scCsZ|r"|jd�p!|jd�S|js/tSx$|jD]}|j|�s9tSq9WtS(NRtsfile:(R�R�Rt_all_urls_are_filesR(RR1((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR��s R$c Ks|dkr|j}n|dks0|dkrFtjd|j�n|jdkr�tjj|�rk|Stjd||jf�n|r�t j |�\} }}}}n|j r�|j r�d}|r�| dkr�|r�t |�}q�ny\|j d|d|d|d|d |d |d |j d |jd |d||f� }|SWq�tjk r~}tjtjd|f�q�Xn| r|s�|j|� rtjtjj|��}|j|j}|t| �krtjtd�tjj|�t|�tt| ��f�qn|r,| dkr,|jd| �}td|jd |d| d|jd|j d|d| d|j!|�}|d|}y:|j"t#j$|�|dt#j$|�d||f�}Wqt%k r(}|j&|| �d|||f}tj|�}||_'|�qXn�t(|j)d| ��}yg|j*j"t#j$|�|dt#j$|�d||fd |d| d|d|d| d|j!| �}Wnit%k r}|j&|| �d|||f}t+|dd�}tj,||�}||_'|�nX|S(s�retrieve file from the mirrorgroup for the repo relative to local, optionally get range from start to end, also optionally retrieve from a specific baseurls/get request for Repo %s, gave no source or destis0Caching enabled but no local cache of %s from %sRR�t checkfunctrelativeR�R�R1Rtnametdiscnumtranges8Error getting package from media; falling back to url %ssKInsufficient space in download directory %s * free %s * needed %sRbR R#R"R�tsizetretry_no_cacheRts*failed to retrieve %s from %s error was %sR�sfailure: %s from %s: %sterrorsN(-RR�R!R"R4RbRwRxR�R+R,RR�tintR�t MediaErrorR#tlogt logginglevelstDEBUG_2R�tstatvfstdirnametf_bavailtf_bsizetlongR RRHRR9R�R�R�R�RR0Rt _del_dl_fileR6R^R_R�R�tNoMoreMirrorsRepoError(RR1R�R�tstarttendR�R�R�R#RbR�R*tschemeR-RxtquerytfragidR�R�R(tdirstattavailRKR�R~terrstrRR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_getFile�s�  !T! 4         c  s�j}�j���j}|j��rM�j�r=�Stj��n|dkrn��fd�}n|jdk|_ z@|j d|d|d�d|d|d|d �j |�}Wdt |_ X|j d � r�j� rd } | ��jjf} tj| �n|S( Ncs5�j�s1tj��tdtd���ndS(Ni����s)Package does not match intended download.(tverifyLocalPkgRR^RR (R=(R�tpackage(s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR�"s  s lazy:packagesR1R�R�R�R�RbR�RCs3Downloaded package %s, from %s, but it was invalid.(t relativepathtlocalPkgtbasepatht_preload_pkg_from_system_cacheR�RR^RR�R�R�R�RR R6R.R!R"( RR�R�R�RbR*R~R�RR�((R�R�s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt getPackages2       c Cs�|j}|j�}|j}|j}||} |j} tjj|j�sbtj |j�n|j d| d|d|d|ddd|d|dd d |d | � S( NR1R�R�R�R#R�R�R�iRbR�( R�tlocalHdrthdrstartthdrendR�RwRxR�R|RkR�R( RR�R�R#RbR~R�R�R�R�R�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt getHeader@s      !cCs�|jdk r|jS|j|j|j�}|s8|S|jdd}tjj|�s_t S|j �|jdd}|j r�tjj|� r�t St |_t S(s�Check if there is a metadata_cookie and check its age. If the age of the cookie is less than metadata_expire time then return true else return False. This result is cached, so that metalink/repomd.xml are synchronized.Rts repomd.xmls metalink.xmlN( R�RtwithinCacheAgeR�tmetadata_expireRVRwRxR�RR�R�R(RtmC_deftrepomdfntmlfn((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytmetadataCurrentRs  cCs�|jdk r|jS|jrHtjj|j� rHtjd|�n|jr]t |_nNtjj|j�s~t |_n-|j |j |j �r�t |_n t |_|jS(Ns$Cannot find metalink.xml file for %s(R�RRbRwRxR�R�R!R"RRR�R�R�(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR�os     cCs�t|d�r�|jjd�r�|jjd�r�|jtd�}|jtd�}|dkr{|dkswt�tS|dkr�|dkr�tSn|dkr�|dkr�tSq�ntS(s8Return whether cache_req matches metadata_expire_filter.t_metadata_cache_reqs read-only:tfuturetpasttpresent(R�R�R�(R�R�(RSR�R�tmetadata_expire_filterR,tAssertionErrorRR(Rt cache_filtt cache_req((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_matchExpireFilter�s      cCs�|r|j�rd}n|dkr=tjj|�r=tSt}tjj|�r�tj|�}|d|tj�kr�t}n|dtj�kr�t}n|js�|S|dt |j �kr�t}q�n|S(sxcheck if any file is older than a certain amount of time. Used for the cachecookie and the mirrorlist return True if w/i the expiration time limit false if the time limit has expired Additionally compare the file to age of the newest .repo or yum.conf file. If any of them are newer then invalidate the cache i����i( R�RwRxR�RRtstatttimetcheck_config_file_ageR�R�(Rtmyfiletexpiration_timetexpire_req_filterR�t cookie_info((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR��s      cCse|j}tjj|j�s*|j}ntj|tj�rat|jd�}|j�~ndS(s/if possible, set touch the metadata_cookie filesw+N( R�RwRxR�RVtaccesstW_OKtopenR (RRtfo((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytsetMetadataCookie�s   cCs�y1||_||_||_||_||_Wntjk rL}�nX|j r�|jr�|j r�|j r�t j t j d�t|_t|_ndS(Ns1Disabling media repo for non-media-aware frontend(RbR�R�R�R�R!R"RR�R�R#R�R�R�RR�Rtskip_if_unavailable(RRbR�R�R�R�R(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytsetup�s     ' cCsO|jr2tjj|� r2tjd|j�n|jsG|j�rKtSt S(s( Should we cache the current repomd.xml s"Cannot find repomd.xml file for %s( RbRwRxR�R!R"R4R�RR(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_cachingRepoXML�s cCsk|jdif}|dkr0d|jk}nd}yvtjdddddtjj|��}|jd|j d |d d d |d dd|d|j dkdd�}Wnmt k r�}t j |�|r�dStjd||f�n.tjk rt j |�|rdS�nXytj||�Wn4t j |�|rMdStjd||f�nX|S(s* Call _getFile() for the repomd.xml file. t old_repo_XMLR�tprefixtrepomdtsuffixstmp.xmlR�R�R�R�iR�R#R�RbRLR�i�sError downloading file %s: %ssError renaming file %s to %s(N(t _checkRepoXMLRR�ttempfiletmktempRwRxR�R�R�R�RRR^R!R"trename(RR�R�t grab_can_failR�ttfnameR�R(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_getFileRepoXML�sD      cCsuytj|j|�SWnWtjk rp}|dkrJd|jk}n|rTdStjd|j|f�nXdS(s Parse the repomd.xml file. R�s&Error importing repomd.xml from %s: %sN( t repoMDObjecttRepoMDR.R!t RepoMDErrorRR�R"R4(RR�tparse_can_failR(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt _parseRepoXMLs cCs�x+tj|jd�D]}tj|�qWtjj|�r�|d}tj||�|j |t �}|dkr|dSi|d6|d6|d6gd6|_ |SdS(s= If we have an older repomd.xml file available, save it out. s /*.old.tmps.old.tmpR�R�t old_localt new_MD_filesN( tglobRVRR^RwRxR�R�tcopy2R RRR�(RR�RR Rn((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_saveOldRepoXMLs  cCs�|jstjd|j�nd|jkr;i|_dSx"|jdD]}tj|�qIW|j}i|_d|kr�tj|d|d�n|d|_ d|kr�dSx&|dD]}tj|d|�q�WdS( s0 If we have older data available, revert to it. s*Can't download or revert repomd.xml for %sR�NR R R�t old_MD_filess.old.tmp( R�R!R"R4R�RR^RwRR�(RRtold_datatrevert((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_revertOldRepoXML s        cCsl|j}i|_d|kr2tj|d�nd|krBdSx#|dD]}tj|d�qMWdS(s Done with old data, delete it. R RNs.old.tmp(R�RR^(RRR((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_doneOldRepoXML?s    cCs�|dkr|j}n|dkr?d|j�kr?d}n|dkrq|j|dd|�rq|d7}n||jj|�fS( NR�R�RQR*RPt_dbRc(sothers filelistssprimary(RRcR�REtrepoDataR (RRfRc((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_get_mdtype_dataLs     cCsN|j\}}|jdtjj|�}|rJtj|dt�}n|S(NRtR�(RvRVRwRxRyRR�R(RRHt compressedR}R~R�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_get_mdtype_fnameXs cCs~d|jkrtS|jd}|jrz|j|jjkrztjd|jtj |j�tj |jj�f�t StS(s| We check the timestamps, if any of the timestamps for the "new" data is older than what we have ... we revert. R�skNot using downloaded %s/repomd.xml because it is older than what we have: Current : %s Downloaded: %s( R�RR�t timestampRcR�R�R.R�tctimeR(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_groupCheckDataMDNewer`s   cCs�|j|jkrtS|j|jkr,tSt}xJ|jD]?}||jkrWq<n|j||j|krutSt}q<W|S(s7 Check parsed repomd.xml against metalink.repomd data. (RRtlengthR�t checksumstchksumsR(RcR�tdoneRe((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_checkRepoXMLMetalinkss cCs�|dkr|j}n|dkr0|j}n|j||j�rItSxb|jjD]T}|j||�rVtjt j dt j |jj �t j |j �f�tSqVWtS(s@ Check the repomd.xml against the metalink data, if we have it. s/Using older repomd.xml Latest: %s Using: %sN(RR�R�R!R�Rt old_repomdsR#R�R�R�R�RRR(RRcR�R�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_checkRepoMetalink�s     cCsk|j|�}|stS|j�|js0tS|jj}|jr[|j|jkr[tS|j ||�S(sx Save the Old Repo XML, and if it exists check to see if it's the latest available given the metalink data. ( RRR�R�R�R�R�RRR!(RR�toxmlR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_latestRepoXML�s   cCsN|jd}|jdk r tS|j|�r>t}|}n�t}|j|�rr|}|j}|d|_ni|j||�}|dkr�|j r�t |d�r�|j dkr�t j d|j�n|j�tS|j�|jdkr |j|�|_n|jdkr&|j�tS|r0tS|j�sJ|j�tStS( s` Common LoadRepoXML for instant and group, returns False if you should just return. s /repomd.xmlR�R�twritesread-only:futures Can't download repomd.xml for %sN(swritesread-only:future(RVR�RRR�RR%R�RR�RSR�R!R"R4RR�R R(RR�tmdtypesR�tcachingR�R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_commonLoadRepoXML�s<         cCs[|jdkrtS|dkr+|j}n||jkrWt|j|jkrWtSntS(NRn(tmddownloadpolicyRRRcRt DBVERSIONt dbversionR(RRfRc((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRE�s  c Cs�|dkrdS|s.t}|j|�}nEt}|j|�}tjj|�sstj|dt�}t}n|j tjj |��|j ||d|d|dt�s�dS|S(s� Check that we already have this data, and that it's valid. Given the DB mdtype and the main mdtype (no _db suffix). R�R�RHRuN( RRRRwRxR�RR�RR{RyRz(RRHtdbmdtypetmmdtypet file_checkRR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_groupCheckDataMDValid�s  cCsZ|j|�}x7|D]/\}}|j|dt�s|j�tSqW|j|�tS(s� Retrieve any listed mdtypes, and revert if there was a failure. Also put any of the non-valid mdtype files from the old_repo_XML into the delete list, this means metadata can change filename without us leaking it. tretrieve_can_fail(t_commonRetrieveDataMD_listRGRRRt_commonRetrieveDataMD_done(RR't downloadingtndatatnmdtype((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_commonRetrieveDataMDs  cCsd�}|jj�}xH|jj�D]7}||kr@q(n|d krRq(n|j|�q(W|d krx|}ng}d|jkr�d }n|jd}||jd<g}|jd<g}xO|D]G}|j|�\} } |r�|j|d |�\} } |j| | |t �} | r�|| | | | �rCq�nt j | | d �|j| �| d }t j j |�r�t j ||d �|j|�q�q�n| d kr�q�n||kr�q�n|j| | |�r�q�n|j| | f�|j|j| t��q�W|S(s+ Return a list of metadata to be retrieved cSs||dkrtS||kr tS|j|jkr6tStjj|jd�}tjj|jd�}||krxtStS(s9 Check if two returns from _get_mdtype_data() are equal. iN(RRReRwRxRyRvR(tomdtypetodataR6R5tornametnrname((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt _mdtype_eqs   R@RARBR�R�RR Rcs.old.tmps.sqlite(s primary_dbs filelists_dbsother_dbsgroup_gzN(R�tkeysRcR�R2RR�RR0RRwRRxR�RR(RR'R<t all_mdtypesRftrevertsR�t newmdfilesR4R6R5R8R9R�t gen_local((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR2sR              cCs7x&|D]\}}|j|t�}qW|j�dS(s$ Uncompress the downloaded metadata N(RRR(RR4R5R6R�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR3oscCs#|j|�r|j|�ndS(s� Retrieve the new repomd.xml from the repository, then check it and parse it. If it fails we revert to the old version and pretend that is fine. If the new repomd.xml requires new version of files that we have, like updateinfo.xml, we download those too and if any of those fail, we again revert everything and pretend old data is good. N(R)R7(RR�R'((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_groupLoadRepoXMLvscCs�idgd6dgd6ddddgd6ddddd d gd 6}t�}t|j�tjkr�|j|j|j|jg��n0x-|jD]"}|j|j||g��q�W| s�d |kr�d}n|jd�t t |��}|S( Nt__None__tinstantRPs group:primaryR�R�tpkgtagss group:smallR*R�s group:mains group:all( R R�tmdpolicyR�t StringTypesR<R RtdiscardtsortedR�(Rt md_groupsR'RF((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_mdpolicy2mdtypes�s    %   cCs[y|j||j��SWntk r:|j��nXtjd|j|jf�dS(s5retrieve/check/read in repomd.xml from the repositorys#Bad loadRepoXML policy (for %s): %sN(RBRKtKeyboardInterruptRR!R"R4RF(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt _loadRepoXML�s   cCs*|jr|jS|jd|j�|jS(NR�(R�RMR4(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt _getRepoXML�s cCs |j�S(N(RN(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRh�scCst|d|�S(NR�(R�(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRh�scCst|dd�S(NR�(R�R(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRh�scCst|�tjkr!|j}n|}|jr�|j r�tjdkr_t dd|��n|j d}yP|j ddddd|d d |j d dd dd |j dkdd�}Wn,t k r�}t dd||f��nXtj|||j�}| rq|jrqy|j||j�Wn)tjk rU}t dd|��nXtj|||j�}n|s�t dd|��q�nytj|j|�}Wn/tjk r�}t dd||f��nX|j�|jr|j|� rt dd|��ndS(Ni����s?pygpgme is not working so repomd.xml can not be verified for %ss/repomd.xml.ascR�srepodata/repomd.xml.ascR�iR�R�s %s/signatureR#R�RbRLR�i�s1Error finding signature for repomd.xml for %s: %ss;Gpg Keys not imported, cannot verify repomd.xml for repo %ss1repomd.xml signature could not be verified for %ss%Error importing repomd.xml for %s: %ss)repomd.xml does not match metalink for %s(R�R�t InstanceTypeRt repo_gpgcheckt_override_sigchecksRtgpgmeRRRVR�R4R�tvalid_detached_sigR�R�R�R!t YumBaseErrorRRR.RR�R�R#(RR�tfilepathtsigfileR�R(tvalidRc((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR��sF      cCsCtj|�}|sdS|r2|j|kr2dStj|�dS(s4 Delete a downloaded file if it's the correct size. N(Rtstat_ftst_sizeR^(RR�R�tsd((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR��s cCs|j|||�S(s,check the metadata type against its checksum(Rz(RtfnRfR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR��scCs�|}|dkr'|jj|�}n|rH|j\}}|j} n|j\}}|j} t|�tj kr�|j } n|} | dk r�t | �} nt | |�} | r"t j| �} | dk r"| dkr�| |kr�| jdkr�dS| | jkr| |krdSq"ny|j|| d| �} Wn3tjk rs} |r]dStdd| ��nX| |kr�t| || �dS|r�dStdd��dS( s5 Internal function, use .checkMD() from outside yum. iiR�i����sError performing checksum: %si����s%Metadata file does not match checksumN(RRcRdR�topensizeReR�R�R�RORR�RRRXRYR�R!R"RR(RR[RfR�RHRuR�tr_ctypetr_csumR�R�tl_csumtfsizeR(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRz�sB      '  cCs |j|�S(s�base function to retrieve metadata files from the remote url returns the path to the local metadata file of a 'mdtype' mdtype can be 'primary', 'filelists', 'other' or 'group'.(RG(RRf((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt retrieveMDsc s��jj��}|j\}}tjj|�}�jd|}�jj��rZ|S�j rst j |�ntjj |�s��j tjj|��r��j|�dt�r�d�j�<|Sn�jdkr&|r�dStjj |�rd|} nd|�jf} tj| �nt} �jjd�} | dk r�| jj��} | dk r�tjj| jd�} || kp�|j| jk} q�ny���fd�}d�j�f}|jdks�| r�d}nd }�j|t|j���jd |d |d dd |d|d|d�jdkd|j|�}WnVtjk rz|rtdS�n:tk r�}|r�dStjd|�jf�nX|SdS(s8 Internal function, use .retrieveMD() from outside yum. RtRuis;Caching enabled and local cache: %s does not match checksums0Caching enabled but no local cache of %s from %sR�csLy�j|��Wn$tk r:tj|j��nXd�j�<dS(Ni(R�RRR^RR�(R=(RfR(s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR�Qs  s%s/%sR$R�R�R�R#R�R�RbRLR�s6Could not retrieve %s matching remote checksum from %sN(RcRdRvRwRxRyRVR�R R�RR^R�R{RzRRbRR4R!R"R�RReR�R�R�R�R�R(RRfR1R*R�R}R~RR�R�tpartialtorepomdR9tofnameR�R�R#R(((RfRs//usr/lib/python2.7/site-packages/yum/yumRepo.pyRGsl         cCs |jd�S(s]this gets you the path to the primary.xml file, retrieving it if we need a new oneRP(Ra(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRWwscCs |jd�S(s_this gets you the path to the filelists.xml file, retrieving it if we need a new oneR*(Ra(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyRY~scCs |jd�S(NRQ(Ra(R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR[�scCs�d|jj�kr|jddt�}|r{ytj|dd|j�}Wq{tk rw}tj |�d}q{Xn|S|jddt�S(s�gets groups and returns group file path for the repository, if there is none or retrieve/decompress fails, it returns NoneR�R1s comps.xmlRRR�N( RcR�RGRRRaRbR�R�R�R(RR[R(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt getGroups�s  cCs||_||_t|_dS(N(R9R�RR�(RR9R�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt setCallback�s  cCs||_t|_dS(N(R�RR�(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt setFailureObj�s cCs||_t|_dS(N(R�RR�(RR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytsetMirrorFailureObj�s cCs||_t|_dS(N(R�RR�(RR9((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytsetInterruptCallback�s cCs�g}g}|dk r�y|j�}WnEtk ro}|dkrOd}ntjd||f�g}nXxT|D]I}tjd|�s�qwn|j�}|jdd�}|j |�qwWn||fS(s5 read the mirror list from the specified file object s <unknown>s+Could not read mirrorlist %s, error was %ss \w+://\S+\s*$s$ARCHs $BASEARCHN( Rt readlinest ExceptionR�R�R RtrstriptreplaceR2(RR�R1t returnlisttcontentR(tlineR&((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_readMirrorList�s"      c Cs�|jdd|_d }t}|j|j|jdt�rft}t|jd�}d|j}n�|j}t j |�d}|dkr�d|}n|j �}yt j j ||�}WnJtk r }tjd||jdtj|jd �f�d }nX|j||�\}}|r||j r�| r�t|jd �} x|D]} | j| �qUW| j�q�nL| r�tjj|j�r�tj|jd �|jt|jd��dS|S( s$retrieve an up2date-style mirrorlist file from our mirrorlist url, also save the file to the local repo dir and use that if cache expiry not expired we also s/$ARCH/$BASEARCH/ and move along return the baseurls from the mirrorlist file Rtsmirrorlist.txtR�trsfile://iR�s1Could not retrieve mirrorlist %s error was %s: %sitwN(RVR�RRR�tmirrorlist_expireRR�R�R+RHREtgrabberturlopenRR�R�R�RR�RqRbR&R RwRxR�tutime( RR�tcacheokR1R�RKR(RnRoR�Rp((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR��s:     1  cCs~tjj|�stStjj|�r[tj|�tjtj|�tjkr[tSnytj||�WntSXtS(s&attempts to copy the file, if possible( RwRxR�RR�tST_CTIMER�RR(RR[tdestfn((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt _preload_file�s,R�cCs�t|d�stS|jdkr&tStjj|j|j�}tjj|�sWtStjj|�tjj|j �kr�tS|d|tjj |�}|dkr�|j d|tjj |�}n|j ||�S(sLattempts to copy the file from the system-wide cache, if possibletold_base_cache_dirR�RtN( RSRR|RwRxR�R.R�tnormpathRVRyRR{(RRtsubdirRztglob_repo_cache_dirR[((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_preload_file_from_system_cache�s' $cCs |j|�S(sUattempts to copy the metadata file from the system-wide cache, if possible(R�(RR((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR{ scCs�tjj|j��}tjj|j|�}|j|j�ddd|�rUtSt|d�sht Sx6|j D]+}|j tjj||�|�rrtSqrWt S(sOattempts to copy the package from the system-wide cache, if possibleR~s packages/RzR�( RwRxRyR�R�RyR�RRSRR�R{(RtpkgtpnameRztopkgdir((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR�s !cCs�g}dGHy|jj�}Wn<tjk r\}tddt|��}|j|�|SXxp|D]h}d|GHy|j|�Wqdtjk r�}d|}td|t|��}|j|�qdXqdW|S(Ns verifying mdisfailed to load repomd.xmls verifying %ss.%s metadata missing or does not match checksumi(RcR�R!R"tRepoVerifyProblemR&R2Ra(Rtproblemstmd_typesR(tprbtmd_typeR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt _verify_md"s"    cCs�dGHg}|j�}|dk r5tj|�}nytj�}|j|�WnJtjtj fk r�}d}t t |t |��}|j|�n8X|j dkr�d}t t |d�}|j|�n|S(Nsverifying compsscomps file failed to addisno groups in compsR�(ReRRR�RtCompstaddR!t GroupsErrortCompsExceptionR�tREPO_PROBLEM_COMPSR&t compscount(RR�tgrpfiletcR(R�R�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt _verify_comps7s"   cCsgS(N((R((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt_verify_packagesSstrepodataRcCs|g}d|kr(|j|j��nd|krV|jrV|j|j��qVnd|krx|j|j��n|S(s}download/verify the specified items @items = ['repodata', 'comps'] can include: repodata, comps, packages R�RRo(R�R�R�R�R�(RtitemsR�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pytverifyVs    iN(qR�R�R�RR�R�tpropertyR�R�R4R R�t_YumRepository__getProxyDictReR�R�R�R�RRR�R�R�RRR�RR_RRRHRfRgR�R�RnRR�R�RVRzRyR|R�R�R�R�R�R�R�R�R�R�R�R�R�t_YumRepository__getR�R�R�R�R�R�R�R�R�RR RRRRRRt staticmethodR!R#R%R)RER0R7R2R3RBRKRMRNRcR�R�R�RzRaRGRWRYR[ReRfRgRhRiRqR�R{R�R{R�R�R�R�R�(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR�As� =                 <    '             $     $    h)     #  *      -   S      , 0  Z          ,       c CsRtjdtjdd�g}ttjd�r=tj}nddl}|}tj|�d}|dkr{d|}n|}y|j |d |�}WnBt k r�}d ||j dt j |j d �fGHd}nX|dk rN|j�} xT| D]I} tjd | �rq�n| j�} | jd d�} |j| �q�Wn|S(Ns9getMirrorList() will go away in a future version of Yum. RiRvi����iR�sfile://R]s1Could not retrieve mirrorlist %s error was %s: %sis\s*(#|$)s$ARCHs $BASEARCH(RRR!RRSRERuR R+RvRR�RR�RRjR RRlRmR2( R�tpdictRnt urlresolverR R�R1R�R(RoRpR&((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt getMirrorListgs2     )     R�cBseZdZed�ZRS(s9 Holder for each "problem" we find with a repo.verify(). cCs(||_||_||_||_dS(N(R�tmessagetdetailstfake(RR�R�R�R�((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR�s   (R�R�R�RR(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyR��s(:RwR R�R�R+t uses_fragmentR2R R!turlgrabber.grabberRRturlgrabber.progressRturlgrabber.mirrorRERRRtreposRR�RTR�tyumRRRR t constantsR�tloggingR�RR R�R�R�RRtskip_old_DBMD_checkR RSRt ImportErrorRRt simplefilterRt getLoggerR�R#RRR�R�R�R�(((s//usr/lib/python2.7/site-packages/yum/yumRepo.pyt<module>sn                             ��������- %