Source code for delphin.exceptions
"""
Basic exception and warning classes for PyDelphin.
"""
# Default modules need to import the PyDelphin version
from delphin.__about__ import __version__ # noqa: F401
[docs]
class PyDelphinException(Exception):
"""The base class for PyDelphin exceptions."""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
[docs]
class PyDelphinWarning(Warning):
"""The base class for PyDelphin warnings."""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
[docs]
class PyDelphinSyntaxError(PyDelphinException):
def __init__(
self,
message=None,
filename=None,
lineno=None,
offset=None,
text=None,
):
self.message = message
self.filename = filename
self.lineno = lineno
self.offset = offset
self.text = text
def __str__(self):
parts = []
if self.filename is not None:
parts.append(f'File "{self.filename}"')
if self.lineno is not None:
parts.append(f"line {self.lineno}")
if self.offset is not None:
parts.append(f"character {self.offset}")
if parts:
parts = ["", " " + ", ".join(parts)]
if self.text is not None:
parts.append(" " + self.text)
if self.offset is not None:
parts.append(" " + (" " * self.offset) + "^")
if self.message is not None:
parts.append(f"{type(self).__name__}: {self.message}")
return "\n".join(parts)