Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Generator packages.list(iterator=True) fails to paginate when deleting packages#2271

andreirogov started this conversation inShow and tell
Discussion options

Description of the problem, including code/CLI snippet

Generator for a project packages list does not return the complete list of packages when iterating through them with deletion.

Steps to reproduce:

  1. Upload more than 20 packages (e.g., 21 packages) to the projectCI_PROJECT_ID
  2. Execute the code snippet to try to delete all the uploaded packages:
    import gitlab;from os import environ as envgl = gitlab.Gitlab(url=env['CI_SERVER_URL'], private_token=env['API_TOKEN'])project = gl.projects.get(env['CI_PROJECT_ID'])pkgs = project.packages.list(iterator=True)for pkg in pkgs:    pkg.delete();    print("Deleted package name=", pkg.name, " version=", pkg.version, sep='');

Notes:

  1. According to thedoc, using generatorlist(iterator=True) is the recommended way to iterate through a large number of items.
  2. Returning the complete list withlist(get_all=True) works as expected.
  3. If iterating using generatorlist(iterator=True) without deletion, generator returns the complete list, as expected.

Expected Behavior

Output:

Deleted package name=test version=1.1Deleted package name=test version=1.2Deleted package name=test version=1.3Deleted package name=test version=1.4Deleted package name=test version=1.5Deleted package name=test version=1.6Deleted package name=test version=1.7Deleted package name=test version=1.8Deleted package name=test version=1.9Deleted package name=test version=1.10Deleted package name=test version=1.11Deleted package name=test version=1.12Deleted package name=test version=1.13Deleted package name=test version=1.14Deleted package name=test version=1.15Deleted package name=test version=1.16Deleted package name=test version=1.17Deleted package name=test version=1.18Deleted package name=test version=1.19Deleted package name=test version=1.20Deleted package name=test version=1.21

Actual Behavior

Output:

Deleted package name=test version=1.1Deleted package name=test version=1.2Deleted package name=test version=1.3Deleted package name=test version=1.4Deleted package name=test version=1.5Deleted package name=test version=1.6Deleted package name=test version=1.7Deleted package name=test version=1.8Deleted package name=test version=1.9Deleted package name=test version=1.10Deleted package name=test version=1.11Deleted package name=test version=1.12Deleted package name=test version=1.13Deleted package name=test version=1.14Deleted package name=test version=1.15Deleted package name=test version=1.16Deleted package name=test version=1.17Deleted package name=test version=1.18Deleted package name=test version=1.19Deleted package name=test version=1.20

Specifications

  • python-gitlab version: 3.8.0
  • API version you are using (v3/v4): v4
  • Gitlab server version (or gitlab.com): 14.8.6
You must be logged in to vote

Replies: 3 comments

Comment options

nejch
Sep 5, 2022
Maintainer

In this specific case, I'm not sure I'd recommend using the iterator as the number of items changes while iterating over them, so pagination might not return items properly - a bit like trying to delete dict items while looping over it sometimes isn't safe.

Maybe we can look at the docs again though, thanks for the report!

You must be logged in to vote
0 replies
Comment options

Yes, that's what I thought. I think, though, it'd be useful to note such a case in the docs.

Thanks for the reply!

You must be logged in to vote
0 replies
Comment options

For this case would probably want to usepackages.list(get_all=True) which will retrieve all of the items as a list instead of using an iterator.

You must be logged in to vote
0 replies
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
3 participants
@andreirogov@JohnVillalovos@nejch
Converted from issue

This discussion was converted from issue #2268 on September 09, 2022 20:32.


[8]ページ先頭

©2009-2025 Movatter.jp