Rev 43: give Categories an output_stream since it cleans things up. in http://bazaar.launchpad.net/~canonical-bazaar/udd/hottest100

John Arbash Meinel john at arbash-meinel.com
Tue Jan 26 16:17:31 GMT 2010


At http://bazaar.launchpad.net/~canonical-bazaar/udd/hottest100

------------------------------------------------------------
revno: 43
revision-id: john at arbash-meinel.com-20100126161701-rd1ioo3bh7x90ooi
parent: jelmer at samba.org-20100126155950-8yby1247er4g5pt2
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: hottest100
timestamp: Tue 2010-01-26 10:17:01 -0600
message:
  give Categories an output_stream since it cleans things up.
-------------- next part --------------
=== modified file 'check-hottest.py'
--- a/check-hottest.py	2010-01-26 15:53:27 +0000
+++ b/check-hottest.py	2010-01-26 16:17:01 +0000
@@ -59,24 +59,25 @@
 class Categorization(object):
     """Think of this as a pie chart with packages sorted into non-overlapping slices"""
 
-    def __init__(self, name):
+    def __init__(self, name, output_stream):
         self._name = name
         self._categories = {}
+        self._output_stream = output_stream
 
-    def categorize(self, category_name, package, output_stream):
-        output_stream.write('  categorized %s\n' % (category_name,))
+    def categorize(self, category_name, package):
+        self._output_stream.write('  categorized %s\n' % (category_name,))
         self._categories.setdefault(category_name, set()).add(package)
 
-    def summarize(self, output_stream):
+    def summarize(self):
         grand_total = 0
-        output_stream.write('%s Summary:\n' % (self._name,))
+        self._output_stream.write('%s Summary:\n' % (self._name,))
         for category_name, package_set in sorted(self._categories.items()):
             count = len(package_set)
-            output_stream.write('%5s %s\n' % (count, category_name))
+            self._output_stream.write('%5s %s\n' % (count, category_name))
             grand_total += count
-        output_stream.write('-----\n')
-        output_stream.write('%5s TOTAL\n' % grand_total)
-        output_stream.write('\n')
+        self._output_stream.write('-----\n')
+        self._output_stream.write('%5s TOTAL\n' % grand_total)
+        self._output_stream.write('\n')
 
 
 def get_branch_age_and_tags(location, tags=True):
@@ -123,18 +124,20 @@
 
     setup_bzrlib()
 
-    package_categories = Categorization('Package Branch')
-    upstream_branch_categories = Categorization('Upstream Branch')
+    output_stream = ui.ui_factory.make_output_stream()
+    package_categories = Categorization('Package Branch', output_stream)
+    upstream_branch_categories = Categorization('Upstream Branch',
+                                                output_stream)
 
     lp = launchpad.Launchpad.login('check-hottest', '', '', 
-                                   launchpad.EDGE_SERVICE_ROOT)
+                                   launchpad.EDGE_SERVICE_ROOT,
+                                   cache='C:/lpcache')
     distribution = lp.distributions['ubuntu']
     current_distro_series = distribution.current_series
     archive = distribution.main_archive
 
     today = datetime.datetime.now()
     reuse_transports = []
-    output_stream = ui.ui_factory.make_output_stream()
     pb = ui.ui_factory.nested_progress_bar()
     fmt_str = '  %-40s  %-4s %-12s\n'
     output_stream.write(fmt_str % ('package branch url', 'age', 'soyuz'))
@@ -144,19 +147,20 @@
         output_stream.write('%s\n' % (package.name,))
         # package may be explicitly blocked in the input data
         if 'old-version' in package.tags:
-            package_categories.categorize('old', package, output_stream)
+            package_categories.categorize('old', package)
+            upstream_branch_categories.categorize('old', package)
             continue
         if 'metapackage' in package.tags:
-            package_categories.categorize('meta', package, output_stream)
+            package_categories.categorize('meta', package)
             continue
         if 'special' in package.tags:
-            package_categories.categorize('special', package, output_stream)
+            package_categories.categorize('special', package)
             continue
         if 'devfocus' in package.tags:
-            package_categories.categorize('devfocus', package, output_stream)
+            package_categories.categorize('devfocus', package)
             continue
         if 'hg-import' in package.tags:
-            package_categories.categorize('hg', package, output_stream)
+            package_categories.categorize('hg', package)
             continue
         if 'nested-trees' in package.tags:
             package_categories.categorize('nested-trees', package, output_stream)
@@ -175,32 +179,31 @@
             if str(e).find('in ubuntu has no default branch') > -1:
                 output_stream.write('  %s has no default branch\n'
                                     % (package_branch_url,))
-                package_categories.categorize('unregistered', package, output_stream)
+                package_categories.categorize('unregistered', package)
             else:
                 output_stream.write('  %s\n' % (e,))
-                package_categories.categorize('broken', package, output_stream)
+                package_categories.categorize('broken', package)
         published_sources = list(archive.getPublishedSources(
                 source_name=package.name, status='Published',
                 distro_series=current_distro_series))
         if not published_sources:
-            package_categories.categorize('no_source_package', package,
-                                          output_stream)
+            package_categories.categorize('no_source_package', package)
             continue
         published_source = published_sources[0]
         source_package_version = published_source.source_package_version
         if source_package_version not in tags:
-            package_categories.categorize('package_out_of_date', package, output_stream)
+            package_categories.categorize('package_out_of_date', package)
         else:
-            package_categories.categorize('ok', package, output_stream)
+            package_categories.categorize('ok', package)
         output_stream.write(fmt_str % (
             package_branch_url, age.days, source_package_version))
         source_package = published_source.distro_series.getSourcePackage(name=package.name)
         if source_package.productseries is None:
-            upstream_branch_categories.categorize('missing_upstream_link', package, output_stream)
+            upstream_branch_categories.categorize('missing_upstream_link', package)
             continue
         source_branch = source_package.productseries.branch
         if source_branch is None:
-            upstream_branch_categories.categorize('missing_upstream_branch', package, output_stream)
+            upstream_branch_categories.categorize('missing_upstream_branch', package)
             continue
         package.upstream_branch_url = source_branch.bzr_identity
         try:
@@ -209,37 +212,37 @@
             upstream_days = age.days
             if upstream_days < opts.stale_days:
                 upstream_status = 'ok_upstream'
-                upstream_branch_categories.categorize('ok_upstream', package, output_stream)
+                upstream_branch_categories.categorize('ok_upstream', package)
             else:
                 upstream_status = 'stale'
-                upstream_branch_categories.categorize('stale_upstream', package, output_stream)
+                upstream_branch_categories.categorize('stale_upstream', package)
         except errors.BzrError, e:
             upstream_days = -1
             if "No such project" in str(e):
-                upstream_branch_categories.categorize('missing_project', package, output_stream)
+                upstream_branch_categories.categorize('missing_project', package)
                 upstream_status = 'no project'
                 output_stream.write('  %s has no project\n'
                                     % (package.upstream_branch_url,))
             elif 'has no default branch' in str(e):
-                upstream_branch_categories.categorize('no_default_upstream_branch', package, output_stream)
+                upstream_branch_categories.categorize('no_default_upstream_branch', package)
                 upstream_status = 'no branch'
                 output_stream.write('  %s has no default branch\n'
                                     % (package.upstream_branch_url,))
             else:
-                upstream_branch_categories.categorize('broken_upstream', package, output_stream)
+                upstream_branch_categories.categorize('broken_upstream', package)
                 output_stream.write('  %s\n' % (e,))
         else:
             if source_branch.branch_type == 'Mirrored':
                 import_age = datetime.datetime.now() - source_branch.last_mirror_attempt.replace(tzinfo=None)
                 if import_age.days > 1:
-                    upstream_branch_categories.categorize('outdated_imports', package, output_stream)
+                    upstream_branch_categories.categorize('outdated_imports', package)
                     upstream_status = 'outdated import (%d days)' % (import_age.days,)
             output_stream.write(fmt_str % (package.upstream_branch_url,
                 upstream_days, upstream_status))
 
     output_stream.write('\n')
-    package_categories.summarize(output_stream)
-    upstream_branch_categories.summarize(output_stream)
+    package_categories.summarize()
+    upstream_branch_categories.summarize()
 
 if __name__ == '__main__':
     main(sys.argv[1:])



More information about the bazaar-commits mailing list