qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [RFC PATCH 13/32] qapi: Use argparse to open schema file


From: Markus Armbruster
Subject: [Qemu-devel] [RFC PATCH 13/32] qapi: Use argparse to open schema file
Date: Mon, 2 Oct 2017 17:25:33 +0200

QAPISchema.__init__() opens the schema file.  Since it doesn't bother
to catch exceptions, an invalid schema argument is reported like this:

    Traceback (most recent call last):
      File "../scripts/qapi-commands.py", line 318, in <module>
        schema = QAPISchema(args.schema)
      File "/work/armbru/qemu/scripts/qapi.py", line 1464, in __init__
        parser = QAPISchemaParser(open(fname, 'r'))
    IOError: [Errno 2] No such file or directory: 'nonexistent'

Leave it to argparse, which handles the exception like this:

    usage: qapi-commands.py [-h] [-o OUTPUT_DIR] [-p PREFIX] schema
    qapi-commands.py: error: argument schema: can't open 'nonexistent': [Errno 
2] No such file or directory: 'nonexistent'

Too verbose for my taste, but let's not second-guess the standard
library.

Signed-off-by: Markus Armbruster <address@hidden>
---
 scripts/qapi.py                | 6 +++---
 scripts/qapi2texi.py           | 2 +-
 tests/qapi-schema/test-qapi.py | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/scripts/qapi.py b/scripts/qapi.py
index 25f6c81b08..a33203e82d 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -1450,9 +1450,9 @@ class QAPISchemaEvent(QAPISchemaEntity):
 
 
 class QAPISchema(object):
-    def __init__(self, fname):
+    def __init__(self, file):
         try:
-            parser = QAPISchemaParser(open(fname, 'r'))
+            parser = QAPISchemaParser(file)
             self.exprs = check_exprs(parser.exprs)
             self.docs = parser.docs
             self._entity_dict = {}
@@ -1934,7 +1934,7 @@ def common_argument_parser(builtins=False):
                         help='output directory')
     parser.add_argument('-p', '--prefix', default='', type=prefix,
                         help='prefix to add to output files')
-    parser.add_argument('schema',
+    parser.add_argument('schema', type=argparse.FileType('r'),
                         help='QAPI schema source file')
     return parser
 
diff --git a/scripts/qapi2texi.py b/scripts/qapi2texi.py
index fd90d8953e..d95d7541a3 100755
--- a/scripts/qapi2texi.py
+++ b/scripts/qapi2texi.py
@@ -282,7 +282,7 @@ def texi_schema(schema):
 def main(argv):
     """Takes schema argument, prints result to stdout"""
     parser = argparse.ArgumentParser()
-    parser.add_argument('schema',
+    parser.add_argument('schema', type=argparse.FileType('r'),
                         help='QAPI schema source file')
     args = parser.parse_args()
 
diff --git a/tests/qapi-schema/test-qapi.py b/tests/qapi-schema/test-qapi.py
index a7e21d016f..225417d861 100644
--- a/tests/qapi-schema/test-qapi.py
+++ b/tests/qapi-schema/test-qapi.py
@@ -53,7 +53,7 @@ class QAPISchemaTestVisitor(QAPISchemaVisitor):
                 print '    case %s: %s' % (v.name, v.type.name)
 
 parser = argparse.ArgumentParser()
-parser.add_argument('schema',
+parser.add_argument('schema', type=argparse.FileType('r'),
                     help='QAPI schema source file')
 args = parser.parse_args()
 
-- 
2.13.6




reply via email to

[Prev in Thread] Current Thread [Next in Thread]