�PNG
IHDR��;���IDATx��ܻn�0���K��
�)(�pA������7�LeG{�� �§㻢|��ذaÆ
6lذaÆ
6lذaÆ
6lom��$^�y���ذag�5bÆ
6lذaÆ
6lذa{����
6lذaÆ
�`����}H�Fkm�,�m����Ӫ���ô�ô!��x�|'ܢ˟;�E:���9�&ᶒ�}�{�v]�n&�6�
�h��_��t�ڠ͵-ҫ���Z;��Z$�.�P���k�ž)�!��o���>}l�eQfJ�T��u і���چ��\��X=8��Rن4`Vw�l�>����n�G�^��i�s��"ms�$�u��i��?w�bs[m�6�K4���O���.�4��%����/����b�C%��t��M�ז� �-l�G6�mrz2���s�%�9��s@���-�k�9�=���)������k�B5����\��+͂�Zsٲ��Rn��~G���R���C������wIcI��n7jJ���hۛNCS|���j0��8y�iHKֶۛ�k�Ɉ+;Sz������L/��F�*\��Ԕ�#"5��m�2��[S��������=�g��n�a�P�e�ғ�L��
lذaÆ
6l�^k��̱aÆ
6lذaÆ
6lذa;����
�_��ذaÆ
6lذaÆ
6lذaÆ
���R���IEND�B`
�
�v_c@sddlZddlZddlZddlZddlZddlZddlmZddlmZddl m
Z
ddlZddlZddl
mZmZddlmZmZddlZddlZddlmZmZddlZddlZd�Zd �Zd
�Zdefd��YZd
fd��YZdefd��YZ defd��YZ!defd��YZ"defd��YZ#defd��YZ$d�Z%de&fd��YZ'd�Z(de&fd��YZ)d�Z*e+d kre*�ndS(!i����N(t miscutils(tarch(tinitReadOnlyTransaction(tYumInstalledPackaget
parsePackages(tPackageSackBasetPackageSackVersion(t
to_unicodet_cGs4tjd�}zt|�}Wdtj|�X|S(sk Annoying people like to set umask's for root, which screws everything
up for user readable stuff. iN(tostumasktopen(targstoumasktret((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt_open_no_umask(s
cGs7tjd�}ztj|�}Wdtj|�X|S(sk Annoying people like to set umask's for root, which screws everything
up for user readable stuff. iN(R R
tmakedirs(RR
R((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt_makedirs_no_umask3s
cGs7yt|�}Wntk
r,}d|fSX|dfS(s1 IOError wrapper BS for open, stupid exceptions. N(RtIOErrortNone(RRte((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt_iopen>s
tRPMInstalledPackagecBs5eZd�Zd�Zd�Zd�Zd�ZRS(cCsGt|_tj||d|j�||_||_t|_|`dS(Ntyumdb( tTruet_has_hdrRt__init__RtidxtrpmdbtFalsethdr(tselftrpmhdrtindexR((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyRIs cCsf|jr|jS|jj�}|jd|j�}y|j�SWntk
ratj d�nXdS(NisRpmdb changed underneath us(
RRRt
readOnlyTStdbMatchRtnextt
StopIterationtErrorstPackageSackError(Rttstmi((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt_get_hdrSs
cCsy|jd�r%td||f�n|dkr@|j�}n|j�|_}t|_|dkru||}n|S(NRs%s has no attribute %sR(t
startswithtAttributeErrorR*RRR(Rtvarnametval((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt__getattr___s
cCs�t�}xY|jD]N\}}}x<�|jj|||�D]"}||kr;|j|�q;q;WqWxW|j|jD]E}x<�|jj|dd�D]"}||kr�|j|�q�q�WqvWt|�S(s4return list of installed pkgs requiring this packageN(NNN( tsettprovidesRtgetRequirestaddtfilelisttdirlistRtlist(Rtpkgsettreqntreqftreqevrtpkgtfn((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytrequiring_packagesss cCsot�}xY|jD]N\}}}x<�|jj|||�D]"}||kr;|j|�q;q;WqWt|�S(N(R0tstrong_requiresRtgetProvidesR3R6(RR7R8R9R:R;((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytrequired_packages�s (t__name__t
__module__RR*R/R=R@(((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyRGs
tRPMDBProblemcBs eZdZd�Zd�ZRS(sJ
Represents a problem in the rpmdb, from the check_*() functions.
cKs;||_||_x"|D]}t||||�qWdS(N(R;tproblemtsetattr(RR;RDtkwargstkwarg((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyR�s
cCs8|dkrdSt|j|j�p7t|j|j�S(Ni(RtcmpR;RD(Rtother((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt__cmp__�s(RARBt__doc__RRJ(((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyRC�s tRPMDBProblemDependencycBseZd�ZRS(cCsa|jdkr,d|jtd�|jfSd|jtd�|jdjtt|j��fS(Ntrequiress%s %s %sshas missing requires ofs%s %s %s: %sshas installed conflictss, ( RDR;Rtmissingtfoundtjointmaptstrt conflicts(R((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt__str__�s
(RARBRT(((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyRL�stRPMDBProblemDuplicatecBseZd�Zd�ZRS(cKstj||d|�dS(Nt duplicate(RCR(RR;RF((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyR�scCstd�|j|jfS(Ns%s is a duplicate with %s(RR;RV(R((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyRT�s(RARBRRT(((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyRU�s tRPMDBProblemObsoletedcBseZd�Zd�ZRS(cKstj||d|�dS(Nt obsoleted(RCR(RR;RF((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyR�scCstd�|j|jfS(Ns%s is obsoleted by %s(RR;t obsoleter(R((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyRT�s(RARBRRT(((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyRW�s tRPMDBProblemProvidescBseZd�Zd�ZRS(cKstj||d|�dS(NR1(RCR(RR;RF((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyR�scCstd�|j|jfS(Ns%%s provides %s but it cannot be found(RR;tprovide(R((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyRT�s(RARBRRT(((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyRZ�s tRPMDBPackageSackcBs�eZdZiejejejfd6ejejej fd6ej
ejejfd6ej
ejejfd6ZeZddWdWdd�Zd�ZeedW�Zd �Zd
�Zd�Zd�Zd
�Zdd�Zd�Zdd�Zd�Z d�Z!d�Z"d�Z#d�Z$d�Z%d�Z&e'j(Z)dWdWd�Z*dWd�Z+e,e-d��Z.e,d��Z/dWdWe-d�Z0d�Z1d �Z2d!�Z3d"�Z4d#�Z5d$�Z6d%�Z7d&�Z8d'�Z9d(�Z:d)�Z;d*�Z<�d+�Z=d,�Z>d-�Z?d.�Z@d/�ZAd0�ZBd1�ZCd2�ZDd3�ZEed4�ZFd5�ZGd6�ZHd7�ZId8�ZJe-id9�ZKe,d:��ZLe-d;�ZMgd<��ZNdWdWdWdWdWd=�ZOd>�ZPdWd?�ZQd@�ZRdWdWdWdWdWdA�ZSdB�ZTdC�ZUdD�ZVdE�ZWdF�ZXdG�ZYdWdWdWdWdWdH�ZZdI�Z[dJ�Z\dK�Z]e,dL��Z^dWdXdM�Z_dN�Z`dWdYdO�ZadP�ZbdQ�ZcdWdR�ZddS�ZegdT�ZfdU�ZgdV�ZhRS(Zs*
Represent rpmdb as a packagesack
RMR1RSt obsoletest/s/var/lib/yumcCs�||_i|_i|_t�|_i|_t|_t�|_t�|_ t�|_
g|_i|_i|_
t|_|dkr�|d}n|j|�tjj|�j|j�s�|d||_n ||_ttd�rtjd�}nd}tjj|d|�|_d|_d|_i|_d|_||_t|_d|_ iid6id6id6id 6|_!tjj|jd
�}tjj|d�}t"d|d
|�|_#dS(Ns/rpmdb-indexesR^texpandMacros%_dbpaths/var/lib/rpmR1RMRSR]s/yumdbs/versiontdb_pathtversion_path($troott_idx2pkgt _name2pkgR0t_pkgnames_loadedt_tup2pkgRt_completely_loadedt_pkgname_failst_pkgmatch_failst_provmatch_failst_simple_pkgtup_listt_get_pro_cachet_get_req_cachet_loaded_gpg_keysRtsetCacheDirR tpathtnormpathR+t_persistdirthasattrtrpmR_t
_rpmdbpatht_have_cached_rpmdbv_datat_cached_conflicts_datat_trans_cache_storeR(t
releasevert
auto_closet_cached_rpmdb_mtimet_cachetRPMDBAdditionalDataR(RRbRytcachedirt
persistdirtdbpathtaddldb_pathRa((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyR�sN
cCs�|js<�|jdt�}|dk r<�|j�|_q<�n|js~x6|j�D]%\}}|jj|j|��qRWn|jS(sTGetter for the pkglist property.
Returns a list of package tuples.
t
load_packagesN(RktpreloadPackageChecksumsRRtkeyst
_get_packagestappendt
_hdr2pkgTuple(RtcsumpkgtupsRR)((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt_get_pkglists cCs�i|_i|_t�|_i|_t|_t�|_t�|_t�|_ g|_
i|_i|_t
dk r�t
j�niid6id6id6id6|_d|_d|_|j�d|_dS(s� Drop all cached data, this is a big perf. hit if we need to load
the data back in again. Also note that if we ever call this while
a transaction is ongoing we'll have multiple copies of packages
which is _bad_. R1RMRSR]N(RcRdR0ReRfRRgRiRhRjRkRlRmtmiscRtunshare_dataR|RvRwttransactionResetR{(R((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytdropCachedDatas,
cCs�t|_t�|_t�|_g|_i|_i|_tdk rUtj
�niid6id6id6id6|_d|_d|_
|j�|jd}tjj|�|_d�}g}x�|D]�}|jj|j�||j|j�|jtjkrq|jj|j�|j|�|jrq|j|j}||j |j!�||j|j�qqn|jtj"kr�||j |j#j!�||j|j�q�q�Wx�|D]�}|j\}}} }
}|j$|| |
||�}|s|j%d|�q�n|d}|j#j&�}
|
dkr;q�nt'|
d�t'|
d �}}d
|j(j)ks�d|j(j)kr�q�n||j(j)d
<||j(j)d|jj|�n|S(NR1(RjR�R3(RR�R((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytsearchProvides�scCs|j|d�S(NRM(R�(RR�((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytsearchRequires�scCs|j|d�S(NR](R�(RR�((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytsearchObsoletes�scCs|j|d�S(NRS(R�(RR�((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytsearchConflicts�scCs|jS(N(tpkglist(R((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt
simplePkgList�scCsj|s
dS|\}}|jd|d|�}|sGtjd|�ngtj|�D]}|j^qWS(NR�RsNo Package Matching %s(t_searchR&R'R�tnewestInListR�(RtnaTupR�R�RtallpkgR�((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytreturnNewestByNameArchscCsB|s
dS|jd|�}|s5tjd|�ntj|�S(NR�sNo Package Matching %s(R�R&R'R�R�(RR�tallpkgs((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytreturnNewestByNamescCs�|st|�tjkr dSg}xm|D]e}|s?q-n|d}|dkr^d}n|rs|j�}n|j|tj||�f�q-W|S(Nit?t*t[(R�R�R�(tlenR�tPATTERNS_MAXRtlowerR�R�tcompile_pattern(R�tignore_caseRtpattqpat((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt_compile_patternss
#cCs?|dkrtSx(|D] \}}|d}|dkrBd}nt|�}|dd}|rq|j�}n|dk r�||kr�||dkr�qn||d�r�tS|d|�r�tS|d|�r�tS|d|�r�tS|d|�rtS||d |�rtS|d
|d|�rtSqWtS(
s<� This is basically parsePackages() but for rpm hdr objects. tepocht0R�is)%(name)s-%(version)s-%(release)s.%(arch)ss%(name)s.%(arch)ss%(name)s-%(version)ss %(name)s-%(version)s-%(release)ss*:%(name)s-%(version)s-%(release)s.%(arch)ss %(name)s-s!:%(version)s-%(release)s.%(arch)sN(RRRRR�R(t
repatternsRR�R�trepatR�tqname((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt_match_repattern/s:
(
c
Cs||jr�|r�g}xz|D]k}|j|g�}|s{|rEPntj|�rXPnd|krhPnd|kr{Pq{n|j|�qW|Sng}|r|rg}xY|D]Q}||jkr�q�n||jkr�|j|j|�q�n|j|�q�W|}|s|Sn|js�|j ||�}xB|j
�D]4\} }
|j|| |�rC|j| |
�qCqCW|dk|_n|jj�}|jr�g|D]}|jdkr�|^q�}n|rxt|||�}|jj|d�|r|d|d|}n|d|d}xG|D]<�}x3|D]+}|j|krB|jj|j�qBqBWq5Wn|S(s�Returns a list of packages. Note that the packages are
always filtered to those matching the patterns/case. repoid is
ignored, and is just here for compatibility with non-rpmdb sacks. t-t.s
gpg-pubkeyiiiN(RgtsearchNamesR�R�textendRiReRdR�R�R�R�R�RRcR�RnR�RtupdateR3(
RtrepoidR�R�RR�tpkgsttpatstrpatsRRt
pkgobjlistR;((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytreturnPackagesRs`
+
!cCs�|jdkr�i}x�|jd�D]u\}}|tjsDq%n|j||�}|||j<|jrrq%n||_t |_|j
t|_|`q%W|j�|_n|jS(s� Load the packages which have conflicts from the rpmdb, newer
versions of rpm have an index here so this is as fast as
cached (we test rpm version at cache write time). tconflictnameN(
RwRR�RttRPMTAG_CONFLICTNAMER�R�RRRRSRR�(RR�RRR�((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt _uncached_returnConflictPackages�s
cCs�tj|jtj�sdS|jd}t|dd�}|jd|�|jdt|��x9t|�D]+}x"|jD]}|jd|�q�WqqW|j �tj
|d|�dS(Ns
/conflictss.tmptws%s
s%u
(R taccessR�tW_OKRtwriteR�tsortedR�tclosetrename(RR�trpmdbvtconflicts_fnametfoR;tvar((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt_write_conflicts_new�s
cCs*|jdt�d}|j||�dS(Nt main_onlyi(t
simpleVersionRR(RR�R((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt_write_conflicts�scCs�|jdkr�i}x�|jd�D]u\}}|tjsDq%n|j||�}|||j<|jrrq%n||_t |_|j
t|_|`q%W|j�|_n|jS(s� Load the packages which have obsoletes from the rpmdb, this is
needed because newer rpm's have obsoletes imply conflicts. tobsoletenameN(
t_cached_obsoletes_dataRR�RttRPMTAG_OBSOLETENAMER�R�RRRR]RR�(RR�RRR�((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt _uncached_returnObsoletePackages�s
cCs�tj|jtj�sdS|jd}t|dd�}|jd|�|jdt|��x9t|�D]+}x"|jD]}|jd|�q�WqqW|j �tj
|d|�dS(Ns
/obsoletess.tmpR�s%s
s%u
(R R�R�R�RR�R�R�R�RR(RR�Rtobsoletes_fnameRR;R((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt_write_obsoletes_new�s
cCs*|jdt�d}|j||�dS(NRi(RRR(RR�R((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt_write_obsoletes�scCsxtj|jd�tj|jd�tj|jd�tj|jd�tj|jd�tjd|�dS(s� This shouldn't be called, but people are hitting weird stuff so
we want to deal with it so it doesn't stay broken "forever". s/versions
/conflictss
/obsoletess/file-requiress/pkgtups-checksumssRpmdb checksum is invalid: %sN(R�tunlink_fR�R&R'(Rtcaller((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyR��s
cCsR|js
dSd�}|jd|}t|�\}}|dkrIdS|j�}|jdt�d}|s�||d kr�dSg}y�t||��} xq| dkr| d8} ||�||�||�||�||�f}
t|
d�|j|j |
��q�W|j�dkr+dSWnt
k
rM|j|�dSX|S( NcSs|j�d S(Ni����(treadline(R((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt _read_strsR^Rii����iit(t__cache_rpmdb__RR�RRRRtintR�tsearchPkgTuplet
ValueErrorR�(RtfnameRt
full_fnameRRtfrpmdbvRRtpkgtups_numR�((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt
_read_pkglists4
!
cCs|jd�|_|jS(NRS(RRw(R((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt_read_conflicts3scCs|jr||jd|D]6}| j ||kr�||||
|| |�q�q�WqiW|jdkr�|j
|�n|r||||gS||gS( s5 Return a simple version for all installed packages. cSso|j|i�}|jdt��}|j||�|dk rk|j|t��}|j||�ndS(N(R�RRR�(tireposR�trevR;R�tirevstrpsv((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt_up_revs�sR�R�t installedt from_repot@tfrom_repo_revisionN(RHRRR�R�R�R�R�R�R�RQRSRvRJ(RRtgroupsRORtmainRKt main_grpstirepos_grpsR;tydbiR�tgroupR�RL((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyR�sL
%cCskd}x^|D]V}xM|D]E}t||�}|r|j�j|�dkr|d7}PqqWq
W|S(Nii����i(RR�tfind(tfieldst
searchstringsRtcounttstfieldtvalue((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt_find_search_fields�s
!
cCs�|std�|�}ng}x]|j�D]O\}}|j|||�}|dkr.|j|j||�|f�q.q.W|S(NcSs
|j�S(N(R�(R�((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt�si(RQR�RaR�R�(RR[R\tloweredRRRR�((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt"searchPrimaryFieldsMultipleStrings�s&cCs4g}x'|D]}|j|jd|��q
W|S(NR�(R�R�(Rtnamest
returnListR�((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyR�s
cCs|j|||||�S(N(R�(RR�R�tvertrelR((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyR�scCsdS(N((Rtarchlist((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytexcludeArchsscCsA|j�}g|jdt�D]\}}|j||�^qS(Ntheaders(R"treturnLeafNodesRR�(RR�R(thR)((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyRlscoss|j�}|j||�}x2|D]*}|ddkr%||j�fVq%q%W~|jro|jj�ndS(sLdbMatch() wrapper generator that yields (header, index) for matches
R�s
gpg-pubkeyN(R"R#R)RzR(R(RRtkwdsR(R)Rm((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyR�s
c CsA|dk r||jkrgS|||||f}||jkrQ|j|gSt�}g}|jsx||jkr!|dk r�|jj|g�} | s�|jj|�q�n|j �} xY| D]Q}
xHdD]3}||dk r�||t
|
|�kr�Pq�q�W|j|
�q�W|S|j�}|dk rN|j
d|�}
n6|dk ro|j
d|�}
n|j
�}
t|_t}x�|
D]�\}}|j||�}
|jj|
j�t}xHdD]3}||dk r�||t
|
|�kr�Pq�q�W|j|
�q�W|r=|dk r=|jj|�n|S( s4List of matching packages, to zero or more of NEVRA.RRhRgR�R�N(sarchsrelsversepoch(sarchsrelsversepoch(RRhRftlocalsRgReRdR�R3R�tgetattrR�R"R�RRR�R�(RR�R�RgRhRR�tlocRR�R�R�R(R)tdoneRR((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyR�!sL
)
)cCs�||jkr|j|St|||�}||j|<|jj|jg�j|�||j|j<|jr�|j dkr�|jd}tj
j|�|_ n|S(Ns /Packages(RcRRdR�R�R�RfR�RR{RRuR RpR�(RRR!R�R�((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyR�Xs
cCs�tj|d�}tj|d�}tjt|d��}tjt|d��}|d}|dkrwd}nt|�}tj|�}tj|||||f�S(NR�RtversiontreleaseR�R�(R�t
share_dataRRR(RRR�RRgRhR�((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyR�es
cCstjdtdd�|jS(NscgetPkgList() will go away in a future version of Yum.
Please access this via the pkglist attribute.t
stackleveli(twarningstwarntDeprecationWarningR�(R((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt
getPkgListts
cCs9tjdtdd�g|j�D]\}}|^q#S(Ns6getHdrList() will go away in a future version of Yum.
Rvi(RwRxRyR�(RRR((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt
getHdrList{s
cCs_tjdtdd�g}x3|jD](\}}}}}|j||f�q&Wtj|�S(Ns>getNameArchPkgList() will go away in a future version of Yum.
Rvi(RwRxRyR�R�Rtunique(RtlstR�RR�RgRh((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytgetNameArchPkgList�s
cCsYtjdtdd�g}x-|jD]"\}}}}}|j|�q&Wtj|�S(Ns:getNamePkgList() will go away in a future version of Yum.
Rvi(RwRxRyR�R�RR|(RR}R�RR�RgRh((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytgetNamePkgList�s
cCsTtjdtdd�g|jd|d|d|d|d|�D]}|j^qAS( Ns@returnTuplebyKeyword() will go away in a future version of Yum.
RviR�RR�RgRh(RwRxRyR�R�(RR�RR�RgRhR�((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytreturnTupleByKeyword�s
c Cs�tjdtdd�|\}}}}}|jd|d|d|d|d|�}t|�d kr{|d }|jgSgSdS(
Ns?returnHeaderByTuple() will go away in a future version of Yum.
RviR�RR�RgRhi(RwRxRyR�R�R( RtpkgtupleR�R�RR�R�R}titem((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytreturnHeaderByTuple�s
*
cCsotjdtdd�|\}}}}}|d kr@d}ng|j|||||�D]}|j^q\S(
s?returns a list of header indexes based on the pkgtuple provideds>returnIndexbyTuple() will go away in a future version of Yum.
Rviis(none)RR�N(Nis(none)R(RwRxRyRR�R(RR�R�RR�RsRtR�((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytreturnIndexByTuple�s
cCs
t�dS(N(tNotImplementedError(RR(((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytaddDB�scCs�|dkrd}nt|�tjkrEtj|�\}}}n>t|�tjtjfkru|\}}}nd}}}|tj |�tj |�tj |�tj |�ff}tj |�S(s2 Given random stuff, generate a usable dep tuple. iN(
Rttypettypest
StringTypeRtstringToVersiont TupleTypetListTypeR�Ru(R�tflagsRstr_etr_vtr_rtdeptup((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt
_genDeptup�s c
Cs�tj|�}|j|||�}||jkr>|j|S|dd}|j|�}i}xk|D]c}|ddkr�|dkr�|ddfg|||j|S|dd}|j|�}i}xk|D]c}|ddkr�|dkr�|ddfg||R+R?R3tyumtdepsolveR�R�Rt
formatRequireRLR�RSR�(RR�t providersR=R;trreqtreqR�RgRNtprobtcreqtrestnrestconflicting_poRO((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytcheck_dependenciessJ
4 ccs�d}xvt|j��D]b}|j|kr4qn|jt|j��rRqn|dkrj|}qn||fV|}qWdS(N(RR�R�R�tintersectionR0tprovides_names(Rtignore_providestlastR;((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt_iter_two_pkgsBsc Cs�t|�}g}x�|j|�D]�\}}|j|jkrFq"n|j|�r�||kr�tj|j�r�|jdkr�q"ntj|j�r�|jdkr�q"q�n|jt|d|��q"W|S(s� Checks for any "duplicate packages" (those with multiple versions
installed), we ignore any packages with a provide in the passed
provide list (this is how installonlyworks, so we do the same). tnoarchRV(R0R�R�tverEQRtisMultiLibArchR�RU(RR�R=R�R;((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytcheck_duplicatesPs!! cCs�g}g}x6t|j��D]"}|js4qn|j|�qWxMt|j��D]9}x0|j|�D]}|jt|d|��qnWqXW|S(s@ Checks for any packages which are obsoleted by other packages. RY(R�R�R]R�tobsoletedByRW(Rt
obsoletersR=R;tobspo((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytcheck_obsoletedcs !cCs�g}xut|j��D]a}xX|jD]M}|\}}}||j|||�kr)|jt|d|��Pq)q)WqW|S(sq For each package, check that a provides search for it's name (and
everything it provides) finds it. R[(R�R�R1R?R�RZ(RR=R;tprovtupR�R�Rs((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytcheck_providespsN(NNN(NNN(iRARBRKRttRPMTAG_REQUIRENAMEtRPMTAG_REQUIREVERSIONtRPMTAG_REQUIREFLAGStRPMTAG_PROVIDENAMEtRPMTAG_PROVIDEVERSIONtRPMTAG_PROVIDEFLAGSR�tRPMTAG_CONFLICTVERSIONtRPMTAG_CONFLICTFLAGSRtRPMTAG_OBSOLETEVERSIONtRPMTAG_OBSOLETEFLAGSR�RRRRR�tpropertyR�R�R�RoR"R�R�R�R�R�R�R�R�R�R�R�RtcontainsRPR�R�tstaticmethodRR�R�R�R�RR R
RRR�RRR R!R"R#R$R(R�R*R/R;R>R%R�RBR&RHRJRRaRdR�R�RjRlR�R�R�R�RzR{R~RR�R�R�R�R�R?R�R2R�R�R�R�R�R�R�(((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyR\�s�
1 W #N $
< ( &C #7 7
/
cCs|jdd�jdd�S(NR^Rt~(treplace(Rp((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt _sanitize|sR}cBsJeZdZddd�Zd�Zd�Zdddd�Zd�ZRS(sQclass for access to the additional data not able to be stored in the
rpmdbs/var/lib/yum/yumdbcCs�tj�|_||j_||j_t|j_i|_tj j
|jj�s�y t|jj�t|j_Wq�t
tfk
r�}q�Xn*tj|jjtj�r�t|j_niid6|_dS(Ntattr(R�t
GenericHolderR�R`RaRtwritablet _packagesR RpRDRRRRIR�R�tyumdb_cache(RR`RaR((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyR�s cCs`d|jj}tj|�}x:|D]2}tjj|�jd�d}||j||j}n|dkr]||jkr]dS||jdkr|jd|d}|dk r�|dk r�|j|jf|j|jfkr�|jd|dj|�||j|s#Invalid value of attribute %s on %s(R�R�R�R�R,R�tstat_fRRR�R�R�R�R�RterrnotreadRt_validators( RR�R<�R�tkeyRRR`tvalid((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt_readSs:
cCs�t|�}|j|�}||jkr7|j|=n|j|�tjj|�r�ytj|�Wq�tt fk
r�t
d||f�q�XndS(sremove the attribute files!Cannot delete attribute %s on %s N(R�R�R�R�R RpRDtunlinkRRIR,(RR�R<�((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt_delete}s
cCs
|j|�S(N(R�(RR�((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyR/�scCs9|jd�s"|j||�ntj|||�dS(NR(R+R�tobjectt__setattr__(RR�R`((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyR�scCs3|jd�s|j|�ntj||�dS(NR(R+R�Rt__delattr__(RR�((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyR�scCs|j|�}|dk S(N(R�R(RR�R�((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt__contains__�sccs�x|jD]}|Vq
Wxktj|jd�D]S}|t|j�d}||jkrbq0n|r~|jd�r~q0n|Vq0WdS(Ns/*is.tmp(R�R�R�R�R�(Rtshow_hiddenR�((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyt__iter__�s cCsVx'|jdt�D]}|j|�qWytj|j�Wntk
rQnXdS(NR(RRR�R trmdirR�RI(RR�((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytclean�s
cCs,y|j|�}Wntk
r'|SX|S(sretrieve an add'l data obj(R�R,(RR�tdefaultR�((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyR��s
N(RARBR0R�R�R�RRR�R�R�R�R�R�R�R/RRRRRRR�(((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyR��s.
& * cCs,td�}x|j�D]}|GHqWdS(NR^(R\R�(tsacktp((s//usr/lib/python2.7/site-packages/yum/rpmsack.pyRU�st__main__(,RtR�RwR�R tos.pathtrpmUtilsRRtrpmUtils.transactionRR�R&tpackagesRRtpackageSackRRtfnmatchtretyum.i18nRRR�tyum.depsolveR�RRRRRCRLRURWRZR\R�RR}R�R�RURA(((s//usr/lib/python2.7/site-packages/yum/rpmsack.pytsN E
������ F �