Gli errori¶
La regola generale e i modi di catturarli sono in gli errori. Sotto, la firma di ciascuno.
Gli errori della richiesta¶
Tutti anche ValueError.
InvalidArgumentError
¶
Bases: NormattivaError, ValueError
Un argomento passato alla libreria non è valido: non serve interrogare il servizio.
InvalidUrnError
¶
Bases: NormattivaError, ValueError
L'URN non rispetta la grammatica NIR che Normattiva accetta.
Codice sorgente in src/normattiva/errori.py
RuleViolationError
¶
Bases: NormattivaError, ValueError
La richiesta viola una regola documentata del servizio.
Descrive sempre la richiesta, mai un problema del servizio: se il codice non
è fra quelli documentati, o arriva con un 5xx, la libreria solleva
un'eccezione diversa.
Codice sorgente in src/normattiva/errori.py
RuleCode
¶
Bases: IntEnum
Codici applicativi con cui il servizio segnala un errore nella richiesta.
Questi codici descrivono la richiesta, non lo stato del servizio: la stessa richiesta riceverà sempre lo stesso codice, quindi non viene mai ritentata. Un codice fuori da questo elenco non dà la stessa garanzia: può indicare anche un guasto transitorio, e in quel caso il retry segue lo stato HTTP come per ogni altra risposta.
Gli errori restituiti dal servizio¶
NotFoundError
¶
Bases: NormattivaError
Nessun atto corrisponde alle coordinate richieste.
AmbiguityError
¶
AmbiguityError(candidati: tuple[DettaglioAtto, ...])
Bases: NormattivaError
L'URN corrisponde a più di un atto pubblicato.
I candidati sono inclusi nella stessa risposta in cui è emersa l'ambiguità, quindi leggerli non costa una richiesta in più. Non portano un identificatore: si distinguono per le coordinate di Gazzetta, cioè data, numero e codice redazionale.
Codice sorgente in src/normattiva/errori.py
NotYetInForceError
¶
NotYetInForceError(vigente_dal: date | None = None)
Bases: NormattivaError
L'articolo non esisteva ancora alla data richiesta.
Codice sorgente in src/normattiva/errori.py
OverloadedError
¶
OverloadedError(descrizione: str | None = None)
Bases: NormattivaError
Il servizio è sovraccarico e ha rifiutato temporaneamente la richiesta.
descrizione contiene il messaggio del servizio, se presente; è testo
informativo, non un URL né un'indicazione operativa.
Codice sorgente in src/normattiva/errori.py
RequestBlockedError
¶
Bases: NormattivaError
Lo strato di protezione davanti all'API ha respinto la richiesta per la sua forma.
Gli errori sul testo¶
TruncationError
¶
TruncationError(ultimo_comma: int)
Bases: NormattivaError
Il percorso interattivo ha restituito un articolo probabilmente troncato.
ultimo_comma è l'etichetta dell'ultimo comma ricevuto, non il numero di
commi arrivati: il sospetto di troncamento nasce dall'etichetta, che cade
esattamente su un multiplo di cento.
Codice sorgente in src/normattiva/errori.py
ValidityMismatchError
¶
ValidityMismatchError(
richiesta: date, finestra: FinestraVigenza
)
Bases: NormattivaError
Il servizio ha risposto con una versione che non copre la data richiesta.
Codice sorgente in src/normattiva/errori.py
VersionNotFoundError
¶
VersionNotFoundError(giorno: date)
Bases: NotFoundError
Nessuna versione di questo atto copre la data richiesta.
Codice sorgente in src/normattiva/errori.py
TooManyResultsError
¶
Bases: NormattivaError
L'operazione supererebbe il limite di risultati consentito dal chiamante.
Codice sorgente in src/normattiva/errori.py
ExportFailedError
¶
ExportFailedError(descrizione: str | None = None)
Bases: NormattivaError
Il servizio ha dichiarato fallita l'esportazione.
Codice sorgente in src/normattiva/errori.py
Gli errori di trasporto¶
ConnectionError
¶
Bases: NormattivaError
Impossibile raggiungere il servizio, oppure la connessione si è interrotta.
UnexpectedResponseError
¶
Bases: NormattivaError
La risposta non è nel formato che questa libreria sa interpretare.