MINI MINI MANI MO

Path : /lib/python2.7/site-packages/yum/
File Upload :
Current File : //lib/python2.7/site-packages/yum/comps.pyc


[c@s9ddlZddlZddlTddlmZddlZddlZddlmZddl	m
Z
ddl	mZdZ
dZd	Zd
efdYZdefd
YZdefdYZdefdYZdefdYZdefdYZdZedkr5endS(iN(t*(tCompsException(t
to_unicode(tget_my_lang_code(tcElementTree_iterparses*{http://www.w3.org/XML/1998/namespace}langcCstj|jtS(N(tBOOLEAN_STATEStgettlowertFalse(tstrng((s-/usr/lib/python2.7/site-packages/yum/comps.pyt
parse_booleanscCs
t|S(N(tint(R	((s-/usr/lib/python2.7/site-packages/yum/comps.pytparse_number"stCompsObjcBsheZdZdZedZedZedZdZdZ	dZ
dZRS(	s Group/Category helper object. cCs|jS(s3 Return the "name" of the object for the C locale. (tname(tself((s-/usr/lib/python2.7/site-packages/yum/comps.pyt__str__)scCs1x*dD]"}t||rt||SqWdS(s6 Return the "id": categoryid, groupid, environmentid. t
categoryidtgroupidt
environmentid(s
categoryidsgroupids
environmentidN(thasattrtgetattrtNone(RtidT((s-/usr/lib/python2.7/site-packages/yum/comps.pytcompsid-s
cCs|jtS(s9 Return the "name" of the object for the current locale. (t
nameByLangR(R((s-/usr/lib/python2.7/site-packages/yum/comps.pytui_name7scCs|jtS(s@ Return the "description" of the object for the current locale. (tdescriptionByLangR(R((s-/usr/lib/python2.7/site-packages/yum/comps.pytui_description<scCsO|dkrdS|j|jkr&dS|j|jkr<dSt|j|jS(Nii(Rt
display_ordertcmpR(Rtother((s-/usr/lib/python2.7/site-packages/yum/comps.pyt__cmp__AscCsddl}|g}d|kr1|jdng}xD|D]<}x3|j|D]"}||krT|j|qTqTWq>W|S(NitC(tgettexttappendt_expand_lang(RtlangR"t	languagestnelangstnelang((s-/usr/lib/python2.7/site-packages/yum/comps.pyt_expand_languagesLs	
cCsGx7|j|D]&}||jkrt|j|SqWt|jS(N(R)ttranslated_nameRR(RR%tlangcode((s-/usr/lib/python2.7/site-packages/yum/comps.pyR[scCsGx7|j|D]&}||jkrt|j|SqWt|jS(N(R)ttranslated_descriptionRtdescription(RR%R+((s-/usr/lib/python2.7/site-packages/yum/comps.pyRcs(t__name__t
__module__t__doc__RtpropertyRRRR R)RR(((s-/usr/lib/python2.7/site-packages/yum/comps.pyR
%s	
			tGroupcBsSeZdZddZdZeeZdZdZ	dZ
dZRS(s? Group object parsed from group data in each repo. and merged. cCst|_t|_t|_d|_d|_i|_i|_i|_	i|_
i|_i|_d|_d|_d|_t|_t|_t|_|r|j|ndS(Nti(tTruetuser_visibleRtdefaulttselectedRR-R*R,tmandatory_packagestoptional_packagestdefault_packagestconditional_packagesRtlangonlyRRt	installedttoremovet_weaktparse(Rtelem((s-/usr/lib/python2.7/site-packages/yum/comps.pyt__init__ms&																	cCs:|jj|jj|jj|jj}|S(N(R8tkeysR9R:R;(Rtlst((s-/usr/lib/python2.7/site-packages/yum/comps.pyt_packageiters&cCsx|D]}|jdkrI|j}|jdk	r=tn||_q|jdkr|j}|ry|jd}n|jjt}|r||j	|<q||_
q|jdkr|j}|r|jd}n|jjt}|r||j|<q|r||_qq|jdkr>t
|j|_q|jdkrbt|j|_q|jdkrt
|j|_q|jdkr|j}|jdk	rtn||_q|jd
kr|j|qqWdS(NtidRtutf8R-tuservisibleRR6R<t	lang_onlytpackagelist(slangonlyRI(ttagttextRRRtencodetattribRt	lang_attrR*RR,R-R
R5RRR6R<tparse_package_list(RRAtchildtmyidRLR%((s-/usr/lib/python2.7/site-packages/yum/comps.pyR@sH
						cCsx|D]}|jdkr|jjd}|s=d}n|d
krOqn|j}|sdqn|dkrd|j|<q|dkrd|j|<q|dkrd|j|<q|dkr|jjd	|j|<qqqWdS(Nt
packagereqttypeu	mandatoryt	mandatoryR6toptionaltconditionalitrequires(RUsdefaultRVRW(RKRNRRLR8R:R9R;(Rtpackagelist_elemRQtgenretpackage((s-/usr/lib/python2.7/site-packages/yum/comps.pyRPs$
		cCs]x|jD]}d|j|<q
Wx|jD]}d|j|<q+Wx|jD]}d|j|<qLWx%|jD]}|j||j|<qmW|jdkr|jdkr|j|_n|jdkr|jdkr|j|_nx7|jD],}||jkr|j||j|<qqWx7|jD],}||jkr)|j||j|<q)q)WdS(s'Add another group object to this objectiR3N(R8R:R9R;RR-R*R,(RtobjtpkgR%((s-/usr/lib/python2.7/site-packages/yum/comps.pytadds$cCsd|jt|jjt|jj|jf}|jrW|d|j7}n|d|j7}x7t|j	j
D] \}}|d||f7}q~W|d|j7}x7t|jj
D] \}}|d||f7}qW|d7}x%t|j
D]}|d|7}qWx%t|jD]}|d	|7}q/Wx%t|jD]}|d
|7}qWWx7t|jj
D] \}}|d||f7}qW|d7}|d
7}|S(s,write out an xml stanza for the group objects        
  <group>
   <id>%s</id>
   <default>%s</default>
   <uservisible>%s</uservisible>
   <display_order>%s</display_order>
s   <langonly>%s</langonly>s   <name>%s</name>
s!   <name xml:lang="%s">%s</name>
s!   <description>%s</description>
s/   <description xml:lang="%s">%s</description>
s    <packagelist>
s3      <packagereq type="mandatory">%s</packagereq>
s1      <packagereq type="default">%s</packagereq>
s2      <packagereq type="optional">%s</packagereq>
sC      <packagereq type="conditional" requires="%s">%s</packagereq>
s    </packagelist>
s
  </group>(RtstrR6RR5RR<RtsortedR*titemsR-R,R8R:R9R;(RtmsgR%tvalR]treq((s-/usr/lib/python2.7/site-packages/yum/comps.pytxmls,	""
"

N(R.R/R0RRBRER1tpackagesR@RPR^Re(((s-/usr/lib/python2.7/site-packages/yum/comps.pyR2js			3		"tEnvironmentcBseZdZddZdZeeZdZeeZ	dZ
ee
ZdZeeZ
dZdZdZd	Zd
ZRS(sD Environment object parsed from group data in each repo, and merged cCsd|_d|_d|_i|_i|_d|_d|_t|_	i|_
i|_i|_t|_
|r|j|ndS(NR3i(RRRR-R*R,RR<RR=t_groupst_optionst_defaultoptionsR?R@(RRA((s-/usr/lib/python2.7/site-packages/yum/comps.pyRB%s												cCs |jj|jj}|S(N(RhRCRi(RRD((s-/usr/lib/python2.7/site-packages/yum/comps.pyt
_allgroupiter7scCs
|jjS(N(RhRC(R((s-/usr/lib/python2.7/site-packages/yum/comps.pyt
_groupiter>scCs
|jjS(N(RiRC(R((s-/usr/lib/python2.7/site-packages/yum/comps.pyt_optioniterCscCs
|jjS(N(RjRC(R((s-/usr/lib/python2.7/site-packages/yum/comps.pyt_defaultoptioniterHscCs{xt|D]l}|jdkrI|j}|jdk	r=tn||_q|jdkr|j}|ry|jd}n|jjt}|r||j	|<qs||_
q|jdkr|j}|r|jd}n|jjt}|r||j|<qs||_q|jdkr0|j
|q|jdkrO|j|q|jdkrt|j|_qqWdS(NRFRRGR-t	grouplistt
optionlistR(RKRLRRRRMRNRROR*RR,R-tparse_group_listtparse_option_listRR(RRARQRRRLR%((s-/usr/lib/python2.7/site-packages/yum/comps.pyR@Ms8
				cCs=x6|D].}|jdkr|j}d|j|<qqWdS(NRi(RKRLRh(Rtgrouplist_elemRQR((s-/usr/lib/python2.7/site-packages/yum/comps.pyRqts
	cCsxy|D]q}|jdkr|j}d|j|<|jjd}|rYt|}nt}|rxd|j|<qxqqWdS(NRiR6(RKRLRiRNRR
RRj(Rtoptionlist_elemRQtoptionidtdefoptR6((s-/usr/lib/python2.7/site-packages/yum/comps.pyRrzs
	
cCsx|jD]}d|j|<q
Wx|jD]}d|j|<q+Wx|jD]}d|j|<qLWx7|jD],}||jkrm|j||j|<qmqmWx7|jD],}||jkr|j||j|<qqWdS(s-Add another environment object to this objectiN(tgroupsRhtdefaultoptionsRjtoptionsRiR*R,(RR\tgrpR%((s-/usr/lib/python2.7/site-packages/yum/comps.pyR^scCs:d|j|jf}|d|j7}x1|jjD] \}}|d||f7}q7W|d|j7}x1|jjD] \}}|d||f7}q|W|d7}x|jD]}|d|7}qW|d7}|d	7}x?|jD]4}||j	kr|d
|7}q|d|7}qW|d7}|d7}|S(
s2write out an xml stanza for the environment objectsE
  <environment>
   <id>%s</id>
   <display_order>%s</display_order>
s   <name>%s</name>
s!   <name xml:lang="%s">%s</name>
s!   <description>%s</description>
s0    <description xml:lang="%s">%s</description>
s    <grouplist>
s     <groupid>%s</groupid>
s    </grouplist>
s    <optionlist>
s*     <groupid default="true">%s</groupid>
s    </optionlist>
s  </environment>
(
RRRR*RaR-R,RwRyRx(RRbR%RcRz((s-/usr/lib/python2.7/site-packages/yum/comps.pyRes&




N(R.R/R0RRBRkR1t	allgroupsRlRwRmRyRnRxR@RqRrR^Re(((s-/usr/lib/python2.7/site-packages/yum/comps.pyRg"s					'		
	tCategorycBsSeZdZddZdZeeZdZdZ	dZ
dZRS(sB Category object parsed from group data in each repo. and merged. cCsYd|_d|_d|_i|_i|_d|_i|_|rU|j|ndS(NR3i(	RRRR-R*R,RRhR@(RRA((s-/usr/lib/python2.7/site-packages/yum/comps.pyRBs							cCs
|jjS(N(RhRC(R((s-/usr/lib/python2.7/site-packages/yum/comps.pyRlscCs\xU|D]M}|jdkrI|j}|jdk	r=tn||_q|jdkr|j}|ry|jd}n|jjt}|r||j	|<qT||_
q|jdkr|j}|r|jd}n|jjt}|r||j|<qT||_q|jdkr0|j
|q|jdkrt|j|_qqWdS(NRFRRGR-RoR(RKRLRRRRMRNRROR*RR,R-RqRR(RRARQRRRLR%((s-/usr/lib/python2.7/site-packages/yum/comps.pyR@s4
				cCs=x6|D].}|jdkr|j}d|j|<qqWdS(NRi(RKRLRh(RRsRQR((s-/usr/lib/python2.7/site-packages/yum/comps.pyRqs
	cCsx|jD]}d|j|<q
Wx7|jD],}||jkr+|j||j|<q+q+Wx7|jD],}||jkre|j||j|<qeqeWdS(s*Add another category object to this objectiN(RwRhR*R,(RR\RzR%((s-/usr/lib/python2.7/site-packages/yum/comps.pyR^scCsd|j|jf}|d|j7}x1|jjD] \}}|d||f7}q7W|d|j7}x1|jjD] \}}|d||f7}q|W|d7}x|jD]}|d|7}qW|d7}|d	7}|S(
s/write out an xml stanza for the category objectsJ        
  <category>
   <id>%s</id>
   <display_order>%s</display_order>
s   <name>%s</name>
s!   <name xml:lang="%s">%s</name>
s!   <description>%s</description>
s0    <description xml:lang="%s">%s</description>
s    <grouplist>
s     <groupid>%s</groupid>
s    </grouplist>
s  </category>
(RRRR*RaR-R,Rw(RRbR%RcRz((s-/usr/lib/python2.7/site-packages/yum/comps.pyRes


N(R.R/R0RRBRlR1RwR@RqR^Re(((s-/usr/lib/python2.7/site-packages/yum/comps.pyR|s		$		t	LangpackscBsJeZddZdZdZdZdZdZdZ	RS(cCs2g|_d|_|dk	r.|j|ndS(NR3(t	langpacksRRR@(RRA((s-/usr/lib/python2.7/site-packages/yum/comps.pyRBs		cCs|j|S(N(R~(Rtindx((s-/usr/lib/python2.7/site-packages/yum/comps.pyt__getitem__%sccsx|jD]}|Vq
WdS(N(R~(Rti((s-/usr/lib/python2.7/site-packages/yum/comps.pyt__iter__(scCs
t|jS(N(tlenR~(R((s-/usr/lib/python2.7/site-packages/yum/comps.pyt__len__,scCs(i|d6|d6}|jj|dS(NRtinstall(R~R#(RRRtlangpack((s-/usr/lib/python2.7/site-packages/yum/comps.pyR^/s
cCsxo|D]g}|jdkr[i|jjdd6|jjdd6}|jj|qtd|jqW|jjd|_|jjd|_dS(NtmatchRRs%Unexpected element in <langpacks>: %s(RKRNRR~R#RRR(RRARQR((s-/usr/lib/python2.7/site-packages/yum/comps.pyR@6s
cCsN|js
dSd}x*|D]"}|d|d|df7}qW|d7}|S(s0write out an xml stanza for the Langpacks objectR3s  <langpacks>
s$    <match name="%s" install="%s"/>
RRs  </langpacks>
(R~(RRbR((s-/usr/lib/python2.7/site-packages/yum/comps.pyReDs	
 
N(
R.R/RRBRRRR^R@Re(((s-/usr/lib/python2.7/site-packages/yum/comps.pyR}s					tCompscBseZedZdZdZdZdZeeZ	eeZ
eeZeeZdZ
dZedZdZd	Zed
ZedZdZd
ZdZdZddZdZdZRS(cCsFi|_i|_i|_t|_d|_||_t|_dS(Ni(	Rht
_environmentst_categoriesR}t
_langpackst
compscounttoverwrite_groupsRtcompiled(RR((s-/usr/lib/python2.7/site-packages/yum/comps.pyRBOs					cCs&|jj}|jdd|S(NtkeycSs|j|jfS(N(RR(tx((s-/usr/lib/python2.7/site-packages/yum/comps.pyt<lambda>\s(Rhtvaluestsort(Rtgrps((s-/usr/lib/python2.7/site-packages/yum/comps.pyt
get_groupsZscCs&|jj}|jdd|S(NRcSs|j|jfS(N(RR(R((s-/usr/lib/python2.7/site-packages/yum/comps.pyRas(RRR(Rtenvironments((s-/usr/lib/python2.7/site-packages/yum/comps.pytget_environments_scCs&|jj}|jdd|S(NRcSs|j|jfS(N(RR(R((s-/usr/lib/python2.7/site-packages/yum/comps.pyRfs(RRR(Rtcats((s-/usr/lib/python2.7/site-packages/yum/comps.pytget_categoriesdscCs|jS(N(R(R((s-/usr/lib/python2.7/site-packages/yum/comps.pyt
get_langpacksiscCs|j|}|rtStS(N(t
return_groupsR4R(Rtgrpidtexists((s-/usr/lib/python2.7/site-packages/yum/comps.pyt	has_groupqscCs!|j|}|r|dSdS(s$Return the first group which matchesiN(RR(RRR((s-/usr/lib/python2.7/site-packages/yum/comps.pytreturn_groupysc
Csni}|sgSxQ|jdD]@}|j}||jkra|j|}|||j<q n|rtjtj|j}n$tjtj|dtj	j}t
}xW|jD]L}xC|j|j|j
fD])}	||	rt}|||j<PqqWqW|rq nxH|jD]=}x4|jjD]#}	||	r5|||j<Pq5q5WqWq W|jS(s;return all groups which match either by glob or exact matcht,tflags(tsplittstripRhRtretcompiletfnmatcht	translateRtIRRwRRR4R*R(
Rt
group_patterntcase_sensitivetreturnstitemt	thisgroupRtdonetgroupR((s-/usr/lib/python2.7/site-packages/yum/comps.pyRs6

$

cCs|j|}|rtStS(N(treturn_environmentsR4R(RRR((s-/usr/lib/python2.7/site-packages/yum/comps.pythas_environmentscCs!|j|}|r|dSdS(s$Return the first group which matchesiN(RR(RRR((s-/usr/lib/python2.7/site-packages/yum/comps.pytreturn_environmentsc	Csni}|sgSxQ|jdD]@}|j}||jkra|j|}|||j<q n|rtjtj|j}n$tjtj|dtj	j}t
}xW|jD]L}xC|j|j|j
fD])}||rt}|||j<PqqWqW|rq nxH|jD]=}x4|jjD]#}||r5|||j<Pq5q5WqWq W|jS(sAreturn all environments which match either by glob or exact matchRR(RRRRRRRRRRRRRRR4R*R(	Rtenv_patternRRRtenvRRR((s-/usr/lib/python2.7/site-packages/yum/comps.pyRs6

$

c	Csdi}xQ|jdD]@}|j}||jkrW|j|}|||j<qn|s{tjtj|j}n$tjtj|dtj	j}t
}xW|jD]L}xC|j|j|j
fD])}||rt}|||j<PqqWqW|rqnxH|jD]=}x4|jjD]#}||r+|||j<Pq+q+WqWqW|jS(s?return all categories which match either by glob or exact matchRR(RRRRRRRRRRRt
categoriesRRR4R*R(	Rtpatterntignore_caseRRtcatRRR((s-/usr/lib/python2.7/site-packages/yum/comps.pytreturn_categoriess2

$

cCsr|j|jkr^|j|j}|jrN|}|}|}|j|j<n|j|n||j|j<dS(N(RRhR?R^(RRt	thatgroupttmp((s-/usr/lib/python2.7/site-packages/yum/comps.pyt	add_groups	cCsr|j|jkr^|j|j}|jrN|}|}|}|j|j<n|j|n||j|j<dS(N(RRR?R^(RtenvironmentRR((s-/usr/lib/python2.7/site-packages/yum/comps.pytadd_environment
s	cCsF|j|jkr2|j|j}|j|n||j|j<dS(N(RRR^(Rtcategorytthatcat((s-/usr/lib/python2.7/site-packages/yum/comps.pytadd_categoryscCs|jj||dS(N(RR^(RRR((s-/usr/lib/python2.7/site-packages/yum/comps.pytadd_langpack sc
Csz|stnt|tjkrlyt|d}Wqrtk
rh}td||j|jfqrXn|}|jd7_t	|_
t|}yx|D]\}}|jdkrt
|}|j|n|jdkrt|}|j|n|jdkr-t|}	|j|	n|jdkr|jj|qqWWntk
rr}tdnX~dS(	Ntrtsopen(%s): #%u %siRRRR~scomps file is empty/damaged(RRTttypestStringTypestopentIOErrorterrnotstrerrorRRRt	iterparseRKR2RRgRR|RRR@tSyntaxError(
RtsrcfiletinfiletetparserteventRARRR((s-/usr/lib/python2.7/site-packages/yum/comps.pyR^#s6	#	
cCsi}x'|D]\}}}}}d||<q
Wx|jD]}t|jdkrt|_x|jD]}	|	|krht|_PqhqhWq:|jj|jj|j	j}
t|_x'|
D]}	|	|krt|_PqqWq:Wi}x!|jD]}|j||j
<qWx|jD]}|jrmt|_xf|jD]"}
|j|
sDt|_PqDqDWq"t|_x*|j
D]}
|
|krt|_PqqWq"Wt|_dS(s4 compile the groups into installed/available groups iiN(RwRR8R4R=RR9RCR:R;RRRRyR(Rt
pkgtuplisttinst_pkg_namestntaRtvtrRtpkgnamet
check_pkgstinst_grp_namestevgrouptgrpname((s-/usr/lib/python2.7/site-packages/yum/comps.pyRGs@		)	
						cCs|jr2|jr2|jr2t|jr2dSd}x$|jD]}||j7}qEWx$|jD]}||j7}qlWx$|jD]}||j7}qW||j	j7}|d7}|S(s8returns the xml of the comps files in this class, mergedR3sz<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE comps PUBLIC "-//Red Hat, Inc.//DTD Comps info//EN" "comps.dtd">
<comps>
s

</comps>
(
RhRRRRRReRRR(RRbtgtcR((s-/usr/lib/python2.7/site-packages/yum/comps.pyReys
N(R.R/RRBRRRRR1RwRRR~RRRRRRR4RRRRRRR^RRe(((s-/usr/lib/python2.7/site-packages/yum/comps.pyRNs.						&		("				$	2cCsymtjdGHt}x"tjdD]}|j|q&WHdGHx@|jD]5}d||jfGHx|jD]}d|GHqoWqMWHdGHx`|jD]U}d|j|j	fGHx|jD]}d|GHqWx|j
D]}d|GHqWqWHdGHxC|jD]8}d|j|jfGHx|jD]}d|GHq$WqWHdGHx(|j
D]}d	|d
|dfGHqKWWn6tk
rtjdtjdIJtjdnXdS(
Nis===== GROUPS =====s%s (id: %s)s  s===== ENVIRONMENTS =====s  *s===== CATEGORIES =====s===== LANGPACKS =====s	  %s (%s)RRsnewcomps.py: No such file:'%s'(tsystargvRR^RwRRfRRRRyRRR~Rtstderrtexit(tpRRR]RRR((s-/usr/lib/python2.7/site-packages/yum/comps.pytmains@	

t__main__(RRt
yum.constantst
yum.ErrorsRRRtyum.i18nRtyum.miscRRRROR
RtobjectR
R2RgR|R}RRR.(((s-/usr/lib/python2.7/site-packages/yum/comps.pyt<module>s*
		Ed0E	(

OHA YOOOO