pytest assertion rewriting does not seem to work with meson editable install
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 35/100
- Tipo de issue
- Bug
- Clareza
- Razoavelmente clara
- Status de atividade
- Estagnada
- Stack de tecnologia
- python
- Domínio
- build-system, testing-qa
Direção de pesquisa
Comece com o reprodutor em numpy/tests/test_mine.py e compare a saída do pytest após os comandos documentados de instalação normal e editable. Rastreie como a instalação editable afeta a reescrita de asserções do pytest, usando como contexto a issue vinculada do Meson. A tarefa estará concluída quando a execução com a instalação editable relatar os valores avaliados das asserções, correspondendo ao comportamento da instalação normal.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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 ============================
- Linguagem predominante
- Python
- Estrelas
- 182
- Forks
- 97
- Merge médio
- 21h 24min
- PRs com merge (30d)
- 8
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de mesonbuild/meson-python
-
documentation
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
mesonbuild/meson-python#541 ·
Mantenedores costumam responder em até 1 dia
-
documentation
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
mesonbuild/meson-python#473 · 6 comentários ·
Mantenedores costumam responder em até 1 dia
-
documentation enhancement tests
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 45/100
mesonbuild/meson-python#903 · 3 comentários ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 52/100
mesonbuild/meson-python#871 · 7 comentários · 1 reação ·
Mantenedores costumam responder em até 1 dia
-
pip install overrides existing build configurationTalvez já em andamento @Alvaro-Kothe assumiu há 139 dias. Abertaquestion
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 68/100
mesonbuild/meson-python#851 · 6 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de mesonbuild/meson-python
Issues semelhantes
-
URLValidator ignores an explicit empty scheme allowlistTalvez já em andamento @IlyaKhalafi assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
tortoise/tortoise-orm#2393 ·
Mantenedores costumam responder em até 2 dias
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
frappe/frappe_docker#2046 ·
Mantenedores costumam responder em até 1 dia
-
Weekly link check failedAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
-
complete_box_iou_loss / complete_box_iou: NaN gradients for zero-height boxes, NaN for point boxesAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
Mantenedores costumam responder em até 1 dia
-
AXI SMU SPEC
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
tenstorrent/tt-oca-harness#3556 ·
Mantenedores costumam responder em até 1 dia