Improving my dotfiles manager with pipx and inline dependency metadata

I have a (somewhat unnecessarily) custom setup for managing my dotfiles and I made a nice improvement to it today. How it works The dotfiles are managed by a Python script. In broad strokes, the script will: read a TOML file locate the configured paths create symlinks, based on custom marker text in the filenames, for files in subdirectories under the configured paths1 If there’s a conflict (i.e. two configured paths provide the same symlink target location), the TOML file contains the resolution for it (i....

May 31, 2024 · 6 minutes

pip 24.1 betas -- help us test a major upcoming change!

The pip team has released pip 24.1b1 which contains a lot of significant improvements and bug fixes. I’d like to highlight a major change in this blog post: the removal of support for “legacy” versions and dependency specification, or as I like to call it, nonsensical versions and dependencies. We’re releasing this as a beta to get feedback from the community on how this change affects their workflows. Nonsensical versions and dependencies For a bunch of historical reasons, pip has allowed many arbitrary strings as versions and dependency specification....

May 13, 2024 · 4 minutes

Making GitHub Notifications UI slightly nicer for bulk triage

I’m someone who gets a lot of GitHub notifications – this week had >100 individual notifications. The problem The “new” GitHub Notifications UI1 was based on Octobox. It was a step in the right direction to help with my notification “workload”, although I recognise that it was not perceived as such by many others. That said, they copied over the exact same design issue I had with Octobox: the action buttons are on the completely opposite side from where my attention is....

March 17, 2024 · 3 minutes

Choreographing a release process for my PyPI packages

I maintain quite a few Python packages and they all have development workflows as well as release processes that are different in various ways. This is basically my research document as I am exploring what I want the release process (and supporting development workflow) to look like for the Python packages I maintain, so that I can reduce the overhead caused by the various differences in these projects as well as the need to make all these decisions myself....

January 27, 2024 · 8 minutes

PDM does not implement PEP 582, at the time of writing

Note: I’ve updated this to reflect how this happened, on recommendation from PDM’s author. PDM claims to implement PEP 582. However, if you look at what it implements, it is something completely different from the standard. PDM’s file system structure <root> __pypackages__ 3.10 bottle PDM will scan for the __pypackages__ directory up to 5 folders above the “current” one. PEP 582’s file system structure <root> __pypackages__ lib python3.10 site-packages bottle myscript....

Last updated January 30, 2023 · January 21, 2023 · 2 minutes

Thoughts on the Python packaging ecosystem

My response to the discussion topic posed in Python Packaging Strategy Discussion Part 1 had become quite long, so I decided to move it to write a blog post instead. This post then started absorbing various draft posts I’ve had on this topic since this blog was started, morphing to include my broader thoughts on where we are today. Note: I’ve updated this to cover an aspect of the recent LWN article on the topic as well....

Last updated January 23, 2023 · January 21, 2023 · 26 minutes

How the Python Packaging community is organised

The way the Python packaging community is organised is something that I’ve explained in multiple places, in multiple contexts. I figure that it’ll be useful to actually write it down in a single place, so that I don’t have to repeat myself. The Python Packaging Authority The Python Packaging Authority (PyPA) is a fairly loose group of projects that happen to be related to Python packaging. While the PyPA has a formal governance model, there’s no “oversight” or “enforcement” on projects that are part of the PyPA – they are only required to adopt the PSF Code of Conduct and to be accepted by the existing members....

January 14, 2023 · 4 minutes

Excellent error messages from command line tools, according to ChatGPT

In late Dec 2022, I played around with ChatGPT in an evening. Since it was on the top of my mind1, I decided try to nudge ChatGPT into the direction of giving me a useful answer about error message design for command line tools.2 Now, tell me what an excellent error message from a command line tool should contain. An excellent error message from a command line tool should contain the following elements:...

January 2, 2023 · 2 minutes

A mistake in a recent website update

A false claim was made on the about page for a few days.

January 1, 2023 · 2 minutes

Wheels are faster, even for pure Python packages

When installing with pip (or from PyPI in general), wheels are much faster than source distributions, even for pure-Python projects. Packages with native code are a clearer win, because the wheel file will contain pre-compiled binaries for the platform you’re installing on. This means that you don’t need to have a compiler and non-Python build dependencies installed, and you don’t need to wait for the compiler to do its thing....

December 31, 2022 · 3 minutes