Il filtro controlla se gli avvertimenti devono essere ignorati, stampati, o considerati errori (sollevando un'eccezione).
Concettualmente, il filtro mantiene una lista ordinata di specificazioni; ciascun avvertimento viene confrontato con ogni filtro della lista delle specificazioni fino a che non viene trovata una corrispondenza; la corrispondenza ne determina la tipologia. Ogni elemento della lista è una tupla della forma (action, message, category, module, lineno), dove:
Value | Disposition |
---|---|
"error" |
converte gli avvertimenti corrispondenti in eccezioni |
"ignore" |
non stampa mai gli avvertimenti corrispondenti |
"always" |
stampa sempre gli avvertimenti corrispondenti |
"default" |
stampa la prima occorrenza degli avvertimenti corrispondenti per ogni punto da cui l'avvertimento viene emesso |
"module" |
stampa la prima occorrenza dell'avvertimento corrispondente, per ogni modulo da cui l'avvertimento viene emesso |
"once" |
stampa solo la prima occorrenza dell'avvertimento corrispondente, indipendentemente dal punto da cui proviene |
0
per corrispondere a tutti i numeri di linea
Poiché la classe Warning deriva dalla classe built-in
Exception, per modificare un avvertimento in un errore
sollevate semplicemente la categoria category(message)
.
Il filtro degli avvertimenti viene inizializzato dall'opzione -W
passata alla riga di comando dell'interprete Python. L'interprete
salva gli argomenti per tutte le opzioni -W senza
interpretarle in sys.warnoptions
; il modulo warnings
li interpreta alla loro prima importazione (le opzioni non valide
vengono ignorate, dopo la stampa di un messaggio su sys.stderr
).
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.