Project

Profile

Help

Story #138

closed

As a user, I can express how many old versions of a package to keep during sync

Added by rbarlow about 9 years ago. Updated about 3 years ago.

Status:
CLOSED - DUPLICATE
Priority:
Low
Assignee:
-
Sprint/Milestone:
-
Start date:
Due date:
% Done:

0%

Estimated time:
Platform Release:
Target Release - Python:
Groomed:
No
Sprint Candidate:
No
Tags:
Sprint:
Quarter:

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

Related to Python Support - Refactor #6930: Use Bandersnatch to perform package metadata fetching and filteringMODIFIEDgerrod

Actions

Also available in: Atom PDF