# -*- coding: utf-8 -*- # # Copyright (c) 2017-2019 Red Hat Inc. # # Authors: # Markus Armbruster # Marc-André Lureau # # This work is licensed under the terms of the GNU GPL, version 2. # See the COPYING file in the top-level directory. """ QAPI error classes Common error classes used throughout the package. Additional errors may be defined in other modules. At present, `QAPIParseError` is defined in parser.py. """ from typing import Optional from .source import QAPISourceInfo 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: Optional[QAPISourceInfo], msg: str, col: Optional[int] = None): super().__init__() self.info = info self.msg = msg self.col = col def __str__(self) -> str: assert self.info is not None 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 QAPISemError(QAPISourceError): """Error class for semantic QAPI errors."""