getappmap / getappmap/appmap-python
matplotlib tests fail, expecting their decorator to be outermost
まだ誰も着手していません。
- 主要言語
- Python
- スター
- 104
- フォーク
- 17
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
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()
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
appmap-python pytest -vv で失敗を再現し、続いて _appmap/importer.py と _appmap/instrument.py のインストルメンテーションパスを、示されている Matplotlib の箇所である lib/matplotlib/pyplot.py、lib/matplotlib/testing/decorators.py、lib/matplotlib/_api/deprecation.py と併せて調査します。再現した Matplotlib のテストが、デコレータの順序またはラップされたシグネチャが無効であることを理由に失敗しなくなれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python
- 領域
- testing-qa, tooling
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100