/
usr
/
lib
/
imh-scan
/
venv
/
lib
/
python3.13
/
site-packages
/
_pytest
/
/usr/lib/imh-scan/venv/lib/python3.13/site-packages/_pytest
mkdir
upload
Name
Size
Mode
Actions
assertion/
-
0755
rm
config/
-
0755
rm
mark/
-
0755
rm
_code/
-
0755
rm
_io/
-
0755
rm
_py/
-
0755
rm
__pycache__/
-
0755
rm
cacheprovider.py
22375
0644
edit
dl
rm
capture.py
36829
0644
edit
dl
rm
compat.py
10662
0644
edit
dl
rm
debugging.py
13947
0644
edit
dl
rm
deprecated.py
3147
0644
edit
dl
rm
doctest.py
26259
0644
edit
dl
rm
faulthandler.py
3683
0644
edit
dl
rm
fixtures.py
77746
0644
edit
dl
rm
freeze_support.py
1300
0644
edit
dl
rm
helpconfig.py
9386
0644
edit
dl
rm
hookspec.py
42849
0644
edit
dl
rm
junitxml.py
25441
0644
edit
dl
rm
legacypath.py
16588
0644
edit
dl
rm
logging.py
35234
0644
edit
dl
rm
main.py
37689
0644
edit
dl
rm
monkeypatch.py
14625
0644
edit
dl
rm
nodes.py
26540
0644
edit
dl
rm
outcomes.py
10502
0644
edit
dl
rm
pastebin.py
4155
0644
edit
dl
rm
pathlib.py
37622
0644
edit
dl
rm
py.typed
0
0644
edit
dl
rm
pytester.py
61960
0644
edit
dl
rm
pytester_assertions.py
2253
0644
edit
dl
rm
python.py
66627
0644
edit
dl
rm
python_api.py
31323
0644
edit
dl
rm
raises.py
60196
0644
edit
dl
rm
recwarn.py
13245
0644
edit
dl
rm
reports.py
21406
0644
edit
dl
rm
runner.py
19543
0644
edit
dl
rm
scope.py
2738
0644
edit
dl
rm
setuponly.py
3167
0644
edit
dl
rm
setupplan.py
1184
0644
edit
dl
rm
skipping.py
10623
0644
edit
dl
rm
stash.py
3090
0644
edit
dl
rm
stepwise.py
7689
0644
edit
dl
rm
terminal.py
60419
0644
edit
dl
rm
threadexception.py
4953
0644
edit
dl
rm
timing.py
3065
0644
edit
dl
rm
tmpdir.py
11263
0644
edit
dl
rm
tracemalloc.py
778
0644
edit
dl
rm
unittest.py
19249
0644
edit
dl
rm
unraisableexception.py
5179
0644
edit
dl
rm
warnings.py
5237
0644
edit
dl
rm
warning_types.py
4239
0644
edit
dl
rm
_argcomplete.py
3776
0644
edit
dl
rm
_version.py
704
0644
edit
dl
rm
__init__.py
391
0644
edit
dl
rm
Edit:
/usr/lib/imh-scan/venv/lib/python3.13/site-packages/_pytest/unraisableexception.py
(5179B)
from __future__ import annotations import collections from collections.abc import Callable import functools import gc import sys import traceback from typing import NamedTuple from typing import TYPE_CHECKING import warnings from _pytest.config import Config from _pytest.nodes import Item from _pytest.stash import StashKey from _pytest.tracemalloc import tracemalloc_message import pytest if TYPE_CHECKING: pass if sys.version_info < (3, 11): from exceptiongroup import ExceptionGroup # This is a stash item and not a simple constant to allow pytester to override it. gc_collect_iterations_key = StashKey[int]() def gc_collect_harder(iterations: int) -> None: for _ in range(iterations): gc.collect() class UnraisableMeta(NamedTuple): msg: str cause_msg: str exc_value: BaseException | None unraisable_exceptions: StashKey[collections.deque[UnraisableMeta | BaseException]] = ( StashKey() ) def collect_unraisable(config: Config) -> None: pop_unraisable = config.stash[unraisable_exceptions].pop errors: list[pytest.PytestUnraisableExceptionWarning | RuntimeError] = [] meta = None hook_error = None try: while True: try: meta = pop_unraisable() except IndexError: break if isinstance(meta, BaseException): hook_error = RuntimeError("Failed to process unraisable exception") hook_error.__cause__ = meta errors.append(hook_error) continue msg = meta.msg try: warnings.warn(pytest.PytestUnraisableExceptionWarning(msg)) except pytest.PytestUnraisableExceptionWarning as e: # This except happens when the warning is treated as an error (e.g. `-Werror`). if meta.exc_value is not None: # Exceptions have a better way to show the traceback, but # warnings do not, so hide the traceback from the msg and # set the cause so the traceback shows up in the right place. e.args = (meta.cause_msg,) e.__cause__ = meta.exc_value errors.append(e) if len(errors) == 1: raise errors[0] if errors: raise ExceptionGroup("multiple unraisable exception warnings", errors) finally: del errors, meta, hook_error def cleanup( *, config: Config, prev_hook: Callable[[sys.UnraisableHookArgs], object] ) -> None: # A single collection doesn't necessarily collect everything. # Constant determined experimentally by the Trio project. gc_collect_iterations = config.stash.get(gc_collect_iterations_key, 5) try: try: gc_collect_harder(gc_collect_iterations) collect_unraisable(config) finally: sys.unraisablehook = prev_hook finally: del config.stash[unraisable_exceptions] def unraisable_hook( unraisable: sys.UnraisableHookArgs, /, *, append: Callable[[UnraisableMeta | BaseException], object], ) -> None: try: # we need to compute these strings here as they might change after # the unraisablehook finishes and before the metadata object is # collected by a pytest hook err_msg = ( "Exception ignored in" if unraisable.err_msg is None else unraisable.err_msg ) summary = f"{err_msg}: {unraisable.object!r}" traceback_message = "\n\n" + "".join( traceback.format_exception( unraisable.exc_type, unraisable.exc_value, unraisable.exc_traceback, ) ) tracemalloc_tb = "\n" + tracemalloc_message(unraisable.object) msg = summary + traceback_message + tracemalloc_tb cause_msg = summary + tracemalloc_tb append( UnraisableMeta( msg=msg, cause_msg=cause_msg, exc_value=unraisable.exc_value, ) ) except BaseException as e: append(e) # Raising this will cause the exception to be logged twice, once in our # collect_unraisable and once by the unraisablehook calling machinery # which is fine - this should never happen anyway and if it does # it should probably be reported as a pytest bug. raise def pytest_configure(config: Config) -> None: prev_hook = sys.unraisablehook deque: collections.deque[UnraisableMeta | BaseException] = collections.deque() config.stash[unraisable_exceptions] = deque config.add_cleanup(functools.partial(cleanup, config=config, prev_hook=prev_hook)) sys.unraisablehook = functools.partial(unraisable_hook, append=deque.append) @pytest.hookimpl(trylast=True) def pytest_runtest_setup(item: Item) -> None: collect_unraisable(item.config) @pytest.hookimpl(trylast=True) def pytest_runtest_call(item: Item) -> None: collect_unraisable(item.config) @pytest.hookimpl(trylast=True) def pytest_runtest_teardown(item: Item) -> None: collect_unraisable(item.config)
Save
cmd:
run