SILENT KILLERPanel

Current Path: > > opt > alt > python312 > lib64 > > python3.12 >


Operation   : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //opt/alt/python312/lib64//python3.12/

NameTypeSizeLast ModifiedActions
__pycache__ Directory - -
asyncio Directory - -
collections Directory - -
concurrent Directory - -
config-3.12-x86_64-linux-gnu Directory - -
ctypes Directory - -
curses Directory - -
dbm Directory - -
email Directory - -
encodings Directory - -
ensurepip Directory - -
html Directory - -
http Directory - -
importlib Directory - -
json Directory - -
lib-dynload Directory - -
lib2to3 Directory - -
logging Directory - -
multiprocessing Directory - -
pydoc_data Directory - -
re Directory - -
site-packages Directory - -
sqlite3 Directory - -
tomllib Directory - -
unittest Directory - -
urllib Directory - -
venv Directory - -
wsgiref Directory - -
xml Directory - -
xmlrpc Directory - -
zipfile Directory - -
zoneinfo Directory - -
LICENSE.txt File 13936 bytes June 03 2025 15:41:47.
__future__.py File 5218 bytes June 23 2025 13:48:52.
__hello__.py File 227 bytes June 23 2025 13:48:52.
_aix_support.py File 4021 bytes June 23 2025 13:48:49.
_collections_abc.py File 32089 bytes June 23 2025 13:48:37.
_compat_pickle.py File 8761 bytes June 23 2025 13:48:48.
_compression.py File 5681 bytes June 23 2025 13:48:37.
_markupbase.py File 14653 bytes June 23 2025 13:48:37.
_osx_support.py File 22023 bytes June 23 2025 13:48:50.
_py_abc.py File 6189 bytes June 23 2025 13:48:51.
_pydatetime.py File 92087 bytes June 23 2025 13:48:51.
_pydecimal.py File 227283 bytes June 23 2025 13:48:36.
_pyio.py File 93593 bytes June 23 2025 13:48:37.
_pylong.py File 10790 bytes June 23 2025 13:48:37.
_sitebuiltins.py File 3128 bytes June 23 2025 13:48:37.
_strptime.py File 28393 bytes June 23 2025 13:48:51.
_sysconfigdata__linux_x86_64-linux-gnu.py File 76553 bytes June 23 2025 13:58:24.
_sysconfigdata_d_linux_x86_64-linux-gnu.py File 76549 bytes June 23 2025 13:51:17.
_threading_local.py File 7220 bytes June 23 2025 13:48:37.
_weakrefset.py File 5893 bytes June 23 2025 13:48:36.
abc.py File 6538 bytes June 23 2025 13:48:37.
aifc.py File 34211 bytes June 23 2025 13:48:51.
antigravity.py File 500 bytes June 23 2025 13:48:37.
argparse.py File 101155 bytes June 23 2025 13:48:49.
ast.py File 64452 bytes June 23 2025 13:48:50.
base64.py File 20648 bytes June 23 2025 13:48:37.
bdb.py File 33573 bytes June 23 2025 13:48:48.
bisect.py File 3423 bytes June 23 2025 13:48:36.
bz2.py File 11847 bytes June 23 2025 13:48:50.
cProfile.py File 6569 bytes June 23 2025 13:48:36.
calendar.py File 25864 bytes June 23 2025 13:48:49.
cgi.py File 34432 bytes June 23 2025 13:48:50.
cgitb.py File 12421 bytes June 23 2025 13:48:52.
chunk.py File 5500 bytes June 23 2025 13:48:37.
cmd.py File 14873 bytes June 23 2025 13:48:36.
code.py File 10962 bytes June 23 2025 13:48:37.
codecs.py File 36870 bytes June 23 2025 13:48:37.
codeop.py File 5908 bytes June 23 2025 13:48:36.
colorsys.py File 4062 bytes June 23 2025 13:48:37.
compileall.py File 20507 bytes June 23 2025 13:48:36.
configparser.py File 53789 bytes June 23 2025 13:48:37.
contextlib.py File 27637 bytes June 23 2025 13:48:36.
contextvars.py File 129 bytes June 23 2025 13:48:48.
copy.py File 8412 bytes June 23 2025 13:48:37.
copyreg.py File 7614 bytes June 23 2025 13:48:50.
crypt.py File 3913 bytes June 23 2025 13:48:37.
csv.py File 16386 bytes June 23 2025 13:48:37.
dataclasses.py File 62085 bytes June 23 2025 13:48:50.
datetime.py File 268 bytes June 23 2025 13:48:52.
decimal.py File 2805 bytes June 23 2025 13:48:49.
difflib.py File 83368 bytes June 23 2025 13:48:37.
dis.py File 30227 bytes June 23 2025 13:48:37.
doctest.py File 106749 bytes June 23 2025 13:48:37.
enum.py File 81540 bytes June 23 2025 13:48:37.
filecmp.py File 10381 bytes June 23 2025 13:48:37.
fileinput.py File 15714 bytes June 23 2025 13:48:37.
fnmatch.py File 5999 bytes June 23 2025 13:48:37.
fractions.py File 38147 bytes June 23 2025 13:48:36.
ftplib.py File 34735 bytes June 23 2025 13:48:37.
functools.py File 37940 bytes June 23 2025 13:48:52.
genericpath.py File 5572 bytes June 23 2025 13:48:52.
getopt.py File 7488 bytes June 23 2025 13:48:50.
getpass.py File 5990 bytes June 23 2025 13:48:36.
gettext.py File 21320 bytes June 23 2025 13:48:50.
glob.py File 8732 bytes June 23 2025 13:48:36.
graphlib.py File 9648 bytes June 23 2025 13:48:36.
gzip.py File 25402 bytes June 23 2025 13:48:50.
hashlib.py File 9349 bytes June 23 2025 13:48:51.
heapq.py File 23024 bytes June 23 2025 13:48:36.
hmac.py File 7716 bytes June 23 2025 13:48:37.
imaplib.py File 54040 bytes June 23 2025 13:48:49.
imghdr.py File 4398 bytes June 23 2025 13:48:50.
inspect.py File 127125 bytes June 23 2025 13:48:48.
io.py File 3582 bytes June 23 2025 13:48:37.
ipaddress.py File 81414 bytes June 23 2025 13:48:49.
keyword.py File 1073 bytes June 23 2025 13:48:50.
linecache.py File 5800 bytes June 23 2025 13:48:37.
locale.py File 78599 bytes June 23 2025 13:48:48.
lzma.py File 13277 bytes June 23 2025 13:48:51.
mailbox.py File 78911 bytes June 23 2025 13:48:48.
mailcap.py File 9333 bytes June 23 2025 13:48:36.
mimetypes.py File 23037 bytes June 23 2025 13:48:48.
modulefinder.py File 23699 bytes June 23 2025 13:48:37.
netrc.py File 6922 bytes June 23 2025 13:48:37.
nntplib.py File 41087 bytes June 23 2025 13:48:36.
ntpath.py File 32324 bytes June 23 2025 13:48:36.
nturl2path.py File 2374 bytes June 23 2025 13:48:50.
numbers.py File 11467 bytes June 23 2025 13:48:51.
opcode.py File 13174 bytes June 23 2025 13:48:52.
operator.py File 10965 bytes June 23 2025 13:48:48.
optparse.py File 60369 bytes June 23 2025 13:48:50.
os.py File 40821 bytes June 23 2025 13:48:36.
pathlib.py File 51052 bytes June 23 2025 13:48:49.
pdb.py File 70311 bytes June 23 2025 13:48:37.
pickle.py File 66911 bytes June 23 2025 13:48:37.
pickletools.py File 94052 bytes June 23 2025 13:48:37.
pipes.py File 8978 bytes June 23 2025 13:48:50.
pkgutil.py File 18281 bytes June 23 2025 13:48:37.
platform.py File 43402 bytes June 23 2025 13:48:37.
plistlib.py File 28342 bytes June 23 2025 13:48:36.
poplib.py File 14619 bytes June 23 2025 13:48:36.
posixpath.py File 17483 bytes June 23 2025 13:48:37.
pprint.py File 24158 bytes June 23 2025 13:48:37.
profile.py File 23106 bytes June 23 2025 13:48:37.
pstats.py File 29289 bytes June 23 2025 13:48:37.
pty.py File 6137 bytes June 23 2025 13:48:36.
py_compile.py File 7837 bytes June 23 2025 13:48:49.
pyclbr.py File 11396 bytes June 23 2025 13:48:36.
pydoc.py File 113522 bytes June 23 2025 13:48:37.
queue.py File 11496 bytes June 23 2025 13:48:50.
quopri.py File 7197 bytes June 23 2025 13:48:50.
random.py File 34689 bytes June 23 2025 13:48:36.
reprlib.py File 7148 bytes June 23 2025 13:48:37.
rlcompleter.py File 7827 bytes June 23 2025 13:48:52.
runpy.py File 12885 bytes June 23 2025 13:48:36.
sched.py File 6351 bytes June 23 2025 13:48:49.
secrets.py File 1984 bytes June 23 2025 13:48:37.
selectors.py File 19671 bytes June 23 2025 13:48:37.
shelve.py File 8560 bytes June 23 2025 13:48:49.
shlex.py File 13353 bytes June 23 2025 13:48:51.
shutil.py File 56762 bytes June 23 2025 13:48:49.
signal.py File 2495 bytes June 23 2025 13:48:49.
site.py File 23198 bytes June 23 2025 13:48:48.
smtplib.py File 43545 bytes June 23 2025 13:48:37.
sndhdr.py File 7448 bytes June 23 2025 13:48:50.
socket.py File 37815 bytes June 23 2025 13:48:51.
socketserver.py File 28065 bytes June 23 2025 13:48:52.
sre_compile.py File 231 bytes June 23 2025 13:48:37.
sre_constants.py File 232 bytes June 23 2025 13:48:36.
sre_parse.py File 229 bytes June 23 2025 13:48:37.
ssl.py File 50904 bytes June 23 2025 13:48:48.
stat.py File 5485 bytes June 23 2025 13:48:49.
statistics.py File 50227 bytes June 23 2025 13:48:37.
string.py File 11786 bytes June 23 2025 13:48:50.
stringprep.py File 12917 bytes June 23 2025 13:48:37.
struct.py File 257 bytes June 23 2025 13:48:37.
subprocess.py File 88747 bytes June 23 2025 13:48:36.
sunau.py File 18478 bytes June 23 2025 13:48:37.
symtable.py File 12477 bytes June 23 2025 13:48:50.
sysconfig.py File 31850 bytes June 23 2025 13:48:49.
tabnanny.py File 11545 bytes June 23 2025 13:48:50.
tarfile.py File 112458 bytes June 23 2025 13:48:37.
telnetlib.py File 23334 bytes June 23 2025 13:48:37.
tempfile.py File 32386 bytes June 23 2025 13:48:36.
textwrap.py File 19718 bytes June 23 2025 13:48:36.
this.py File 1003 bytes June 23 2025 13:48:37.
threading.py File 60200 bytes June 23 2025 13:48:49.
timeit.py File 13477 bytes June 23 2025 13:48:37.
token.py File 2511 bytes June 23 2025 13:48:36.
tokenize.py File 21570 bytes June 23 2025 13:48:49.
trace.py File 29366 bytes June 23 2025 13:48:36.
traceback.py File 46393 bytes June 23 2025 13:48:49.
tracemalloc.py File 18047 bytes June 23 2025 13:48:50.
tty.py File 2035 bytes June 23 2025 13:48:36.
types.py File 10993 bytes June 23 2025 13:48:36.
typing.py File 118836 bytes June 23 2025 13:48:50.
uu.py File 7341 bytes June 23 2025 13:59:33.
uuid.py File 29656 bytes June 23 2025 13:48:37.
warnings.py File 21909 bytes June 23 2025 13:48:37.
wave.py File 22769 bytes June 23 2025 13:48:37.
weakref.py File 21513 bytes June 23 2025 13:48:49.
webbrowser.py File 23746 bytes June 23 2025 13:48:50.
xdrlib.py File 5942 bytes June 23 2025 13:48:52.
zipapp.py File 7543 bytes June 23 2025 13:48:37.
zipimport.py File 27840 bytes June 23 2025 13:48:49.

Reading File: //opt/alt/python312/lib64//python3.12//warnings.py

"""Python part of the warnings subsystem."""

import sys


__all__ = ["warn", "warn_explicit", "showwarning",
           "formatwarning", "filterwarnings", "simplefilter",
           "resetwarnings", "catch_warnings"]

def showwarning(message, category, filename, lineno, file=None, line=None):
    """Hook to write a warning to a file; replace if you like."""
    msg = WarningMessage(message, category, filename, lineno, file, line)
    _showwarnmsg_impl(msg)

def formatwarning(message, category, filename, lineno, line=None):
    """Function to format a warning the standard way."""
    msg = WarningMessage(message, category, filename, lineno, None, line)
    return _formatwarnmsg_impl(msg)

def _showwarnmsg_impl(msg):
    file = msg.file
    if file is None:
        file = sys.stderr
        if file is None:
            # sys.stderr is None when run with pythonw.exe:
            # warnings get lost
            return
    text = _formatwarnmsg(msg)
    try:
        file.write(text)
    except OSError:
        # the file (probably stderr) is invalid - this warning gets lost.
        pass

def _formatwarnmsg_impl(msg):
    category = msg.category.__name__
    s =  f"{msg.filename}:{msg.lineno}: {category}: {msg.message}\n"

    # "sys" is a made up file name when we are not able to get the frame
    # so do not try to get the source line
    if msg.line is None and msg.filename != "sys":
        try:
            import linecache
            line = linecache.getline(msg.filename, msg.lineno)
        except Exception:
            # When a warning is logged during Python shutdown, linecache
            # and the import machinery don't work anymore
            line = None
            linecache = None
    else:
        line = msg.line
    if line:
        line = line.strip()
        s += "  %s\n" % line

    if msg.source is not None:
        try:
            import tracemalloc
        # Logging a warning should not raise a new exception:
        # catch Exception, not only ImportError and RecursionError.
        except Exception:
            # don't suggest to enable tracemalloc if it's not available
            suggest_tracemalloc = False
            tb = None
        else:
            try:
                suggest_tracemalloc = not tracemalloc.is_tracing()
                tb = tracemalloc.get_object_traceback(msg.source)
            except Exception:
                # When a warning is logged during Python shutdown, tracemalloc
                # and the import machinery don't work anymore
                suggest_tracemalloc = False
                tb = None

        if tb is not None:
            s += 'Object allocated at (most recent call last):\n'
            for frame in tb:
                s += ('  File "%s", lineno %s\n'
                      % (frame.filename, frame.lineno))

                try:
                    if linecache is not None:
                        line = linecache.getline(frame.filename, frame.lineno)
                    else:
                        line = None
                except Exception:
                    line = None
                if line:
                    line = line.strip()
                    s += '    %s\n' % line
        elif suggest_tracemalloc:
            s += (f'{category}: Enable tracemalloc to get the object '
                  f'allocation traceback\n')
    return s

# Keep a reference to check if the function was replaced
_showwarning_orig = showwarning

def _showwarnmsg(msg):
    """Hook to write a warning to a file; replace if you like."""
    try:
        sw = showwarning
    except NameError:
        pass
    else:
        if sw is not _showwarning_orig:
            # warnings.showwarning() was replaced
            if not callable(sw):
                raise TypeError("warnings.showwarning() must be set to a "
                                "function or method")

            sw(msg.message, msg.category, msg.filename, msg.lineno,
               msg.file, msg.line)
            return
    _showwarnmsg_impl(msg)

# Keep a reference to check if the function was replaced
_formatwarning_orig = formatwarning

def _formatwarnmsg(msg):
    """Function to format a warning the standard way."""
    try:
        fw = formatwarning
    except NameError:
        pass
    else:
        if fw is not _formatwarning_orig:
            # warnings.formatwarning() was replaced
            return fw(msg.message, msg.category,
                      msg.filename, msg.lineno, msg.line)
    return _formatwarnmsg_impl(msg)

def filterwarnings(action, message="", category=Warning, module="", lineno=0,
                   append=False):
    """Insert an entry into the list of warnings filters (at the front).

    'action' -- one of "error", "ignore", "always", "default", "module",
                or "once"
    'message' -- a regex that the warning message must match
    'category' -- a class that the warning must be a subclass of
    'module' -- a regex that the module name must match
    'lineno' -- an integer line number, 0 matches all warnings
    'append' -- if true, append to the list of filters
    """
    assert action in ("error", "ignore", "always", "default", "module",
                      "once"), "invalid action: %r" % (action,)
    assert isinstance(message, str), "message must be a string"
    assert isinstance(category, type), "category must be a class"
    assert issubclass(category, Warning), "category must be a Warning subclass"
    assert isinstance(module, str), "module must be a string"
    assert isinstance(lineno, int) and lineno >= 0, \
           "lineno must be an int >= 0"

    if message or module:
        import re

    if message:
        message = re.compile(message, re.I)
    else:
        message = None
    if module:
        module = re.compile(module)
    else:
        module = None

    _add_filter(action, message, category, module, lineno, append=append)

def simplefilter(action, category=Warning, lineno=0, append=False):
    """Insert a simple entry into the list of warnings filters (at the front).

    A simple filter matches all modules and messages.
    'action' -- one of "error", "ignore", "always", "default", "module",
                or "once"
    'category' -- a class that the warning must be a subclass of
    'lineno' -- an integer line number, 0 matches all warnings
    'append' -- if true, append to the list of filters
    """
    assert action in ("error", "ignore", "always", "default", "module",
                      "once"), "invalid action: %r" % (action,)
    assert isinstance(lineno, int) and lineno >= 0, \
           "lineno must be an int >= 0"
    _add_filter(action, None, category, None, lineno, append=append)

def _add_filter(*item, append):
    # Remove possible duplicate filters, so new one will be placed
    # in correct place. If append=True and duplicate exists, do nothing.
    if not append:
        try:
            filters.remove(item)
        except ValueError:
            pass
        filters.insert(0, item)
    else:
        if item not in filters:
            filters.append(item)
    _filters_mutated()

def resetwarnings():
    """Clear the list of warning filters, so that no filters are active."""
    filters[:] = []
    _filters_mutated()

class _OptionError(Exception):
    """Exception used by option processing helpers."""
    pass

# Helper to process -W options passed via sys.warnoptions
def _processoptions(args):
    for arg in args:
        try:
            _setoption(arg)
        except _OptionError as msg:
            print("Invalid -W option ignored:", msg, file=sys.stderr)

# Helper for _processoptions()
def _setoption(arg):
    parts = arg.split(':')
    if len(parts) > 5:
        raise _OptionError("too many fields (max 5): %r" % (arg,))
    while len(parts) < 5:
        parts.append('')
    action, message, category, module, lineno = [s.strip()
                                                 for s in parts]
    action = _getaction(action)
    category = _getcategory(category)
    if message or module:
        import re
    if message:
        message = re.escape(message)
    if module:
        module = re.escape(module) + r'\Z'
    if lineno:
        try:
            lineno = int(lineno)
            if lineno < 0:
                raise ValueError
        except (ValueError, OverflowError):
            raise _OptionError("invalid lineno %r" % (lineno,)) from None
    else:
        lineno = 0
    filterwarnings(action, message, category, module, lineno)

# Helper for _setoption()
def _getaction(action):
    if not action:
        return "default"
    if action == "all": return "always" # Alias
    for a in ('default', 'always', 'ignore', 'module', 'once', 'error'):
        if a.startswith(action):
            return a
    raise _OptionError("invalid action: %r" % (action,))

# Helper for _setoption()
def _getcategory(category):
    if not category:
        return Warning
    if '.' not in category:
        import builtins as m
        klass = category
    else:
        module, _, klass = category.rpartition('.')
        try:
            m = __import__(module, None, None, [klass])
        except ImportError:
            raise _OptionError("invalid module name: %r" % (module,)) from None
    try:
        cat = getattr(m, klass)
    except AttributeError:
        raise _OptionError("unknown warning category: %r" % (category,)) from None
    if not issubclass(cat, Warning):
        raise _OptionError("invalid warning category: %r" % (category,))
    return cat


def _is_internal_filename(filename):
    return 'importlib' in filename and '_bootstrap' in filename


def _is_filename_to_skip(filename, skip_file_prefixes):
    return any(filename.startswith(prefix) for prefix in skip_file_prefixes)


def _is_internal_frame(frame):
    """Signal whether the frame is an internal CPython implementation detail."""
    return _is_internal_filename(frame.f_code.co_filename)


def _next_external_frame(frame, skip_file_prefixes):
    """Find the next frame that doesn't involve Python or user internals."""
    frame = frame.f_back
    while frame is not None and (
            _is_internal_filename(filename := frame.f_code.co_filename) or
            _is_filename_to_skip(filename, skip_file_prefixes)):
        frame = frame.f_back
    return frame


# Code typically replaced by _warnings
def warn(message, category=None, stacklevel=1, source=None,
         *, skip_file_prefixes=()):
    """Issue a warning, or maybe ignore it or raise an exception."""
    # Check if message is already a Warning object
    if isinstance(message, Warning):
        category = message.__class__
    # Check category argument
    if category is None:
        category = UserWarning
    if not (isinstance(category, type) and issubclass(category, Warning)):
        raise TypeError("category must be a Warning subclass, "
                        "not '{:s}'".format(type(category).__name__))
    if not isinstance(skip_file_prefixes, tuple):
        # The C version demands a tuple for implementation performance.
        raise TypeError('skip_file_prefixes must be a tuple of strs.')
    if skip_file_prefixes:
        stacklevel = max(2, stacklevel)
    # Get context information
    try:
        if stacklevel <= 1 or _is_internal_frame(sys._getframe(1)):
            # If frame is too small to care or if the warning originated in
            # internal code, then do not try to hide any frames.
            frame = sys._getframe(stacklevel)
        else:
            frame = sys._getframe(1)
            # Look for one frame less since the above line starts us off.
            for x in range(stacklevel-1):
                frame = _next_external_frame(frame, skip_file_prefixes)
                if frame is None:
                    raise ValueError
    except ValueError:
        globals = sys.__dict__
        filename = "sys"
        lineno = 1
    else:
        globals = frame.f_globals
        filename = frame.f_code.co_filename
        lineno = frame.f_lineno
    if '__name__' in globals:
        module = globals['__name__']
    else:
        module = "<string>"
    registry = globals.setdefault("__warningregistry__", {})
    warn_explicit(message, category, filename, lineno, module, registry,
                  globals, source)

def warn_explicit(message, category, filename, lineno,
                  module=None, registry=None, module_globals=None,
                  source=None):
    lineno = int(lineno)
    if module is None:
        module = filename or "<unknown>"
        if module[-3:].lower() == ".py":
            module = module[:-3] # XXX What about leading pathname?
    if registry is None:
        registry = {}
    if registry.get('version', 0) != _filters_version:
        registry.clear()
        registry['version'] = _filters_version
    if isinstance(message, Warning):
        text = str(message)
        category = message.__class__
    else:
        text = message
        message = category(message)
    key = (text, category, lineno)
    # Quick test for common case
    if registry.get(key):
        return
    # Search the filters
    for item in filters:
        action, msg, cat, mod, ln = item
        if ((msg is None or msg.match(text)) and
            issubclass(category, cat) and
            (mod is None or mod.match(module)) and
            (ln == 0 or lineno == ln)):
            break
    else:
        action = defaultaction
    # Early exit actions
    if action == "ignore":
        return

    # Prime the linecache for formatting, in case the
    # "file" is actually in a zipfile or something.
    import linecache
    linecache.getlines(filename, module_globals)

    if action == "error":
        raise message
    # Other actions
    if action == "once":
        registry[key] = 1
        oncekey = (text, category)
        if onceregistry.get(oncekey):
            return
        onceregistry[oncekey] = 1
    elif action == "always":
        pass
    elif action == "module":
        registry[key] = 1
        altkey = (text, category, 0)
        if registry.get(altkey):
            return
        registry[altkey] = 1
    elif action == "default":
        registry[key] = 1
    else:
        # Unrecognized actions are errors
        raise RuntimeError(
              "Unrecognized action (%r) in warnings.filters:\n %s" %
              (action, item))
    # Print message and context
    msg = WarningMessage(message, category, filename, lineno, source=source)
    _showwarnmsg(msg)


class WarningMessage(object):

    _WARNING_DETAILS = ("message", "category", "filename", "lineno", "file",
                        "line", "source")

    def __init__(self, message, category, filename, lineno, file=None,
                 line=None, source=None):
        self.message = message
        self.category = category
        self.filename = filename
        self.lineno = lineno
        self.file = file
        self.line = line
        self.source = source
        self._category_name = category.__name__ if category else None

    def __str__(self):
        return ("{message : %r, category : %r, filename : %r, lineno : %s, "
                    "line : %r}" % (self.message, self._category_name,
                                    self.filename, self.lineno, self.line))


class catch_warnings(object):

    """A context manager that copies and restores the warnings filter upon
    exiting the context.

    The 'record' argument specifies whether warnings should be captured by a
    custom implementation of warnings.showwarning() and be appended to a list
    returned by the context manager. Otherwise None is returned by the context
    manager. The objects appended to the list are arguments whose attributes
    mirror the arguments to showwarning().

    The 'module' argument is to specify an alternative module to the module
    named 'warnings' and imported under that name. This argument is only useful
    when testing the warnings module itself.

    If the 'action' argument is not None, the remaining arguments are passed
    to warnings.simplefilter() as if it were called immediately on entering the
    context.
    """

    def __init__(self, *, record=False, module=None,
                 action=None, category=Warning, lineno=0, append=False):
        """Specify whether to record warnings and if an alternative module
        should be used other than sys.modules['warnings'].

        For compatibility with Python 3.0, please consider all arguments to be
        keyword-only.

        """
        self._record = record
        self._module = sys.modules['warnings'] if module is None else module
        self._entered = False
        if action is None:
            self._filter = None
        else:
            self._filter = (action, category, lineno, append)

    def __repr__(self):
        args = []
        if self._record:
            args.append("record=True")
        if self._module is not sys.modules['warnings']:
            args.append("module=%r" % self._module)
        name = type(self).__name__
        return "%s(%s)" % (name, ", ".join(args))

    def __enter__(self):
        if self._entered:
            raise RuntimeError("Cannot enter %r twice" % self)
        self._entered = True
        self._filters = self._module.filters
        self._module.filters = self._filters[:]
        self._module._filters_mutated()
        self._showwarning = self._module.showwarning
        self._showwarnmsg_impl = self._module._showwarnmsg_impl
        if self._filter is not None:
            simplefilter(*self._filter)
        if self._record:
            log = []
            self._module._showwarnmsg_impl = log.append
            # Reset showwarning() to the default implementation to make sure
            # that _showwarnmsg() calls _showwarnmsg_impl()
            self._module.showwarning = self._module._showwarning_orig
            return log
        else:
            return None

    def __exit__(self, *exc_info):
        if not self._entered:
            raise RuntimeError("Cannot exit %r without entering first" % self)
        self._module.filters = self._filters
        self._module._filters_mutated()
        self._module.showwarning = self._showwarning
        self._module._showwarnmsg_impl = self._showwarnmsg_impl


_DEPRECATED_MSG = "{name!r} is deprecated and slated for removal in Python {remove}"

def _deprecated(name, message=_DEPRECATED_MSG, *, remove, _version=sys.version_info):
    """Warn that *name* is deprecated or should be removed.

    RuntimeError is raised if *remove* specifies a major/minor tuple older than
    the current Python version or the same version but past the alpha.

    The *message* argument is formatted with *name* and *remove* as a Python
    version (e.g. "3.11").

    """
    remove_formatted = f"{remove[0]}.{remove[1]}"
    if (_version[:2] > remove) or (_version[:2] == remove and _version[3] != "alpha"):
        msg = f"{name!r} was slated for removal after Python {remove_formatted} alpha"
        raise RuntimeError(msg)
    else:
        msg = message.format(name=name, remove=remove_formatted)
        warn(msg, DeprecationWarning, stacklevel=3)


# Private utility function called by _PyErr_WarnUnawaitedCoroutine
def _warn_unawaited_coroutine(coro):
    msg_lines = [
        f"coroutine '{coro.__qualname__}' was never awaited\n"
    ]
    if coro.cr_origin is not None:
        import linecache, traceback
        def extract():
            for filename, lineno, funcname in reversed(coro.cr_origin):
                line = linecache.getline(filename, lineno)
                yield (filename, lineno, funcname, line)
        msg_lines.append("Coroutine created at (most recent call last)\n")
        msg_lines += traceback.format_list(list(extract()))
    msg = "".join(msg_lines).rstrip("\n")
    # Passing source= here means that if the user happens to have tracemalloc
    # enabled and tracking where the coroutine was created, the warning will
    # contain that traceback. This does mean that if they have *both*
    # coroutine origin tracking *and* tracemalloc enabled, they'll get two
    # partially-redundant tracebacks. If we wanted to be clever we could
    # probably detect this case and avoid it, but for now we don't bother.
    warn(msg, category=RuntimeWarning, stacklevel=2, source=coro)


# filters contains a sequence of filter 5-tuples
# The components of the 5-tuple are:
# - an action: error, ignore, always, default, module, or once
# - a compiled regex that must match the warning message
# - a class representing the warning category
# - a compiled regex that must match the module that is being warned
# - a line number for the line being warning, or 0 to mean any line
# If either if the compiled regexs are None, match anything.
try:
    from _warnings import (filters, _defaultaction, _onceregistry,
                           warn, warn_explicit, _filters_mutated)
    defaultaction = _defaultaction
    onceregistry = _onceregistry
    _warnings_defaults = True
except ImportError:
    filters = []
    defaultaction = "default"
    onceregistry = {}

    _filters_version = 1

    def _filters_mutated():
        global _filters_version
        _filters_version += 1

    _warnings_defaults = False


# Module initialization
_processoptions(sys.warnoptions)
if not _warnings_defaults:
    # Several warning categories are ignored by default in regular builds
    if not hasattr(sys, 'gettotalrefcount'):
        filterwarnings("default", category=DeprecationWarning,
                       module="__main__", append=1)
        simplefilter("ignore", category=DeprecationWarning, append=1)
        simplefilter("ignore", category=PendingDeprecationWarning, append=1)
        simplefilter("ignore", category=ImportWarning, append=1)
        simplefilter("ignore", category=ResourceWarning, append=1)

del _warnings_defaults

SILENT KILLER Tool