diff: Use difftype namedtuple
authorEd Bartosh <eduard.bartosh@intel.com>
Fri, 16 Jan 2015 12:16:31 +0000 (14:16 +0200)
committerEd Bartosh <eduard.bartosh@intel.com>
Fri, 23 Jan 2015 12:51:32 +0000 (14:51 +0200)
Introduced new sturcture difftype to handle project and manifest. This
should fix 2 pylint warnings: 'Too many local variables' and
'Too many arguments'.

Fixes: #2320

Change-Id: I9912193871da692ca9f297640f7ef593ecff9df5
Signed-off-by: Ed Bartosh <eduard.bartosh@intel.com>
repa/diff.py

index d456bdd..954321b 100644 (file)
@@ -27,13 +27,14 @@ import sys
 import os
 import json
 
+from collections import namedtuple
+
 import xml.etree.ElementTree as ET
 
 from repa.common import RepaException, Colorizer, get_prerelease
 from repa.obs import OBS
 from repa.main import sub_main
 
-
 def gen_data(manifest):
     """Parse manifest. Yield git path and revision for every entry."""
     try:
@@ -58,16 +59,16 @@ def get_tag(obs, project, package):
 
     return None
 
-def diff(obs, cmp_project, target_project, cmp_manifest,
-         target_manifest, is_colorize=False):
+def diff(obs, cmpinfo, targetinfo, is_colorize=False):
     """
     Show the difference between two projects in terms of
     revisions and tags.
+    cmpinfo and target info are named tuples: (project, manifest)
     """
     colorizer = Colorizer(is_colorize)
 
-    target_data = dict(gen_data(target_manifest))
-    cmp_data = dict(gen_data(cmp_manifest))
+    target_data = dict(gen_data(targetinfo.manifest))
+    cmp_data = dict(gen_data(cmpinfo.manifest))
 
     for path in sorted(cmp_data):
         rev_target = target_data.get(path)
@@ -76,12 +77,12 @@ def diff(obs, cmp_project, target_project, cmp_manifest,
             package = os.path.basename(path)
 
             # Get tag, accepted to cmp_project
-            cmp_tag = get_tag(obs, cmp_project, package)
+            cmp_tag = get_tag(obs, cmpinfo.project, package)
             status = ''
             # Colorize tag if it's pending in target project
             if cmp_tag:
                 try:
-                    prerelease = get_prerelease(cmp_tag, target_project)
+                    prerelease = get_prerelease(cmp_tag, targetinfo.project)
                     if obs.exists(prerelease):
                         if is_colorize:
                             cmp_tag = colorizer.green(cmp_tag)
@@ -112,8 +113,9 @@ class Diff(object):
     def run(argv):
         """Command line entry point. Called from [sub_]main."""
         obs = OBS(argv.apiurl, argv.apiuser, argv.apipasswd)
-        return diff(obs, argv.cmp_project, argv.project,
-                    argv.cmp_manifest, argv.manifest, argv.colorize)
+        difftype = namedtuple('diff', ['project', 'manifest'])
+        return diff(obs, difftype(argv.cmp_project, argv.cmp_manifest),
+                    difftype(argv.project, argv.manifest), argv.colorize)
 
 if __name__ == '__main__':
     sys.exit(sub_main(sys.argv[1:], Diff()))