Story #138
closedAs a user, I can express how many old versions of a package to keep during sync
0%
Description
Similar to the yum importer's --retain-old-count feature, we should have a way for users to express to us which versions of a package to keep during syncs. There are a few options we could consider:
0) We could do exactly as --retain-old-count does, allowing the user to specify an integer of how many packages to keep with 0 meaning keep them all.
1) We could instead allow the user to express ranges of versions they would like to sync with the package names. Something along the lines of "1.7<=Django<1.8" could express to sync and keep all Django versions in that range.
2) We could also potentially accomplish both of the above.
I considered option 1 because PyPI is quite a bit different than a yum repository. It gets all versions that a package ever goes through, with sudden API changes as they occur. Yum repositories typically stick to a particular version of a package, and they patch it. Users may be interested in expressing the packages they want to keep in terms of API stability. Option 2 would allow them to do that while also limiting the number of compatible versions they keep. If we decide to go with the last option, we may decide to break this into two stories if that makes sense.
Deliverables:
- Provide some way for users to limit how many versions of a package they wish to keep via the CLI
- Modify the importer to honor this new importer setting
- Write a documentation example of how to use the setting with the CLI
- Write release notes
- Document the new importer setting in the importer technical documentation
- Write unit tests
References:
PEP-440[0] contains the specifications for Python versions, and PyPA has created a reference library[1] for this specification.
[0] https://www.python.org/dev/peps/pep-0440/#version-specifiers
[1] https://packaging.pypa.io/en/latest/specifiers/
Related issues