Source code for pymap.parsing.exceptions


from __future__ import annotations

from typing import Final

from .response import ResponseCode
from ..bytes import MaybeBytes

__all__ = ['NotParseable', 'InvalidContent', 'UnexpectedType']


[docs] class NotParseable(Exception): """Indicates that the given buffer was not parseable by one or all of the data formats. Args: buf: The buffer with the parsing error. """ error_indicator = b'[:ERROR:]' __slots__ = ['buf', 'code', '_raw'] def __init__(self, buf: memoryview, code: MaybeBytes | None = None) -> None: super().__init__() self.buf: Final = bytes(buf) self.code: Final = ResponseCode.of(code) self._raw: bytes | None = None def __bytes__(self) -> bytes: if self._raw is not None: return self._raw self._raw = raw = self.error_indicator.join((b'', self.buf)) return raw def __str__(self) -> str: return str(bytes(self), 'ascii', 'replace')
[docs] class InvalidContent(NotParseable, ValueError): """Indicates the type of the parsed content was correct, but something about the content did not fit what was expected by the special type. """ pass
[docs] class UnexpectedType(NotParseable): """Indicates that a generic parseable that was given a sub-type expectation failed to meet that expectation. """ pass