The unified diff between revisions [8096440e..] and [46dc03e9..] is displayed below. It can also be downloaded as a raw diff.

#
#
# patch "handlers.py"
#  from [b926e4cef8392d53d202fd2b2a3c1516e3926647]
#    to [a83cd1c86b1751f980b3578bb607afc8c329ee7a]
#
# patch "mtn.py"
#  from [60dee430345a7183b092fd315c003468ffd86e33]
#    to [9ff5cfcd7fe1f7a10f831c507dcfdc3b742fb390]
#
============================================================
--- handlers.py	b926e4cef8392d53d202fd2b2a3c1516e3926647
+++ handlers.py	a83cd1c86b1751f980b3578bb607afc8c329ee7a
@@ -106,7 +106,7 @@ class Changes(object):
         ctxt.render('help.html', page_title="Help")

 class Changes(object):
-    class ComparisonRev:
+    class ComparisonRev(object):
         def __init__(self, ops, revision):
             self.revision = revision
             self.certs = list(ops.certs(self.revision))
============================================================
--- mtn.py	60dee430345a7183b092fd315c003468ffd86e33
+++ mtn.py	9ff5cfcd7fe1f7a10f831c507dcfdc3b742fb390
@@ -249,7 +249,7 @@ class Standalone(Runner):
                                                                              stderr_data))
         terminate_popen3(process)

-class MtnObject:
+class MtnObject(object):
     def __init__(self, obj_type):
         self.obj_type = obj_type

@@ -310,7 +310,7 @@ def basic_io_from_stream(gen):
             consumer = name_consume
         return None, consumer, line

-    class StringState:
+    class StringState(object):
         def __init__(self):
             self.in_escape = False
             self.has_started = False
@@ -368,7 +368,7 @@ def basic_io_from_stream(gen):
     if current_stanza:
         yield current_stanza

-class Operations:
+class Operations(object):
     def __init__(self, runner_args):
         self.standalone = apply(Standalone, runner_args)
         self.automate = apply(Automate, runner_args)
@@ -386,6 +386,10 @@ class Operations:
                 for branch in stanza[7:]:
                     branches.append(Branch(branch))
                 yield Tag(stanza[1], stanza[3], stanza[5], branches)
+
+    def select(self, selector):
+        for revision_id in (t.strip() for t in (self.automate.run('select', [selector]))):
+            yield Revision(revision_id)

     def branches(self):
         for line in (t.strip() for t in self.automate.run('branches', [], ignore_suspend_certs="")):
@@ -452,6 +456,8 @@ class Operations:
         for line in self.standalone.run('diff', args):
             yield line

+class Selector(object):
+
 ###
 ### vi:expandtab:sw=4:ts=4
 ###