Project

Profile

Help

Story #138

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

Added by rbarlow over 5 years ago. Updated 2 months ago.

Status:
NEW
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 filteringMODIFIED

<a title="Actions" class="icon-only icon-actions js-contextmenu" href="#">Actions</a>

History

#1 Updated by rbarlow over 5 years ago

  • Description updated (diff)

Added links to PEP-440 and a reference library to the description.

#2 Updated by amacdona@redhat.com over 4 years ago

  • Related to Story #2041: As a user, I can whitelist packages to sync with standard python syntax added

#3 Updated by amacdona@redhat.com over 2 years ago

  • Tags Pulp 3 added

#4 Updated by bizhang over 2 years ago

  • Related to deleted (Story #2041: As a user, I can whitelist packages to sync with standard python syntax)

#5 Updated by bizhang over 2 years ago

  • Priority changed from Normal to Low

AFAIK no requests has been made for a rolling feature for pulp_python. We will happily accept and merge a PR for this feature, but it is not on the team's priority list. Please reply on this issue if you want to implement this feature and we will gladly help you

#6 Updated by bmbouter over 1 year ago

  • Tags deleted (Pulp 3)

#7 Updated by dalley 5 months ago

  • Related to Refactor #6930: Use Bandersnatch to perform package metadata fetching and filtering added

Please register to edit this issue

Also available in: Atom PDF