Il y a mieux qu’un print()
pour signaler ça à votre utilisateur.
import warnings
# on definit quels types de warning on va afficher (a faire une seule fois)
warnings.simplefilter("always")
# et on affiche tous nos warning
warnings.warn("La fonction je_vais_a_une_boom() est depreciee", DeprecationWarning)
warnings.warn("Le module optionnel 'braces' n'est pas disponible", ImportWarning)
# ne mettez pas de caracteres non ASCII, sinon ca chie
## /home/Sam/Bureau/test.py:8: DeprecationWarning: La fonction je_vais_a_une_boom() est depreciee
## warnings.warn("La fonction je_vais_a_une_boom() est depreciee", DeprecationWarning)
## /home/Sam/Bureau/test.py:9: ImportWarning: Le module optionnel 'braces' n'est pas disponible
## warnings.warn("Le module optionnel 'braces' n'est pas disponible", ImportWarning)
L’avantage d’utiliser le module warning
est :
Mais surtout, on peut filtrer les warning:
warnings.simplefilter("type de filtrage")
Le module permet de choisir ce qu’on affiche comme warning. Ils sont désactivables par la ligne de commande. Et surtout, quelqu’un qui importe votre module qui balance des warnings possède de nombreux moyens de les réduire au silence ou de les rediriger ailleurs. Par exemple :
with warnings.catch_warnings(record=True) as w:
import test
Vous trouverez ici un liste des warnings disponibles ainsi que les filtres possibles.
]]>