pytest assertion rewriting does not seem to work with meson editable install
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 35/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- python
調査の方向性
numpy/tests/test_mine.py の再現コードから始め、通常インストールと editable インストールについて、文書化されたコマンドを実行した後の pytest の出力を比較します。リンクされている Meson issue をコンテキストとして使用し、editable インストールが pytest のアサーション書き換えにどのような影響を与えるかを追跡します。editable インストールでの実行が、通常インストール時の動作と同じく、評価済みのアサーション値を報告すれば完了です。
索引モデルが issue の本文から書いたものです。
説明
It could well be partially linked to some of the discussion in https://github.com/mesonbuild/meson-python/issues/642 but I thought a separate issue may be worth it.
Description of the issue
The pytest assertion rewriting that shows additional debug information when an assert fails does not show up when using meson editable install. It does work fine when using normal (non-editable) meson install. Although not crucial I would argue that this can be actually quite useful in CI logs.
It could also well be a Pytest issue but I thought I had to start somewhere and chose meson-python.
More background about Pytest assertion rewriting, see Pytest doc that links to a somewhat old blog post but I am guessing is probably still relevant?
This was originally seen in scikit-learn (see https://github.com/scikit-learn/scikit-learn/issues/29253#issuecomment-2173549242 if you are really curious where it would have actually been quite useful to see intermediary values in the AssertionError in https://github.com/scikit-learn/scikit-learn/issues/29253#issuecomment-2167610891). I put together a reproducer below with numpy hoping this makes it a bit easier to look at. I guess a smaller reproducer could be put together if deemed useful, but it would take a bit of time (I tried with https://github.com/dnicolodi/python-siphash24 and I am not able to reproduce the issue).
Get the reproducer from my numpy branch
git clone https://github.com/lesteve/numpy
cd numpy
git checkout meson-editable-pytest-assertion-rewrite
I added a simple test in numpy/tests/test_mine.py
import numpy as np
def test():
arr = np.arange(100)
assert arr.sum() < 100
When running with pytest you pytest assertion rewriting shows the value or arr.sum() (see below).
Normal (non-editable) install
pip install --verbose --no-build-isolation .
Note the assertion rewriting i.e. you get the value of arr.sum()
Partial output:
E assert np.int64(4950) < 100
E + where np.int64(4950) = <built-in method sum of numpy.ndarray object at 0x7b77efd7a370>()
Full output
❯ pytest --pyargs numpy.tests.test_mine
========================== test session starts ===========================
platform linux -- Python 3.11.7, pytest-8.2.2, pluggy-1.5.0
rootdir: /home/lesteve
plugins: hypothesis-6.103.2
collected 1 item
micromamba/envs/numpy-dev/lib/python3.11/site-packages/numpy/tests/test_mine.py F [100%]
================================ FAILURES ================================
__________________________________ test __________________________________
def test():
arr = np.arange(100)
> assert arr.sum() < 100
E assert np.int64(4950) < 100
E + where np.int64(4950) = <built-in method sum of numpy.ndarray object at 0x7b77efd7a370>()
E + where <built-in method sum of numpy.ndarray object at 0x7b77efd7a370> = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,\n 17, 18, 19, 20, 21, 22, 23, 24, 25, ...72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,\n 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]).sum
micromamba/envs/numpy-dev/lib/python3.11/site-packages/numpy/tests/test_mine.py:6: AssertionError
======================== short test summary info =========================
FAILED micromamba/envs/numpy-dev/lib/python3.11/site-packages/numpy/tests/test_mine.py::test - assert np.int64(4950) < 100
=========================== 1 failed in 0.82s ============================
Editable install
pip install --verbose --no-build-isolation --editable . --config-settings editable-verbose=true
You don't get the value of arr.sum()
pytest --pyargs numpy.tests.test_mine
========================== test session starts ===========================
platform linux -- Python 3.11.7, pytest-8.2.2, pluggy-1.5.0
rootdir: /home/lesteve
plugins: hypothesis-6.103.2
collecting ... + /home/lesteve/micromamba/envs/numpy-dev/bin/ninja
[1/1] Generating numpy/generate-version with a custom command
Saving version to numpy/version.py
collected 1 item
dev/numpy/numpy/tests/test_mine.py F [100%]
================================ FAILURES ================================
__________________________________ test __________________________________
def test():
arr = np.arange(100)
> assert arr.sum() < 100
E AssertionError
dev/numpy/numpy/tests/test_mine.py:6: AssertionError
======================== short test summary info =========================
FAILED dev/numpy/numpy/tests/test_mine.py::test - AssertionError
=========================== 1 failed in 1.02s ============================
- 主要言語
- Python
- スター
- 180
- フォーク
- 93
- 平均マージ
- 18時間 33分
- マージ済み PR(30日)
- 19
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
mesonbuild/meson-python のほかの issue
-
documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
mesonbuild/meson-python#541 ·
メンテナーはふだん 1 日以内に返信
-
documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
mesonbuild/meson-python#473 · コメント 6 件 ·
メンテナーはふだん 1 日以内に返信
-
documentation enhancement tests
難易度 5/5 1週間以上 初心者へのやさしさ 45/100
mesonbuild/meson-python#903 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 3/5 1〜2日 初心者へのやさしさ 52/100
mesonbuild/meson-python#871 · コメント 7 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
pip install overrides existing build configuration対応中かも @Alvaro-Kothe が 117 日前に担当しました。 オープンquestion
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
mesonbuild/meson-python#851 · コメント 6 件 ·
メンテナーはふだん 1 日以内に返信
mesonbuild/meson-python の issue をすべて見る
似ている issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
topoteretes/cognee#5647 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
Sendspin/sendspin-python-cli#291 ·
メンテナーはふだん 6 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
awslabs/visual-asset-management-system#414 ·
メンテナーはふだん 1 日以内に返信
-
bug v1 v2
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
modelcontextprotocol/python-sdk#3670 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
aicell-lab/bioengine#232 ·
メンテナーはふだん 1 日以内に返信