~xnox/ubuntu-archive-tools/sru-report-autopkgtest-vomit

« back to all changes in this revision

Viewing changes to pocket-mismatches

  • Committer: Colin Watson
  • Date: 2012-07-31 11:51:59 UTC
  • Revision ID: cjwatson@canonical.com-20120731115159-a0g2d0dmq3p18rjw
Simplify using collections.defaultdict.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
 
21
21
from __future__ import print_function
22
22
 
 
23
from collections import defaultdict
23
24
import gzip
24
25
from optparse import OptionParser
25
26
import os
51
52
def process(series, components, arches):
52
53
    archive = os.path.expanduser('~/mirror/ubuntu/')
53
54
 
54
 
    pkgcomp = {}
55
 
    pkgsect = {}
56
 
    pkgprio = {}
 
55
    pkgcomp = defaultdict(lambda: defaultdict(list))
 
56
    pkgsect = defaultdict(lambda: defaultdict(list))
 
57
    pkgprio = defaultdict(lambda: defaultdict(list))
57
58
    for suite in pockets(series):
58
59
        for component in components:
59
60
            for arch in arches:
63
64
                                            (suite, component, arch))
64
65
                except IOError:
65
66
                    continue
 
67
                suite_arch = '%s/%s' % (suite, arch)
66
68
                for stanza in re.split(r'\n\n+', binaries.read()):
67
69
                    fields = {}
68
70
                    for line in stanza.splitlines():
71
73
                            fields[key.lower()] = value
72
74
                    if 'package' in fields:
73
75
                        pkg = fields['package']
74
 
                        pkgcomp.setdefault(pkg, {})
75
 
                        pkgcomp[pkg].setdefault(component, [])
76
 
                        pkgcomp[pkg][component].append('%s/%s' % (suite, arch))
 
76
                        pkgcomp[pkg][component].append(suite_arch)
77
77
                        if 'section' in fields:
78
 
                            section = fields['section']
79
 
                            pkgsect.setdefault(pkg, {})
80
 
                            pkgsect[pkg].setdefault(section, [])
81
 
                            pkgsect[pkg][section].append('%s/%s' % (suite, arch))
 
78
                            pkgsect[pkg][fields['section']].append(suite_arch)
82
79
                        if 'priority' in fields:
83
 
                            priority = fields['priority']
84
 
                            pkgprio.setdefault(pkg, {})
85
 
                            pkgprio[pkg].setdefault(priority, [])
86
 
                            pkgprio[pkg][priority].append('%s/%s' % (suite, arch))
 
80
                            pkgprio[pkg][fields['priority']].append(suite_arch)
87
81
                binaries.close()
88
82
 
89
83
    packages = sorted(pkgcomp.keys())