You need to sign in or sign up before continuing.
Sort out release options
The problem
As a developer, I basically want three versions of my package to be released:
- 'sensible defaults': pin minimum compatible versions of things to that a default
pip install my-package
does sensible things. This default flow should be explicitly tested to make sure it installs a working package - 'locked': lock everything, using e.g. pdm-lock
- 'unlocked': lock nothing. There is no tool for this build, but I don't think it would be hard. This would pin none of the package's dependencies, allowing a downstream user to do any pinning they want/make work. The point of this is that a) we can't anticipate all the different downstream use cases and b) we can't test against every combination of requirements, so we can't really know what works and doesn't work with complete certainty i.e. we need to give our users an escape hatch in case they work out a use case we haven't/can't test
Then, I want the following tests to be done:
- a sensible defaults install works (i.e. run
pip install my-package
, then all the tests should pass) - minimum of everything install works (i.e. run
pip install my-package
with some cleverness to request the minimum supported version of everything, then all the tests should pass) - maximum of everything install works (i.e. run
pip install my-package
with some cleverness to request the latest released version of everything, then all the tests should pass)- it is ok if this fails, we just want to know that things have moved into a broken state (and we can then pin our sensible defaults or fix things)
- perhaps some other edge cases, e.g. one package (e.g. numpy or pandas) at its minimum but everything else at sensible defaults
- you can't do this for every package, because you end up testing way too many things, but for golden paths it could be worth it
Definition of "done"
All of the above is setup when the copier template is used. We'd probably want to break this into steps:
- locking release is already done
- sensible defaults is already support
- add unlocked version (which will require creating a pdm-unlocked package)
- add tests of sensible defaults install
- add tests of minimum install
- add tests of maximum install
- add an example of testing other edge cases, just to see how it works
Additional context
I was setting up https://github.com/openscm/continuous-timeseries and realised we didn't have this yet. Would be ideal to get this in (and also do #3 (closed) to be honest, pdm is slow...)