• Bug#1066745: pytest-mpl: FTBFS: dh_auto_test: error: pybuild --test --t

    From Lucas Nussbaum@21:1/5 to All on Wed Mar 13 16:10:13 2024
    Source: pytest-mpl
    Version: 0.16.1-2
    Severity: serious
    Justification: FTBFS
    Tags: trixie sid ftbfs
    User: lucas@debian.org
    Usertags: ftbfs-20240313 ftbfs-trixie

    Hi,

    During a rebuild of all packages in sid, your package failed to build
    on amd64.


    Relevant part (hopefully):
    debian/rules binary
    dh binary --with python3 --buildsystem=pybuild
    dh_update_autotools_config -O--buildsystem=pybuild
    dh_autoreconf -O--buildsystem=pybuild
    dh_auto_configure -O--buildsystem=pybuild
    I: pybuild base:305: python3.12 setup.py config /usr/lib/python3/dist-packages/setuptools/config/setupcfg.py:293: _DeprecatedConfig: Deprecated config in `setup.cfg`
    !!

    ********************************************************************************
    The license_file parameter is deprecated, use license_files instead.

    This deprecation is overdue, please update your project and remove deprecated
    calls to avoid build errors in the future.

    See https://setuptools.pypa.io/en/latest/userguide/declarative_config.html for details.
    ********************************************************************************

    !!
    parsed = self.parsers.get(option_name, lambda x: x)(value) /usr/lib/python3/dist-packages/setuptools/_distutils/dist.py:265: UserWarning: Unknown distribution option: 'use_scm_version'
    warnings.warn(msg)
    running config
    I: pybuild base:305: python3.11 setup.py config /usr/lib/python3/dist-packages/setuptools/config/setupcfg.py:293: _DeprecatedConfig: Deprecated config in `setup.cfg`
    !!

    ********************************************************************************
    The license_file parameter is deprecated, use license_files instead.

    This deprecation is overdue, please update your project and remove deprecated
    calls to avoid build errors in the future.

    See https://setuptools.pypa.io/en/latest/userguide/declarative_config.html for details.
    ********************************************************************************

    !!
    parsed = self.parsers.get(option_name, lambda x: x)(value) /usr/lib/python3/dist-packages/setuptools/_distutils/dist.py:265: UserWarning: Unknown distribution option: 'use_scm_version'
    warnings.warn(msg)
    running config
    dh_auto_build -O--buildsystem=pybuild
    I: pybuild base:305: /usr/bin/python3.12 setup.py build /usr/lib/python3/dist-packages/setuptools/config/setupcfg.py:293: _DeprecatedConfig: Deprecated config in `setup.cfg`
    !!

    ********************************************************************************
    The license_file parameter is deprecated, use license_files instead.

    This deprecation is overdue, please update your project and remove deprecated
    calls to avoid build errors in the future.

    See https://setuptools.pypa.io/en/latest/userguide/declarative_config.html for details.
    ********************************************************************************

    !!
    parsed = self.parsers.get(option_name, lambda x: x)(value) /usr/lib/python3/dist-packages/setuptools/_distutils/dist.py:265: UserWarning: Unknown distribution option: 'use_scm_version'
    warnings.warn(msg)
    running build
    running build_py
    creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pytest-mpl/build/pytest_mpl copying pytest_mpl/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pytest-mpl/build/pytest_mpl
    copying pytest_mpl/plugin.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pytest-mpl/build/pytest_mpl
    creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pytest-mpl/build/pytest_mpl/summary
    copying pytest_mpl/summary/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pytest-mpl/build/pytest_mpl/summary
    copying pytest_mpl/summary/html.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pytest-mpl/build/pytest_mpl/summary
    running egg_info
    creating pytest_mpl.egg-info
    writing pytest_mpl.egg-info/PKG-INFO
    writing dependency_links to pytest_mpl.egg-info/dependency_links.txt
    writing entry points to pytest_mpl.egg-info/entry_points.txt
    writing requirements to pytest_mpl.egg-info/requires.txt
    writing top-level names to pytest_mpl.egg-info/top_level.txt
    writing manifest file 'pytest_mpl.egg-info/SOURCES.txt'
    reading manifest file 'pytest_mpl.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    adding license file 'LICENSE'
    writing manifest file 'pytest_mpl.egg-info/SOURCES.txt'
    I: pybuild base:305: /usr/bin/python3 setup.py build /usr/lib/python3/dist-packages/setuptools/config/setupcfg.py:293: _DeprecatedConfig: Deprecated config in `setup.cfg`
    !!

    ********************************************************************************
    The license_file parameter is deprecated, use license_files instead.

    This deprecation is overdue, please update your project and remove deprecated
    calls to avoid build errors in the future.

    See https://setuptools.pypa.io/en/latest/userguide/declarative_config.html for details.
    ********************************************************************************

    !!
    parsed = self.parsers.get(option_name, lambda x: x)(value) /usr/lib/python3/dist-packages/setuptools/_distutils/dist.py:265: UserWarning: Unknown distribution option: 'use_scm_version'
    warnings.warn(msg)
    running build
    running build_py
    creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pytest-mpl/build/pytest_mpl copying pytest_mpl/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pytest-mpl/build/pytest_mpl
    copying pytest_mpl/plugin.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pytest-mpl/build/pytest_mpl
    creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pytest-mpl/build/pytest_mpl/summary
    copying pytest_mpl/summary/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pytest-mpl/build/pytest_mpl/summary
    copying pytest_mpl/summary/html.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pytest-mpl/build/pytest_mpl/summary
    running egg_info
    writing pytest_mpl.egg-info/PKG-INFO
    writing dependency_links to pytest_mpl.egg-info/dependency_links.txt
    writing entry points to pytest_mpl.egg-info/entry_points.txt
    writing requirements to pytest_mpl.egg-info/requires.txt
    writing top-level names to pytest_mpl.egg-info/top_level.txt
    reading manifest file 'pytest_mpl.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    adding license file 'LICENSE'
    writing manifest file 'pytest_mpl.egg-info/SOURCES.txt'
    dh_auto_test -O--buildsystem=pybuild
    I: pybuild base:305: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pytest-mpl/build; python3.12 -m pytest tests
    ============================= test session starts ==============================
    platform linux -- Python 3.12.2, pytest-8.0.2, pluggy-1.4.0
    rootdir: /<<PKGBUILDDIR>>
    configfile: setup.cfg
    collected 46 items

    tests/subtests/test_subtest.py sssssssssssssss [ 32%]
    tests/test_pytest_mpl.py FFFFF.ssF.FFFFFF.ssssssssssssss [100%]

    =================================== FAILURES ===================================
    ________________________________ test_succeeds _________________________________

    cls = <class '_pytest.runner.CallInfo'>
    func = <function call_runtest_hook.<locals>.<lambda> at 0x7fd9ec5e1bc0>
    when = 'call'
    reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)

    @classmethod
    def from_call(
    cls,
    func: Callable[[], TResult],
    when: Literal["collect", "setup", "call", "teardown"],
    reraise: Optional[
    Union[Type[BaseException], Tuple[Type[BaseException], ...]]
    ] = None,
    ) -> "CallInfo[TResult]":
    """Call func, wrapping the result in a CallInfo.

    :param func:
    The function to call. Called without arguments.
    :param when:
    The phase in which the function is called.
    :param reraise:
    Exception or exceptions that shall propagate if raised by the
    function, instead of being wrapped in the CallInfo.
    """
    excinfo = None
    start = timing.time()
    precise_start = timing.perf_counter()
    try:
    result: Optional[TResult] = func()

    /usr/lib/python3/dist-packages/_pytest/runner.py:342:
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    /usr/lib/python3/dist-packages/_pytest/runner.py:263: in <lambda>
    lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3/dist-packages/pluggy/_hooks.py:501: in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    /usr/lib/python3/dist-packages/pluggy/_manager.py:119: in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3/dist-packages/_pytest/threadexception.py:87: in pytest_runtest_call
    yield from thread_exception_runtest_hook() /usr/lib/python3/dist-packages/_pytest/threadexception.py:63: in thread_exception_runtest_hook
    yield
    /usr/lib/python3/dist-packages/_pytest/unraisableexception.py:90: in pytest_runtest_call
    yield from unraisable_exception_runtest_hook() /usr/lib/python3/dist-packages/_pytest/unraisableexception.py:65: in unraisable_exception_runtest_hook
    yield
    /usr/lib/python3/dist-packages/_pytest/logging.py:839: in pytest_runtest_call
    yield from self._runtest_for(item, "call") /usr/lib/python3/dist-packages/_pytest/logging.py:822: in _runtest_for
    yield
    /usr/lib/python3/dist-packages/_pytest/capture.py:882: in pytest_runtest_call
    return (yield)
    /usr/lib/python3/dist-packages/_pytest/skipping.py:256: in pytest_runtest_call
    return (yield)
    /usr/lib/python3/dist-packages/_pytest/runner.py:178: in pytest_runtest_call
    raise e
    /usr/lib/python3/dist-packages/_pytest/runner.py:170: in pytest_runtest_call
    item.runtest()
    /usr/lib/python3/dist-packages/_pytest/python.py:1831: in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self) /usr/lib/python3/dist-packages/pluggy/_hooks.py:501: in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    /usr/lib/python3/dist-packages/pluggy/_manager.py:119: in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

    pyfuncitem = <Function test_succeeds>

    @hookimpl(trylast=True)
    def pytest_pyfunc_call(pyfuncitem: "Function") -> Optional[object]:
    testfunction = pyfuncitem.obj
    if is_async_function(testfunction):
    async_warn_and_skip(pyfuncitem.nodeid)
    funcargs = pyfuncitem.funcargs
    testargs = {arg: funcargs[arg] for arg in pyfuncitem._fixtureinfo.argnames}
    result = testfunction(**testargs)
    if hasattr(result, "__await__") or hasattr(result, "__aiter__"):
    async_warn_and_skip(pyfuncitem.nodeid)
    elif result is not None:
    warnings.warn(
    PytestReturnNotNoneWarning(
    f"Expected None, but {pyfuncitem.nodeid} returned {result!r}, which will be an error in a "
    "future version of pytest. Did you mean to use `assert` instead of `return`?"
    )
    )
    E pytest.PytestReturnNotNoneWarning: Expected None, but .pybuild/cpython3_3.12_pytest-mpl/build/tests/test_pytest_mpl.py::test_succeeds returned <Figure size 640x480 with 1 Axes>, which will be an error in a future version of pytest. Did you
    mean to use `assert` instead of `return`?

    /usr/lib/python3/dist-packages/_pytest/python.py:198: PytestReturnNotNoneWarning
    _____________________________ test_succeeds_remote _____________________________

    cls = <class '_pytest.runner.CallInfo'>
    func = <function call_runtest_hook.<locals>.<lambda> at 0x7fd9eb6ea200>
    when = 'call'
    reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)

    @classmethod
    def from_call(
    cls,
    func: Callable[[], TResult],
    when: Literal["collect", "setup", "call", "teardown"],
    reraise: Optional[
    Union[Type[BaseException], Tuple[Type[BaseException], ...]]
    ] = None,
    ) -> "CallInfo[TResult]":
    """Call func, wrapping the result in a CallInfo.

    :param func:
    The function to call. Called without arguments.
    :param when:
    The phase in which the function is called.
    :param reraise:
    Exception or exceptions that shall propagate if raised by the
    function, instead of being wrapped in the CallInfo.
    """
    excinfo = None
    start = timing.time()
    precise_start = timing.perf_counter()
    try:
    result: Optional[TResult] = func()

    /usr/lib/python3/dist-packages/_pytest/runner.py:342:
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    /usr/lib/python3/dist-packages/_pytest/runner.py:263: in <lambda>
    lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3/dist-packages/pluggy/_hooks.py:501: in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    /usr/lib/python3/dist-packages/pluggy/_manager.py:119: in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3/dist-packages/_pytest/threadexception.py:87: in pytest_runtest_call
    yield from thread_exception_runtest_hook() /usr/lib/python3/dist-packages/_pytest/threadexception.py:63: in thread_exception_runtest_hook
    yield
    /usr/lib/python3/dist-packages/_pytest/unraisableexception.py:90: in pytest_runtest_call
    yield from unraisable_exception_runtest_hook() /usr/lib/python3/dist-packages/_pytest/unraisableexception.py:65: in unraisable_exception_runtest_hook
    yield
    /usr/lib/python3/dist-packages/_pytest/logging.py:839: in pytest_runtest_call
    yield from self._runtest_for(item, "call") /usr/lib/python3/dist-packages/_pytest/logging.py:822: in _runtest_for
    yield
    /usr/lib/python3/dist-packages/_pytest/capture.py:882: in pytest_runtest_call
    return (yield)
    /usr/lib/python3/dist-packages/_pytest/skipping.py:256: in pytest_runtest_call
    return (yield)
    /usr/lib/python3/dist-packages/_pytest/runner.py:178: in pytest_runtest_call
    raise e
    /usr/lib/python3/dist-packages/_pytest/runner.py:170: in pytest_runtest_call
    item.runtest()
    /usr/lib/python3/dist-packages/_pytest/python.py:1831: in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self) /usr/lib/python3/dist-packages/pluggy/_hooks.py:501: in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    /usr/lib/python3/dist-packages/pluggy/_manager.py:119: in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

    pyfuncitem = <Function test_succeeds_remote>

    @hookimpl(trylast=True)
    def pytest_pyfunc_call(pyfuncitem: "Function") -> Optional[object]:
    testfunction = pyfuncitem.obj
    if is_async_function(testfunction):
    async_warn_and_skip(pyfuncitem.nodeid)
    funcargs = pyfuncitem.funcargs
    testargs = {arg: funcargs[arg] for arg in pyfuncitem._fixtureinfo.argnames}
    result = testfunction(**testargs)
    if hasattr(result, "__await__") or hasattr(result, "__aiter__"):
    async_warn_and_skip(pyfuncitem.nodeid)
    elif result is not None:
    warnings.warn(
    PytestReturnNotNoneWarning(
    f"Expected None, but {pyfuncitem.nodeid} returned {result!r}, which will be an error in a "
    "future version of pytest. Did you mean to use `assert` instead of `return`?"
    )
    )
    E pytest.PytestReturnNotNoneWarning: Expected None, but .pybuild/cpython3_3.12_pytest-mpl/build/tests/test_pytest_mpl.py::test_succeeds_remote returned <Figure size 640x480 with 1 Axes>, which will be an error in a future version of pytest.
    Did you mean to use `assert` instead of `return`?

    /usr/lib/python3/dist-packages/_pytest/python.py:198: PytestReturnNotNoneWarning
    _________________________ test_succeeds_faulty_mirror __________________________

    cls = <class '_pytest.runner.CallInfo'>
    func = <function call_runtest_hook.<locals>.<lambda> at 0x7fd9eb6e9f80>
    when = 'call'
    reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)

    @classmethod
    def from_call(
    cls,
    func: Callable[[], TResult],
    when: Literal["collect", "setup", "call", "teardown"],
    reraise: Optional[
    Union[Type[BaseException], Tuple[Type[BaseException], ...]]
    ] = None,
    ) -> "CallInfo[TResult]":
    """Call func, wrapping the result in a CallInfo.

    :param func:
    The function to call. Called without arguments.
    :param when:
    The phase in which the function is called.
    :param reraise:
    Exception or exceptions that shall propagate if raised by the
    function, instead of being wrapped in the CallInfo.
    """
    excinfo = None
    start = timing.time()
    precise_start = timing.perf_counter()
    try:
    result: Optional[TResult] = func()

    /usr/lib/python3/dist-packages/_pytest/runner.py:342:
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    /usr/lib/python3/dist-packages/_pytest/runner.py:263: in <lambda>
    lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3/dist-packages/pluggy/_hooks.py:501: in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    /usr/lib/python3/dist-packages/pluggy/_manager.py:119: in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3/dist-packages/_pytest/threadexception.py:87: in pytest_runtest_call
    yield from thread_exception_runtest_hook() /usr/lib/python3/dist-packages/_pytest/threadexception.py:63: in thread_exception_runtest_hook
    yield
    /usr/lib/python3/dist-packages/_pytest/unraisableexception.py:90: in pytest_runtest_call
    yield from unraisable_exception_runtest_hook() /usr/lib/python3/dist-packages/_pytest/unraisableexception.py:65: in unraisable_exception_runtest_hook
    yield
    /usr/lib/python3/dist-packages/_pytest/logging.py:839: in pytest_runtest_call
    yield from self._runtest_for(item, "call") /usr/lib/python3/dist-packages/_pytest/logging.py:822: in _runtest_for
    yield
    /usr/lib/python3/dist-packages/_pytest/capture.py:882: in pytest_runtest_call
    return (yield)
    /usr/lib/python3/dist-packages/_pytest/skipping.py:256: in pytest_runtest_call
    return (yield)
    /usr/lib/python3/dist-packages/_pytest/runner.py:178: in pytest_runtest_call
    raise e
    /usr/lib/python3/dist-packages/_pytest/runner.py:170: in pytest_runtest_call
    item.runtest()
    /usr/lib/python3/dist-packages/_pytest/python.py:1831: in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self) /usr/lib/python3/dist-packages/pluggy/_hooks.py:501: in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    /usr/lib/python3/dist-packages/pluggy/_manager.py:119: in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

    pyfuncitem = <Function test_succeeds_faulty_mirror>

    @hookimpl(trylast=True)
    def pytest_pyfunc_call(pyfuncitem: "Function") -> Optional[object]:
    testfunction = pyfuncitem.obj
    if is_async_function(testfunction):
    async_warn_and_skip(pyfuncitem.nodeid)
    funcargs = pyfuncitem.funcargs
    testargs = {arg: funcargs[arg] for arg in pyfuncitem._fixtureinfo.argnames}
    result = testfunction(**testargs)
    if hasattr(result, "__await__") or hasattr(result, "__aiter__"):
    async_warn_and_skip(pyfuncitem.nodeid)
    elif result is not None:
    warnings.warn(
    PytestReturnNotNoneWarning(
    f"Expected None, but {pyfuncitem.nodeid} returned {result!r}, which will be an error in a "
    "future version of pytest. Did you mean to use `assert` instead of `return`?"
    )
    )
    E pytest.PytestReturnNotNoneWarning: Expected None, but .pybuild/cpython3_3.12_pytest-mpl/build/tests/test_pytest_mpl.py::test_succeeds_faulty_mirror returned <Figure size 640x480 with 1 Axes>, which will be an error in a future version of
    pytest. Did you mean to use `assert` instead of `return`?

    /usr/lib/python3/dist-packages/_pytest/python.py:198: PytestReturnNotNoneWarning
    ___________________________ TestClass.test_succeeds ____________________________

    cls = <class '_pytest.runner.CallInfo'>
    func = <function call_runtest_hook.<locals>.<lambda> at 0x7fd9eb5dfe20>
    when = 'call'
    reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)

    @classmethod
    def from_call(
    cls,
    func: Callable[[], TResult],
    when: Literal["collect", "setup", "call", "teardown"],
    reraise: Optional[
    Union[Type[BaseException], Tuple[Type[BaseException], ...]]
    ] = None,
    ) -> "CallInfo[TResult]":
    """Call func, wrapping the result in a CallInfo.

    :param func:
    The function to call. Called without arguments.
    :param when:
    The phase in which the function is called.
    :param reraise:
    Exception or exceptions that shall propagate if raised by the
    function, instead of being wrapped in the CallInfo.
    """
    excinfo = None
    start = timing.time()
    precise_start = timing.perf_counter()
    try:
    result: Optional[TResult] = func()

    /usr/lib/python3/dist-packages/_pytest/runner.py:342:
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    /usr/lib/python3/dist-packages/_pytest/runner.py:263: in <lambda>
    lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3/dist-packages/pluggy/_hooks.py:501: in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    /usr/lib/python3/dist-packages/pluggy/_manager.py:119: in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3/dist-packages/_pytest/threadexception.py:87: in pytest_runtest_call
    yield from thread_exception_runtest_hook() /usr/lib/python3/dist-packages/_pytest/threadexception.py:63: in thread_exception_runtest_hook
    yield
    /usr/lib/python3/dist-packages/_pytest/unraisableexception.py:90: in pytest_runtest_call
    yield from unraisable_exception_runtest_hook() /usr/lib/python3/dist-packages/_pytest/unraisableexception.py:65: in unraisable_exception_runtest_hook
    yield
    /usr/lib/python3/dist-packages/_pytest/logging.py:839: in pytest_runtest_call
    yield from self._runtest_for(item, "call") /usr/lib/python3/dist-packages/_pytest/logging.py:822: in _runtest_for
    yield
    /usr/lib/python3/dist-packages/_pytest/capture.py:882: in pytest_runtest_call
    return (yield)
    /usr/lib/python3/dist-packages/_pytest/skipping.py:256: in pytest_runtest_call
    return (yield)
    /usr/lib/python3/dist-packages/_pytest/runner.py:178: in pytest_runtest_call
    raise e
    /usr/lib/python3/dist-packages/_pytest/runner.py:170: in pytest_runtest_call
    item.runtest()
    /usr/lib/python3/dist-packages/_pytest/python.py:1831: in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self) /usr/lib/python3/dist-packages/pluggy/_hooks.py:501: in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    /usr/lib/python3/dist-packages/pluggy/_manager.py:119: in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

    pyfuncitem = <Function test_succeeds>

    @hookimpl(trylast=True)
    def pytest_pyfunc_call(pyfuncitem: "Function") -> Optional[object]:
    testfunction = pyfuncitem.obj
    if is_async_function(testfunction):
    async_warn_and_skip(pyfuncitem.nodeid)
    funcargs = pyfuncitem.funcargs
    testargs = {arg: funcargs[arg] for arg in pyfuncitem._fixtureinfo.argnames}
    result = testfunction(**testargs)
    if hasattr(result, "__await__") or hasattr(result, "__aiter__"):
    async_warn_and_skip(pyfuncitem.nodeid)
    elif result is not None:
    warnings.warn(
    PytestReturnNotNoneWarning(
    f"Expected None, but {pyfuncitem.nodeid} returned {result!r}, which will be an error in a "
    "future version of pytest. Did you mean to use `assert` instead of `return`?"
    )
    )
    E pytest.PytestReturnNotNoneWarning: Expected None, but .pybuild/cpython3_3.12_pytest-mpl/build/tests/test_pytest_mpl.py::TestClass::test_succeeds returned <Figure size 640x480 with 1 Axes>, which will be an error in a future version of
    pytest. Did you mean to use `assert` instead of `return`?

    /usr/lib/python3/dist-packages/_pytest/python.py:198: PytestReturnNotNoneWarning
    ___________________________________ test_dpi ___________________________________

    cls = <class '_pytest.runner.CallInfo'>
    func = <function call_runtest_hook.<locals>.<lambda> at 0x7fd9eb604c20>
    when = 'call'
    reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)

    @classmethod
    def from_call(
    cls,
    func: Callable[[], TResult],
    when: Literal["collect", "setup", "call", "teardown"],
    reraise: Optional[
    Union[Type[BaseException], Tuple[Type[BaseException], ...]]
    ] = None,
    ) -> "CallInfo[TResult]":
    """Call func, wrapping the result in a CallInfo.

    :param func:
    The function to call. Called without arguments.
    :param when:
    The phase in which the function is called.
    :param reraise:
    Exception or exceptions that shall propagate if raised by the
    function, instead of being wrapped in the CallInfo.
    """
    excinfo = None
    start = timing.time()
    precise_start = timing.perf_counter()
    try:
    result: Optional[TResult] = func()

    /usr/lib/python3/dist-packages/_pytest/runner.py:342:
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    /usr/lib/python3/dist-packages/_pytest/runner.py:263: in <lambda>
    lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3/dist-packages/pluggy/_hooks.py:501: in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    /usr/lib/python3/dist-packages/pluggy/_manager.py:119: in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3/dist-packages/_pytest/threadexception.py:87: in pytest_runtest_call
    yield from thread_exception_runtest_hook() /usr/lib/python3/dist-packages/_pytest/threadexception.py:63: in thread_exception_runtest_hook
    yield
    /usr/lib/python3/dist-packages/_pytest/unraisableexception.py:90: in pytest_runtest_call
    yield from unraisable_exception_runtest_hook() /usr/lib/python3/dist-packages/_pytest/unraisableexception.py:65: in unraisable_exception_runtest_hook
    yield
    /usr/lib/python3/dist-packages/_pytest/logging.py:839: in pytest_runtest_call
    yield from self._runtest_for(item, "call") /usr/lib/python3/dist-packages/_pytest/logging.py:822: in _runtest_for
    yield
    /usr/lib/python3/dist-packages/_pytest/capture.py:882: in pytest_runtest_call
    return (yield)
    /usr/lib/python3/dist-packages/_pytest/skipping.py:256: in pytest_runtest_call
    return (yield)
    /usr/lib/python3/dist-packages/_pytest/runner.py:178: in pytest_runtest_call
    raise e
    /usr/lib/python3/dist-packages/_pytest/runner.py:170: in pytest_runtest_call
    item.runtest()
    /usr/lib/python3/dist-packages/_pytest/python.py:1831: in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self) /usr/lib/python3/dist-packages/pluggy/_hooks.py:501: in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    /usr/lib/python3/dist-packages/pluggy/_manager.py:119: in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

    pyfuncitem = <Function test_dpi>

    @hookimpl(trylast=True)
    def pytest_pyfunc_call(pyfuncitem: "Function") -> Optional[object]:
    testfunction = pyfuncitem.obj
    if is_async_function(testfunction):
    async_warn_and_skip(pyfuncitem.nodeid)
    funcargs = pyfuncitem.funcargs
    testargs = {arg: funcargs[arg] for arg in pyfuncitem._fixtureinfo.argnames}
    result = testfunction(**testargs)
    if hasattr(result, "__await__") or hasattr(result, "__aiter__"):
    async_warn_and_skip(pyfuncitem.nodeid)
    elif result is not None:
    warnings.warn(
    PytestReturnNotNoneWarning(
    f"Expected None, but {pyfuncitem.nodeid} returned {result!r}, which will be an error in a "
    "future version of pytest. Did you mean to use `assert` instead of `return`?"
    )
    )
    E pytest.PytestReturnNotNoneWarning: Expected None, but .pybuild/cpython3_3.12_pytest-mpl/build/tests/test_pytest_mpl.py::test_dpi returned <Figure size 640x480 with 1 Axes>, which will be an error in a future version of pytest. Did you mean
    to use `assert` instead of `return`?

    /usr/lib/python3/dist-packages/_pytest/python.py:198: PytestReturnNotNoneWarning
    ________________________________ test_tolerance ________________________________

    cls = <class '_pytest.runner.CallInfo'>
    func = <function call_runtest_hook.<locals>.<lambda> at 0x7fd9eb3a2c00>
    when = 'call'
    reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)

    @classmethod
    def from_call(
    cls,
    func: Callable[[], TResult],
    when: Literal["collect", "setup", "call", "teardown"],
    reraise: Optional[
    Union[Type[BaseException], Tuple[Type[BaseException], ...]]
    ] = None,
    ) -> "CallInfo[TResult]":
    """Call func, wrapping the result in a CallInfo.

    :param func:
    The function to call. Called without arguments.
    :param when:
    The phase in which the function is called.
    :param reraise:
    Exception or exceptions that shall propagate if raised by the
    function, instead of being wrapped in the CallInfo.
    """
    excinfo = None
    start = timing.time()
    precise_start = timing.perf_counter()
    try:
    result: Optional[TResult] = func()

    /usr/lib/python3/dist-packages/_pytest/runner.py:342:

    [continued in next message]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)