social.dk-libre.fr is a Fediverse instance that uses the ActivityPub protocol. In other words, users at this host can communicate with people that use software like Mastodon, Pleroma, Friendica, etc. all around the world.
This server runs the snac software and there is no automatic sign-up process.
Afternoon of the first sprint day at DjangoCon Europe 2026 🇬🇷
We had a hands-on session to continue the Django + AI workshop from the conference, with a few members of the official AI working group and other sprinters.
Really good discussion, helped clarify quite a few points.
A report will follow 🙂
With @thibaudcolas, Laura Gates, @knyghty, @marcosilva0000, @EmmaDelescolle
Oh look, the Python cryptography package is planning on dropping support for 32-bit Windows and macOS x86-64 (Intel) in the next release:
https://github.com/pyca/cryptography/issues/13519
Sprint day at DjangoCon Europe 2026 🇬🇷
This morning we kicked off the first sprint session, hosted by Bespote, in a room full of developers working on all sorts of Django topics.
We started by sharing goals, then everyone spread out into different groups and got to work.
Lots of energy in the room, and a great chance to collaborate and move Django forward 🙂
Lyon: Sardine : entrez dans le monde de la musique et du live coding avec Python, Le jeudi 23 avril 2026 de 19h00 à 22h00. https://www.agendadulibre.org/events/34983 #python #présentation
Last evening of DjangoCon Europe 2026 🇬🇷
A walk through the center of Athens and dinner with the speakers… really nice way to close these days.
Good company, a bit of wandering around the city, and some well-earned food after an intense conference 🙂
With Jacob Walls, @shaib, @carlton, @apollo13, @felixxm, @EvilDMP, @anorthall, @christophehenry, @meshy, @samueljsb, @timb07, @markush, @jake, @thibaudcolas
Closing session just wrapped up at DjangoCon Europe 2026 in Athens 🇬🇷
Final thanks, hugs, goodbyes… and that feeling that it went by too fast.
See you somewhere down the road 🙂
With Antonis Kalipetis, Paris Kasidiaris, ...
Last talk of DjangoCon Europe 2026 🇬🇷
Now listening to Mateusz Bełczowski 🎤
Looking at supply chain attacks in Python projects, how dependencies can get compromised and what we can actually do about it… a strong topic to close the conference 👀
Next talk at DjangoCon Europe 2026 🇬🇷
Now listening to @christophehenry 🎤
Exploring the idea of using Django templates on the frontend, transpiling them to JS to keep a single source of truth while avoiding too many HTTP requests… interesting direction 👀
First talk after lunch on the last day of DjangoCon Europe 2026 🇬🇷
Now listening to Loes Crama from Cosine 🚀
Django being used to manage data for a space mission, tracking thousands of components across Europe… always fun to see where Django ends up 🙂
un article de @emmatyping, core-dev CPython sur l'avancement de la communauté "Rust for CPython" : https://blog.python.org/2026/04/rust-for-cpython-2026-04/
- compilation de CPython avec rust
- conception d'une API standardisée (puis d'une PEP) pour intégrer rust dans CPython
L'occasion de partager ces retours d'expérience de Bob Belderbos, quant à l'apprentissage de rust sur ses pratiques de développement de Python : https://belderbos.dev/blog/rust-made-me-a-better-python-developer/
Group photo moment at DjangoCon Europe 2026 📸
Took the chance to snap an unofficial selfie while we were all there… couldn’t wait for the official one 😄
RE: https://fosstodon.org/@savannah/116416941269710052
This is really good! There's a lot going on in CPython, here's just a few highlights.
#Python #CPython #CoreDispatch
RE: https://mastodon.social/@coredispatch/116416923948839096
A very busy week prepping this edition! 😅
Thank you to @hugovk and @emmatyping for helping curate and edit edition 2. 🖤
Last talk before lunch at DjangoCon Europe 2026 🇬🇷
Now listening to @meshy and @samueljsb 🎤
A look back at how we handled transactions before atomic, and how something we now take for granted actually changed the way we write Django apps… nice mix of history and “wait, do we really understand this?” 🙂
First talk after the coffee break on the last day of DjangoCon Europe 2026 🇬🇷
Now listening to @nanorepublica 🎤
Looking at Django’s APIs in a broader sense, especially settings.py and manage.py, and how things like runserver can be confusing when it comes to deployment… interesting angle on something we all use every day 🙂
Third talk of the morning at DjangoCon Europe 2026 🇬🇷
Now listening to the Django Felllow Jacob Walls🎤
A preview of what’s coming in Django 6.1, with new fetch modes to avoid the classic N+1 queries problem without having to maintain long lists of fields… this looks really promising 🙂
Second talk of the morning at DjangoCon Europe 2026 🇬🇷
Now listening to Vjeran Grozdanic from Sentry🎤
Talking about encrypting data in Django without complex migrations, with a drop-in field that can handle both old plain text and new encrypted data on the fly… very curious about this approach 🙂
Final and third day of DjangoCon Europe 2026 in Athens 🇬🇷
Starting with the keynote by @EvilDMP 🎤
He opened with the story of Socrates, condemned to death here in Athens 25 centuries ago, just a short walk from the venue… quite a way to begin a talk about knowledge and documentation.
PyPI has completed its second audit - The Python Package Index Blog
https://blog.pypi.org/posts/2026-04-16-pypi-completes-second-audit/
#Python #programming
Day 2 of DjangoCon Europe 2026 in Athens is done 🇬🇷
Talks, chats, drinks, gelato 🍦 and, more than anything, a lot of people I got to meet again today.
These days are intense, but in a good way 🙂
With @nanorepublica, @thibaudcolas, @jack, @williamblackie, @knyghty , Francisco De Maussion, Juliana Nicacio, Laura Gates, @shaib
🗞️ We're going to revert the incremental garbage collector in Python 3.14 and 3.15. See here for details: https://discuss.python.org/t/reverting-the-incremental-gc-in-python-3-14-and-3-15/107014
#Python #Python314 #Python315
Gelato break during DjangoCon Europe 2026… @thibaudcolas bring us in a place called Django Gelato in Athens🍦😄
Couldn’t not stop here.
Thinking of @mariatta , this feels very on brand for her conference selfies 😄
With @thibaudcolas, David Vaz, Glenn Mendoza, Jens-Erik Weber, Hwayoung Cha,
Just got off stage with @carlton at DjangoCon Europe 2026 🇬🇷
We shared the next edition of Django on the Med 🧳
→ Pescara, Italy 🇮🇹
→ 23–25 September 2026
https://www.djangomed.eu
Then I also introduced PyCon Italia 2026
→ Bologna, Italy 🇮🇹
→ 28–30 May 2026
https://2026.pycon.it/en
And on May 27 there will be a free community day with workshops, including a special “Django Off The Med” session 🙂
Took part in the “Django and AI: A Community Conversation” workshop at DjangoCon Europe 2026 🇬🇷
Really appreciated the space that Laura Gates and @thibaudcolas created for an open discussion around AI in the Django ecosystem.
I joined the "Core maintenance of Django" group with @EmmaDelescolle, @marcosilva0000, Francisco De Maussion
I hope this is just the starting point for something bigger 🙂
The PSF is looking for a PyPI Sustainability Engineer to join the team! This is a full time, 1-year contract (with the possibility of renewal), globally remote position. If you love #Python, care about open source, and want your work to matter at infrastructure scale–consider applying! Please boost this post and share with your colleagues and networks. #PyPI #Python
https://pythonsoftwarefoundation.applytojob.com/apply/xz5k3X31UQ/Sustainability-Engineer-PyPI
https://pythonsoftwarefoundation.applytojob.com/apply/xz5k3X31UQ/Sustainability-Engineer-PyPI
#Python getpass.getpass() and surprise surprise, as a phishing countermeasure, this corpo Windows 11 constantly scans keyboard input to see whether it matches your active directory password. 🙄
Second talk of the morning at DjangoCon Europe 2026 🇬🇷
Now listening to Laís Carvalho @Laiscarvalho 🎤
Talking about observability in Django, going beyond print() and logs to actually understand what’s going on inside your app… this is one of those things that makes life much easier once you start using it 🙂
Day 2 at DjangoCon Europe 2026, my first talk of the morning 🇬🇷
Now listening to @anorthall 🎤
Started with caving… and now “caving” into old reports, digging valuable data out of decades of messy documents and turning it into something usable. Really nice overlap between the topic and the process 🙂
Day 1 of DjangoCon Europe 2026 in Athens is done 🇬🇷
As always, the best part is the people. Old friends, folks I’ve shared so many moments with, volunteers, and lots of new faces
Also had a few people come up during the day to chat, ask about my talk, share feedback… those small moments really stay with you 🙂
This is the human side of the Django community
With @anthony, @jong0uld, @anze3db, @marcosilva0000, Andrew Williamson, @benjaoming, Timothy Mccurrach
Wrapping up the first day of DjangoCon Europe 2026 with a big dinner in Athens 🇬🇷
After a full day of talks, now sitting at a long table with people from all over Europe, sharing stories and really good Greek food 🙂
These moments are just as important as the talks and workshop.
With Jens-Erik Weber, me, @carlton, @EvilDMP, @apollo13, Fabian Braun, Joe Burch, Valentinos Evripidou, @felixxm, @markush , @jrief, @be_haki
Last talk of the first day at DjangoCon Europe 2026 🇬🇷
Now listening to @timb07 🎤
As tables get extremely large, the abstraction starts to break down and performance issues show up… curious to see how partitioning helps in real-world cases 🙂
After the DjangoCon Europe coffee break, back into the room for @jake ☕️
Django supports multiple database connections, but leaves it up to you to manage how to use them and which queries to send where… let’s dig into this 🙂
Back after lunch at DjangoCon Europe 2026 and now sitting in a talk by @be_haki 🍽️
He’s diving into Django signals, reliability, and how to make them work better in real-world scenarios… this is one of those topics you don’t think about until it breaks 😄
This morning I presented my talk “AI-Assisted Contributions and Maintainer Load” at DjangoCon Europe 2026 in Athens 🇬🇷
Thanks to everyone who joined, filled the room, and asked thoughtful questions, it really means a lot 🤗
I’ll share slides and more soon 👇
https://www.paulox.net/
Photo of the talk by @felixxm
With Antonis Kalipetis
un article de Oshadha Gunawardena qui explique le fonctionnement de uv sous le capot : https://noos.blog/posts/uv-how-it-works-under-the-hood/
- correspondances avec les commandes pip
- structure du projet rust
- les options de uv init (application / bibliothèque)
- les mécanismes derrière uv add : résolution PubGrub, gestion d'erreurs, téléchargements parallélisés, lockfile
- cache global
- les intérêts de rust
Next talk just started at DjangoCon Europe 2026 🎤
Great to see @markush on stage talking about Django’s security process, from triaging and fixes to disclosure and releases, with a look at how AI might impact all of this… really curious about this one 👀
First keynote of DjangoCon Europe 2026 just started 🎤
Really happy to see @carlton on stage opening with a talk about keeping Python dynamic while adding small “static islands” where they actually help, curious to see how this lands 🙂
Welcome along to our next meetup on Tuesday 21st April, in collaboration with @pydata_helsinki kindly hosted by TEK & ILry!
Owain Hopeaketo & Anne Granat-Jukakoski: Intro to TEK & ILry unions
Tietoala IT sector, collective agreement and the law
The famous HelPy or famous PyDataHel quiz!
@calpaterson: "Disregard that!" attacks
RSVP now and see you next week!
https://www.meetup.com/helpy-meetups/events/314258115/
#Helsinki #Python #HelPy #meetup
This trip to DjangoCon Europe in Athens wasn’t just a flight ✈️
I tried to turn it into a small “Django speaking tour”, a bit like the one I did in 2022.
Yesterday I was in Lecce for a Django talk and a walk through the city with the local community. This morning I reached Bari, had a quick lunch by the Adriatic sea with the @pybari organizer, and then flew to Athens.
Same sea, different shore, same community.
Looking forward to meetings you all.😊
The April edition of the PSF Board Office Hour is about to begin 🐍 🗒️ 9 PM UTC. Join us to share how we can help your community, express your perspectives, and provide feedback for the PSF! #python
https://pyfound.blogspot.com/2025/10/a-new-psf-board-another-year-of-psf.html
3️⃣ Three weeks until Python 3.15 feature freeze!
https://hugovk.dev/next-release/
Get yer PEPs'n'PRs in!
https://discuss.python.org/t/three-weeks-to-beta-1/106962
#Python #Python315 #PEPs #FeatureFreezeGoesBrrr
Ivre, il écrit un script #python pour synchroniser ses abonnements sur son compte de secours masto avant de découvrir qu'il existe une fonctionnalité permettant d'importer ceux-ci (via un simple fichier...)
more specifically, this PR exposes a curious side effect of the Unicode 15.0 → Unicode 15.1 upgrade when it comes to #Python identifiers: ZWJ is now allowed as a 'continue' character (i.e. you can use it in an identifier as long as it's not the first codepoint)
```
$ python3.12 -c 'print(str.isidentifier("A_\u200d_B"))'
False
$ python3.13 -c 'print(str.isidentifier("A_\u200d_B"))'
True
$ python3.13 -c 'print(str.isidentifier("A_\u200d"))' # unfortunately, a trailing ZWJ is legal too
```
Do you use astral-sh/setup-uv@v7 in #GitHubActions?
And it's not hash-pinned?
And you use #Dependabot or #Renovate?
The setup-uv project has switched to only Vx.y.z tags, no more Vx or Vx.y.
But Dependabot and Renovate won't upgrade from Vx to Vx.y.z, so you'll need to manually update to setup-uv@v8.0.0 to keep up with future updates.
"To increase security even more we will stop publishing minor tags. You won't be able to use v8 or v8.0 any longer."
When I get a PR these days, I often look at the user's profile before deciding how much time to invest in interacting with them.
I'm playing around with a tool that gives you a snapshot of information about a GitHub user, to help make these kinds of decisions. I don't want to generate any kind of score; I just want to surface the kind of information I look for in these situations.
Does a tool like this already exist?
I had a really deflating open source experience just now. I started writing user stories in the django-simple-deploy docs. I opened an issue to track the work, and added the "good first issue" and "help wanted" labels.
It's a good first issue because a new contributor can skim our user stories, get a clear sense of who we're serving, ask relevant questions, and maybe help further articulate typical uses. Help wanted, because I want others' perspectives in these stories.
Ce repository GitHub semble contenir un logiciel capable de valider les fonctionnalités d'un câble USB-C. J'hésite à le tester ... https://github.com/TheOwn68/SoftCable #python #opensource #usbc #test #software
Mastodon.py version 2.2.0 is now out! 🦣🐍
There's a quite a few bug fixes (thank you to everyone who reported and/or fixed something), and support for 4.5 functionality: Quotes as well as async refreshing! Also quite a bit of additional testing, coverage is now above 90%.
As usual, please report any bugs you see, I should have the time to do quick fixes and maintenance release in the near future hopefully.
* Changelog: https://github.com/halcy/Mastodon.py/releases/tag/v2.2.0
* Docs: https://mastodonpy.readthedocs.io/en/v2.2.0/
* PyPi: https://pypi.org/project/Mastodon.py/
@hynek Parallelise wheel build across as many jobs as practical, upload artifacts, then a final job downloads them all and uploads in a single go.
https://github.com/python-pillow/Pillow/actions/runs/23848087770
https://github.com/ultrajson/ultrajson/actions/runs/22976576066
(Maybe make sure the wheels go up before the sdist to ensure no-one runs into a source compile mid-upload.)
#Python
Maintainer friends of wheel-heavy #Python packages: do we already have some practical, standard way to automatically upload all the cibuildwheel output across all architectures? My current workflow is a) a pain in the ass and b) requires me to have one last PyPI upload token.
Python Tip #100 (of 365):
Prefer the pathlib.Path object's is_file() and is_dir() methods over exists()
The exists method tells you SOMETHING is there but not WHAT.
Using is_file() or is_dir() is more explicit about what you're actually checking for, and usually what you actually want.
Usually when I find myself using exists(), I'll realize that I wanted one of the more specific methods instead.
le prochain #PythonRennes aura lieu le lundi 27 avril 2026 soir chez Néosoft (merci pour l'accueil). Quentin Caron nous fera un retour d'expérience du framework d'API web Django Ninja, Jesshuan Diné nous présentera la méthodo et les résultats de son benchmark d'orchestrateurs de tâches (airflow, argo, temporal.io, windmill).
Inscription gratuite mais nécessaire sur https://www.meetup.com/python-rennes/events/314213069
🎉📦 The Packaging Summit at PyCon US 2026 is now live.
If you work on Python packaging, maintain packages, support downstream distribution, or have topics that would benefit from focused in-person discussion, please take a look:
uv 0.11.5, sorti ce matin, contient la commande `uv audit` qui analyse les vulnérabilités dans les dépendances de votre projet : https://docs.astral.sh/uv/reference/cli/#uv-audit. Le rapport pointe les vulnérabilités et la version contenant le correctif.
Astral a aussi publié un retour d'expériences de bonnes pratiques d'intégration continue et de déploiement continu : cooldowns, versionnement d'actions, trusted publishing.
https://astral.sh/blog/open-source-security-at-astral
Smello : un paquet bien pratique quand on souhaite suivre les trames réseaux émises par les outils qu'on utilise (HTTP, gRPC) - par exemple des librairies Google ou AWS : https://smello.io/
If suffit d'ajouter 2 lignes dans son code (import smello; smello.init()), de lancer le serveur local, et le tour est joué.
Have a date string and want to find the format string needed to parse it?
Read more 👉 https://trey.io/l4b84k
La rediffusion de la session "Optimiser son intégration continue de projet Python (mais pas que)" est en ligne 🎉
Merci Kanoma pour l'accueil et Alex pour la captation vidéo 🙏
- vidéo : https://www.youtube.com/watch?v=Dzjjwhx2Amk
- diaporamas : https://github.com/python-rennes/sessions/tree/main/python-rennes-2026.03.17-ci-cd-projets-python-2
Et oui ! Python Rennes a désormais son organisation github pour stocker les liens de rediffusion et les supports de présentation 🥳 Les sessions précédentes seront rajoutées progressivement - abonnez-vous 🔔
More in the final 3.15 alpha:
🖨️ pprint: new `expand` arg for Black-like output (let's make it default?)
🧛 bytes.replace() count arg can be a keyword
🌊 wave: IEEE floating-point WAVE audio support, new getformat()/setformat()
⏱️ timeit: configurable target time for autorange()
Please test and give feedback!
New releases!
🐍 #Python 3.15.0a8!
🐍 Python 3.14.4!
🐍 Python 3.13.13!
🖼️ Pillow 12.2.0!
https://blog.python.org/2026/04/python-3150a8-3144-31313/
https://pillow.readthedocs.io/en/latest/releasenotes/12.2.0.html
⚠️ Final 3.15 alpha: only 4 weeks until the feature freeze! 🧊
New in this alpha:
🧵 PEP 803: “abi3t”: Stable ABI for free-threaded builds
🪟 Windows 64-bit binaries use the tail-calling interpreter for up to 40% speedup!
https://docs.python.org/3.15/whatsnew/3.15.html#whatsnew315-windows-tail-calling-interpreter
🦋 REPL: colour tab completion with fancycompleter
Python Tip #96 (of 365):
When manipulating file paths or asking questions about them, use pathlib
"Stringly typed code" uses a string to represent a value when a better type exists.
For representing file paths, pathlib.Path objects are this better-than-a-string type.
Unlike with strings:
1. It's hard to get yourself into trouble with pathlib.Path
2. When I see a pathlib.Path object, I know we're representing a path
🧵 (1/2)
You can now use Ratatui in Python! 🐀🥳
🐍 **PyRatatui** — Python bindings for @ratatui_rs
💯 Build high-performance TUIs in Python with 35+ widgets, async & effects
🦀 Backed by Rust via PyO3
⭐ GitHub: https://github.com/pyratatui/pyratatui
#rustlang #ratatui #tui #python #library #bindings #pyo3 #terminal
I've released v2.10.0 of #BlogMore, my blog-oriented static site generator. This release adds a post streak display to the stats page. Got to keep that writing streak going!
Just fresh out of the oven, release 0.16.1 of the poezio TUI XMPP client!
Mostly fixes and internal stuff, but also adds the ability to see redacted/moderated messages if you wish so – particularly useful if you are the one moderating –.
David MacIver, un des auteurs de test hypothesis pour Python, vient de le proposer pour différents langages de programmation : https://antithesis.com/blog/2026/hegel/. L'outil est donc disponible pour rust, viendront ensuite Go, C++, OCaml et TypeScript.
C'est le code Python qui est enrobée d'une surcouche d'API pour les autres langages.
Pour en savoir plus sur https://hypothesis.works/, re·voyez la session de Michel Caradec sur le property-based testing : https://youtu.be/mV0vTbs2cQ0?si=aA7yQZWORjwSVo7f&t=2592
Donc je comprends absolument pas comment une syntaxe qui marche à un endroit peut faire planter le générateur à un autre (surtout, je rappelle, quand la variable créée par cette syntaxe n'est pas appelée ensuite).
Qu'est-ce qui peut expliquer que du code pris dans un fichier de script de FreeOrion casse la génération d'univers de FreeOrion quand on le copie dans un autre fichier de script FreeOrion ?
Je veux dire, même quand c'est du code qui ne fait rien ?
(il définit une variable qui est utilisée dans le fichier original, mais pas dans le fichier de destination)
(et oui les variables qu'il utilise sont définies dans le fichier de destination)
I made some tweaks to a personal project called PyCheck. Its entire purpose is to put an icon in my applications menu that I can click to easily verify whether a file matches its original checksum without manually reading the whole hash.
@treyhunner In 3.15 we've added an re.prefixmatch() as an explicit alias to the confusing re.match().
https://docs.python.org/3.15/library/re.html#prefixmatch-vs-match
#Python #python315 #regex
Python Tip #95 (of 365):
Don't use re.match(): it's confusing.
I'm not sure I've ever seen re.match() used when it wasn't being used by mistake.
If you think you want re.match(), you probably want either re.search() or re.fullmatch() instead.
When matching a regex against a string, we're usually either trying to:
1. Find a regular expression within a string
2. Match a regular expression against a whole string
re.match() does neither of those!
🧵 (1/3)
Mastodon, j'ai une question très très niche: pour le boulot j'ai créé (en Latex) des #PDF remplissables, qui ont donc des champs vierges avec des labels associés. Comme ça, quand N personnes ont remplis N PDF, je fais tourner un script #Python (qui utilise pypdf) pour récupérer toutes les réponses. Sauf que j'ai une personne qui a utilisé un outil bizarre ("PDFium" d'après les métadonnées) et qui m'a rendu un PDF duquel pypdf n'arrive rien à lire (les labels des champs n'existent même plus !)
Well, that's something...
OpenAI to acquire Astral | OpenAI
https://openai.com/index/openai-to-acquire-astral/
✍️ New post introducing profiling-explorer, a tool for exploring Python profiling data (pstats files).
Use it with the classic cProfile (now called profiling.tracing) or Python 3.15’s new sampling profiler, Tachyon (profiling.sampling).
https://adamj.eu/tech/2026/04/03/python-introducing-profiling-explorer/
For real, many people asked me for their smaller and mid-sized environments, how to handle remote syslog of their nodes. I had some ideas (some of you may have already found my Rust interpretation of this) but I think having this included in #PegaProx as a centralized management interface makes more sense.
So, PegaProx comes with an own syslog server (ipv4/ipv6, udp/tcp, encrypted/unencrypted support) and is wired to the interface within the resources tab. Providing a quick overview of all your logs and filter options. The next thing is wiring it to the notification system of PegaProx, allowing automated alerting. Might be nice to quickly identify when the quorum got lost - all built-in into PegaProx!
#easter #development #coding #python #opensource #foss #pve #proxmox #proxmoxve #virtualization #vmware #alternatives #free #logging #security #gyptazy #proxmoxdatacenter #homelab #enterprise
🚀️ Rivalcfg v4.17.0 released!
Rivalcfg is a command line tool (and also a #Python library) to configure #SteelSeries gaming mice on #Linux, #macOS and #Windows.
➡️ https://rivalcfg.flozz.org/news/release_v4.17.0/
This version adds support for 3 new devices: the Rival 5 (regular version and Destiny Edition), and the Prime+. It also fixes a small bug.
BlogMore v2.8.0 is out, with a wee bugfix, handling a situation where lines could be lost if they looked like meta data: https://blog.davep.org/2026/04/02/blogmore-v2-8-0.html
RE: https://fosstodon.org/@pypi/116335453780319113
rapport d'incident par @miketheman & @sethmlarson sur la corruption de #liteLLM & #Telnyx via #Trivy : https://blog.pypi.org/posts/2026-04-02-incident-report-litellm-telnyx-supply-chain-attack/
Conseils :
- délai de précaution dans la montée de version des dépendances
-- pip.conf
[install]
uploaded-prior-to = P3D
-- uv.toml / pyproject.toml
[tool.uv]
exclude-newer = "P3D"
- utiliser un lockfile pour les dépendances transitives
- publication : par le trusted publishing, surveiller les PR touchant aux workflows de CI
un projet de configuration d'environnement de travail en Python créé par @mattsi, facile à personnaliser ou étendre : https://github.com/Mattsi-Jansky/dotfiles.new
Mattsi explique sa démarche, très différente d'#Ansible par exemple, dans ce billet de blog : https://matt.si/2026-04/dotfiles/
RE: https://fosstodon.org/@pycon/116335122208744416
Looking forward to this at PyCon US 2026 in Long Beach where I’ll be speaking on Friday morning (May 15th).
Maintainers are already feeling the impact of AI-assisted contributions. I’m not sure we fully understand it yet.
Python Tip #92 (of 365):
Don't overuse regular expressions
If a containment check of a common string method will do, don't use a regular expression.
Instead of this:
if re.search(r"^http://", string):
Do this:
if string.startswith("http://"):
Instead of this:
if re.search(r"#", string):
Do this:
if "#" in string:
And instead of this:
parts = re.findall(r"\S+", string)
Do this:
parts = string.split()
🧵 (1/2)
I wrote up my thoughts about OpenAI acquiring Astral.
#Python
https://www.mostlypython.com/so-openai-is-acquiring-astral/
🗞️📨 🐍check your inboxes, a new PSF newsletter just shipped!
Want to stay up to date on the latest PSF, #PyConUS, PyPI, and #python news? Subscribe today:
https://www.python.org/psf/newsletter/
BlogMore v2.7.0 has been released. This version adds a visual indication of a published post is still in draft mode: https://blog.davep.org/2026/04/01/blogmore-v2-7-0.html
Les dernières nouveautés concernant le support de Python dans vsCode (dont les mises à jour sont désormais bi-mensuelles) : https://devblogs.microsoft.com/python/python-in-visual-studio-code-march-2026-release/
C'est une direction très loin de ce que je fait avec Ansible, mais ça semble très séduisant. https://matt.si/2026-04/dotfiles/ #installation #linux #machine #automatisation #script #python
Just cut the CI/CD build time for my blog (blog.hofstede.it) by over 100%!
I use Pelican as a static site generator and deploy via Forgejo Actions. Instead of running apt install for Python dependencies on every single run, I finally built a custom container image.
The best part? Forgejo has a built-in OCI registry! I just pushed my custom image to my git-forge and referenced it in the workflow. Down to a 24s deploy time! Nice.
Please welcome Stan Ulbrych @stanfromireland as the newest member of the Python core team!
https://discuss.python.org/t/vote-to-promote-stan-ulbrych/106562
TIL #Qt abandoned #WebKit in favor of the Chromium engine. And in particular:
> Qt WebEngine does not allow direct access to the document object model (DOM) of a page. However, the DOM can be inspected and adapted by injecting scripts
That means that if I want to reimplement
https://www.grulic.org.ar/~mdione/glob/posts/implementing-selenium-with-python-and-qt/
I will have to program the engine with JavaScript shaped butterflies[1].
[1] https://www.explainxkcd.com/wiki/index.php/378:_Real_Programmers
@adamchainz @treyhunner And https://github.com/python/cpython/pull/147943 is merged!
Keyword `count` in `bytes.replace` is coming to a Python* near you soon**!
* 3.15
** October 2026
I wish #Python's string replace method allowed specifying "count" as a keyword argument.
>>> text = "Hello? Python?"
>>> text.replace("?", "!", count=1)
I find that more explicit than this:
>>> text.replace("?", "!", 1)
'Hello! Python?'
But the replace only allows positional arguments 🐍😢
I'm looking at Repology, and I think most of the distributions and other downstreams have rightfully boycotted #Python #chardet #copywashing. Of course, there's the possibility that some of them are simply out-of-date, though.
So far chardet-7 is distributed by #Chromebrew, #CondaForge (not on Repology), #Homebrew, #KaOS, #OpenIndiana, #openmamba, #Ravenports, #Spack and #T2 SDE. Shame on you!
https://repology.org/project/chardet/versions
https://repology.org/project/python%3Achardet/versions
The feedback was honestly amazing. Many were impressed by how PegaProx brings essential enterprise grade features to Proxmox clusters that are still missing today. We can clearly see the gaps that were fixed by #ProxLB, #ProxSnap, #ProxCLMC, #ProxPatch and many other ones! Keep in mind, PegaProx is free and fully #opensource!
That said, we know there's always room for improvement. Whether it is major enhancements or small quality of life tweaks, every detail matters. Over the weekend, I took your feedback from the calls seriously and integrated a number of improvements to make PegaProx even more intuitive and powerful.
Your input drives this project forward. If you feel something is missing or could be improved, let us know!
PS: Pegaprox also support #XCP (#XCPng) ans corss-cluster / cross-hypervisor migrations. So, you can quickly jump over to XCP 🙂
Blog: https://gyptazy.com/blog/pegaprox-real-datacenter-manager-proxmox-clusters/
Website: https://pegaprox.com/
GitHub: https://github.com/PegaProx/project-pegaprox/
#PVE #Prox #ProxmoxVE #homelab #enterprise #virtualization #foss #datacenter #manager #python #python3
L'Afpy a besoin de vous pour trouver un lieu pour la #pyconfr 2026....
https://discuss.afpy.org/t/on-a-besoin-de-vous-pour-trouver-un-lieu-pour-la-pyconfr-26/2972
I've decided it's time to tag a v0.1.0 release on my roguelike game project, Stagger. It's more of a small demo than a full game at this point. It is turn-based, and has purely text-based "graphics", like the original Rogue.
You can find the repository at either of these locations:
https://git.sr.ht/~jvalleroy/stagger
https://codeberg.org/jvalleroy/stagger
The game is developed in Python, using ncurses. It is dual-licensed under AGPL and MPL.
RE: https://en.osm.town/@mdione/116239489362801981
OK, the push for AI is official. I'm definitely open for new positions.
I'm a jack of all trades, systems dev and admin, #Linux, #Python, #postgres, #ansible, #prometheus, #grafana, security conscious, I like to review code, and for my hobbies I do some #GIS and would like to do more.
Check my CV https://www.grulic.org.ar/~mdione/
and my blog https://www.grulic.org.ar/~mdione/glob/ (not a typo)
for more details.
Marcos Dione boostedI have been suggested that the company I'm working is not doing well. Than and a push for AI is telling me it's maybe time to move on.
What am I? Currently I'm doing #Python, #SysAdmin, GitHub/GitLab admin (yes, both), some Kafka, used to do some Postgres (now we have a DB team), Ansible and more.
Edit: more info: https://en.osm.town/@mdione/116302423501761728
What do I want? No AI, no gambling, no blockchain. In #Marseille or remote. I can invoice abroad, but I would rather be an employee.
1/
The Story of Python's Lazy Imports: why it tooks 3 years and 2 attempts to have a "lazy" Keyword coming in version 3.15 #Python https://techlife.blog/posts/the-story-of-pythons-lazy-imports-why-it-took-three-years-and-two-attempts/
Si vous vous demandez ce que sont capables de réaliser des élèves de terminales #NSI en #Python, et sans IA, c'est ici en 2 minutes (participation aux Trophées NSI) :
https://tube-sciences-technologies.apps.education.fr/w/5ccBkmDoCAgJd6cVB6DkLf
Fier de #MesÉlèves (et ce n'est pas grâce à moi 😂 )
<+mgorny> that's gunicorn
<+mgorny> looks like vibecoding hard
<@sam_> sigh
<@sam_> https://github.com/benoitc/gunicorn/pull/3559
<@sam_> i agree it looks like it
<+mgorny> how else would a dead-so-far project suddenly make dozen commits in a day?
<@sam_> I really wish they'd leave projects "dead"
<@sam_> it's far more honest
I've just done a pass over a client project with deptry, and it worked great for finding unused dependencies!
Does this workflow raise any red flags for anyone?
Before you can deploy a project to Scalingo, you need to upload an SSH key. If you're familiar with SSH keys, that's not an issue. But if you've never heard of them, it's a step that can make people put off learning how to deploy a project.
This workflow offers to assist with finding and uploading an existing key.
Wow, thanks @hugovk for making my "import datetime as dt" recommendation official in the Python docs, with a link to my blog!
Using #Python for #AI but not involved in the community? You're leaving a lot on the table! Watch the PSF's Executive Director @baconandcoconut on #PyTV from @jetbrains to explore why community participation is at the core of Python's power. 🎤🐍 https://www.youtube.com/watch?v=DkN7P4Cmto8
Je reprends en simplifiant :
for i in iterable
liste_finale=[objet for objet in liste_finale if objet not in autre_liste[i]]
C'est valide comme syntaxe ?
Ma question est si liste_finale peut être des deux côtés de l'affectation, dans le cas précis d'une soustraction de liste
un épisode du podcast @talkpython qui parle de la création de l'outil de génération de site statique Zensical : https://talkpython.fm/episodes/show/542/zensical-a-modern-static-site-generator
L'invité, @squidfunk, est le créateur du plugin Material for Mkdocs ; il a créé l'outil https://zensical.org/docs (en #rust avec une API #Python pour écrire des plugins) suite à l'annonce de la version 2.0 de Mkdocs, dont l'architecture est incompatible avec les 300+ plugins développés par des tiers.
@brettcannon Thanks for this writeup!
"What can you do as a person if you don't have code to check that things line up (which isn't a lot of code; the lock file should have the index server for the package, so you follow the index server API to get the digital attestation for each file and compare)?"
Let's build this into common tooling! Directly into installers like pip and uv? And pip/uv audit?
#Python #security
Python Tip #84 (of 365):
Use variables to improve code clarity.
Today's tip is the inverse of yesterday's tip.
Well-named variables CAN make your code more readable and they don't really make your code less efficient (after all, variables are just pointers).
🧵 (1/2)
I released yesterday version 0.16 of Poezio, a terminal XMPP client, here is the blog post with a release announcement: https://blog.mathieui.net/poezio-0-16.html
Some nice bugfixes (thanks @ge0rg for testing), and finally handling of message moderation & retraction.
Note: the fact that we very often share version numbers with @profanity is a pure coincidence!
#Cyberattaque contre la #librairie #python #LiteLLM :
Cinq jours pour infiltrer, trois heures pour tout voler : comment des #hackers ont piégé des #millions de #développeurs #IA
Alors en fait je vois qu'il y a un autre moyen d'aboutir à mon objectif, en m'attaquant à l'itérable utilisé pour créer l'itérable de tuple :
objects_needing_specials = [obj for obj in universe_objects if random.random() < base_chance]
for e in empire_home_systems :
objects_needing_specials = [obj for obj in objects_needing_specials if obj not in fo.systems_within_jumps_unordered(5, [e])]
Ça peut marcher de filtrer la liste à partir d'elle-même ?
Cette syntaxe est acceptable ?
If you've ever installed #Python #LiteLLM, you have remedial actions you need to take immediately.
Headline: A popular Python library just became a backdoor to your entire machine
Link: https://www.xda-developers.com/popular-python-library-backdoor-machine/
Thoughts on OpenAI acquiring Astral and uv/ruff/ty https://lobste.rs/s/dhogio #ai #python #rust
https://simonwillison.net/2026/Mar/19/openai-acquiring-astral/
BlogMore v2.2.0, now with post counts in the archive page. https://blog.davep.org/2026/03/23/blogmore-v2-2-0.html
“But there's another issue that often crops up when splitting text into lines: trailing newlines.”
Read more 👉 https://pym.dev/splitlines/
Question Python : quand on crée un itérable de tuples avec zip, est-ce que l'on peut faire un test sur les valeurs d'un des itérables en entrée avant d'intégrer le tuple correspondant à l'itérable de tuple ?
Dans le but de ne pas intégrer le tuple correspondant à l'itérable de tuples s'il rate le test, donc.
New post on the Python Insider blog from Ken Jin:
"Python 3.15's JIT is now back on track"
https://blog.python.org/2026/03/jit-on-track/
#Python #JIT #performance #python315
@anze3db présente une démarche optimisant le démarrage d'une application #django :
- le drapeau "python -X importtime ..." mesure les temps des imports
- "if TYPE_CHECKING:" pour déclarer des imports en tête de module et faciliter les outils de vérification de type
- ruff.lint.flake8-tidy-imports.banned-module-level-imports déclare les modules à chargement localement
⚠️ ça déporte ces temps de chargement aux 1res exécutions des requêtes
https://blog.pecar.me/speeding-up-django-startup-times-with-lazy-imports/
WHEREAS,
Most developers these days work with a GUI;
Most screens these days use a 16:9 aspect ratio;
Hardly anyone uses a screen resolution of less than 1920px horizontal;
Even at a font size of 14pt, one can fit approximately 180 monospace characters in a terminal of that width;
NOW, THEREFORE, BE IT RESOLVED,
PEP 8's current 79-character line length limit be doubled.
| Motion seconded.: | 12 |
| This is heresy.: | 14 |
À la recherche d'un travail Développeur Senior ou Lead Tech Symfony, télétravail complet ou partiel mais sur Lyon ou Grenoble avec au moins 3 ou 4 jours de TT et horaires aménageables. S'il y a Angular ou un autre langage que PHP (Python, par exemple) c'est bien.
#development #developer #symfony #php #angular #python #jechercheUnJob
This is incredibly depressing news. Scam Altman is now in control of the supply chain of a significant portion of the Python community.
Fuck this shit.
🦾 Project Detroit: Java interop with JavaScript and Python
"The novel approach that we are taking with Detroit is that we are embedding the V8 and CPython runtime directly inside the JVM process,"
https://go.theregister.com/feed/www.theregister.com/2026/03/17/oracle_project_detroit_java/
So, in the #PHP ecosystem, people can build a package like roave/security-advisories, which has a huge list of "conflict" dependencies.
These don't say "install this as a dependency", but instead "I'm incompatible with that dependency in that version". And the versions listed there are those with known security vulnerabilities, effectively preventing you from installing them, which is good.
Is there something similar in the #Python ecosystem? Is it even possible?
https://github.com/Roave/SecurityAdvisories/blob/latest/composer.json
Thanks to all the great community Q&A over the last couple of weeks, I was able to compile a #Django health check cookbook:
https://codingjoe.dev/django-health-check/cookbook/
Thank y'all for asking the right questions! 🤟
#Django #Python #Docker #Kubernetes #k8s #caddy #treafik #nginx
un article de @mkennedy indiquant que depuis Python 3.12, asyncio.create_task() ne garde qu'une référence faible vers la tâche lancée dans la boucle d'évènement, et que celle-ci peut se faire garbage-collecter avant (la fin de) son exécution : https://mkennedy.codes/posts/fire-and-forget-or-never-with-python-s-asyncio/
La solution ? Garder une référence forte de la tâche (dans un set, par exemple) et ajouter un done_callback qui l'en retire pour la déréférencer afin que le garbage collector puisse faire son travail.
🚀️ Pontoon Debian v2026.03.20 released
I just released a new version of Pontoon Debian, a manual to install and maintain Pontoon (#Mozilla web-based translation software) on #Debian and #Ubuntu.
➡️ https://wanadev.github.io/pontoon-debian/migration/pontoon-v2026.03.20.html
Please note that this may be one of the last updates for this project. If you are using it, please let me know and consider contributing. 🙂️
Sur le forum de l' #Afpy, un échange intéressant suite à l'annonce du rachat de la société Astral (éditeur de 'uv', entre autre) par OpenAI.
If you’re looking for a nice, modern, featureful #Python package and environment manager, may I suggest PDM?
And maybe also toss some funding their way.
RE: https://mastodon.social/@hynek/116256569856726011
I use this, it's good! You never know when you might need the extra info, and this makes it really easy to check.
#Python
I don't run 'pip install' often enough that uv speed matters to me.
I don't code fast enough so that ruff is an improvement over mixing flake, yapf, mypy and the like.
Something tells me I might not be in the target demographics of the people worried by Astral's acquisition.
Here's a hill I'll die on: "#Pythonic" is a meaningless word.
People will use it to justify any, and sometimes incompatible formatting preferences.
"Idiomatic #Python" should be what it stands for, which has nothing to do with formatting. Even then, it sounds much too dogmatic to my taste. Good design doesn't need pseudo justifications like "that's the way we've always done it"; only poor quality code does.
RE: https://techhub.social/@Techmeme/116256023795725433
#OpenAI a fait l'acquisition de #Astral, l'entreprise qui édite différents outils de l'écosystème #Python, écrits en #rust :
- ruff : linter et formateur de code
- uv : gestionnaire de dépendances
- ty : vérification statique de typage
Voir : https://astral.sh/blog/openai
OpenAI agrees to acquire Astral, which makes Python tools for developers, to integrate its team into Codex, and says Codex has 2M+ users, up 3x since January (Agnee Ghosh/Bloomberg)
https://www.bloomberg.com/news/articles/2026-03-19/openai-to-acquire-python-startup-astral-expanding-push-into-coding
http://www.techmeme.com/260319/p27#a260319p27
Chic, les vidéos de la PyCon FR 2025 sont en ligne ici -> https://pyvideo.org/events/pycon-fr-2025.html
Hop, de quoi bien occuper les pauses au boulot ;)
The popular #Python library “Requests” needs your help! @nateprewitt plans to add type hints to the API and is requesting feedback:
https://sethmlarson.dev/python-library-requests-is-adding-type-hints-and-needs-your-help
Is there a less planet burning #ai coding assistant for #python coding or are the big services what I should be looking at?
When #coding I search a lot so the 10 X more energy per request might be less impactful if it saves me a bunch of search attempts.
I am not a good programmer, I don't do it often enough for that and so I also don't particularly enjoy it a lot of the time. This feels too new like a perfect use case for these tools and a chance to experiment.
BlogMore v2.0.0 is now available. It's my experiment in building an #ssg for my blog using nothing but #GitHub #Copilot. This update gives more control over how various URLs are made up.
I'm re-reading Monstrous Regiment by Terry Pratchett, and decided to add a new random error window title to @novelwriter 😁
I was completely unaware of this project until today. CPython is getting a JIT (just-in-time) compiler!
Python 3.15’s JIT is now back on track | Ken Jin’s Blog
https://fidget-spinner.github.io/posts/jit-on-track.html
NaN is weird. - Dan Shernicoff's Musings
https://brassnet.biz/blog/nan-is-weird.html
If you are a developer who maintains a #Python client library for a REST API, do you know how you can make me, a user of your library, truly happy?
Riddle your library with `logging` calls. And give me a easy knob, preferably an environment variable, to turn the log level up. Way up.
“EuroPython is a welcoming community - you’ll bond over shared experiences before you know it! Just stay open, and your environment will do the rest.”
In our latest interview with Kshitijaa Jaglan, member of the Sponsorship team at EuroPython 2025, shares her tips for new volunteers, enabling sponsors, and more:
https://blog.europython.eu/humans-of-ep-kshitijaa
#europython #conference #volunteers #python #contributors #europython2025 #opensource
un article très complet de @gaborbernat présentant les différents types de vulnérabilités d'un projet Python via ses dépendances et des façons d'y remédier : https://bernat.tech/posts/securing-python-supply-chain/
- définir des versions strictes de vos dépendances
- utiliser un lockfile pour spécifier les dépendances transitives
- inclure une étape d'audit des dépendances dans son intégration continue
- publier vos versions sur PyPI via le système Trusted publishing
New blog post: How big are the blocks in my city.
https://www.grulic.org.ar/~mdione/glob/posts/block-sizes-from-osm-data/
boostedIf you're new to contributing to Django and you're using an LLM, please consider reading this. We want to bring you into the community, but we can't do that only interacting with an LLM's output.
https://www.better-simple.com/django/2026/03/16/give-django-your-time-and-money/
Python Tip #75 (of 365):
Don't use the string split() method for splitting lines. Use the splitlines() method instead.
Instead of calling split with "\n":
lines = poem.split("\n")
Use the splitlines method:
lines = poem.splitlines()
The string splitlines method will:
• Trim a trailing newline (if there is one)
• Split by "\r\n", "\n", or "\r"
More on splitlines: https://pym.dev/splitlines/
This week's daily tips are all about string methods in Python.
boostedIf you're new to contributing to Django and you're using an LLM, please consider reading this. We want to bring you into the community, but we can't do that only interacting with an LLM's output.
https://www.better-simple.com/django/2026/03/16/give-django-your-time-and-money/
I have been suggested that the company I'm working is not doing well. Than and a push for AI is telling me it's maybe time to move on.
What am I? Currently I'm doing #Python, #SysAdmin, GitHub/GitLab admin (yes, both), some Kafka, used to do some Postgres (now we have a DB team), Ansible and more.
Edit: more info: https://en.osm.town/@mdione/116302423501761728
What do I want? No AI, no gambling, no blockchain. In #Marseille or remote. I can invoice abroad, but I would rather be an employee.
1/
I'm a software developer and sysadmin who could really use being #fedihired.
What I'd really like to do is Rust, but once you ignore the dubious crypto and AI stuff, there seems to be nothing out there. Prove me wrong with a counterexample!
I've spent decades fixing Enterprise mudballs mostly written in #Perl. If you've got a crufty legacy system that everybody else is too scared to touch, I'm your man. I love fixing stuff like that.
I've also done commerical #Scala, #Python, #C/#C++, and although I don't usually admit it on my CV but these are now Trying Times when everything is on the table, even #PHP (the longest six months of my life).
Perl naturally leads into Unix system administration and infrastructure. I've built and maintained mail clusters, VoIP systems, network monitoring, DNS management platforms, that sort of thing. If it's non-sexy but something which needs to be done, I'm there.
Available immediately, for contract or permie, onsite in Amsterdam/Randstad or remote to anywhere.
“If you're using print calls to debug your Python code, consider using f-strings with self-documenting expressions instead.”
Read more 👉 https://pym.dev/debugging-with-f-strings/
Did you miss the #PyTV livestream earlier this month? It's not too late to watch it. Wanna know how it goes? Check this out: https://blog.jetbrains.com/pycharm/2026/03/python-unplugged-on-pytv-recap/
#Python #AI #OpenSource #DataScience
https://blog.jetbrains.com/pycharm/2026/03/python-unplugged-on-pytv-recap/
Pretty sad.
Jazzband, the #python/(heavily #django) OSS group is shutting down due to, among other things, AI slop.
“What happened
The slopocalypse
GitHub’s slopocalypse – the flood of AI-generated spam PRs and issues – has made Jazzband’s model of open membership and shared push access untenable”
This model underpinned a lot of that ecosystem. I have to wonder what happens to several of these projects.
If you maintain a @jazzband project, expect an email before @pycon. django-commons is a great option if you're looking for a new home, they've already taken on several projects and got the governance right from day one.
Wind-down plan: https://jazzband.co/news/2026/03/14/wind-down-plan
(3/3)
Just released the 1.14 version of slixmpp, the python XMPP library. It brings support for three more extensions, and adds other nice things!
Update: actually I caught a bug right after releasing, so I am substituting 1.14.0 with 1.14.1.
Helsinki Python @HelPy has joined @ThePSF MeetUp Pro Network and is now the northernmost group! Welcome along to our monthly meetups:
https://helsinki-python.github.io
Looks like Python NZ Christchurch is the southernmost, Python NZ Wellington is the easternmost, and PyHawaii the westernmost.
Find out how your group can join here:
https://discuss.python.org/t/applications-to-join-the-psf-meetup-pro-network-are-back-open/106499
une bibliothèque de validation de données pour les dataframes Polars et pandas, qui propose une interface pour consulter les problèmes de cohérence de données et aider à les résoudre : https://posit-dev.github.io/pointblank/
Un tutoriel de @markpitblado expliquant son utilisation avec Polars : https://www.markpitblado.me/blog/validating-data-with-pointblank-in-python/
sudo mkdir -p /etc/apt/keyrings
sudo curl -L -o /etc/apt/keyrings/ntfy.gpg https://archive.ntfy.sh/apt/keyring.gpg
sudo apt install apt-transport-https
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/ntfy.gpg] https://archive.ntfy.sh/apt stable main" \
| sudo tee /etc/apt/sources.list.d/ntfy.list
sudo apt update
sudo apt install ntfy
sudo systemctl enable ntfy
sudo systemctl start ntfy
#ntfy #notifications #programming #Android #Linux #sh #bash #csh #ksh #zsh #fish #curl #http #javascript #golang #powershell #python #php #technology #OpenSource #POSIX
ntfy
Today I read the brief synopsis of ntfy Android. I saw there that via linux the control and operation is fairly simple & straightforward
I went to the site and started reading.
sh
curl -d "Backup successful 😀" ntfy.sh/mytopic
a.out
ntfy publish mytopic
"Backup successful 😀"
HTML
POST /mytopic HTTP/1.1
Host: ntfy.sh
Backup successful 😀
javascript
fetch('https://ntfy.sh/mytopic', {
method: 'POST', // PUT works too
body: 'Backup successful 😀'
})
golang
http.Post("https://ntfy.sh/mytopic", "text/plain",
strings.NewReader("Backup successful 😀"))
python
requests.post("https://ntfy.sh/mytopic",
data="Backup successful 😀".encode(encoding='utf-8'))
php
file_get_contents('https://ntfy.sh/mytopic', false, stream_context_create([
'http' => [
'method' => 'POST', // PUT also works
'header' => 'Content-Type: text/plain',
'content' => 'Backup successful 😀'
]
]));
Markdown formatting¶
You can format messages using Markdown 🤩. That means you can use bold text, italicized text, links, images, and more. Supported Markdown features (web app only for now):
Emphasis such as bold (bold), italics (italics)
Links (some tool)
Images ()
Code blocks (code blocks) and inline code (inline code)
Headings (# headings, ## headings, etc.)
Lists (- lists, 1. lists, etc.)
Blockquotes (> blockquotes)
Horizontal rules (---)
Read more on
https://docs.ntfy.sh/publish/#markdown-formatting
Sources:
https://docs.ntfy.sh/publish/#markdown-formatting
#ntfy #notifications #programming #Android #Linux #sh #bash #csh #ksh #zsh #fish #curl #http #javascript #golang #powershell #python #php #technology #OpenSource #POSIX
A @djangonaut cohort is focusing on django-simple-deploy from now through the end of April. It's so nice to have a small, focused group of people to work with and move this project forward!
This has put renewed focus on the dsd-vps plugin. I tabled that last fall, because there are so many questions to sort through when automating a VPS deployment process. The 0.1.1 release (very preliminarily) supports this workflow now:
Je suis sûr que vous critiquez toutes et tous #Tkinter, mais j'ai un de #MesÉleves, il est trop fort avec ⤵️
Wrote my first
#Rust program today. A small utility to grab the last value of a matching column in a matching csv file. I had hacked something together with #qsv, #nushell and #python, but those were all too slow for fast repeated calls. This Rust version executes 10-100x faster: a few ms on a
#RaspberryPi 4, neat! 👌
Rust and
#nix is also a match made in heaven, omg is the experience better than Python 🫠
$ csvget scd30 co2
940.66
@millihertz what #Python really needs is a way to distribute pre-build #conda environments without using flatpak or docker or the like. Yes, you can send an env file and make people download everything themselves, but I'm thinking pre-packaged "this is all the stuff in my environment for this package" as a ZIP type blob that acts as conda environment to the app.
ymmv.
Next up!
The famous #HelPy quiz with Jerry Pussinen, and thanks to @cheukting_ho for the questions!
Then @PawelPiwosz from @upcloud: UpCloud, Docker and FastMCP. How to build reliable MCP Server in minutes.
Thanks again to UpCloud for hosting, and see you next month at TEK & ILRY!
It's important to learn to use libraries properly
Use local docs or use online docs , elevate your programming skills
Ever since I learned of the existence of matplotlib I knew I had another nice task set to have fun programming & keep me busy for a nice while
import matplotlib.pyplot as plt
import numpy as npplt.style.use('_mpl-gallery')
# make data
x = np.linspace(0, 10, 100)
y = 4 + 1 * np.sin(2 * x)
x2 = np.linspace(0, 10, 25)
y2 = 4 + 1 * np.sin(2 * x2)
# plot
fig, ax = plt.subplots()
ax.plot(x2, y2 + 2.5, 'x', markeredgewidth=2)
ax.plot(x, y, linewidth=2.0)
ax.plot(x2, y2 - 2.5, 'o-', linewidth=2)
ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
ylim=(0, 8), yticks=np.arange(1, 8))
plt.show()
A gorgeous mathematical function is plotted when you run the program. I don't want to make screencaps now, use the link to see the output I got.
I use the featherweight geany on the SBC Pi5, you choose which IDE you like.
Yes vim is a superb source code editor. The syntax highlighting is sublime!
Sources
https://matplotlib.org/stable/plot_types/index.html
https://matplotlib.org/stable/plot_types/basic/plot.html
#python #programming #python #libraries #matplotlib #API #mathematics #SBC #Pi5 #arm #arm64 #x86 #Linux #OpenSource
RE: https://mastodon.social/@dzwiedziu/115570876140855775
Sooo, remember my most boosted post of #wrapstodon 2025?
I'm still unemployed, now facing moving out of France by the end of April.
Recap: jack of all trades #Linux sysadmin, with broad, 10y+ experience in system and applications administration. Preferred location would be #Strasbourg or fully remote or as a mentee for #freelance with #ADHD.
(Please clap, I mean boost 🔁)
🐍🚀 Out now: Python 3.15 alpha 7!
This is the first one with lazy imports (PEP 810) and frozendict (PEP 814)! Try it out and give us feedback.
https://discuss.python.org/t/python-3-15-0-alpha-7/106475
☃️ Just one alpha left until the feature freeze! Core team: get your PEPs in!
#Python #Python315 #release PEP810 #LazyImports #PEP814 #frozendict
Just released! 🚀
🪑 PrettyTable 3.17.0
https://github.com/prettytable/prettytable/releases/tag/3.17.0
Add support for Python 3.15, drop 3.9, test 3.13t-3.15t
Set dicts with column-specific config for all column-specific attrs
Update type hints
Replace pre-commit with prek
& more!
I made a thing: here's the upcoming Python releases.
https://hugovk.github.io/next-release/
Oh, look, there's one today! I hope that's out soon...
#Python #dashboard #next #release
🚀️ Rivalcfg v4.16.1 released (hotfix)
This version fixes the sensitivity (DPI) settings of the SteelSeries Rival 3 Wireless Gen 2.
Read more on Rivalcfg website:
The March edition of the PSF Board Office Hour is about to begin 🐍 🗒️ 1 PM UTC. Join us to share how we can help your community, express your perspectives, and provide feedback for the PSF! #python
https://pyfound.blogspot.com/2025/10/a-new-psf-board-another-year-of-psf.html
Interesting post from @stanfromireland with an annotated chart showing the growth CPython's source code over the decades:
https://blog.python.org/2026/03/cpython-codebase-growth/
#Python #CPython #history
I missed the absurd chardet license change story. 🫠
BTW I would pin chardet <7 and avoid using the relicensed version if you want to avoid issues. ⚠️
Quoting Madison Taylor from Nvidia:
"Given the existence of issue #327 chardet v7.0.0 is absolutely toxic." https://github.com/chardet/chardet/issues/331
The OntoWeaver team is proud to release version 1.4 of its tool 🥳
OntoWeaver allows to easily parse iterable data (like tables or documents) and create a Semantic Knowledge Graph. Basically, you write a simple YAML file telling what data you want to be a node or a property, you call a generic command, and 🎉 , you have your graph ready.
With the 1.4 series, the main new feature is an option to display progress bars when doing heavy processing (like loading large CSV files).
The documentation has also been heavily updated, completed and polished:
https://ontoweaver.readthedocs.io/en/latest
#python #SKG #KG #graph #neo4j #ontoweaver #biocypher #science #bioinformatics #pasteur #ontologies #semanticWeb
Deux astuces très intéressantes pour récupérer le nom de la fonction et en faire ... DES TRUCS https://aarol.dev/posts/helloworld-print/ #javascript #python #astuce
@ThePSF (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 @ThePSF, founded on 6th March 2001!
https://mastodon.social/@victorhck/116182885602728740
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
Wallabako retirement and Readeck adoption https://anarc.at/blog/2026-03-05-wallabako-retirement #wallabako #debian-planet #python-planet
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.
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
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
I published the #python binding for my #XML library called pyuppsala https://pypi.org/project/pyuppsala/
Si vous travaillez avec codium / vsCode sur un monorepo comprenant différents projets Python, votre IDE aura des difficultés à savoir quel environnement virtuel utiliser selon le fichier .py que vous consultez. Deux extensions pourront vous aider :
- Envy (https://marketplace.visualstudio.com/items?itemName=teticio.python-envy), qui
fonctionne de façon automatique
- Python Environments (https://devblogs.microsoft.com/python/python-in-visual-studio-code-february-2026-release/) qui nécessite un peu de configuration
Cronboard : un dashboard qui tourne dans le terminal pour gérer ses cron jobs en local et sur serveurs distants.
Autocomplete, validation, pause/reprise, connexion #SSH par clé ou mot de passe
les conférences données à la #PyConFr 2025 sont disponibles en rediffusion : https://indymotion.fr/c/pyconfr2025/videos Merci aux personnes oratrices et organisatrices 🙏
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
A very cool job opening at WFP for a solution architect, python flavor:
Remote ok! #remotework #python #django #tech #jobs
Very interesting PEP that could unlock a clear way to type Django’s ORM
Python Tip #62 (of 365):
Avoid conditionally present attributes.
Python's "del" statement is pretty much ONLY used to delete dictionary keys (or list indexes).
You'll probably never see "del" used to delete an attribute. There's a reason for that.
Deleting an attribute or a variable name is an odd thing to do.
Creating an object that sometimes has a specific attribute and sometimes doesn't is ALSO odd.
🧵 (1/2)
hello !
La prochaine session de #Python #Rennes (en partenariat avec Rennes hashtag#DevOps) aura lieu le mardi 17 mars chez Kanoma (merci pour l'accueil 🙏) et parlera d'optimiser l'intégration continue de son projet Python (mais pas que).
Inscription sur https://www.meetup.com/python-rennes/events/313623596/ !
- Automatiser une release avec Github actions : montée de version, publication sur PyPI (@lucsorelgiffo)
- Comment l’IA va vous aider à réduire votre impact carbone (@nledez)
#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 @Yhg1s:
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.)
Source code analysis
cpython
doc/c-api/abstract.rsc
.. highlight:: c
.. _abstract:
Abstract Objects Layer
The functions in this chapter interact with Python objects regardless of their
type, or with wide classes of object types (e.g. all numerical types, or all
sequence types). When used on object types for which they do not apply, they
will raise a Python exception.
It is not possible to use these functions on objects that are not properly
initialized, such as a list object that has been created by :c:func:PyList_New,
but whose items have not been set to some non-\ NULL value yet.
.. toctree::
object.rst
call.rst
number.rst
sequence.rst
mapping.rst
iter.rst
buffer.rst
objbuffer.rst
▸Chapter 1 — Understanding CPython Before Code
CPython is both a compiler and an interpreter. It compiles Python source code to bytecode, then executes that bytecode on a stack-based virtual machine. Understanding this dual nature reveals how Python achieves its balance between high-level expressiveness and runtime efficiency.
Everything is an object: Integers, functions, classes, modules, even types themselves are objects with a uniform interface
The GIL: A mutex that protects Python objects, simplifying memory management but limiting CPU-bound parallelism
Memory Management: Reference counting (immediate) + cyclic garbage collection (for cycles)
Compilation Pipeline: Source → Tokens → AST → Bytecode → Execution
motivation
I used explorar.dev in this example, but you don't need the internet to analyse source code. Just download them once, then read at your leasure offline
The screencaps are included to show how it can be done via explorar.
Sources:
https://explorar.dev/python/cpython
#python #cpython #programming #source #code #analysis #environment #mathematics #physics #Lineair #Algebra #technology #Linux #BSD #freeBSD #ghostBSD #OpenSource
@mahryekuh 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
Today I learned about a relatively new PEP to improve pretty printing in Python. 🤩
Deprecate confusing APIs like “os.path.commonprefix()”. After fixing a vulnerability in #pip, I started digging into the confusing API and found more than I expected.
👉 https://sethmlarson.dev/deprecate-confusing-apis-like-os-path-commonprefix
Maîtrisez python en t'amusant...
Un projet réalisé par deux humains, avec l'aide de 3 I.A.
/Archive.zip pour récupérer un fichier zip pour un usage local.Un projet de Lucchicama @QuangThaiNgo1 (X) sous licence CC BY développé avec Kimi et Z ai, modifié par @nsi_xyz avec Gemini 3 Pro en mode CLI.
URL : https://pyalgo.nsi.xyz/
ZIP : https://pyalgo.nsi.xyz/Archive.zip
#Maths #NSI #Python
Help us map out an accurate landscape of the Python community: respond to the official Python Developers Survey for 2026 to add your voice 🤩 #python #pythondevsurvey
https://surveys.jetbrains.com/s3/python-developers-survey-2026
le framework web #Python #FastAPI vient de sortir une extension pour vsCode : https://marketplace.visualstudio.com/items?itemName=FastAPILabs.fastapi-vscode.
- visualisation de l'arborescence des routes et accès facilité au code
- interaction avec le service FastAPI Cloud (déploiement, logs)
L'extension collecte des données anonymisées d'utilisation, mais cette télémétrie peut être désactivée. Je me renseigne pour savoir si l'extension sera disponible dans le dépôt openvsx.org pour les personnes utilisant #codium.
Une nouvelle série de 10 conseils / astuces en Python par AjanCodes : https://www.youtube.com/watch?v=cXl-AUXHHZY
- functools.cache
- typing.Protocol
- dataclasses.replace
- itertools.pairwise
- expressions d’affectation (:=)
- pathlib
- contextlib.suppress
- contextvars
- pattern matching avec gardes
- contextlib.ExitStack
Le code source associé : https://github.com/ArjanCodes/examples/tree/main/2026/features
@adamchainz That makes sense.
For statically generated sites (like Pelican) or project docs built through pipelines (like Django’s Sphinx docs), the dictionary could just be regenerated during each build, locally or in CI.
That way it stays fresh automatically and tracks templates or content changes without extra work.
🚀 New standalone builds for Rivalcfg!
Rivalcfg is a CLI tool to configure #SteelSeries gaming mice on #Linux, #macOS and #Windows.
Standalone builds are compiled versions you can run without installing any dependencies (neither #Python). No more venv, pip install etc.
➡️ https://rivalcfg.flozz.org/news/new-standalone-builds-for-linux-macos-and-windows/
Rivalcfg is now simpler to use than ever! 😁
Out now: pepotron 1.6.0, with the new Python 3.16 schedule:
❯ pep 3.16
https://peps.python.org/pep-0826/
❯ pep 8
https://peps.python.org/pep-0008/
❯ pep lazy
Score Result
90 PEP 810: Explicit lazy imports
73 PEP 690: Lazy Imports
68 PEP 217: Display Hook for Interactive Use
68 PEP 802: Display Syntax for the Empty Set
57 PEP 227: Statically Nested Scopes
https://peps.python.org/pep-0810/
❯ uvx pepotron 3.16
https://peps.python.org/pep-0826/
https://mastodon.social/@peps@feedsin.space/116122903304128032
Forget* about Python 3.14, all the cool kids are trying out Python 3.15.0 alpha 1 (but not on production)! 🚀
🔬 PEP 799: A dedicated profiling package for Python profiling tools
💬 PEP 686: Python now uses UTF-8 as the default encoding
🌊 PEP 782: A new PyBytesWriter C API to create a Python bytes object
⚠️ Better error messages
https://discuss.python.org/t/python-3-15-alpha-1/104358?u=hugovk
* Please don't forget about 3.14...
Just released! 🚀🚀🚀🚀🚀
Pillow 12.0.0
https://fosstodon.org/@pillow/115379893139846791
norwegianblue 0.23.0
https://github.com/hugovk/norwegianblue/releases/tag/0.23.0
pypinfo 23.0.0
https://github.com/ofek/pypinfo/blob/master/CHANGELOG.rst#2300
Humanize 4.14.0
https://github.com/python-humanize/humanize/releases/tag/4.14.0
Tablib 3.9.0
https://github.com/jazzband/tablib/releases/tag/v3.9.0
#Python #release #Pillow #pypinfo #Humanize #norwegianblue #Tablib
Just released! 🚀
📜 Python Docs Sphinx Theme, with added Arabic, French, Romanian and Russian translations.
https://github.com/python/python-docs-theme/releases/tag/2025.10
#Python #release #PythonDocsSphinxTheme #Sphinx #theme #translations
Just released! 🚀
🎨 termcolor 3.2.0
https://github.com/termcolor/termcolor/releases/tag/3.2.0
🟣 Expose `can_colorize` as public API
🟢 Add support for Python 3.15 (🥉 at https://pyreadiness.org/3.15/)
🔴 Drop support for EOLish Python 3.9
N'oubliez pas, ce jeudi il y a #meetup #python dans notre local, le Yack, presque à #bordeaux
Vous venez ? Dites le nous sur https://www.meetup.com/fr-fr/py-bdx/
How to Install and Run #Matrix Synapse #Chat Server on #Debian #VPS
This article provides a guide detailing how to install and run Matrix Synapse chat server on Debian VPS.
What is Matrix Synapse?
Matrix Synapse is the reference implementation of a homeserver for the Matrix protocol.
What Matrix Is
Matrix is an open standard and protocol for secure, decentralized real-time communication. ...
Continued 👉 https://blog.radwebhosting.com/how-to-install-and-run-matrix-synapse-chat-server-on-debian-vps/?utm_source=mastodon&utm_medium=social&utm_campaign=mastodon.social #opensource #letsencrypt #selfhosted #python #selfhosting
PSA: North america changes time forward soon, Europe next https://anarc.at/blog/2026-02-23-dst-warning #news #time #debian-planet #python-planet
Fun #Python question: I have a project that depends on some static data (JSON/YAML/TOML etc. files) in a 3rd party Git repo.
I want to treat said repo like a dependency so when I run `uv sync`/`uv install` it pulls the data from the repo to a known location (ideally specifiable, e.g. .gitignore'd subdirectory of the project folder). And it could get hashed/locked just like a Python dep.
Is this even possible? If not, what's the least awful choice: git submodules? Make/Just task to grab it?
Every time I see someone saying “Oh no, I missed the CFP deadline”, I can’t help thinking about all those features in Python or Django that were deprecated for years… and then someone is shocked when they finally get removed. 🫠
Weeks of announcements. Years of warnings. Deprecation messages in the logs. And still: surprise. 😅
Maybe warnings and deadlines only become real the day after they expire. 🪄
Hey Pythonistas! You could win a prize for filling out the 2026 Python Developers Survey 🎁 Take a few minutes to fill the survey and you'll have a chance to win #python #pythondevsurvey
https://surveys.jetbrains.com/s3/python-developers-survey-2026
Le framework d'API web #FastAPI a sorti une version 0.131.0 qui délègue à #Pydantic la sérialisation JSON de la réponse lorsqu'on utilise une annotation pour typer la réponse renvoyée par la route d'API plutôt que de définir une classe dans le décorateur qui définit la route (dans ce cas, c'est FastAPI qui gère la sérialisation). La sérialisation par FastAPI se fait alors plus rapidement, car elle est implémentée en #rust.
https://fastapi.tiangolo.com/advanced/custom-response/#json-performance
🚀 The DjangoCon US 2026 CFP is OPEN! Heading BACK to Chicago and looking for talks from all experience levels. Got an idea about Django, Python, or the web? We want to hear it!
Deadline: March 16 at 11am CDT
Django ORM Standalone⁽¹⁾: Querying an existing database by @paulox https://lobste.rs/s/xe7vkq #databases #python #web
https://www.paulox.net/2026/02/20/django-orm-standalone-database-inspectdb-query/
📣 DjangoCon US 2026 is coming to Chicago and we want YOUR talk! Whether you're a first-time speaker or a seasoned pro, we'd love to hear your ideas about Django, Python, and the web.
CFP closes March 16 at 11am CDT
https://pretalx.com/djangocon-us-2026/cfp
This is a nice video that demonstrates #EventSourcing with #Datastar + #SSE in a #Python context for the backend..
https://pyvideo.org/flaskcon-2025/death-to-the-spinner-event-sourcing-for-reactive-web-apps.html
Seeking advice for FreeBSD as a daily driver on an ASUS X580VD
(Intel HD 630 + GTX 1050 Optimus)
Five questions at <https://www.reddit.com/r/freebsd/comments/1r9j67j/advice_for_running_freebsd_as_daily_driver_on_an/> (replies there, if you can – thanks).
The writer's use case and goals:
― web dev stack: Java, Node/React, Python, Go
― occasional virtualization and Linuxulator for Linux-only tooling
― prefer GNOME, but open to recommendations if another DE/DM is more reliable here
― Intel as primary + NVIDIA for on-demand/offload use (if possible).
What: 2026 Python Developers Survey 🐍💻
Why: To capture the current state of the language and the ecosystem around it 🌍
When: Open now until we reach our respondent goal 📈
Who: You! 🫵
Where: https://surveys.jetbrains.com/s3/python-developers-survey-2026
#python #pythondevsurvey
https://surveys.jetbrains.com/s3/python-developers-survey-2026