pytest assertion rewriting does not seem to work with meson editable install
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- python
- Bereich
- build-system, testing-qa
Rechercherichtung
Beginne mit dem Reproducer in numpy/tests/test_mine.py und vergleiche die pytest-Ausgabe nach den dokumentierten Befehlen für die normale und die editable Installation. Verfolge, wie sich die editable Installation auf die Assertion-Rewriting-Funktion von pytest auswirkt, und verwende dabei das verlinkte Meson-Issue als Kontext. Als abgeschlossen gilt die Aufgabe, wenn der Lauf mit der editable Installation die ausgewerteten Assertion-Werte ausgibt und damit dem Verhalten bei der normalen Installation entspricht.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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 ============================
- Vorherrschende Sprache
- Python
- Sterne
- 181
- Forks
- 96
- Ø Merge
- 21 Std. 24 Min.
- Gemergte PRs (30 T.)
- 8
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus mesonbuild/meson-python
-
documentation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
mesonbuild/meson-python#541 ·
Maintainer antworten meist innerhalb von 1 Tag
-
documentation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
mesonbuild/meson-python#473 · 6 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
documentation enhancement tests
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 45/100
mesonbuild/meson-python#903 · 3 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 52/100
mesonbuild/meson-python#871 · 7 Kommentare · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
pip install overrides existing build configurationEvtl. vergeben @Alvaro-Kothe hat das vor 133 Tagen übernommen. Offenquestion
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 68/100
mesonbuild/meson-python#851 · 6 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in mesonbuild/meson-python
Ähnliche Issues
-
[oblt-aw][autodoc] Update docs for security org scaffolding and Docs AI menu permission changesEvtl. vergeben @github-actions hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
Maintainer antworten meist innerhalb von 1 Tag
-
external integration integration-submission
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
langchain-ai/docs#7077 ·
Maintainer antworten meist innerhalb von 1 Tag
-
author-page correction
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
acl-org/acl-anthology#10623 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Use context to recognize personal initials and lowercase namesEvtl. vergeben @lipikaramaswamy hat das heute übernommen. Offenbug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 67/100
NVIDIA-NeMo/Anonymizer#340 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 82/100
btclib-org/btclib-node#2083 ·
Maintainer antworten meist innerhalb von 1 Tag