Re: Upstream dependency version requirements [Was: Re: review for beets/2.9.0-1]

Jeremy Stanley <[email protected]> Mon, 4 May 2026 12:58:02 +0000
Newsgroups gmane.linux.debian.devel.python
Message-ID <[email protected]>
On 2026-05-04 15:07:22 +0300 (+0300), Peter Pentchev wrote:
>On Sun, May 03, 2026 at 03:49:21PM -0000, Jeroen Ploemen wrote:
[...]
>> For both of the above, it's often an open question whether version 
>> restrictions declared by upstream are actually hard requirements or 
>> just a matter of "we prefer to have everyone use the version we 
>> tested with".
>
>From my experience with various upstream projects, both individual 
>authors with varying levels of experience and workflows, and 
>more complex organizations (e.g. OpenStack), IMHO it is most useful to, 
>at least initially, "assume good faith"
[...]

To use the OpenStack example, our dependency management upstream has 
both parts Jeroen mentioned: 1. requirements.txt files (or similar 
lists in pyproject.toml) for each individual project are coordinated 
so that they remain coinstallable while staying as loosely-defined 
as possible; 2. a global constraints list essentially "pins" a 
solution for requirements across all OpenStack projects like a 
lockfile, in order to stabilize upstream integration testing and 
allow us to quickly identify regressions in dependencies as new 
releases for them appear.

It's always been our goal to remain flexible for the benefit of 
downstream distribution package maintainers, and when individual 
projects within OpenStack specify a lower bound, upper bound, or 
excluded version in their requirements it typically signals an 
actual regression that project is trying to avoid (either because 
the project has started depending on a new feature from that 
dependency, or the dependency introduced a backward incompatibility 
or presumed-temporary breaking bug).

Put another way, the constraints list is the exact versions of 
dependencies (including transitive dependencies) that were tested 
with upstream at that time, but we understand that distributions 
downstream have a need to make our software work with different 
versions than what we've tested and so expect them to do their own 
testing where relevant in order to confirm everything continues to 
work as intended.

I won't speculate about the Beets upstream dependency management, 
but as a user of it myself (and having managed pip-installed venvs 
of it myself in the past for various reasons), it does appear they 
have a very complex set of requirements so almost certainly are 
working around the sorts of problems which arise from that.
-- 
Jeremy Stanley
signature.asc (application/pgp-signature, 963 B)
-----BEGIN PGP SIGNATURE-----

iQKTBAABCgB9FiEEl65Jb8At7J/DU7LnSPmWEUNJWCkFAmn4l8dfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDk3
QUU0OTZGQzAyREVDOUZDMzUzQjJFNzQ4Rjk5NjExNDM0OTU4MjkACgkQSPmWEUNJ
WCnaaA//baP7rBFakGxDqD+26ZYd4rWRntcrr58+uAVdNdZc12Ip7zJT/25V8oE7
CJw7MZzt44jZHSneLTjWmefFhzgFUTUS/sHT/vZbQC+IPMB4/VwzAK8+Fe/v3AfX
ke+AGH6YQJeG6yy75QGdQezg87u8Sm4pRISlV/SawJP1oD4qKUF4J2+AVkUMa0/f
Y6YVNtE1y4ezCrST+rHe5o/Y7ap9lKV4oCErMv/gC3i16k+hH23esO/aLGAKldVq
ExBRiTlW5enurqu5GpnC794bOF1lgaY1KCLDSrJN/Y+IhZeJgyqNsOfCKD3AOi84
Nxb91Ip25y6KzGnC22/W+9BhgzKzYBwzpYKG8m29pA21no0TN28kiNdthw2rtNlR
lc0iY1oKyNHT6FOEvf+Dm7oc2IiydfuPXlNop8jUItXYwxxbnH+ritqlijloEO05
MdIyRraqjrvdooLpQfTAMC4P4THoS49JxwcBNQpsQUCP8371I2uwqiAhcucF3gbx
U/2YNkNuEAUtVxK1OL2xZShcliyWz2aWUQ9WsY1a2poRZjIBOs6qB3lTzU7s4iHh
VHbV+6tpoPLQq/ovadUETjKV32mVcI1GmJ7w4N2nZTOQlraHzjXG8Vqt6CwVt/lg
9zUFhrs8hGueFHXDVXXkEG5tC6CHkQKP45xyJpauDQts1o52oAY=
=TXry
-----END PGP SIGNATURE-----