pytex/PyTeX/format/errors.py

51 lines
1.1 KiB
Python
Raw Permalink Normal View History

2022-02-17 23:16:41 +01:00
from typing import Optional
2022-02-17 22:31:44 +01:00
class PyTeXError(Exception):
2022-02-17 23:16:41 +01:00
def __init__(self, msg, explanation: Optional[str] = None):
self._msg = msg
self._traceback_explanation = []
if explanation is not None:
self._traceback_explanation.append(explanation)
super().__init__(self._dispstr())
def _dispstr(self):
depth = 0
ret = [self._msg]
for explanation in self._traceback_explanation:
ret.append(' ' * 2 * depth + explanation)
depth += 1
return '\n'.join(ret)
def add_explanation(self, explanation: str):
self._traceback_explanation.append(explanation)
def __str__(self):
return self._dispstr()
2022-02-17 22:31:44 +01:00
class PyTeXFormattingError(PyTeXError):
pass
class PyTeXBuildError(PyTeXError):
pass
class PyTeXMacroError(PyTeXError):
pass
class PyTeXInvalidMacroUsageError(PyTeXMacroError):
pass
class PyTeXInvalidBeginMacroCodeUsageError(PyTeXInvalidMacroUsageError):
pass
class PyTeXInvalidEndMacroCodeUsageError(PyTeXInvalidMacroUsageError):
pass