Commit ef9d9108 authored by Daniel P. Berrangé's avatar Daniel P. Berrangé Committed by Eduardo Habkost
Browse files

qapi: convert to use python print function instead of statement



Python 3 no longer supports the bare "print" statement, it must be
called as a normal function with round brackets. It is possible to
opt-in to this new syntax with Python 2.6 onwards by importing the
"print_function" from the "__future__" module, making it easy to
support Python 2 and 3 in parallel.

Reviewed-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: default avatarDaniel P. Berrange <berrange@redhat.com>
Message-Id: <20180116134217.8725-2-berrange@redhat.com>
Signed-off-by: default avatarEduardo Habkost <ehabkost@redhat.com>
parent f24ee107
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@
# This work is licensed under the terms of the GNU GPL, version 2.
# See the COPYING file in the top-level directory.

from __future__ import print_function
import errno
import getopt
import os
@@ -1467,7 +1468,7 @@ class QAPISchema(object):
            self._def_exprs()
            self.check()
        except QAPIError as err:
            print >>sys.stderr, err
            print(err, file=sys.stderr)
            exit(1)

    def _def_entity(self, ent):
@@ -1931,7 +1932,7 @@ def parse_command_line(extra_options='', extra_long_options=[]):
                                       ['source', 'header', 'prefix=',
                                        'output-dir='] + extra_long_options)
    except getopt.GetoptError as err:
        print >>sys.stderr, "%s: %s" % (sys.argv[0], str(err))
        print("%s: %s" % (sys.argv[0], str(err)), file=sys.stderr)
        sys.exit(1)

    output_dir = ''
@@ -1945,9 +1946,8 @@ def parse_command_line(extra_options='', extra_long_options=[]):
        if o in ('-p', '--prefix'):
            match = re.match(r'([A-Za-z_.-][A-Za-z0-9_.-]*)?', a)
            if match.end() != len(a):
                print >>sys.stderr, \
                    "%s: 'funny character '%s' in argument of --prefix" \
                    % (sys.argv[0], a[match.end()])
                print("%s: 'funny character '%s' in argument of --prefix" \
                      % (sys.argv[0], a[match.end()]), file=sys.stderr)
                sys.exit(1)
            prefix = a
        elif o in ('-o', '--output-dir'):
@@ -1964,7 +1964,7 @@ def parse_command_line(extra_options='', extra_long_options=[]):
        do_h = True

    if len(args) != 1:
        print >>sys.stderr, "%s: need exactly one argument" % sys.argv[0]
        print("%s: need exactly one argument" % sys.argv[0], file=sys.stderr)
        sys.exit(1)
    fname = args[0]

+5 −4
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@
# This work is licensed under the terms of the GNU LGPL, version 2+.
# See the COPYING file in the top-level directory.
"""This script produces the documentation of a qapi schema in texinfo format"""
from __future__ import print_function
import re
import sys

@@ -274,15 +275,15 @@ def texi_schema(schema):
def main(argv):
    """Takes schema argument, prints result to stdout"""
    if len(argv) != 2:
        print >>sys.stderr, "%s: need exactly 1 argument: SCHEMA" % argv[0]
        print("%s: need exactly 1 argument: SCHEMA" % argv[0], file=sys.stderr)
        sys.exit(1)

    schema = qapi.QAPISchema(argv[1])
    if not qapi.doc_required:
        print >>sys.stderr, ("%s: need pragma 'doc-required' "
                             "to generate documentation" % argv[0])
        print("%s: need pragma 'doc-required' "
               "to generate documentation" % argv[0], file=sys.stderr)
        sys.exit(1)
    print texi_schema(schema)
    print(texi_schema(schema))


if __name__ == '__main__':
+21 −20
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@
# See the COPYING file in the top-level directory.
#

from __future__ import print_function
from qapi import *
from pprint import pprint
import os
@@ -18,51 +19,51 @@ import sys

class QAPISchemaTestVisitor(QAPISchemaVisitor):
    def visit_enum_type(self, name, info, values, prefix):
        print 'enum %s %s' % (name, values)
        print('enum %s %s' % (name, values))
        if prefix:
            print '    prefix %s' % prefix
            print('    prefix %s' % prefix)

    def visit_object_type(self, name, info, base, members, variants):
        print 'object %s' % name
        print('object %s' % name)
        if base:
            print '    base %s' % base.name
            print('    base %s' % base.name)
        for m in members:
            print '    member %s: %s optional=%s' % \
                (m.name, m.type.name, m.optional)
            print('    member %s: %s optional=%s' % \
                  (m.name, m.type.name, m.optional))
        self._print_variants(variants)

    def visit_alternate_type(self, name, info, variants):
        print 'alternate %s' % name
        print('alternate %s' % name)
        self._print_variants(variants)

    def visit_command(self, name, info, arg_type, ret_type,
                      gen, success_response, boxed):
        print 'command %s %s -> %s' % \
            (name, arg_type and arg_type.name, ret_type and ret_type.name)
        print '   gen=%s success_response=%s boxed=%s' % \
            (gen, success_response, boxed)
        print('command %s %s -> %s' % \
              (name, arg_type and arg_type.name, ret_type and ret_type.name))
        print('   gen=%s success_response=%s boxed=%s' % \
              (gen, success_response, boxed))

    def visit_event(self, name, info, arg_type, boxed):
        print 'event %s %s' % (name, arg_type and arg_type.name)
        print '   boxed=%s' % boxed
        print('event %s %s' % (name, arg_type and arg_type.name))
        print('   boxed=%s' % boxed)

    @staticmethod
    def _print_variants(variants):
        if variants:
            print '    tag %s' % variants.tag_member.name
            print('    tag %s' % variants.tag_member.name)
            for v in variants.variants:
                print '    case %s: %s' % (v.name, v.type.name)
                print('    case %s: %s' % (v.name, v.type.name))

schema = QAPISchema(sys.argv[1])
schema.visit(QAPISchemaTestVisitor())

for doc in schema.docs:
    if doc.symbol:
        print 'doc symbol=%s' % doc.symbol
        print('doc symbol=%s' % doc.symbol)
    else:
        print 'doc freeform'
    print '    body=\n%s' % doc.body.text
        print('doc freeform')
    print('    body=\n%s' % doc.body.text)
    for arg, section in doc.args.iteritems():
        print '    arg=%s\n%s' % (arg, section.text)
        print('    arg=%s\n%s' % (arg, section.text))
    for section in doc.sections:
        print '    section=%s\n%s' % (section.name, section.text)
        print('    section=%s\n%s' % (section.name, section.text))