diff options
Diffstat (limited to 'src/cepis/errors.py')
| -rw-r--r-- | src/cepis/errors.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/cepis/errors.py b/src/cepis/errors.py index 1698972..12862df 100644 --- a/src/cepis/errors.py +++ b/src/cepis/errors.py @@ -19,6 +19,8 @@ before it ever leaves the machine. from __future__ import annotations +from .models import Faixa + class CepisError(Exception): """Base of every error. Catch this to handle any failure.""" @@ -45,8 +47,19 @@ class CEPNotFound(CepisError, KeyError): `KeyError.__str__` wraps the message in quotes (inherited from dict behaviour), which is why `__str__` is overridden here — otherwise every message would come out with spurious quotes around it. + + `faixa` is the municipality the CEP *would* have belonged to, when the API + could work it out: see :class:`cepis.Faixa`. It is `None` whenever the API + did not say — either because the CEP falls in a band no municipality owns, + or because the server is older than this field. Either way the exception is + the same exception: `faixa` is context for the error, never a demotion of + it into a partial success. """ + def __init__(self, message: str, faixa: Faixa | None = None) -> None: + super().__init__(message) + self.faixa = faixa + def __str__(self) -> str: return self.args[0] if self.args else "" |