mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-27 04:13:53 -06:00

It's already treated as optional, with one direct caller and some subclass callers passing 'None'. Make it officially optional, which requires moving the position of the argument to come after all required parameters. QAPISemError becomes functionally identical to QAPISourceError. Keep the name to preserve its semantic meaning and avoid code churn, but remove the now-useless __init__ wrapper. Signed-off-by: John Snow <jsnow@redhat.com> Message-Id: <20210421192233.3542904-4-jsnow@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
#
|
|
# QAPI error classes
|
|
#
|
|
# Copyright (c) 2017-2019 Red Hat Inc.
|
|
#
|
|
# Authors:
|
|
# Markus Armbruster <armbru@redhat.com>
|
|
# Marc-André Lureau <marcandre.lureau@redhat.com>
|
|
#
|
|
# This work is licensed under the terms of the GNU GPL, version 2.
|
|
# See the COPYING file in the top-level directory.
|
|
|
|
|
|
class QAPIError(Exception):
|
|
"""Base class for all exceptions from the QAPI package."""
|
|
|
|
|
|
class QAPISourceError(QAPIError):
|
|
"""Error class for all exceptions identifying a source location."""
|
|
def __init__(self, info, msg, col=None):
|
|
super().__init__()
|
|
self.info = info
|
|
self.msg = msg
|
|
self.col = col
|
|
|
|
def __str__(self):
|
|
loc = str(self.info)
|
|
if self.col is not None:
|
|
assert self.info.line is not None
|
|
loc += ':%s' % self.col
|
|
return loc + ': ' + self.msg
|
|
|
|
|
|
class QAPIParseError(QAPISourceError):
|
|
"""Error class for all QAPI schema parsing errors."""
|
|
def __init__(self, parser, msg):
|
|
col = 1
|
|
for ch in parser.src[parser.line_pos:parser.pos]:
|
|
if ch == '\t':
|
|
col = (col + 7) % 8 + 1
|
|
else:
|
|
col += 1
|
|
super().__init__(parser.info, msg, col)
|
|
|
|
|
|
class QAPISemError(QAPISourceError):
|
|
"""Error class for semantic QAPI errors."""
|