From ac288895ae1e34cc2ab67c62d47d68756f926bbf Mon Sep 17 00:00:00 2001 From: Lingchao Xin Date: Wed, 11 Dec 2013 10:11:17 +0800 Subject: [PATCH] Integrate repo and image packages' datas into same format Change-Id: Ib08c4b1910474529d914b8d70fb057e3cdde3464 --- snapdiff/__init__.py | 6 +++--- snapdiff/image.py | 4 ++-- snapdiff/repo.py | 11 +++++++---- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/snapdiff/__init__.py b/snapdiff/__init__.py index e94c528..eeb9767 100644 --- a/snapdiff/__init__.py +++ b/snapdiff/__init__.py @@ -45,14 +45,14 @@ def diff_to_JSON(old_url, new_url, style='repo'): return added, removed, modified, rebuilded = [], [], [], [] - package_names = set(old.keys() + new.keys()) + package_names = set(old.__dict__.keys() + new.__dict__.keys()) def _pair_old_new(): for name in package_names: - if old.get(name) is None: + if old[name] is None: for pkg in new[name]: yield (None, pkg) - elif new.get(name) is None: + elif new[name] is None: for pkg in old[name]: yield (pkg, None) else: diff --git a/snapdiff/image.py b/snapdiff/image.py index 9ef72e2..8b46cc4 100644 --- a/snapdiff/image.py +++ b/snapdiff/image.py @@ -43,13 +43,13 @@ def ks_diff(old, new): def packages(url): content = _get_file(url, suffix='.packages') - packages_info = {} + packages_info = JsonDict() for line in content[1]: if line.strip(): name_arch, version, vcs = line.strip().split() name = name_arch.split('.')[0] - packages_info[name] = [] + setattr(packages_info, name, []) package_info = JsonDict() package_info.name = name package_info.version = JsonDict() diff --git a/snapdiff/repo.py b/snapdiff/repo.py index cccb932..4734a3e 100644 --- a/snapdiff/repo.py +++ b/snapdiff/repo.py @@ -1,4 +1,5 @@ from .utils import xml2obj +from .utils import JsonDict import gzip import mimetypes @@ -60,11 +61,13 @@ class Repo(object): @property def packages(self): - packages_info = {} + packages_info = JsonDict() - for _package in self._primary.package: - packages_info[_package.name] = (packages_info.get(_package.name) \ - or []) + [_package] + for package in self._primary.package: + if packages_info[package.name] is None: + setattr(packages_info, package.name, [package]) + else: + packages_info[package.name].append(package) return packages_info -- 2.7.4