Has some interesting ideas for validating data in #Python https://github.com/Edward-K1/validatedata
Search results
The #PyOhio #CFP is now LIVE! This is the moment you've all been waiting for!
We're really excited to launch PyOhio 2026 with a bang, and we really want to hear what you have to say! Our CFP is open for ANYONE to submit, regardless of experience level! Our CFP will be open until April 19, AoE, so get those proposals started! You can submit up to 3 talk proposals using the form here: https://pretalx.com/pyohio-2026/cfp
Boosts are appreciated, and thank you for your support!
FR - (English follows - see comments) Apprendre Python pour mon usage de données en sciences sociales est l'un de mes objectifs actuels.
J'avais de graaaaaaaaandes ambitions pour cette semaine de relâche qui s'achève déjà (bon, on a eu une heure de moins avec le retour à l'heure d'été — ça compte un peu, non ?)
Alors…
✔️ Suivi (en ligne) l'excellente introduction de
@emilienschultz dans le cadre de @urfistlyon@social.siences.re : une formation qui propose une réflexion sur ce que fait un langage informatique à nos données — avec toutes ses implications —, bien au-delà des considérations purement techniques ou "utilitaires". Je ne pourrai malheureusement pas assister aux deux séances suivantes, offertes en présence…
✔️ Récupéré quelques manuels et tutoriels pour me lancer dans l'aventure
✔️ Et, ce qui est toujours essentiel pour moi : du "contexte". En l'occurrence, le documentaire accessible en ligne : Python, The Documentary (Cult. Repo) — recommandé par Émilien lors de la formation. Une plongée fascinante dans la création de Python — né d'un échec —, son développement, les défis de gouvernance d'une communauté qui n'a cessé de s'élargir, quelques-unes de ses crises, et l'intégration — tardive mais réelle — des femmes de la tech, avec l'émergence des #pyladies, et aussi l'une de ses figures phares :
@mariattaMariatta 🤦🏻♀️
. Le documentaire raconte l'histoire principalement du point de vue des fondateurs et premiers développeurs plutôt que de la communauté dans son ensemble — il reste sans doute beaucoup à dire —, mais c'est une magnifique introduction à ce qui est devenu l'un des langages informatiques incontournables.
Et maintenant... plongée dans les choses sérieuses : du python !
ENG - Learning Python for data work in the social sciences is one of my current goals.
I had graaaaaaaat ambitions for this spring break week, which is already drawing to a close… (we did lose an hour to daylight saving time — that counts for something, right?)
So…
✔️ Followed the excellent introductory session by Emilien Schultz (Urfist de Lyon): a course that invites you to reflect on what a programming language actually does to our data — and all that implies — well beyond purely technical or "utilitarian" considerations. Unfortunately, I won't be able to attend the two following sessions, which are offered in person…
✔️ Tracked down a few manuals and tutorials to get the adventure started
✔️ And, as always essential for me: some "context." In this case, the documentary available online — Python, The Documentary (Cult. Repo) — recommended by Emilien during the session. A fascinating dive into the creation of Python — born out of a failure —, its development, the governance challenges of a community that never stopped growing, its near-disappearance, and the — belated but real — inclusion of women developers, with the rise of #PyLadies and one of its leading figures,
@mariattaMariatta 🤦🏻♀️
. The documentary tells the story primarily from the perspective of the founders and early developers rather than the broader community — there is doubtless much more to be said —, but it is a wonderful introduction to what has become one of the most essential programming languages around.
Right. Time to open a terminal and write some actual code !
FR - (English follows - see comments) Apprendre Python pour mon usage de données en sciences sociales est l'un de mes objectifs actuels.
J'avais de graaaaaaaaandes ambitions pour cette semaine de relâche qui s'achève déjà (bon, on a eu une heure de moins avec le retour à l'heure d'été — ça compte un peu, non ?)
Alors…
✔️ Suivi (en ligne) l'excellente introduction de
@emilienschultz dans le cadre de @urfistlyon@social.siences.re : une formation qui propose une réflexion sur ce que fait un langage informatique à nos données — avec toutes ses implications —, bien au-delà des considérations purement techniques ou "utilitaires". Je ne pourrai malheureusement pas assister aux deux séances suivantes, offertes en présence…
✔️ Récupéré quelques manuels et tutoriels pour me lancer dans l'aventure
✔️ Et, ce qui est toujours essentiel pour moi : du "contexte". En l'occurrence, le documentaire accessible en ligne : Python, The Documentary (Cult. Repo) — recommandé par Émilien lors de la formation. Une plongée fascinante dans la création de Python — né d'un échec —, son développement, les défis de gouvernance d'une communauté qui n'a cessé de s'élargir, quelques-unes de ses crises, et l'intégration — tardive mais réelle — des femmes de la tech, avec l'émergence des #pyladies, et aussi l'une de ses figures phares :
@mariattaMariatta 🤦🏻♀️
. Le documentaire raconte l'histoire principalement du point de vue des fondateurs et premiers développeurs plutôt que de la communauté dans son ensemble — il reste sans doute beaucoup à dire —, mais c'est une magnifique introduction à ce qui est devenu l'un des langages informatiques incontournables.
Et maintenant... plongée dans les choses sérieuses : du python !
I saw a TIL post on bsky today about using '/' with pathlib.Path's. Some other neat things recently added to #python
- itertools.batched (3.12)
- accessing re.Match groups using [] notation (faster than calling group()) (3.6)
- 1_000_000 is a legal syntax for 1000000 (3.6)
- command-line access to stdlib modules (python -m <name>)
- uuid (3.12)
- json (3.14)
- random (3.13)
- sqlite3 (3.12)
- http.server (3.4)
- f-strings (3.6)
- true multithreading (3.14)
- contextlib.chdir (3.11)
I remember being once asked, in good faith, what dependency injection frameworks are the most popular in #python. A decade later, I still don't know the answer.
Happy 25th birthday to
@ThePSFPython Software Foundation, founded on 6th March 2001!
https://mastodon.social/@victorhck/116182885602728740
@ThePSFPython Software Foundation (Or 5th March according to the minutes https://www.python.org/psf/records/board/minutes/2001-03-05/. Who wants to fix Wikipedia?)
#Python
Happy 25th birthday to
@ThePSFPython Software Foundation, founded on 6th March 2001!
https://mastodon.social/@victorhck/116182885602728740
Me: Does anyone know why each call to float('nan') gives a different instance?
#Python Core Devs: https://discuss.python.org/t/question-about-float-nan/106378
I guess I have a lot more fodder than I bargained for for that talk I'm working on.
Dew Drop Weekly Newsletter 473 - Week Ending March 6, 2026
#dewdrop #newsletter #javascript #aspnetcore #azure #xaml #windowsdev #dotnetmaui #csharp #dotnet #winui #ai #mcp #devops #agile #python #appdev #podcasts #m365 #sqlserver #data #powershell #cpp
I got too excited about "set-and-forget" relative dependency cooldowns coming to #pip that I hacked them together using cron and a script that calculates uploaded-prior-to in pip.conf 👀
https://sethmlarson.dev/pip-relative-dependency-cooling-with-crontab

Relative “Dependency Cooldowns” in pip v26.0 with crontab
WARNING: Most of this blog post is a hack, everyone should probably just wait for relative dependency cooldowns to come to a future version of pip. pip v26.0 added support for th...
sethmlarson.dev · sethmlarson.dev
Link author:
Seth Larson@sethmlarson@fosstodon.org
Help needed: Someone removed the #PyLadies #stockholm admins and changed the name of the meetup group, changed logo/header photos of the past event. I wrote about the person and their post in linkedin https://www.linkedin.com/feed/update/urn:li:activity:7435384140042039297/ I hope the larger #python #community can comment in the linkedin post and point out why this is bad. Please boost for more reach.
https://www.meetup.com/pyladiesstockholm/ this is the group. They deleted also the meetup event planned next.
ascend : run Python functions on Kubernetes https://lobste.rs/s/i7hyhy #devops #distributed #python #scaling
https://ocramz.github.io/posts/2026-03-05-ascend.html
[$] The relicensing of chardet
Chardet is a Python module that attempts to determine which character set was used to encode a text string. It was originally written by Mark Pilgrim, who is also the author of a [...]
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
Microsoft Agent Framework for Python v1.0.0-rc3 Release
https://github.com/microsoft/agent-framework/releases/tag/python-1.0.0rc3
Unlike this kitten, you can vote to select talks & workshops for EuroPython 2026!
Head over to https://europython.eu/voting and follow the simple steps.
Voting closes today. Yikes!
#europython #conference #europython2026 #python #opensource #programme #communityvoting
Know someone who'd give a great #Django or #Python talk? A teammate, a friend, someone you saw speak at #pyladies? The DjangoConUS 2026 CFP is open and first-time speakers are especially welcome.
Deadline: March 16, 2026
📝 https://pretalx.com/djangocon-us-2026/cfp
Current status of PEPs for 3.15 with two months until feature freeze:
Informational: 1 (release schedule)
Open (under consideration): 20
Accepted (may not be implemented yet): 5
Finished (done, with a stable interface): 4
Deferred (postponed pending further research or updates): 1
Rejected, Superseded, and Withdrawn: 2
Unmerged PRs: 6
Very interesting PEP that could unlock a clear way to type Django’s ORM
🎉 Best deal ever on #jetbrains : if your #PyCharm subscription has just ended or is about to end, you get a perpetual "fallback" license to PyCharm 2024.3, aka the best PyCharm version ever, since 2025.* was all about #AI bullshit features and reduced stability.
Deprecate confusing APIs like “os.path.commonprefix()” via
@knglChristophe S https://lobste.rs/s/bry484 #python #security
https://sethmlarson.dev/deprecate-confusing-apis-like-os-path-commonprefix
#GoodFirstIssue adding support for relative dependency cool-downs to pip. This would be a massive security improvement for users who can then set-and-forget a reasonable cooldown duration in their global pip config.
If you're using Python 3.10-3.12 and you upgrade to these security releases:
https://discuss.python.org/t/python-3-12-13-3-11-15-and-3-10-20-are-now-available/106363/1
Then I'll tell you about Guido van Rossum's new oral histories series, starting with
@Yhg1sThomas Wouters:
Do I know anyone who's implemented an #ActivityPub service in #python ?
Which libs would you recommend?
What do you advise I learn?
RE: https://mastodon.social/@fastlydevs/116160789779498833
Huge thanks to
@fastlydevs for 10+ years of keeping #PyPI up and running! PyPI serves 800K+ users at ~100K requests/sec. With a small team behind the service, that kind of scale is only possible because of infrastructure partners who invest in the sustainability of the #Python ecosystem.
Guido van Rossum interviews Thomas Wouters (Python Core Dev) https://lobste.rs/s/8a42ve #python
https://gvanrossum.github.io/interviews/Thomas.html
I have a question about Python libraries and testing scope.
If I'm importing 'serial' in my library, and use it like the following to create a connection to a sensor:
--- start code ---
import serial
class Sensor:
def __init__(self, serial_device):
self.__serial_device = serial_device
try:
self.__connection = serial.Serial(
port=serial_device,
baudrate=9600,
bytesize=serial.EIGHTBITS,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
)
except serial.SerialException:
print("Could not establish serial connection to sensor")
--- end code ---
how much testing should I do around the serial connection? Just mock up a few buffers (byte streams), and see how my class handles unexpected input?
One the one hand, I want to make the library as solid as possible. On the other hand, I don't want to run tests on code I don't control (the library module). I know of the 'mock-serial' utility, but haven't used it.
The aim is to make a Python version of my Arduino library for the CozIR Ambient CO2 sensor:
A simple app for displaying local tide and surf conditions on an e-ink display.
- High and low tides over the next few days
- Wave heights (combined swell and wind waves)
- Sunrise and sunset, with nautical twilight
https://codeberg.org/robagar/pendower
#maker #raspberrypi #tide #surf #beach #sea #swimming #python
My partner is looking for work. I'd appreciate boosts.
He's looking to move into #appsec, but will accept short #webdev or #devops contracts (<12 months). Location: Melbourne Australia, or remote. For a short enough contract he'd go anywhere though.
He's a senior full stack web dev (Linux/python/django/js/elm, ~12 years).
Experienced in dev ops, dev sec ops and automation (ansible, selenium, etc etc).
He has experience with OWASP ZAP, bandit and Snyk, and is part way through the PortSwigger academy.
FOSS contributions include writing a django authentication function for OWASP ZAP, making a wrapper to improve accessibility and usability for selenium (Elemental), and other bits and bobs.
He isn't on any socials, but if you want to get in touch I can share his email or signal ID (or give him yours).
He and I have been the security people for little apps without any dedicated security team, for the last decade or so. If you're in security you might have met him (or me) at conferences (Disobey, BSides, CCC, Defcon and Ruxmon), because we've been attending since we launched our own app in 2014, picking up everything we can to protect our users.
(Yep, he is aware a move to security from senior dev roles will be a step down in seniority and $. He just really likes security.)
I just learned that I can use `...` as placeholder for unfinished code instead of `pass` in #python
`...` is a built-n object, and it's called the *Ellipsis*
Example: Instead of
def func():
pass
one could use the ellipsis like
def func():
...
For 10+ years, Fastly has supported the
@ThePSFPython Software Foundation in securing and scaling the Python Package Index (PyPI).
~100K req/sec.
500K+ projects.
98–99% cache hit rate.
Real-time purging in milliseconds.
Adaptive WAF protection against bots + account takeovers.
Proud to help keep one of the world’s most critical open source ecosystems fast, fresh, and secure.
Read more: https://www.fastly.com/customers/psf
Realised this contained a rider explaining away the limitations on Birdsite. No longer required. Super cool.
Finally my actual #introduction; although I'm not new to mastodon, I'm new to this account...
I have a background in #statistics and #compsci, and am a lead data scientist on the Integrated Data Service for the UK government.
I talk a lot about #metadata, open standards, and "data as the #API".
I try to make data Findable, Accessible, Interoperable, and Reusable using #CSVW and #FOSS tools.
#Python > #R; however I don't have time for that flame war—there's so much cool #data about.
Python Type Checker Comparison: Empty Container Inference https://lobste.rs/s/furd6t #plt #python
https://pyrefly.org/blog/container-inference-comparison/
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.
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.
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".
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.
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.
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".
labeille runs test suites from popular PyPI packages against a JIT-enabled CPython build and catches crashes: segfaults, assertion failures, etc.
If all of requests, flask, attrs, etc. pass their tests under the JIT, that shows the JIT is working. If one crashes, there's a bug with a reproducer. We've found one crash so far: https://github.com/python/cpython/issues/145197
This requires curating a local package registry with repo URLs, install and test commands, etc.
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.
I've been working on a new Python tool: labeille. Its main purpose is to look for CPython JIT crashes by running real world test suites.
https://github.com/devdanzin/labeille
But it's grown a feature that might interest more people: benchmarking using PyPI packages.
How does that work?
labeille allows you to run test suites in 2 different configurations. Say, with coverage on and off, or memray on and off. Here's an example:
https://gist.github.com/devdanzin/63528343df98779b5fedf657bf8286cd
labeille runs test suites from popular PyPI packages against a JIT-enabled CPython build and catches crashes: segfaults, assertion failures, etc.
If all of requests, flask, attrs, etc. pass their tests under the JIT, that shows the JIT is working. If one crashes, there's a bug with a reproducer. We've found one crash so far: https://github.com/python/cpython/issues/145197
This requires curating a local package registry with repo URLs, install and test commands, etc.
I've been working on a new Python tool: labeille. Its main purpose is to look for CPython JIT crashes by running real world test suites.
https://github.com/devdanzin/labeille
But it's grown a feature that might interest more people: benchmarking using PyPI packages.
How does that work?
labeille allows you to run test suites in 2 different configurations. Say, with coverage on and off, or memray on and off. Here's an example:
https://gist.github.com/devdanzin/63528343df98779b5fedf657bf8286cd
Here's a description of some nice features I didn't know about in #PyTest's parameterize() decorator. My favourite is how to avoid really long names for test cases.
https://nedbatchelder.com/blog/202602/pytest_parameter_functions
Debugging fail in #Python: I had a generator function:
def them():
for thing in some_things():
yield thing
But I wanted to quickly try changing it to use a helper that returned a list, so I just added that code at the top:
def them():
return them_from_somewhere_else()
for thing in some_things():
yield thing
Took me a while to figure out why `list(them())` was always an empty list.
Today I learned about a relatively new PEP to improve pretty printing in Python. 🤩
@mahryekuhMarijke Luttekes It's not accepted yet, so it's helpful to give feedback on the thread, even if only to say you like and would use it.
https://discuss.python.org/t/pep-813-the-pretty-print-protocol/106242
#Python
Finally released version 1.7.0 of Vermin! With Python 3.13 support (144 new rules), GitHub annotation and colored output formats, and 3.14 deprecation fixes etc.
https://github.com/netromdk/vermin/releases/tag/v1.7.0
https://pypi.org/project/vermin/
#vermin #python #python313 #python3 #dev #programming #analysis #version #release #changelog
Today I learned about a relatively new PEP to improve pretty printing in Python. 🤩















