*My post explains Warning Filter with filterwarnings() and simplefilter() in Python.
A warning is the alert message which doesn't basically raise an exception and doesn't terminate program.
There are warning categories as shown below:
Class | Disposition |
---|---|
Warning | This is the base class of all warning category classes. It is a subclass of Exception. |
UserWarning | The default category for warn(). |
DeprecationWarning | Base category for warnings about deprecated features when those warnings are intended for other Python developers (ignored by default, unless triggered by code in __main__) . |
SyntaxWarning | Base category for warnings about dubious syntactic features. |
RuntimeWarning | Base category for warnings about dubious runtime features. |
FutureWarning | Base category for warnings about deprecated features when those warnings are intended for end users of applications that are written in Python. |
PendingDeprecationWarning | Base category for warnings about features that will be deprecated in the future (ignored by default). |
ImportWarning | Base category for warnings triggered during the process of importing a module (ignored by default). |
UnicodeWarning | Base category for warnings related to Unicode. |
UnicodeWarning | Base category for warnings related to Unicode. |
BytesWarning | Base category for warnings related to bytes and bytearray. |
ResourceWarning | Base category for warnings related to resource usage (ignored by default). |
warn() can manually occur a warning as shown below:
*Memos:
- The 1st argument is
message
(Required-Type:str
). - The 2nd argument is
category
(Optional-Default:None
-Type:Warning). *If it'sNone
, UserWarning is set to it. - The 3rd argument is
stacklevel
(Optional-Default:1
-Type:int
). *It decides which code a warning refers to. - The 4th argument is
source
(Optional-Default:None
-Type:Any). - There is
skip_file_prefixes
argument(Optional-Default:None
-Type:tuple
ofstr
): *Memos:-
skip_file_prefixes=
must be used. - Manually setting
None
to it gets error. - It may not work properly.
-
import warnings
warnings.warn(message="This is a warning.")
# UserWarning: This is a warning.
# warnings.warn(message="This is a warning.")
warnings.warn(message="This is a warning.",
category=None,
stacklevel=1,
source=None,
skip_file_prefixes=())
# UserWarning: This is a warning.
# warnings.warn(message="This is a warning.",
warnings.warn(message="This is a warning.",
category=Warning)
# Warning: This is a warning.
# warnings.warn(message="This is a warning.",
warnings.warn(message="This is a warning.",
category=DeprecationWarning)
# DeprecationWarning: This is a warning.
# warnings.warn(message="This is a warning.",
def test1():
warnings.warn(message="Warning 1",
stacklevel=-100)
warnings.warn(message="Warning 2",
stacklevel=0)
warnings.warn(message="Warning 3",
stacklevel=1)
warnings.warn(message="Warning 4",
stacklevel=2)
warnings.warn(message="Warning 5",
stacklevel=3)
warnings.warn(message="Warning 6",
stacklevel=4)
warnings.warn(message="Warning 7",
stacklevel=5)
warnings.warn(message="Warning 8",
stacklevel=100)
def test2():
test1()
def test3():
test2()
test3()
# UserWarning: Warning 1
# warnings.warn(message="Warning 1",
# UserWarning: Warning 2
# warnings.warn(message="Warning 2",
# UserWarning: Warning 3
# warnings.warn(message="Warning 3",
# UserWarning: Warning 4
# test1()
# UserWarning: Warning 5
# test2()
# UserWarning: Warning 6
# test3()
# UserWarning: Warning 7
# exec(code_obj, self.user_global_ns, self.user_ns)
# UserWarning: Warning 8
Top comments (0)