summaryrefslogtreecommitdiffstats
path: root/src/cepis/errors.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/cepis/errors.py')
-rw-r--r--src/cepis/errors.py13
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 ""