Skip to content

matplotlib tests fail, expecting their decorator to be outermost #331

Description

@petecheslock

In the 3.5 version of this project: https://github.com/matplotlib/matplotlib

Revision de98877e3dc45de8dd441d008f23d88738dc015d

Create venv
pip install -r requirements/dev/dev-requirements.txt
pip install -r requirements/testing/all.txt
pip install pytest-xdist pytest appmap
pytest -vv

(most tests will pass)

run appmap-python pytest -vv - all tests will fail.

They all fail with the same error. Here is a single test example.

appmap-python pytest -n8 -vv lib/matplotlib/tests/test_type1font.py::test_Type1Font  INT ✘  3.9.19   matplotlib   17:12:42 =========================================================================================== test session starts ===========================================================================================
platform darwin -- Python 3.9.19, pytest-8.2.1, pluggy-1.5.0 -- /Users/petecheslock/repos/matplotlib/venv/bin/python
cachedir: .pytest_cache
rootdir: /Users/petecheslock/repos/matplotlib
configfile: pytest.ini
plugins: cov-5.0.0, xvfb-3.0.0, rerunfailures-14.0, appmap-2.0.4, timeout-2.3.1, xdist-3.6.1
8 workers [1 item] scheduling tests via LoadScheduling
lib/matplotlib/tests/test_type1font.py::test_Type1Font [gw0] [100%] ERROR lib/matplotlib/tests/test_type1font.py::test_Type1Font ================================================================================================= ERRORS ==================================================================================================
____________________________________________________________________________________ ERROR at setup of test_Type1Font _____________________________________________________________________________________
[gw0] darwin -- Python 3.9.19 /Users/petecheslock/repos/matplotlib/venv/bin/python
request = <SubRequest 'mpl_test_settings' for <Function test_Type1Font>>
@pytest.fixture(autouse=True)
def mpl_test_settings(request):
> from matplotlib.testing.decorators import _cleanup_cm
lib/matplotlib/testing/conftest.py:40: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
venv/lib/python3.9/site-packages/_appmap/wrapt/wrappers.py:613: in __call__
return self._self_wrapper(self.__wrapped__, instance,
venv/lib/python3.9/site-packages/_appmap/importer.py:235: in wrapped_exec_module
exec_module(*args, **kwargs)
lib/matplotlib/testing/decorators.py:17: in <module>
from matplotlib import (_api, _pylab_helpers, cbook, ft2font, pyplot as plt,
venv/lib/python3.9/site-packages/_appmap/wrapt/wrappers.py:613: in __call__
return self._self_wrapper(self.__wrapped__, instance,
venv/lib/python3.9/site-packages/_appmap/importer.py:235: in wrapped_exec_module
exec_module(*args, **kwargs)
lib/matplotlib/pyplot.py:2603: in <module>
def imshow(
lib/matplotlib/pyplot.py:105: in _copy_docstring_and_deprecators
func = decorator(func)
venv/lib/python3.9/site-packages/_appmap/wrapt/wrappers.py:622: in __call__
return self._self_wrapper(self.__wrapped__, self._self_instance,
venv/lib/python3.9/site-packages/_appmap/instrument.py:131: in instrumented_fn
return call_instrumented(f, instance, args, kwargs)
venv/lib/python3.9/site-packages/_appmap/instrument.py:82: in call_instrumented
return f.fn(*args, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
since = '3.5', name = 'aspect', func = <function imshow at 0x1537dcca0>
def make_keyword_only(since, name, func=None):
"""
Decorator indicating that passing parameter *name* (or any of the following
ones) positionally to *func* is being deprecated.
When used on a method that has a pyplot wrapper, this should be the
outermost decorator, so that :file:`boilerplate.py` can access the original
signature.
"""
decorator = functools.partial(make_keyword_only, since, name)
if func is None:
return decorator
signature = inspect.signature(func)
POK = inspect.Parameter.POSITIONAL_OR_KEYWORD
KWO = inspect.Parameter.KEYWORD_ONLY
> assert (name in signature.parameters
and signature.parameters[name].kind == POK), (
f"Matplotlib internal error: {name!r} must be a positional-or-keyword "
f"parameter for {func.__name__}()")
E AssertionError: Matplotlib internal error: 'aspect' must be a positional-or-keyword parameter for imshow()
lib/matplotlib/_api/deprecation.py:434: AssertionError
========================================================================================= short test summary info =========================================================================================
ERROR lib/matplotlib/tests/test_type1font.py::test_Type1Font - AssertionError: Matplotlib internal error: 'aspect' must be a positional-or-keyword parameter for imshow()

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions