@danzin

1.3K Followers
3.1K Following
1.5K Posts
Brazilian (experienced) hobbyist Pythonista. Pythonista amador (experiente).
#python
He/him/ele
GitHubhttps://github.com/devdanzin
Three recent issues all describing hangs: anyone want to take a look? Even checking if you can reproduce one will be helpful!
- https://github.com/coveragepy/coveragepy/issues/2099
- https://github.com/coveragepy/coveragepy/issues/2128
- https://github.com/coveragepy/coveragepy/issues/2137
7.11.3 causes aiohttp tests to hang on Python 3.14 · Issue #2099 · coveragepy/coveragepy

Describe the bug Upgrading from 7.11.0 to 7.12.0 results in all test jobs on Python 3.14 hanging indefinitely. Our CI ends up running for hours without completing. To Reproduce https://github.com/a...

GitHub
Python is for artists too!

The Python is for artists too stikcker! Some L-System plants, the fab 4 Python libraries: numpy, shapely, trimesh & py5, the Python reading club stickers, desenho() and some extra py5 stickers.

Alexandre B A Villares
#Python now has a wonderful colorful REPL, and in 3.14 it also made #argparse look amazing! Check my silly tool for converting PNGs to #GIF animations! Thank you @hugovk, @ambv and everyone else involved... https://github.com/villares/sketch-a-day/blob/main/admin_scripts/pngs_to_gif.py
How do you use Python and its related technologies? Let us know in the 2026 Python Developers Survey! 🐍 #python #pythondevsurvey
https://surveys.jetbrains.com/s3/python-developers-survey-2026
Python Developers Survey 2026

The official Python Developers Survey 2026. Join and contribute to the community knowledge!

labeille Package Registry stats

Top 3.15 Blockers (364 packages):
* PyO3 / Rust / maturin: 111
* C extension build failures: 108
* pydantic-core (transitive PyO3): 69
* numpy / scipy / meson: 43

Once PyO3 adds 3.15 support, ~180 more packages will unlock (PyO3 direct + pydantic-core transitive)

Skip Reasons (418 packages):
* Monorepo subpackage (Azure, GCloud, etc.): 214
* No test suite found: 70
* No source repository: 52
* Type stub packages: 42

#Python #CPython #JIT #registry #labeille

labeille Package Registry stats

We've grown the registry: https://github.com/devdanzin/labeille/tree/main/registry/packages

* Total packages: 1,500
* Enriched (information collected and present): 1,500 (100%)
* Fully runnable on CPython 3.15: 654 (43.6%)
* Skipped (no tests, monorepo, etc.): 418 (27.9%)
* 3.15-specific blockers (skip_versions): 364 (24.3%)
* pytest: 95.1% (1,427 packages)
* unittest: 4.8% (72 packages)
* GitHub: 96.4% of repos
* Same JIT crash found in 7 packages

#Python #CPython #JIT #debugging #registry #labeille

labeille/registry/packages at main · devdanzin/labeille

Hunt for CPython JIT bugs by running real-world test suites - devdanzin/labeille

GitHub

The most important and tedious part of labeille is the registry.

So far with 350+ PyPI packages, each with a repo URL, install and test commands, metadata about whether it has C extensions, what Python versions to skip, and whether it needs xdist disabled.

"Just run pytest" doesn't work for all packages. Some need specific test markers or editable installs. Some have tests that might hang. Some need extra dependencies that aren't in their dev requirements.

#Python #PyPI #testing #labeille

I built labeille to find CPython JIT crashes, but it's a "run real world test suites at scale" platform.

It also works for:
— Checking which packages pass their tests on a new CPython version
— Testing free-threaded (no-GIL) CPython compatibility
— Measuring coverage.py or memray overhead across hundreds of packages
— Comparing CPython vs PyPy performance on real code

The registry of 350+ packages with install/test commands is the core.

#Python #CPython #PyPI #testing #benchmarking #labeille

labeille can compare 2 test runs and show what changed and why it changed.

When it goes from PASS to CRASH, labeille looks at the package's repo. If the commit is the same, it's a CPython/JIT regression. Otherwise, it might be the package:

requests: PASS → CRASH
Repo: abc1234 → abc1234 (unchanged — likely a CPython/JIT regression)

flask: CRASH → PASS
Repo: 222bbbb → 333cccc (changed)

This allows figuring out "3 of these are JIT regressions".

#Python #CPython #JIT #labeille #testing

labeille has a bisect command that binary-searches through a package's git history to find the commit that triggers a JIT crash:

labeille bisect requests --good=v2.30.0 --bad=HEAD --target-python /path/to/cpython-jit

https://github.com/devdanzin/labeille#bisecting-crashes

Commits that won't build get skipped automatically (like git bisect skip), revisions get a fresh venv so dependency versions don't leak, and you can filter by crash signature when a package has distinct crashes.

#Python #CPython #JIT #debugging #labeille