Through the Pallets Projects , I sponsored North Bay Python 2026. I got a couple minutes Sunday morning to say a little, but I mostly used it to share pictures of my cats and talk about the conference and community I love. Here's what I shared. Check the alt text for descriptions and commentary about these cats. I'm David Lord, lead maintainer at Pallets, the community open source organization…
Farewell to my first big PR for Werkzeug , made in 2018. Now that Python 3.9 is EOL, I'm able to remove that giant hack and replace it with a single line of code. Here's an explanation of what I did, and what replaces it. Werkzeug's reloader has to determine what arguments to start a new process with, including the Python executable, the script, whether it was run with -m , and arguments passed to…
I discovered the Atkinson Hyperlegible font a few years ago, and I've been using it for for all my projects since; you're reading it now! It's "designed to improve legibility and readability for individuals with low vision", and as a person with normal vision I like it too. It's provided by the Braille Institute for free with the SIL open font license. I just noticed that they released a new…
By figuring out a fix for a security issue in Jinja, I came up with a more robust version of Python's hasattr . One interesting difference between Python and Jinja is that obj.attr (attribute lookup) falls back to obj["attr"] (container lookup) and vice versa. When Jinja is compiled, every occurrence of obj.attr is replaced with env.getattr(obj, attr) behind the scenes. import typing as t class…
I just released a new Python library, Email-Simplified ; along with a Flask/Quart extension, Flask-Email-Simplified . I wrote most of this library a year ago and have been using it privately, but didn't get around to writing thorough tests and documentation until now. Email-Simplified Email-Simplified provides a simple API for creating email messages and sending them. It provides a handler for…
I maintain a lot of libraries on GitHub. I'd guess about 20 that I'm actively watching, and access to another 20 that I can help with if pinged. Many of them are stable, low activity projects. They might get an occasional bug fix or new feature, but are mostly quiet. Scheduled dependency updates have overwhelmed that tranquility. I've now disabled scheduled updates, replacing them with a local…
I maintain a library Magql-SQLAlchemy that generates an API from SQLAlchemy models. As part of that, I wanted to use docstrings from the model classes in Python as the descriptions for objects, fields, and arguments in the API schema. Docstrings are strings written as the first line of a module, class, or function. Typically they use """ triple quotes and span multiple lines. These are easy to get…
This year at PyCon US, members of the Pallets team organized an in person mini FlaskCon . I presented the first talk of the day, State of Pallets 2024. Here's the text version of the talk, with the slides as images. A PDF of the slides is available here . Hello and welcome to FlaskCon! I’ll be presenting about the current state of the Pallets organization and projects. My name is David Lord. I’m…
If your teacher (or tutorial/video/hackathon/etc) says "go do X in an open source project" and then sends you off unsupervised, they haven't adequately prepared you to be a contributor, or thought through the consequences of their assignment. Don't do it. These teachers often have good intentions. They know projects need contributors. Open source projects can be high quality examples of how to…
Compared to a lot of command line experts, I am not a fast computer user. I've just never equated second-by-second speed with productivity. I don't know all the vim/emacs shortcuts. I don't create aliases and scripts for everything, or shorter git commands, I just type things out. I'm not quite at the speed of "press backspace over and over to delete a whole line", but I'm not far off. However,…