pytest assertion rewriting does not seem to work with meson editable install
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- python
- Área
- build-system, testing-qa
Línea de trabajo
Comienza con el reproductor en numpy/tests/test_mine.py y compara la salida de pytest después de ejecutar los comandos documentados de instalación normal y editable. Traza cómo afecta la instalación editable a la reescritura de aserciones de pytest, usando como contexto el issue enlazado de Meson. Se considera terminado cuando la ejecución con la instalación editable muestra los valores evaluados de las aserciones, igual que el comportamiento con la instalación normal.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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 ============================
- Lenguaje dominante
- Python
- Estrellas
- 180
- Forks
- 93
- Merge medio
- 20 h 58 min
- PR fusionados (30 d)
- 22
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de mesonbuild/meson-python
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
mesonbuild/meson-python#541 ·
Los mantenedores suelen responder en 1 día
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
mesonbuild/meson-python#473 · 6 comentarios ·
Los mantenedores suelen responder en 1 día
-
documentation enhancement tests
Dificultad 5/5 Más de una semana Aptitud para principiantes 45/100
mesonbuild/meson-python#903 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 52/100
mesonbuild/meson-python#871 · 7 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
pip install overrides existing build configurationPosiblemente ocupada @Alvaro-Kothe la tomó hace 111 días. Abiertoquestion
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
mesonbuild/meson-python#851 · 6 comentarios ·
Los mantenedores suelen responder en 1 día