cpython/Lib/warnings.py

100 lines
1.9 KiB
Python

import sys
__all__ = [
"warn",
"warn_explicit",
"showwarning",
"formatwarning",
"filterwarnings",
"simplefilter",
"resetwarnings",
"catch_warnings",
"deprecated",
]
from _py_warnings import (
WarningMessage,
_DEPRECATED_MSG,
_OptionError,
_add_filter,
_deprecated,
_filters_mutated,
_filters_mutated_lock_held,
_filters_version,
_formatwarning_orig,
_formatwarnmsg,
_formatwarnmsg_impl,
_get_context,
_get_filters,
_getaction,
_getcategory,
_is_filename_to_skip,
_is_internal_filename,
_is_internal_frame,
_lock,
_new_context,
_next_external_frame,
_processoptions,
_set_context,
_set_module,
_setoption,
_setup_defaults,
_showwarning_orig,
_showwarnmsg,
_showwarnmsg_impl,
_use_context,
_warn_unawaited_coroutine,
_warnings_context,
catch_warnings,
defaultaction,
deprecated,
filters,
filterwarnings,
formatwarning,
onceregistry,
resetwarnings,
showwarning,
simplefilter,
warn,
warn_explicit,
)
try:
# Try to use the C extension, this will replace some parts of the
# _py_warnings implementation imported above.
from _warnings import (
_acquire_lock,
_defaultaction as defaultaction,
_filters_mutated_lock_held,
_onceregistry as onceregistry,
_release_lock,
_warnings_context,
filters,
warn,
warn_explicit,
)
_warnings_defaults = True
class _Lock:
def __enter__(self):
_acquire_lock()
return self
def __exit__(self, *args):
_release_lock()
_lock = _Lock()
except ImportError:
_warnings_defaults = False
# Module initialization
_set_module(sys.modules[__name__])
_processoptions(sys.warnoptions)
if not _warnings_defaults:
_setup_defaults()
del _warnings_defaults
del _setup_defaults