golden hour
/usr/lib/python2.7/site-packages/yum
⬆️ Go Up
Upload
File/Folder
Size
Actions
Errors.py
4.26 KB
Del
OK
Errors.pyc
9.08 KB
Del
OK
__init__.py
304.17 KB
Del
OK
__init__.pyc
199.58 KB
Del
OK
callbacks.py
5.64 KB
Del
OK
callbacks.pyc
6.23 KB
Del
OK
comps.py
31.59 KB
Del
OK
comps.pyc
26.87 KB
Del
OK
config.py
49.89 KB
Del
OK
config.pyc
48.02 KB
Del
OK
constants.py
4.94 KB
Del
OK
constants.pyc
3.46 KB
Del
OK
depsolve.py
74.05 KB
Del
OK
depsolve.pyc
46.75 KB
Del
OK
drpm.py
12.65 KB
Del
OK
drpm.pyc
10.69 KB
Del
OK
failover.py
5 KB
Del
OK
failover.pyc
5.24 KB
Del
OK
fssnapshots.py
10.16 KB
Del
OK
fssnapshots.pyc
9.75 KB
Del
OK
history.py
61.13 KB
Del
OK
history.pyc
53.31 KB
Del
OK
i18n.py
20.44 KB
Del
OK
i18n.pyc
16.05 KB
Del
OK
igroups.py
9.31 KB
Del
OK
igroups.pyc
10.22 KB
Del
OK
logginglevels.py
7.9 KB
Del
OK
logginglevels.pyc
6.51 KB
Del
OK
mdparser.py
6.26 KB
Del
OK
mdparser.pyc
7.58 KB
Del
OK
metalink.py
9.19 KB
Del
OK
metalink.pyc
8.84 KB
Del
OK
misc.py
39.57 KB
Del
OK
misc.pyc
39.58 KB
Del
OK
packageSack.py
40.79 KB
Del
OK
packageSack.pyc
41.88 KB
Del
OK
packages.py
84.1 KB
Del
OK
packages.pyc
84.51 KB
Del
OK
parser.py
7.97 KB
Del
OK
parser.pyc
6.5 KB
Del
OK
pgpmsg.py
53.5 KB
Del
OK
pgpmsg.pyc
38.27 KB
Del
OK
pkgtag_db.py
4.86 KB
Del
OK
pkgtag_db.pyc
5.06 KB
Del
OK
plugins.py
28.1 KB
Del
OK
plugins.pyc
29.1 KB
Del
OK
repoMDObject.py
11.23 KB
Del
OK
repoMDObject.pyc
9.17 KB
Del
OK
repos.py
16.53 KB
Del
OK
repos.pyc
17.38 KB
Del
OK
rpmsack.py
70.25 KB
Del
OK
rpmsack.pyc
58.36 KB
Del
OK
rpmtrans.py
24.84 KB
Del
OK
rpmtrans.pyc
22.54 KB
Del
OK
sqlitesack.py
69.76 KB
Del
OK
sqlitesack.pyc
53.75 KB
Del
OK
sqlutils.py
6.27 KB
Del
OK
sqlutils.pyc
5.6 KB
Del
OK
transactioninfo.py
33.78 KB
Del
OK
transactioninfo.pyc
30.29 KB
Del
OK
update_md.py
25.9 KB
Del
OK
update_md.pyc
21.72 KB
Del
OK
updateinfo.py
18.29 KB
Del
OK
updateinfo.pyc
16.36 KB
Del
OK
yumRepo.py
83.85 KB
Del
OK
yumRepo.pyc
64.83 KB
Del
OK
Edit: 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
Save