PEP 804: An external dependency registry and name mapping mechanism

Another reason for this, that I keep forgetting to mention, is version epochs. Debian archives (like any package manager, I’d assume) require package versions to monotonically increase. So, when an upstream switches to a new version scheme and introduces a lower version that the previous one, e.g. upgrading from 20251029 to 1.0.0, we increment an epoch at the start of the version. So, we’d call this 1.0.0 1:1.0.0. That 1: epoch prefix is then required forever into the future (or at least, until it bumps to 2: when the upstream reads another blog post about how versioning should be done).

Epochs can also be introduced when one package takes over a name from another, with a lower version. So, it’s not necessarily due to any fault of the upstream, just unlucky history.

2 Likes