X7ROOT File Manager
Current Path:
/usr/lib/python2.7/site-packages/yum
usr
/
lib
/
python2.7
/
site-packages
/
yum
/
📁
..
📄
Errors.py
(4.26 KB)
📄
Errors.pyc
(9.08 KB)
📄
__init__.py
(304.1 KB)
📄
__init__.pyc
(199.78 KB)
📄
callbacks.py
(5.64 KB)
📄
callbacks.pyc
(6.23 KB)
📄
comps.py
(31.59 KB)
📄
comps.pyc
(26.87 KB)
📄
config.py
(49.89 KB)
📄
config.pyc
(48.02 KB)
📄
constants.py
(4.52 KB)
📄
constants.pyc
(3.42 KB)
📄
depsolve.py
(74.05 KB)
📄
depsolve.pyc
(46.91 KB)
📄
drpm.py
(12.85 KB)
📄
drpm.pyc
(10.83 KB)
📄
failover.py
(5 KB)
📄
failover.pyc
(5.24 KB)
📄
fssnapshots.py
(10.16 KB)
📄
fssnapshots.pyc
(9.75 KB)
📄
history.py
(61.13 KB)
📄
history.pyc
(53.31 KB)
📄
i18n.py
(20.44 KB)
📄
i18n.pyc
(16.05 KB)
📄
igroups.py
(9.31 KB)
📄
igroups.pyc
(10.22 KB)
📄
logginglevels.py
(7.9 KB)
📄
logginglevels.pyc
(6.51 KB)
📄
mdparser.py
(6.26 KB)
📄
mdparser.pyc
(7.58 KB)
📄
metalink.py
(9.19 KB)
📄
metalink.pyc
(8.84 KB)
📄
misc.py
(39.57 KB)
📄
misc.pyc
(39.58 KB)
📄
packageSack.py
(40.79 KB)
📄
packageSack.pyc
(41.88 KB)
📄
packages.py
(84.1 KB)
📄
packages.pyc
(84.51 KB)
📄
parser.py
(7.97 KB)
📄
parser.pyc
(6.5 KB)
📄
pgpmsg.py
(53.5 KB)
📄
pgpmsg.pyc
(38.27 KB)
📄
pkgtag_db.py
(4.86 KB)
📄
pkgtag_db.pyc
(5.06 KB)
📄
plugins.py
(28.1 KB)
📄
plugins.pyc
(29.1 KB)
📄
repoMDObject.py
(11.23 KB)
📄
repoMDObject.pyc
(9.17 KB)
📄
repos.py
(16.53 KB)
📄
repos.pyc
(17.38 KB)
📄
rpmsack.py
(70.25 KB)
📄
rpmsack.pyc
(58.36 KB)
📄
rpmtrans.py
(24.84 KB)
📄
rpmtrans.pyc
(22.54 KB)
📄
sqlitesack.py
(69.76 KB)
📄
sqlitesack.pyc
(53.75 KB)
📄
sqlutils.py
(6.27 KB)
📄
sqlutils.pyc
(5.6 KB)
📄
transactioninfo.py
(33.78 KB)
📄
transactioninfo.pyc
(30.29 KB)
📄
update_md.py
(25.9 KB)
📄
update_md.pyc
(21.72 KB)
📄
updateinfo.py
(18.29 KB)
📄
updateinfo.pyc
(16.36 KB)
📄
yumRepo.py
(83.85 KB)
📄
yumRepo.pyc
(64.83 KB)
Editing: pkgtag_db.py
#!/usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2009 Red Hat, Inc # written by seth vidal # parse sqlite tag database # return pkgnames and tag that was matched from sqlutils import sqlite, executeSQL, sql_esc from Errors import PkgTagsError import sqlutils import sys import misc def catchSqliteException(func): """This decorator converts sqlite exceptions into PkgTagsError""" def newFunc(*args, **kwargs): try: return func(*args, **kwargs) except sqlutils.sqlite.Error, e: # 2.4.x requires this, but 2.6.x complains about even hasattr() # of e.message ... *sigh* if sys.hexversion < 0x02050000: if hasattr(e,'message'): raise PkgTagsError, str(e.message) else: raise PkgTagsError, str(e) raise PkgTagsError, str(e) newFunc.__name__ = func.__name__ newFunc.__doc__ = func.__doc__ newFunc.__dict__.update(func.__dict__) return newFunc class PackageTagDB(object): @catchSqliteException def __init__(self, repoid, sqlite_file): self.sqlite_file = sqlite_file self.repoid = repoid # take a path to the sqlite tag db # open it and leave a cursor in place for the db self._conn = sqlite.connect(sqlite_file) self.cur = self._conn.cursor() def _getTagsCount(self): ''' Unused, so no need to cache. ''' for n in self._sql_exec("select count(*) from packagetags",): return n[0] count = property(fget=lambda self: self._getTagsCount(), doc="Number of entries in the pkgtag DB") @catchSqliteException def _sql_exec(self, sql, *args): """ Exec SQL against an MD of the repo, return a cursor. """ executeSQL(self.cur, sql, *args) return self.cur def search_tags(self, tag): """Search by tag name/glob Return dict of dict[packagename] = [stringmatched, stringmatched, ...]""" res = {} (tag, esc) = sql_esc(tag) query = "SELECT name, tag, score FROM packagetags where tag like ? %s" % esc tag = '%' + tag + '%' rows = self._sql_exec(query, (tag,)) for (name, tag, score) in rows: if name not in res: res[name] = [] res[name].append(tag) return res def search_names(self, name): """Search by package name/glob. Return dict of dict[packagename] = [tag1, tag2, tag3, tag4, ...]""" res = {} (name, esc) = sql_esc(name) query = "SELECT name, tag, score FROM packagetags where name like ?%s " % esc name = '%' + name + '%' rows = self._sql_exec(query, (name,)) for (name, tag, score) in rows: if name not in res: res[name] = [] res[name].append(tag) return res class PackageTags(object): def __init__(self): self.db_objs = {} def add(self, repoid, sqlite_file): if repoid in self.db_objs: raise PkgTagsError, "Already added tags from %s" % repoid dbobj = PackageTagDB(repoid, sqlite_file) self.db_objs[repoid] = dbobj def remove(self, repoid): if repoid in self.db_objs: del self.db_objs[repoid] else: raise PkgTagsError, "No tag db for %s" % repoid def search_names(self, name): res = {} for ptd in self.db_objs.values(): for (name, taglist) in ptd.search_names(name).items(): if not name in res: res[name] = [] res[name].extend(taglist) out = {} for (name, taglist) in res.items(): out[name] = misc.unique(taglist) return out def search_tags(self, tagname): res = {} for ptd in self.db_objs.values(): for (name, taglist) in ptd.search_tags(tagname).items(): if not name in res: res[name] = [] res[name].extend(taglist) out = {} for (name, taglist) in res.items(): out[name] = misc.unique(taglist) return out
Upload File
Create Folder