python-gitlab 4.5.0__tar.gz → 4.6.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/CHANGELOG.md +155 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/PKG-INFO +3 -3
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/groups.rst +21 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/iterations.rst +10 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/_version.py +1 -1
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/cli.py +20 -4
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/client.py +2 -2
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/mixins.py +22 -14
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/cli.py +23 -11
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/__init__.py +1 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/artifacts.py +5 -2
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/ci_lint.py +4 -4
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/commits.py +6 -6
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/container_registry.py +2 -2
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/deploy_keys.py +3 -1
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/deployments.py +2 -2
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/environments.py +1 -1
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/files.py +15 -7
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/geo_nodes.py +4 -4
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/groups.py +13 -7
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/integrations.py +3 -1
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/issues.py +6 -4
- python_gitlab-4.6.0/gitlab/v4/objects/iterations.py +53 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/jobs.py +11 -14
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/merge_request_approvals.py +8 -3
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/merge_requests.py +13 -12
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/milestones.py +4 -4
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/namespaces.py +3 -1
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/packages.py +4 -4
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/pipelines.py +4 -4
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/projects.py +21 -18
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/repositories.py +13 -9
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/runners.py +2 -2
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/secure_files.py +1 -1
- python_gitlab-4.6.0/gitlab/v4/objects/service_accounts.py +18 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/sidekiq.py +4 -4
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/snippets.py +3 -3
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/todos.py +2 -2
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/topics.py +2 -2
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/users.py +10 -10
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/pyproject.toml +2 -2
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/python_gitlab.egg-info/PKG-INFO +3 -3
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/python_gitlab.egg-info/SOURCES.txt +1 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/python_gitlab.egg-info/requires.txt +2 -2
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/requirements-lint.txt +5 -5
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/requirements-test.txt +2 -2
- python_gitlab-4.6.0/requirements.txt +2 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_groups.py +9 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/cli/test_cli.py +0 -6
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/fixtures/.env +1 -1
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_groups.py +26 -0
- python_gitlab-4.5.0/gitlab/v4/objects/iterations.py +0 -26
- python_gitlab-4.5.0/requirements.txt +0 -3
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/AUTHORS +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/COPYING +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/MANIFEST.in +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/README.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/Makefile +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/__init__.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/_static/js/gitter.js +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/api/gitlab.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/api/gitlab.v4.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/api-levels.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/api-objects.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/api-usage-advanced.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/api-usage.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/changelog.md +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/cli-examples.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/cli-objects.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/cli-usage.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/conf.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/ext/__init__.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/ext/docstrings.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/ext/manager_tmpl.j2 +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/faq.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/access_requests.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/appearance.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/applications.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/badges.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/boards.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/branches.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/bulk_imports.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/ci_lint.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/clusters.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/commits.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/deploy_keys.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/deploy_tokens.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/deployments.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/discussions.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/draft_notes.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/emojis.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/environments.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/epics.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/events.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/features.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/geo_nodes.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/group_access_tokens.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/invitations.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/issues.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/job_token_scope.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/keys.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/labels.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/merge_request_approvals.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/merge_requests.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/merge_trains.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/messages.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/milestones.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/namespaces.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/notes.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/notifications.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/packages.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/pagesdomains.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/personal_access_tokens.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/pipelines_and_jobs.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/project_access_tokens.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/projects.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/protected_branches.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/protected_environments.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/releases.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/remote_mirrors.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/repositories.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/repository_tags.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/resource_groups.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/runners.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/search.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/secure_files.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/settings.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/sidekiq.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/snippets.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/statistics.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/system_hooks.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/templates.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/todos.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/topics.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/users.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/variables.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/gl_objects/wikis.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/index.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/make.bat +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/docs/release-notes.rst +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/__init__.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/__main__.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/_backends/__init__.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/_backends/protocol.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/_backends/requests_backend.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/base.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/config.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/const.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/exceptions.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/py.typed +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/types.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/utils.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/__init__.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/access_requests.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/appearance.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/applications.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/audit_events.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/award_emojis.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/badges.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/boards.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/branches.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/broadcast_messages.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/bulk_imports.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/clusters.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/custom_attributes.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/deploy_tokens.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/discussions.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/draft_notes.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/epics.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/events.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/export_import.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/features.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/group_access_tokens.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/hooks.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/invitations.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/job_token_scope.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/keys.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/labels.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/ldap.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/members.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/merge_trains.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/notes.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/notification_settings.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/pages.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/personal_access_tokens.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/project_access_tokens.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/push_rules.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/releases.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/resource_groups.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/reviewers.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/settings.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/statistics.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/tags.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/templates.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/triggers.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/variables.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/gitlab/v4/objects/wikis.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/python_gitlab.egg-info/dependency_links.txt +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/python_gitlab.egg-info/entry_points.txt +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/python_gitlab.egg-info/top_level.txt +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/requirements-docker.txt +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/requirements-docs.txt +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/requirements-precommit.txt +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/setup.cfg +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/__init__.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/conftest.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/__init__.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/__init__.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_boards.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_branches.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_bulk_imports.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_current_user.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_deploy_keys.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_deploy_tokens.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_epics.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_gitlab.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_import_export.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_issues.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_keys.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_lazy_objects.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_merge_requests.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_packages.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_project_job_token_scope.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_projects.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_push_rules.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_releases.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_repository.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_services.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_snippets.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_statistics.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_topics.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_users.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_variables.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/api/test_wikis.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/cli/__init__.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/cli/conftest.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/cli/test_cli_artifacts.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/cli/test_cli_packages.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/cli/test_cli_projects.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/cli/test_cli_repository.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/cli/test_cli_resource_access_tokens.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/cli/test_cli_users.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/cli/test_cli_v4.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/cli/test_cli_variables.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/conftest.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/ee-test.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/fixtures/__init__.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/fixtures/avatar.png +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/fixtures/create_license.rb +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/fixtures/docker-compose.yml +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/fixtures/docker.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/fixtures/invalid_auth.cfg +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/fixtures/invalid_version.cfg +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/fixtures/set_token.rb +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/functional/helpers.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/install/test_install.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/smoke/__init__.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/smoke/test_dists.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/__init__.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/_backends/__init__.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/_backends/test_requests_backend.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/base/test_rest_manager.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/base/test_rest_object.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/conftest.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/helpers.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/meta/__init__.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/meta/test_ensure_type_hints.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/meta/test_imports.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/meta/test_mro.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/mixins/__init__.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/mixins/test_meta_mixins.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/mixins/test_mixin_methods.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/mixins/test_object_mixins_attributes.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/__init__.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/conftest.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_appearance.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_applications.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_audit_events.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_badges.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_bridges.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_bulk_imports.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_ci_lint.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_commits.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_deploy_tokens.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_deployments.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_draft_notes.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_environments.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_group_access_tokens.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_hooks.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_invitations.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_issues.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_iterations.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_job_artifacts.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_job_token_scope.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_jobs.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_keys.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_members.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_merge_request_pipelines.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_merge_requests.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_merge_trains.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_packages.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_personal_access_tokens.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_pipeline_schedules.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_pipelines.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_project_access_tokens.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_project_import_export.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_project_merge_request_approvals.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_project_statistics.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_projects.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_registry_repositories.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_releases.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_remote_mirrors.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_repositories.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_resource_groups.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_resource_iteration_events.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_resource_label_events.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_resource_milestone_events.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_resource_state_events.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_runners.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_secure_files.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_services.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_snippets.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_statistics.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_submodules.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_todos.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_topics.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_users.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/objects/test_variables.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/test_cli.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/test_config.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/test_exceptions.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/test_gitlab.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/test_gitlab_auth.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/test_gitlab_http_methods.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/test_types.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tests/unit/test_utils.py +0 -0
- {python_gitlab-4.5.0 → python_gitlab-4.6.0}/tox.ini +0 -0
@@ -2,6 +2,161 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
+
## v4.6.0 (2024-05-28)
|
6
|
+
|
7
|
+
### Chore
|
8
|
+
|
9
|
+
* chore(deps): update python-semantic-release/upload-to-gh-release digest to 673709c ([`1b550ac`](https://github.com/python-gitlab/python-gitlab/commit/1b550ac706c8c31331a7a9dac607aed49f5e1fcf))
|
10
|
+
|
11
|
+
* chore(deps): update all non-major dependencies ([`4c7014c`](https://github.com/python-gitlab/python-gitlab/commit/4c7014c13ed63f994e05b498d63b93dc8ab90c2e))
|
12
|
+
|
13
|
+
* chore: update commit reference in git-blame-ignore-revs ([`d0fd5ad`](https://github.com/python-gitlab/python-gitlab/commit/d0fd5ad5a70e7eb70aedba5a0d3082418c5ffa34))
|
14
|
+
|
15
|
+
* chore(cli): add ability to not add `_id_attr` as an argument
|
16
|
+
|
17
|
+
In some cases we don't want to have `_id_attr` as an argument.
|
18
|
+
|
19
|
+
Add ability to have it not be added as an argument. ([`2037352`](https://github.com/python-gitlab/python-gitlab/commit/20373525c1a1f98c18b953dbef896b2570d3d191))
|
20
|
+
|
21
|
+
* chore: create a CustomAction dataclass ([`61d8679`](https://github.com/python-gitlab/python-gitlab/commit/61d867925772cf38f20360c9b40140ac3203efb9))
|
22
|
+
|
23
|
+
* chore: add an initial .git-blame-ignore-revs
|
24
|
+
|
25
|
+
This adds the `.git-blame-ignore-revs` file which allows ignoring
|
26
|
+
certain commits when doing a `git blame --ignore-revs`
|
27
|
+
|
28
|
+
Ignore the commit that requires keyword arguments for
|
29
|
+
`register_custom_action()`
|
30
|
+
|
31
|
+
https://docs.github.com/en/repositories/working-with-files/using-files/viewing-a-file#ignore-commits-in-the-blame-view ([`74db84c`](https://github.com/python-gitlab/python-gitlab/commit/74db84ca878ec7029643ff7b00db55f9ea085e9b))
|
32
|
+
|
33
|
+
* chore: require keyword arguments for register_custom_action
|
34
|
+
|
35
|
+
This makes it more obvious when reading the code what each argument is
|
36
|
+
for. ([`7270523`](https://github.com/python-gitlab/python-gitlab/commit/7270523ad89a463c3542e072df73ba2255a49406))
|
37
|
+
|
38
|
+
* chore: remove typing-extensions from requirements.txt
|
39
|
+
|
40
|
+
We no longer support Python versions before 3.8. So it isn't needed
|
41
|
+
anymore. ([`d569128`](https://github.com/python-gitlab/python-gitlab/commit/d56912835360a1b5a03a20390fb45cb5e8b49ce4))
|
42
|
+
|
43
|
+
* chore(deps): update dependency requests to v2.32.0 [security] ([`1bc788c`](https://github.com/python-gitlab/python-gitlab/commit/1bc788ca979a36eeff2e35241bdefc764cf335ce))
|
44
|
+
|
45
|
+
* chore(deps): update all non-major dependencies ([`ba1eec4`](https://github.com/python-gitlab/python-gitlab/commit/ba1eec49556ee022de471aae8d15060189f816e3))
|
46
|
+
|
47
|
+
* chore(deps): update gitlab/gitlab-ee docker tag to v17 ([`5070d07`](https://github.com/python-gitlab/python-gitlab/commit/5070d07d13b9c87588dbfde3750340e322118779))
|
48
|
+
|
49
|
+
* chore(cli): on the CLI help show the API endpoint of resources
|
50
|
+
|
51
|
+
This makes it easier for people to map CLI command names to the API.
|
52
|
+
|
53
|
+
Looks like this:
|
54
|
+
$ gitlab --help
|
55
|
+
<snip>
|
56
|
+
The GitLab resource to manipulate.
|
57
|
+
application API endpoint: /applications
|
58
|
+
application-appearance
|
59
|
+
API endpoint: /application/appearance
|
60
|
+
application-settings
|
61
|
+
API endpoint: /application/settings
|
62
|
+
application-statistics
|
63
|
+
API endpoint: /application/statistics
|
64
|
+
<snip> ([`f1ef565`](https://github.com/python-gitlab/python-gitlab/commit/f1ef5650c3201f3883eb04ad90a874e8adcbcde2))
|
65
|
+
|
66
|
+
* chore(cli): add some simple help for the standard operations
|
67
|
+
|
68
|
+
Add help for the following standard operations:
|
69
|
+
* list: List the GitLab resources
|
70
|
+
* get: Get a GitLab resource
|
71
|
+
* create: Create a GitLab resource
|
72
|
+
* update: Update a GitLab resource
|
73
|
+
* delete: Delete a GitLab resource
|
74
|
+
|
75
|
+
For example:
|
76
|
+
$ gitlab project-key --help
|
77
|
+
usage: gitlab project-key [-h] {list,get,create,update,delete,enable} ...
|
78
|
+
|
79
|
+
options:
|
80
|
+
-h, --help show this help message and exit
|
81
|
+
|
82
|
+
action:
|
83
|
+
list
|
84
|
+
get
|
85
|
+
create
|
86
|
+
update
|
87
|
+
delete
|
88
|
+
enable
|
89
|
+
Action to execute on the GitLab resource.
|
90
|
+
list List the GitLab resources
|
91
|
+
get Get a GitLab resource
|
92
|
+
create Create a GitLab resource
|
93
|
+
update Update a GitLab resource
|
94
|
+
delete Delete a GitLab resource ([`5a4a940`](https://github.com/python-gitlab/python-gitlab/commit/5a4a940f42e43ed066838503638fe612813e504f))
|
95
|
+
|
96
|
+
* chore: correct type-hint for `job.trace()`
|
97
|
+
|
98
|
+
Closes: #2808 ([`840572e`](https://github.com/python-gitlab/python-gitlab/commit/840572e4fa36581405b604a985d0e130fe43f4ce))
|
99
|
+
|
100
|
+
* chore: add type info for ProjectFile.content
|
101
|
+
|
102
|
+
Closes: #2821 ([`62fa271`](https://github.com/python-gitlab/python-gitlab/commit/62fa2719ea129b3428e5e67d3d3a493f9aead863))
|
103
|
+
|
104
|
+
### Feature
|
105
|
+
|
106
|
+
* feat(api): add additional parameter to project/group iteration search (#2796)
|
107
|
+
|
108
|
+
Co-authored-by: Cristiano Casella <cristiano.casella@seacom.it>
|
109
|
+
Co-authored-by: Nejc Habjan <hab.nejc@gmail.com> ([`623dac9`](https://github.com/python-gitlab/python-gitlab/commit/623dac9c8363c61dbf53f72af58835743e96656b))
|
110
|
+
|
111
|
+
* feat(api): add support for gitlab service account (#2851)
|
112
|
+
|
113
|
+
|
114
|
+
Co-authored-by: Nejc Habjan <hab.nejc@siemens.com> ([`b187dea`](https://github.com/python-gitlab/python-gitlab/commit/b187deadabbfdf0326ecd79a3ee64c9de10c53e0))
|
115
|
+
|
116
|
+
* feat: more usernames support for MR approvals
|
117
|
+
|
118
|
+
I don't think commit a2b8c8ccfb5d went far enough to enable usernames
|
119
|
+
support. We create and edit a lot of approval rules based on an external
|
120
|
+
service (similar to CODE_OWNERS), but only have the usernames available,
|
121
|
+
and currently, have to look up each user to get their user ID to populate
|
122
|
+
user_ids for .set_approvers() calls. Would very much like to skip the
|
123
|
+
lookup and just send the usernames, which this change should allow.
|
124
|
+
|
125
|
+
See: https://docs.gitlab.com/ee/api/merge_request_approvals.html#create-project-level-rule
|
126
|
+
|
127
|
+
Signed-off-by: Jarod Wilson <jarod@redhat.com> ([`12d195a`](https://github.com/python-gitlab/python-gitlab/commit/12d195a35a1bd14947fbd6688a8ad1bd3fc21617))
|
128
|
+
|
129
|
+
### Fix
|
130
|
+
|
131
|
+
* fix(deps): update minimum dependency versions in pyproject.toml
|
132
|
+
|
133
|
+
Update the minimum versions of the dependencies in the pyproject.toml
|
134
|
+
file.
|
135
|
+
|
136
|
+
This is related to PR #2878 ([`37b5a70`](https://github.com/python-gitlab/python-gitlab/commit/37b5a704ef6b94774e54110ba3746a950e733986))
|
137
|
+
|
138
|
+
* fix(cli): don't require `--id` when enabling a deploy key
|
139
|
+
|
140
|
+
No longer require `--id` when doing:
|
141
|
+
gitlab project-key enable
|
142
|
+
|
143
|
+
Now only the --project-id and --key-id are required. ([`98fc578`](https://github.com/python-gitlab/python-gitlab/commit/98fc5789d39b81197351660b7a3f18903c2b91ba))
|
144
|
+
|
145
|
+
* fix: don't raise `RedirectError` for redirected `HEAD` requests ([`8fc13b9`](https://github.com/python-gitlab/python-gitlab/commit/8fc13b91d63d57c704d03b98920522a6469c96d7))
|
146
|
+
|
147
|
+
* fix: handle large number of approval rules
|
148
|
+
|
149
|
+
Use `iterator=True` when going through the list of current approval
|
150
|
+
rules. This allows it to handle more than the default of 20 approval
|
151
|
+
rules.
|
152
|
+
|
153
|
+
Closes: #2825 ([`ef8f0e1`](https://github.com/python-gitlab/python-gitlab/commit/ef8f0e190b1add3bbba9a7b194aba2f3c1a83b2e))
|
154
|
+
|
155
|
+
* fix(projects): fix 'import_project' file argument type for typings
|
156
|
+
|
157
|
+
Signed-off-by: Adrian DC <radian.dc@gmail.com> ([`33fbc14`](https://github.com/python-gitlab/python-gitlab/commit/33fbc14ea8432df7e637462379e567f4d0ad6c18))
|
158
|
+
|
159
|
+
|
5
160
|
## v4.5.0 (2024-05-13)
|
6
161
|
|
7
162
|
### Build
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: python-gitlab
|
3
|
-
Version: 4.
|
3
|
+
Version: 4.6.0
|
4
4
|
Summary: A python wrapper for the GitLab API
|
5
5
|
Author-email: Gauvain Pocentek <gauvain@pocentek.net>
|
6
6
|
Maintainer-email: John Villalovos <john@sodarock.com>, Max Wittig <max.wittig@siemens.com>, Nejc Habjan <nejc.habjan@siemens.com>, Roger Meier <r.meier@siemens.com>
|
@@ -28,8 +28,8 @@ Requires-Python: >=3.8.0
|
|
28
28
|
Description-Content-Type: text/x-rst
|
29
29
|
License-File: COPYING
|
30
30
|
License-File: AUTHORS
|
31
|
-
Requires-Dist: requests>=2.
|
32
|
-
Requires-Dist: requests-toolbelt>=0.
|
31
|
+
Requires-Dist: requests>=2.32.0
|
32
|
+
Requires-Dist: requests-toolbelt>=1.0.0
|
33
33
|
Provides-Extra: autocompletion
|
34
34
|
Requires-Dist: argcomplete<3,>=1.10.0; extra == "autocompletion"
|
35
35
|
Provides-Extra: yaml
|
@@ -458,3 +458,24 @@ Edit group push rules::
|
|
458
458
|
Delete group push rules::
|
459
459
|
|
460
460
|
pr.delete()
|
461
|
+
|
462
|
+
Group Service Account
|
463
|
+
=====================
|
464
|
+
|
465
|
+
Reference
|
466
|
+
---------
|
467
|
+
|
468
|
+
* v4 API:
|
469
|
+
|
470
|
+
+ :class:`gitlab.v4.objects.GroupServiceAccount`
|
471
|
+
+ :class:`gitlab.v4.objects.GroupServiceAccountManager`
|
472
|
+
+ :attr:`gitlab.v4.objects.Group.serviceaccounts`
|
473
|
+
|
474
|
+
* GitLab API: https://docs.gitlab.com/ee/api/groups.html#service-accounts
|
475
|
+
|
476
|
+
Examples
|
477
|
+
---------
|
478
|
+
|
479
|
+
Create group service account (only allowed at top level group)::
|
480
|
+
|
481
|
+
group.serviceaccount.create({'name': 'group-service-account', 'username': 'group-service-account'})
|
@@ -31,3 +31,13 @@ List iterations for a project's ancestor groups::
|
|
31
31
|
List iterations for a group::
|
32
32
|
|
33
33
|
iterations = group.iterations.list()
|
34
|
+
|
35
|
+
Unavailable filters or keyword conflicts::
|
36
|
+
|
37
|
+
In case you are trying to pass a parameter that collides with a python
|
38
|
+
keyword (i.e. `in`) or with python-gitlab's internal arguments, you'll have
|
39
|
+
to use the `query_parameters` argument:
|
40
|
+
|
41
|
+
```
|
42
|
+
group.iterations.list(query_parameters={"in": "title"})
|
43
|
+
```
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import argparse
|
2
|
+
import dataclasses
|
2
3
|
import functools
|
3
4
|
import os
|
4
5
|
import pathlib
|
@@ -29,12 +30,21 @@ from gitlab.base import RESTObject
|
|
29
30
|
camel_upperlower_regex = re.compile(r"([A-Z]+)([A-Z][a-z])")
|
30
31
|
camel_lowerupper_regex = re.compile(r"([a-z\d])([A-Z])")
|
31
32
|
|
33
|
+
|
34
|
+
@dataclasses.dataclass
|
35
|
+
class CustomAction:
|
36
|
+
required: Tuple[str, ...]
|
37
|
+
optional: Tuple[str, ...]
|
38
|
+
in_object: bool
|
39
|
+
requires_id: bool # if the `_id_attr` value should be a required argument
|
40
|
+
|
41
|
+
|
32
42
|
# custom_actions = {
|
33
43
|
# cls: {
|
34
44
|
# action: (mandatory_args, optional_args, in_obj),
|
35
45
|
# },
|
36
46
|
# }
|
37
|
-
custom_actions: Dict[str, Dict[str,
|
47
|
+
custom_actions: Dict[str, Dict[str, CustomAction]] = {}
|
38
48
|
|
39
49
|
|
40
50
|
# For an explanation of how these type-hints work see:
|
@@ -72,10 +82,12 @@ class VerticalHelpFormatter(argparse.HelpFormatter):
|
|
72
82
|
|
73
83
|
|
74
84
|
def register_custom_action(
|
85
|
+
*,
|
75
86
|
cls_names: Union[str, Tuple[str, ...]],
|
76
|
-
|
87
|
+
required: Tuple[str, ...] = (),
|
77
88
|
optional: Tuple[str, ...] = (),
|
78
89
|
custom_action: Optional[str] = None,
|
90
|
+
requires_id: bool = True, # if the `_id_attr` value should be a required argument
|
79
91
|
) -> Callable[[__F], __F]:
|
80
92
|
def wrap(f: __F) -> __F:
|
81
93
|
@functools.wraps(f)
|
@@ -98,7 +110,12 @@ def register_custom_action(
|
|
98
110
|
custom_actions[final_name] = {}
|
99
111
|
|
100
112
|
action = custom_action or f.__name__.replace("_", "-")
|
101
|
-
custom_actions[final_name][action] = (
|
113
|
+
custom_actions[final_name][action] = CustomAction(
|
114
|
+
required=required,
|
115
|
+
optional=optional,
|
116
|
+
in_object=in_obj,
|
117
|
+
requires_id=requires_id,
|
118
|
+
)
|
102
119
|
|
103
120
|
return cast(__F, wrapped_f)
|
104
121
|
|
@@ -134,7 +151,6 @@ def _get_base_parser(add_help: bool = True) -> argparse.ArgumentParser:
|
|
134
151
|
parser = argparse.ArgumentParser(
|
135
152
|
add_help=add_help,
|
136
153
|
description="GitLab API Command Line Interface",
|
137
|
-
formatter_class=VerticalHelpFormatter,
|
138
154
|
allow_abbrev=False,
|
139
155
|
)
|
140
156
|
parser.add_argument("--version", help="Display the version.", action="store_true")
|
@@ -625,8 +625,8 @@ class Gitlab:
|
|
625
625
|
for item in result.history:
|
626
626
|
if item.status_code not in (301, 302):
|
627
627
|
continue
|
628
|
-
# GET methods can be redirected without issue
|
629
|
-
if item.request.method
|
628
|
+
# GET and HEAD methods can be redirected without issue
|
629
|
+
if item.request.method in ("GET", "HEAD"):
|
630
630
|
continue
|
631
631
|
target = item.headers.get("location")
|
632
632
|
raise gitlab.exceptions.RedirectError(
|
@@ -550,7 +550,7 @@ class UserAgentDetailMixin(_RestObjectBase):
|
|
550
550
|
_updated_attrs: Dict[str, Any]
|
551
551
|
manager: base.RESTManager
|
552
552
|
|
553
|
-
@cli.register_custom_action(("Snippet", "ProjectSnippet", "ProjectIssue"))
|
553
|
+
@cli.register_custom_action(cls_names=("Snippet", "ProjectSnippet", "ProjectIssue"))
|
554
554
|
@exc.on_http_error(exc.GitlabGetError)
|
555
555
|
def user_agent_detail(self, **kwargs: Any) -> Dict[str, Any]:
|
556
556
|
"""Get the user agent detail.
|
@@ -578,7 +578,8 @@ class AccessRequestMixin(_RestObjectBase):
|
|
578
578
|
manager: base.RESTManager
|
579
579
|
|
580
580
|
@cli.register_custom_action(
|
581
|
-
("ProjectAccessRequest", "GroupAccessRequest"),
|
581
|
+
cls_names=("ProjectAccessRequest", "GroupAccessRequest"),
|
582
|
+
optional=("access_level",),
|
582
583
|
)
|
583
584
|
@exc.on_http_error(exc.GitlabUpdateError)
|
584
585
|
def approve(
|
@@ -611,7 +612,7 @@ class DownloadMixin(_RestObjectBase):
|
|
611
612
|
_updated_attrs: Dict[str, Any]
|
612
613
|
manager: base.RESTManager
|
613
614
|
|
614
|
-
@cli.register_custom_action(("GroupExport", "ProjectExport"))
|
615
|
+
@cli.register_custom_action(cls_names=("GroupExport", "ProjectExport"))
|
615
616
|
@exc.on_http_error(exc.GitlabGetError)
|
616
617
|
def download(
|
617
618
|
self,
|
@@ -721,7 +722,7 @@ class SubscribableMixin(_RestObjectBase):
|
|
721
722
|
manager: base.RESTManager
|
722
723
|
|
723
724
|
@cli.register_custom_action(
|
724
|
-
("ProjectIssue", "ProjectMergeRequest", "ProjectLabel", "GroupLabel")
|
725
|
+
cls_names=("ProjectIssue", "ProjectMergeRequest", "ProjectLabel", "GroupLabel")
|
725
726
|
)
|
726
727
|
@exc.on_http_error(exc.GitlabSubscribeError)
|
727
728
|
def subscribe(self, **kwargs: Any) -> None:
|
@@ -741,7 +742,7 @@ class SubscribableMixin(_RestObjectBase):
|
|
741
742
|
self._update_attrs(server_data)
|
742
743
|
|
743
744
|
@cli.register_custom_action(
|
744
|
-
("ProjectIssue", "ProjectMergeRequest", "ProjectLabel", "GroupLabel")
|
745
|
+
cls_names=("ProjectIssue", "ProjectMergeRequest", "ProjectLabel", "GroupLabel")
|
745
746
|
)
|
746
747
|
@exc.on_http_error(exc.GitlabUnsubscribeError)
|
747
748
|
def unsubscribe(self, **kwargs: Any) -> None:
|
@@ -769,7 +770,7 @@ class TodoMixin(_RestObjectBase):
|
|
769
770
|
_updated_attrs: Dict[str, Any]
|
770
771
|
manager: base.RESTManager
|
771
772
|
|
772
|
-
@cli.register_custom_action(("ProjectIssue", "ProjectMergeRequest"))
|
773
|
+
@cli.register_custom_action(cls_names=("ProjectIssue", "ProjectMergeRequest"))
|
773
774
|
@exc.on_http_error(exc.GitlabTodoError)
|
774
775
|
def todo(self, **kwargs: Any) -> None:
|
775
776
|
"""Create a todo associated to the object.
|
@@ -793,7 +794,7 @@ class TimeTrackingMixin(_RestObjectBase):
|
|
793
794
|
_updated_attrs: Dict[str, Any]
|
794
795
|
manager: base.RESTManager
|
795
796
|
|
796
|
-
@cli.register_custom_action(("ProjectIssue", "ProjectMergeRequest"))
|
797
|
+
@cli.register_custom_action(cls_names=("ProjectIssue", "ProjectMergeRequest"))
|
797
798
|
@exc.on_http_error(exc.GitlabTimeTrackingError)
|
798
799
|
def time_stats(self, **kwargs: Any) -> Dict[str, Any]:
|
799
800
|
"""Get time stats for the object.
|
@@ -819,7 +820,9 @@ class TimeTrackingMixin(_RestObjectBase):
|
|
819
820
|
assert not isinstance(result, requests.Response)
|
820
821
|
return result
|
821
822
|
|
822
|
-
@cli.register_custom_action(
|
823
|
+
@cli.register_custom_action(
|
824
|
+
cls_names=("ProjectIssue", "ProjectMergeRequest"), required=("duration",)
|
825
|
+
)
|
823
826
|
@exc.on_http_error(exc.GitlabTimeTrackingError)
|
824
827
|
def time_estimate(self, duration: str, **kwargs: Any) -> Dict[str, Any]:
|
825
828
|
"""Set an estimated time of work for the object.
|
@@ -839,7 +842,7 @@ class TimeTrackingMixin(_RestObjectBase):
|
|
839
842
|
assert not isinstance(result, requests.Response)
|
840
843
|
return result
|
841
844
|
|
842
|
-
@cli.register_custom_action(("ProjectIssue", "ProjectMergeRequest"))
|
845
|
+
@cli.register_custom_action(cls_names=("ProjectIssue", "ProjectMergeRequest"))
|
843
846
|
@exc.on_http_error(exc.GitlabTimeTrackingError)
|
844
847
|
def reset_time_estimate(self, **kwargs: Any) -> Dict[str, Any]:
|
845
848
|
"""Resets estimated time for the object to 0 seconds.
|
@@ -857,7 +860,9 @@ class TimeTrackingMixin(_RestObjectBase):
|
|
857
860
|
assert not isinstance(result, requests.Response)
|
858
861
|
return result
|
859
862
|
|
860
|
-
@cli.register_custom_action(
|
863
|
+
@cli.register_custom_action(
|
864
|
+
cls_names=("ProjectIssue", "ProjectMergeRequest"), required=("duration",)
|
865
|
+
)
|
861
866
|
@exc.on_http_error(exc.GitlabTimeTrackingError)
|
862
867
|
def add_spent_time(self, duration: str, **kwargs: Any) -> Dict[str, Any]:
|
863
868
|
"""Add time spent working on the object.
|
@@ -877,7 +882,7 @@ class TimeTrackingMixin(_RestObjectBase):
|
|
877
882
|
assert not isinstance(result, requests.Response)
|
878
883
|
return result
|
879
884
|
|
880
|
-
@cli.register_custom_action(("ProjectIssue", "ProjectMergeRequest"))
|
885
|
+
@cli.register_custom_action(cls_names=("ProjectIssue", "ProjectMergeRequest"))
|
881
886
|
@exc.on_http_error(exc.GitlabTimeTrackingError)
|
882
887
|
def reset_spent_time(self, **kwargs: Any) -> Dict[str, Any]:
|
883
888
|
"""Resets the time spent working on the object.
|
@@ -904,7 +909,7 @@ class ParticipantsMixin(_RestObjectBase):
|
|
904
909
|
_updated_attrs: Dict[str, Any]
|
905
910
|
manager: base.RESTManager
|
906
911
|
|
907
|
-
@cli.register_custom_action(("ProjectMergeRequest", "ProjectIssue"))
|
912
|
+
@cli.register_custom_action(cls_names=("ProjectMergeRequest", "ProjectIssue"))
|
908
913
|
@exc.on_http_error(exc.GitlabListError)
|
909
914
|
def participants(self, **kwargs: Any) -> Dict[str, Any]:
|
910
915
|
"""List the participants.
|
@@ -932,7 +937,8 @@ class ParticipantsMixin(_RestObjectBase):
|
|
932
937
|
|
933
938
|
class BadgeRenderMixin(_RestManagerBase):
|
934
939
|
@cli.register_custom_action(
|
935
|
-
("GroupBadgeManager", "ProjectBadgeManager"),
|
940
|
+
cls_names=("GroupBadgeManager", "ProjectBadgeManager"),
|
941
|
+
required=("link_url", "image_url"),
|
936
942
|
)
|
937
943
|
@exc.on_http_error(exc.GitlabRenderError)
|
938
944
|
def render(self, link_url: str, image_url: str, **kwargs: Any) -> Dict[str, Any]:
|
@@ -1025,7 +1031,9 @@ class UploadMixin(_RestObjectBase):
|
|
1025
1031
|
data = self.attributes
|
1026
1032
|
return self._upload_path.format(**data)
|
1027
1033
|
|
1028
|
-
@cli.register_custom_action(
|
1034
|
+
@cli.register_custom_action(
|
1035
|
+
cls_names=("Project", "ProjectWiki"), required=("filename", "filepath")
|
1036
|
+
)
|
1029
1037
|
@exc.on_http_error(exc.GitlabUploadError)
|
1030
1038
|
def upload(
|
1031
1039
|
self,
|
@@ -82,7 +82,7 @@ class GitlabCLI:
|
|
82
82
|
|
83
83
|
def do_custom(self) -> Any:
|
84
84
|
class_instance: Union[gitlab.base.RESTManager, gitlab.base.RESTObject]
|
85
|
-
in_obj = cli.custom_actions[self.cls_name][self.resource_action]
|
85
|
+
in_obj = cli.custom_actions[self.cls_name][self.resource_action].in_object
|
86
86
|
|
87
87
|
# Get the object (lazy), then act
|
88
88
|
if in_obj:
|
@@ -207,12 +207,20 @@ def _populate_sub_parser_by_class(
|
|
207
207
|
mgr_cls = getattr(gitlab.v4.objects, mgr_cls_name)
|
208
208
|
|
209
209
|
action_parsers: Dict[str, argparse.ArgumentParser] = {}
|
210
|
-
for action_name in [
|
210
|
+
for action_name, help_text in [
|
211
|
+
("list", "List the GitLab resources"),
|
212
|
+
("get", "Get a GitLab resource"),
|
213
|
+
("create", "Create a GitLab resource"),
|
214
|
+
("update", "Update a GitLab resource"),
|
215
|
+
("delete", "Delete a GitLab resource"),
|
216
|
+
]:
|
211
217
|
if not hasattr(mgr_cls, action_name):
|
212
218
|
continue
|
213
219
|
|
214
220
|
sub_parser_action = sub_parser.add_parser(
|
215
|
-
action_name,
|
221
|
+
action_name,
|
222
|
+
conflict_handler="resolve",
|
223
|
+
help=help_text,
|
216
224
|
)
|
217
225
|
action_parsers[action_name] = sub_parser_action
|
218
226
|
sub_parser_action.add_argument("--sudo", required=False)
|
@@ -307,19 +315,19 @@ def _populate_sub_parser_by_class(
|
|
307
315
|
)
|
308
316
|
sub_parser_action.add_argument("--sudo", required=False)
|
309
317
|
|
318
|
+
custom_action = cli.custom_actions[name][action_name]
|
310
319
|
# We need to get the object somehow
|
311
320
|
if not issubclass(cls, gitlab.mixins.GetWithoutIdMixin):
|
312
|
-
if cls._id_attr is not None:
|
321
|
+
if cls._id_attr is not None and custom_action.requires_id:
|
313
322
|
id_attr = cls._id_attr.replace("_", "-")
|
314
323
|
sub_parser_action.add_argument(f"--{id_attr}", required=True)
|
315
324
|
|
316
|
-
|
317
|
-
for x in required:
|
325
|
+
for x in custom_action.required:
|
318
326
|
if x != cls._id_attr:
|
319
327
|
sub_parser_action.add_argument(
|
320
328
|
f"--{x.replace('_', '-')}", required=True
|
321
329
|
)
|
322
|
-
for x in optional:
|
330
|
+
for x in custom_action.optional:
|
323
331
|
if x != cls._id_attr:
|
324
332
|
sub_parser_action.add_argument(
|
325
333
|
f"--{x.replace('_', '-')}", required=False
|
@@ -342,13 +350,13 @@ def _populate_sub_parser_by_class(
|
|
342
350
|
)
|
343
351
|
sub_parser_action.add_argument("--sudo", required=False)
|
344
352
|
|
345
|
-
|
346
|
-
for x in required:
|
353
|
+
custom_action = cli.custom_actions[name][action_name]
|
354
|
+
for x in custom_action.required:
|
347
355
|
if x != cls._id_attr:
|
348
356
|
sub_parser_action.add_argument(
|
349
357
|
f"--{x.replace('_', '-')}", required=True
|
350
358
|
)
|
351
|
-
for x in optional:
|
359
|
+
for x in custom_action.optional:
|
352
360
|
if x != cls._id_attr:
|
353
361
|
sub_parser_action.add_argument(
|
354
362
|
f"--{x.replace('_', '-')}", required=False
|
@@ -374,8 +382,12 @@ def extend_parser(parser: argparse.ArgumentParser) -> argparse.ArgumentParser:
|
|
374
382
|
|
375
383
|
for cls in sorted(classes, key=operator.attrgetter("__name__")):
|
376
384
|
arg_name = cli.cls_to_gitlab_resource(cls)
|
385
|
+
mgr_cls_name = f"{cls.__name__}Manager"
|
386
|
+
mgr_cls = getattr(gitlab.v4.objects, mgr_cls_name)
|
377
387
|
object_group = subparsers.add_parser(
|
378
|
-
arg_name,
|
388
|
+
arg_name,
|
389
|
+
formatter_class=cli.VerticalHelpFormatter,
|
390
|
+
help=f"API endpoint: {mgr_cls._path}",
|
379
391
|
)
|
380
392
|
|
381
393
|
object_subparsers = object_group.add_subparsers(
|
@@ -44,7 +44,9 @@ class ProjectArtifactManager(RESTManager):
|
|
44
44
|
self.gitlab.http_delete(path, **kwargs)
|
45
45
|
|
46
46
|
@cli.register_custom_action(
|
47
|
-
"ProjectArtifactManager",
|
47
|
+
cls_names="ProjectArtifactManager",
|
48
|
+
required=("ref_name", "job"),
|
49
|
+
optional=("job_token",),
|
48
50
|
)
|
49
51
|
@exc.on_http_error(exc.GitlabGetError)
|
50
52
|
def download(
|
@@ -93,7 +95,8 @@ class ProjectArtifactManager(RESTManager):
|
|
93
95
|
)
|
94
96
|
|
95
97
|
@cli.register_custom_action(
|
96
|
-
"ProjectArtifactManager",
|
98
|
+
cls_names="ProjectArtifactManager",
|
99
|
+
required=("ref_name", "artifact_path", "job"),
|
97
100
|
)
|
98
101
|
@exc.on_http_error(exc.GitlabGetError)
|
99
102
|
def raw(
|
@@ -31,8 +31,8 @@ class CiLintManager(CreateMixin, RESTManager):
|
|
31
31
|
)
|
32
32
|
|
33
33
|
@register_custom_action(
|
34
|
-
"CiLintManager",
|
35
|
-
("content",),
|
34
|
+
cls_names="CiLintManager",
|
35
|
+
required=("content",),
|
36
36
|
optional=("include_merged_yaml", "include_jobs"),
|
37
37
|
)
|
38
38
|
def validate(self, *args: Any, **kwargs: Any) -> None:
|
@@ -63,8 +63,8 @@ class ProjectCiLintManager(GetWithoutIdMixin, CreateMixin, RESTManager):
|
|
63
63
|
return cast(ProjectCiLint, super().get(**kwargs))
|
64
64
|
|
65
65
|
@register_custom_action(
|
66
|
-
"ProjectCiLintManager",
|
67
|
-
("content",),
|
66
|
+
cls_names="ProjectCiLintManager",
|
67
|
+
required=("content",),
|
68
68
|
optional=("dry_run", "include_jobs", "ref"),
|
69
69
|
)
|
70
70
|
def validate(self, *args: Any, **kwargs: Any) -> None:
|
@@ -28,7 +28,7 @@ class ProjectCommit(RESTObject):
|
|
28
28
|
discussions: ProjectCommitDiscussionManager
|
29
29
|
statuses: "ProjectCommitStatusManager"
|
30
30
|
|
31
|
-
@cli.register_custom_action("ProjectCommit")
|
31
|
+
@cli.register_custom_action(cls_names="ProjectCommit")
|
32
32
|
@exc.on_http_error(exc.GitlabGetError)
|
33
33
|
def diff(self, **kwargs: Any) -> Union[gitlab.GitlabList, List[Dict[str, Any]]]:
|
34
34
|
"""Generate the commit diff.
|
@@ -46,7 +46,7 @@ class ProjectCommit(RESTObject):
|
|
46
46
|
path = f"{self.manager.path}/{self.encoded_id}/diff"
|
47
47
|
return self.manager.gitlab.http_list(path, **kwargs)
|
48
48
|
|
49
|
-
@cli.register_custom_action("ProjectCommit", ("branch",))
|
49
|
+
@cli.register_custom_action(cls_names="ProjectCommit", required=("branch",))
|
50
50
|
@exc.on_http_error(exc.GitlabCherryPickError)
|
51
51
|
def cherry_pick(self, branch: str, **kwargs: Any) -> None:
|
52
52
|
"""Cherry-pick a commit into a branch.
|
@@ -63,7 +63,7 @@ class ProjectCommit(RESTObject):
|
|
63
63
|
post_data = {"branch": branch}
|
64
64
|
self.manager.gitlab.http_post(path, post_data=post_data, **kwargs)
|
65
65
|
|
66
|
-
@cli.register_custom_action("ProjectCommit", optional=("type",))
|
66
|
+
@cli.register_custom_action(cls_names="ProjectCommit", optional=("type",))
|
67
67
|
@exc.on_http_error(exc.GitlabGetError)
|
68
68
|
def refs(
|
69
69
|
self, type: str = "all", **kwargs: Any
|
@@ -85,7 +85,7 @@ class ProjectCommit(RESTObject):
|
|
85
85
|
query_data = {"type": type}
|
86
86
|
return self.manager.gitlab.http_list(path, query_data=query_data, **kwargs)
|
87
87
|
|
88
|
-
@cli.register_custom_action("ProjectCommit")
|
88
|
+
@cli.register_custom_action(cls_names="ProjectCommit")
|
89
89
|
@exc.on_http_error(exc.GitlabGetError)
|
90
90
|
def merge_requests(
|
91
91
|
self, **kwargs: Any
|
@@ -105,7 +105,7 @@ class ProjectCommit(RESTObject):
|
|
105
105
|
path = f"{self.manager.path}/{self.encoded_id}/merge_requests"
|
106
106
|
return self.manager.gitlab.http_list(path, **kwargs)
|
107
107
|
|
108
|
-
@cli.register_custom_action("ProjectCommit", ("branch",))
|
108
|
+
@cli.register_custom_action(cls_names="ProjectCommit", required=("branch",))
|
109
109
|
@exc.on_http_error(exc.GitlabRevertError)
|
110
110
|
def revert(
|
111
111
|
self, branch: str, **kwargs: Any
|
@@ -127,7 +127,7 @@ class ProjectCommit(RESTObject):
|
|
127
127
|
post_data = {"branch": branch}
|
128
128
|
return self.manager.gitlab.http_post(path, post_data=post_data, **kwargs)
|
129
129
|
|
130
|
-
@cli.register_custom_action("ProjectCommit")
|
130
|
+
@cli.register_custom_action(cls_names="ProjectCommit")
|
131
131
|
@exc.on_http_error(exc.GitlabGetError)
|
132
132
|
def signature(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]:
|
133
133
|
"""Get the signature of the commit.
|
@@ -42,8 +42,8 @@ class ProjectRegistryTagManager(DeleteMixin, RetrieveMixin, RESTManager):
|
|
42
42
|
_path = "/projects/{project_id}/registry/repositories/{repository_id}/tags"
|
43
43
|
|
44
44
|
@cli.register_custom_action(
|
45
|
-
"ProjectRegistryTagManager",
|
46
|
-
("name_regex_delete",),
|
45
|
+
cls_names="ProjectRegistryTagManager",
|
46
|
+
required=("name_regex_delete",),
|
47
47
|
optional=("keep_n", "name_regex_keep", "older_than"),
|
48
48
|
)
|
49
49
|
@exc.on_http_error(exc.GitlabDeleteError)
|
@@ -36,7 +36,9 @@ class ProjectKeyManager(CRUDMixin, RESTManager):
|
|
36
36
|
_create_attrs = RequiredOptional(required=("title", "key"), optional=("can_push",))
|
37
37
|
_update_attrs = RequiredOptional(optional=("title", "can_push"))
|
38
38
|
|
39
|
-
@cli.register_custom_action(
|
39
|
+
@cli.register_custom_action(
|
40
|
+
cls_names="ProjectKeyManager", required=("key_id",), requires_id=False
|
41
|
+
)
|
40
42
|
@exc.on_http_error(exc.GitlabProjectDeployKeyError)
|
41
43
|
def enable(
|
42
44
|
self, key_id: int, **kwargs: Any
|
@@ -23,8 +23,8 @@ class ProjectDeployment(SaveMixin, RESTObject):
|
|
23
23
|
mergerequests: ProjectDeploymentMergeRequestManager
|
24
24
|
|
25
25
|
@cli.register_custom_action(
|
26
|
-
"ProjectDeployment",
|
27
|
-
|
26
|
+
cls_names="ProjectDeployment",
|
27
|
+
required=("status",),
|
28
28
|
optional=("comment", "represented_as"),
|
29
29
|
)
|
30
30
|
@exc.on_http_error(exc.GitlabDeploymentApprovalError)
|