Ostatnio zastosowałem prostą sztuczkę w standardowej inwokacji PyTesta w #Gentoo, by rzucało błąd, kiedy wykryje nieużywane funkcje async. Miało to na celu zwiększenie szansy zauważenia, jeśli w którejś paczce przypadkiem pominięto zależność od dev-python/pytest-asyncio (albo równoważnej wtyczki), albo przy wyłączonym automatycznym ładowaniu wtyczek, pominięto ładowanie takiej wtyczki.
Dziś otrzymałem pierwsze zgłoszenie, dotyczące paczki dev-python/ipython. Przeszukałem źródła, i potwierdziłem zależność — tyle, że z jakiegoś powodu przypiętą do wersji < 0.22. No cóż, nie mamy już takiej, ale warto sprawdzić, czy mimo to nie zadziała. Tak więc dodałem zależność, dodałem -p asyncio… a #PyTest dalej jej nie widzi. Podrapałem się po głowie, spróbowałem PYTEST_PLUGINS — dalej nie działa. Co do…?
Tak więc sklonowałem repozytorium git, spróbowałem ze starszą wersją wtyczki — testy działają. Zaktualizowałem do 0.23.6, przestały działać. Sprawdziłem historię, i okazało się, że starą wersję wymuszono ze względu na błąd w wydaniu 0.22.0. Tyle że ten błąd już poprawiono, wydanie usunięto, a mój problem był zupełnie inny.
Przyjrzałem się sprawie bliżej. Z jakiegoś powodu, w kodzie #IPython testy nie są bezpośrednio oznaczone markerem pytest.mark.asyncio. Zamiast tego, conftest.py automatycznie dodaje ten marker do wszystkich testów, będących współprogramami. Ze starszymi wersjami to działało, z nową przestało. Wygląda na to, że test zostaje poprawnie oznaczony, ale wówczas przestaje być rozpoznawany jako współprogram. Przygotowałem minimalny przykład i zgłosiłem problem.
Istotne w tej historii jest to: (potencjalny) problem nie został zauważony przez dłuższą chwilę, bo autorzy IPythona przedwcześnie wymusili starą wersję ze względu na chwilowy błąd, a następnie nie usunęli tego ograniczenia.
Chciałbym także podziękować autorom PyPy za ich wsparcie, zarówno w kwestii poprawiania błędów w PyPy, jak również udzielaniu pomocy innym projektom, by poprawić ich zgodność z PyPy. Praca z wami jest przyjemnością!
Na koniec, poznałem ważny argument za pracą nad wsparciem PyPy w projektach: nawet jeśli dana paczka nie działa szybciej na PyPy, to może być zależnością w większym projekcie, w którym PyPy ogółem przynosi lepszą wydajność.
Can somebody familiar with #JupyterLab or #JupyterNotebook please tell me why the top cell in this notebook doesn't render the HTML, when the other two cells do? Everything I'm reading online suggests it should render it. https://gist.github.com/mattcen/c5db6e729dfe9e949596ffb87207cb1b
In the "Rich representation" section of this notebook (https://jupyterlite.github.io/demo/lab?path=.%2Fpython.ipynb) it does something similar and Just Works (obviously that's #Pyodide rather than CPython, but I don't think that should matter).
I am guessing maybe there's a library I haven't installed; for this example I just created a new virtual environment and installed jupyterlab and nothing else. #Jupyter#IPython