[pytest] testpaths = tests python_files = test_*.py python_classes = Test* python_functions = test_* # Dump every thread's traceback when a single test runs longer than this. # Does not abort the test — it only tells us WHERE it is stuck, which is the # part that is otherwise lost. 2026-08-15: a run sat at 98% for 40 minutes # burning a full core and had to be diagnosed after the fact with py-spy; the # cause was tempfile._mkstemp_inner retrying TMP_MAX (2147483647) times inside # remove_subtitle_streams, because Windows reports PermissionError there and # os.access(dir, W_OK) does not see ACLs. 300s is far above the slowest healthy # test, so this fires only on a genuine hang. faulthandler_timeout = 300 addopts = -v --tb=short --strict-markers --disable-warnings [tool:pytest] # Coverage configuration [coverage:run] source = . omit = */tests/* */test_*.py */__pycache__/* */venv/* */env/* */site-packages/* [coverage:report] precision = 2 show_missing = True skip_covered = False exclude_lines = pragma: no cover def __repr__ raise AssertionError raise NotImplementedError if __name__ == .__main__.: if TYPE_CHECKING: @abstractmethod