import sys
def _isunicode(obj):
if sys.hexversion >= 0x3000000:
return isinstance(obj, str)
else:
return isinstance(obj, str)
def _israwstring(obj):
if sys.hexversion >= 0x3000000:
return isinstance(obj, bytes)
else:
return isinstance(obj, str)
def _to_unicode(obj, encoding="utf-8"):
if _isunicode(obj):
return obj
if not _israwstring(obj):
return obj
if hasattr(obj, 'decode'):
return obj.decode(encoding, errors="replace")
else:
if sys.hexversion >= 0x3000000:
return str(obj, encoding, errors="replace")
else:
return str(obj, encoding, errors="replace")
def _to_rawstring(obj, from_encoding="utf-8"):
if _israwstring(obj):
return obj
return obj.encode(from_encoding, errors="replace")
class PackageKitPackage:
def __init__(self, info, package_id, summary):
self.installed = (info == 'installed')
self.id = _to_rawstring(package_id)
self.summary = _to_unicode(summary)
n,v,a,r = self.id.split(';')
self.name = n
self.ver = v
self.arch = a
self.repoid = r
self.summary = _to_unicode(summary)
self.info = _to_rawstring(info)
def __str__(self):
(name, ver, arch, repo) = tuple(self.id.split(";"))
p = "%s-%s.%s" % (name, ver, arch)
return p
class PackageKitDistroUpgrade:
def __init__(self, upgrade_type, name, summary):
self.upgrade_type = upgrade_type
self.name = _to_rawstring(name)
self.summary = _to_unicode(summary)
def __str__(self):
return " type : %s, name : %s, summary : %s " % (
self.upgrade_type, self.name, self.summary)
class PackageKitDetails:
def __init__(self, package_id, package_license, group, detail, url, size):
self.id = _to_rawstring(package_id)
self.license = _to_rawstring(package_license)
self.group = _to_rawstring(group)
self.detail = _to_unicode(detail)
self.url = _to_rawstring(url)
self.size = int(size)
class PackageKitUpdateDetails:
def __init__(self, package_id, updates, obsoletes, vendor_url, bugzilla_url, \
cve_url, restart, update_text, changelog, state, \
issued, updated):
self.id = _to_rawstring(package_id)
self.updates = _to_rawstring(updates)
self.obsoletes = _to_rawstring(obsoletes)
self.vendor_url = _to_rawstring(vendor_url)
self.bugzilla_url = _to_rawstring(bugzilla_url)
self.cve_url = _to_rawstring(cve_url)
self.restart = (restart == 'yes')
self.update_text = _to_unicode(update_text)
self.changelog = _to_unicode(changelog)
self.state = _to_rawstring(state)
self.issued = _to_rawstring(issued)
self.updated = _to_rawstring(updated)
class PackageKitRepos:
def __init__(self, repo_id, description, enabled):
self.id = _to_rawstring(repo_id)
self.description = _to_unicode(description)
self.enabled = (enabled == 'yes')
class PackageKitFiles:
def __init__(self, package_id, files):
self.id = _to_rawstring(package_id)
self.files = _to_rawstring(files)
class PackageKitCategory:
def __init__(self, parent_id, cat_id, name, summary, icon):
self.parent_id = _to_rawstring(parent_id)
self.cat_id = _to_rawstring(cat_id)
self.name = _to_unicode(name)
self.summary = _to_unicode(summary)
self.icon = _to_rawstring(icon)
class PackageKitMessage:
def __init__(self, code, details):
self.code = code
self.details = details