getappmap / getappmap/appmap-python

matplotlib tests fail, expecting their decorator to be outermost

Aperta
#331 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

bug
Lingua principale
Python
Stelle
104
Fork
17
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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()

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Riproduci il fallimento con appmap-python pytest -vv, quindi esamina il percorso di strumentazione in _appmap/importer.py e _appmap/instrument.py, insieme alle posizioni di Matplotlib indicate: lib/matplotlib/pyplot.py, lib/matplotlib/testing/decorators.py e lib/matplotlib/_api/deprecation.py. Il lavoro è completato quando il test Matplotlib riprodotto non fallisce più perché l’ordine dei decorator o la firma wrappata non è valido.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
testing-qa, tooling
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.