python-gitlab 5.3.1__tar.gz → 5.4.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-5.3.1 → python_gitlab-5.4.0}/CHANGELOG.md +143 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/PKG-INFO +2 -2
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/api-objects.rst +1 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/api-usage-advanced.rst +17 -0
- python_gitlab-5.4.0/docs/gl_objects/status_checks.rst +57 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/_version.py +1 -1
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/client.py +5 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/const.py +52 -52
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/mixins.py +35 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/__init__.py +1 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/artifacts.py +91 -1
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/commits.py +7 -2
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/files.py +46 -4
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/issues.py +1 -1
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/jobs.py +114 -1
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/labels.py +2 -2
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/merge_requests.py +2 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/packages.py +44 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/projects.py +40 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/repositories.py +84 -1
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/secure_files.py +44 -1
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/snippets.py +79 -2
- python_gitlab-5.4.0/gitlab/v4/objects/status_checks.py +52 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/python_gitlab.egg-info/PKG-INFO +2 -2
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/python_gitlab.egg-info/SOURCES.txt +4 -0
- python_gitlab-5.4.0/requirements-lint.txt +14 -0
- python_gitlab-5.4.0/requirements-precommit.txt +1 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/requirements-test.txt +6 -6
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/requirements.txt +1 -1
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_gitlab.py +1 -1
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_import_export.py +1 -1
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_projects.py +16 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_repository.py +22 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_snippets.py +4 -1
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/cli/test_cli_artifacts.py +11 -0
- python_gitlab-5.4.0/tests/functional/cli/test_cli_files.py +21 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/conftest.py +4 -2
- python_gitlab-5.4.0/tests/functional/fixtures/.env +4 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/fixtures/docker-compose.yml +1 -1
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_commits.py +25 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_job_artifacts.py +24 -0
- python_gitlab-5.4.0/tests/unit/objects/test_status_checks.py +127 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/test_gitlab_http_methods.py +23 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tox.ini +2 -0
- python_gitlab-5.3.1/requirements-lint.txt +0 -14
- python_gitlab-5.3.1/requirements-precommit.txt +0 -1
- python_gitlab-5.3.1/tests/functional/fixtures/.env +0 -2
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/AUTHORS +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/COPYING +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/MANIFEST.in +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/README.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/Makefile +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/__init__.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/_static/js/gitter.js +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/api/gitlab.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/api/gitlab.v4.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/api-levels.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/api-usage-graphql.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/api-usage.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/changelog.md +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/cli-examples.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/cli-objects.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/cli-usage.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/conf.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/ext/__init__.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/ext/docstrings.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/ext/manager_tmpl.j2 +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/faq.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/access_requests.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/appearance.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/applications.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/badges.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/boards.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/branches.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/bulk_imports.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/ci_lint.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/cluster_agents.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/clusters.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/commits.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/deploy_keys.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/deploy_tokens.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/deployments.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/discussions.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/draft_notes.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/emojis.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/environments.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/epics.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/events.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/features.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/geo_nodes.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/group_access_tokens.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/groups.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/invitations.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/issues.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/iterations.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/job_token_scope.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/keys.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/labels.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/merge_request_approvals.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/merge_requests.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/merge_trains.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/messages.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/milestones.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/namespaces.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/notes.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/notifications.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/packages.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/pagesdomains.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/personal_access_tokens.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/pipelines_and_jobs.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/project_access_tokens.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/projects.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/protected_branches.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/protected_container_repositories.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/protected_environments.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/protected_packages.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/releases.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/remote_mirrors.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/repositories.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/repository_tags.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/resource_groups.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/runners.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/search.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/secure_files.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/settings.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/sidekiq.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/snippets.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/statistics.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/system_hooks.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/templates.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/todos.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/topics.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/users.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/variables.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/gl_objects/wikis.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/index.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/make.bat +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/docs/release-notes.rst +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/__init__.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/__main__.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/_backends/__init__.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/_backends/graphql.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/_backends/protocol.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/_backends/requests_backend.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/base.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/cli.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/config.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/exceptions.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/py.typed +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/types.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/utils.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/__init__.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/cli.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/access_requests.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/appearance.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/applications.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/audit_events.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/award_emojis.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/badges.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/boards.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/branches.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/broadcast_messages.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/bulk_imports.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/ci_lint.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/cluster_agents.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/clusters.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/container_registry.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/custom_attributes.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/deploy_keys.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/deploy_tokens.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/deployments.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/discussions.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/draft_notes.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/environments.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/epics.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/events.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/export_import.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/features.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/geo_nodes.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/group_access_tokens.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/groups.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/hooks.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/integrations.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/invitations.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/iterations.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/job_token_scope.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/keys.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/ldap.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/members.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/merge_request_approvals.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/merge_trains.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/milestones.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/namespaces.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/notes.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/notification_settings.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/package_protection_rules.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/pages.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/personal_access_tokens.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/pipelines.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/project_access_tokens.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/push_rules.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/registry_protection_repository_rules.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/registry_protection_rules.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/releases.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/resource_groups.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/reviewers.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/runners.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/service_accounts.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/settings.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/sidekiq.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/statistics.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/tags.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/templates.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/todos.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/topics.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/triggers.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/users.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/variables.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/gitlab/v4/objects/wikis.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/pyproject.toml +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/python_gitlab.egg-info/dependency_links.txt +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/python_gitlab.egg-info/entry_points.txt +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/python_gitlab.egg-info/requires.txt +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/python_gitlab.egg-info/top_level.txt +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/requirements-docker.txt +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/requirements-docs.txt +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/setup.cfg +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/__init__.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/conftest.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/__init__.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/__init__.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_boards.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_branches.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_bulk_imports.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_current_user.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_deploy_keys.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_deploy_tokens.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_epics.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_graphql.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_groups.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_issues.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_keys.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_lazy_objects.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_merge_requests.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_packages.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_project_job_token_scope.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_push_rules.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_registry.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_releases.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_services.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_statistics.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_topics.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_users.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_variables.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/api/test_wikis.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/cli/__init__.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/cli/conftest.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/cli/test_cli.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/cli/test_cli_packages.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/cli/test_cli_projects.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/cli/test_cli_repository.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/cli/test_cli_resource_access_tokens.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/cli/test_cli_users.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/cli/test_cli_v4.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/cli/test_cli_variables.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/ee-test.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/fixtures/__init__.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/fixtures/avatar.png +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/fixtures/create_license.rb +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/fixtures/docker.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/fixtures/invalid_auth.cfg +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/fixtures/invalid_version.cfg +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/fixtures/set_token.rb +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/functional/helpers.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/install/test_install.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/smoke/__init__.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/smoke/test_dists.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/__init__.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/_backends/__init__.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/_backends/test_requests_backend.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/base/test_rest_manager.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/base/test_rest_object.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/conftest.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/helpers.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/meta/__init__.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/meta/test_ensure_type_hints.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/meta/test_imports.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/meta/test_mro.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/mixins/__init__.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/mixins/test_meta_mixins.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/mixins/test_mixin_methods.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/mixins/test_object_mixins_attributes.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/__init__.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/conftest.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_appearance.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_applications.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_audit_events.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_badges.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_bridges.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_bulk_imports.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_ci_lint.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_cluster_agents.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_deploy_tokens.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_deployments.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_draft_notes.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_environments.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_group_access_tokens.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_groups.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_hooks.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_invitations.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_issues.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_iterations.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_job_token_scope.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_jobs.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_keys.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_members.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_merge_request_pipelines.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_merge_requests.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_merge_trains.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_package_protection_rules.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_packages.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_personal_access_tokens.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_pipeline_schedules.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_pipelines.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_project_access_tokens.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_project_import_export.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_project_merge_request_approvals.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_project_statistics.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_projects.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_registry_protection_rules.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_registry_repositories.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_releases.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_remote_mirrors.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_repositories.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_resource_groups.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_resource_iteration_events.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_resource_label_events.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_resource_milestone_events.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_resource_state_events.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_runners.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_secure_files.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_services.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_snippets.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_statistics.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_submodules.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_templates.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_todos.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_topics.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_users.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/objects/test_variables.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/test_cli.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/test_config.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/test_exceptions.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/test_gitlab.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/test_gitlab_auth.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/test_graphql.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/test_retry.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/test_types.py +0 -0
- {python_gitlab-5.3.1 → python_gitlab-5.4.0}/tests/unit/test_utils.py +0 -0
@@ -1,6 +1,149 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
3
|
|
4
|
+
## v5.4.0 (2025-01-28)
|
5
|
+
|
6
|
+
### Bug Fixes
|
7
|
+
|
8
|
+
- **api**: Make type ignores more specific where possible
|
9
|
+
([`e3cb806`](https://github.com/python-gitlab/python-gitlab/commit/e3cb806dc368af0a495087531ee94892d3f240ce))
|
10
|
+
|
11
|
+
Instead of using absolute ignore `# type: ignore` use a more specific ignores like `# type:
|
12
|
+
ignore[override]`. This might help in the future where a new bug might be introduced and get
|
13
|
+
ignored by a general ignore comment but not a more specific one.
|
14
|
+
|
15
|
+
Signed-off-by: Igor Ponomarev <igor.ponomarev@collabora.com>
|
16
|
+
|
17
|
+
- **api**: Return the new commit when calling cherry_pick
|
18
|
+
([`de29503`](https://github.com/python-gitlab/python-gitlab/commit/de29503262b7626421f3bffeea3ff073e63e3865))
|
19
|
+
|
20
|
+
- **files**: Add optional ref parameter for cli project-file raw (python-gitlab#3032)
|
21
|
+
([`22f03bd`](https://github.com/python-gitlab/python-gitlab/commit/22f03bdc2bac92138225563415f5cf6fa36a5644))
|
22
|
+
|
23
|
+
The ef parameter was removed in python-gitlab v4.8.0. This will add ef back as an optional parameter
|
24
|
+
for the project-file raw cli command.
|
25
|
+
|
26
|
+
### Chores
|
27
|
+
|
28
|
+
- Fix missing space in deprecation message
|
29
|
+
([`ba75c31`](https://github.com/python-gitlab/python-gitlab/commit/ba75c31e4d13927b6a3ab0ce427800d94e5eefb4))
|
30
|
+
|
31
|
+
- Fix pytest deprecation
|
32
|
+
([`95db680`](https://github.com/python-gitlab/python-gitlab/commit/95db680d012d73e7e505ee85db7128050ff0db6e))
|
33
|
+
|
34
|
+
pytest has changed the function argument name to `start_path`
|
35
|
+
|
36
|
+
- Fix warning being generated
|
37
|
+
([`0eb5eb0`](https://github.com/python-gitlab/python-gitlab/commit/0eb5eb0505c5b837a2d767cfa256a25b64ceb48b))
|
38
|
+
|
39
|
+
The CI shows a warning. Use `get_all=False` to resolve issue.
|
40
|
+
|
41
|
+
- Resolve DeprecationWarning message in CI run
|
42
|
+
([`accd5aa`](https://github.com/python-gitlab/python-gitlab/commit/accd5aa757ba5215497c278da50d48f10ea5a258))
|
43
|
+
|
44
|
+
Catch the DeprecationWarning in our test, as we expect it.
|
45
|
+
|
46
|
+
- **ci**: Set a 30 minute timeout for 'functional' tests
|
47
|
+
([`e8d6953`](https://github.com/python-gitlab/python-gitlab/commit/e8d6953ec06dbbd817852207abbbc74eab8a27cf))
|
48
|
+
|
49
|
+
Currently the functional API test takes around 17 minutes to run. And the functional CLI test takes
|
50
|
+
around 12 minutes to run.
|
51
|
+
|
52
|
+
Occasionally a job gets stuck and will sit until the default 360 minutes job timeout occurs.
|
53
|
+
|
54
|
+
Now have a 30 minute timeout for the 'functional' tests.
|
55
|
+
|
56
|
+
- **deps**: Update all non-major dependencies
|
57
|
+
([`939505b`](https://github.com/python-gitlab/python-gitlab/commit/939505b9c143939ba1e52c5cb920d8aa36596e19))
|
58
|
+
|
59
|
+
- **deps**: Update all non-major dependencies
|
60
|
+
([`cbd4263`](https://github.com/python-gitlab/python-gitlab/commit/cbd4263194fcbad9d6c11926862691f8df0dea6d))
|
61
|
+
|
62
|
+
- **deps**: Update gitlab ([#3088](https://github.com/python-gitlab/python-gitlab/pull/3088),
|
63
|
+
[`9214b83`](https://github.com/python-gitlab/python-gitlab/commit/9214b8371652be2371823b6f3d531eeea78364c7))
|
64
|
+
|
65
|
+
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
|
66
|
+
|
67
|
+
- **deps**: Update gitlab/gitlab-ee docker tag to v17.7.1-ee.0
|
68
|
+
([#3082](https://github.com/python-gitlab/python-gitlab/pull/3082),
|
69
|
+
[`1e95944`](https://github.com/python-gitlab/python-gitlab/commit/1e95944119455875bd239752cdf0fe5cc27707ea))
|
70
|
+
|
71
|
+
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
|
72
|
+
|
73
|
+
- **deps**: Update mypy to 1.14 and resolve issues
|
74
|
+
([`671e711`](https://github.com/python-gitlab/python-gitlab/commit/671e711c341d28ae0bc61ccb12d2e986353473fd))
|
75
|
+
|
76
|
+
mypy 1.14 has a change to Enum Membership Semantics:
|
77
|
+
https://mypy.readthedocs.io/en/latest/changelog.html
|
78
|
+
|
79
|
+
Resolve the issues with Enum and typing, and update mypy to 1.14
|
80
|
+
|
81
|
+
- **test**: Prevent 'job_with_artifact' fixture running forever
|
82
|
+
([`e4673d8`](https://github.com/python-gitlab/python-gitlab/commit/e4673d8aeaf97b9ad5d2500e459526b4cf494547))
|
83
|
+
|
84
|
+
Previously the 'job_with_artifact' fixture could run forever. Now give it up to 60 seconds to
|
85
|
+
complete before failing.
|
86
|
+
|
87
|
+
### Continuous Integration
|
88
|
+
|
89
|
+
- Use gitlab-runner:v17.7.1 for the CI
|
90
|
+
([`2dda9dc`](https://github.com/python-gitlab/python-gitlab/commit/2dda9dc149668a99211daaa1981bb1f422c63880))
|
91
|
+
|
92
|
+
The `latest` gitlab-runner image does not have the `gitlab-runner` user and it causes our tests to
|
93
|
+
fail.
|
94
|
+
|
95
|
+
Closes: #3091
|
96
|
+
|
97
|
+
### Features
|
98
|
+
|
99
|
+
- **api**: Add argument that appends extra HTTP headers to a request
|
100
|
+
([`fb07b5c`](https://github.com/python-gitlab/python-gitlab/commit/fb07b5cfe1d986c3a7cd7879b11ecc43c75542b7))
|
101
|
+
|
102
|
+
Currently the only way to manipulate the headers for a request is to use `Gitlab.headers` attribute.
|
103
|
+
However, this makes it very concurrently unsafe because the `Gitlab` object can be shared between
|
104
|
+
multiple requests at the same time.
|
105
|
+
|
106
|
+
Instead add a new keyword argument `extra_headers` which will update the headers dictionary with new
|
107
|
+
values just before the request is sent.
|
108
|
+
|
109
|
+
For example, this can be used to download a part of a artifacts file using the `Range` header:
|
110
|
+
https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests
|
111
|
+
|
112
|
+
Signed-off-by: Igor Ponomarev <igor.ponomarev@collabora.com>
|
113
|
+
|
114
|
+
- **api**: Add support for external status check
|
115
|
+
([`175b355`](https://github.com/python-gitlab/python-gitlab/commit/175b355d84d54a71f15fe3601c5275dc35984b9b))
|
116
|
+
|
117
|
+
- **api**: Narrow down return type of download methods using typing.overload
|
118
|
+
([`44fd9dc`](https://github.com/python-gitlab/python-gitlab/commit/44fd9dc1176a2c5529c45cc3186c0e775026175e))
|
119
|
+
|
120
|
+
Currently the download methods such as `ProjectJob.artifacts` have return type set to
|
121
|
+
`Optional[Union[bytes, Iterator[Any]]]` which means they return either `None` or `bytes` or
|
122
|
+
`Iterator[Any]`.
|
123
|
+
|
124
|
+
However, the actual return type is determined by the passed `streamed` and `iterator` arguments.
|
125
|
+
Using `@typing.overload` decorator it is possible to return a single type based on the passed
|
126
|
+
arguments.
|
127
|
+
|
128
|
+
Add overloads in the following order to all download methods:
|
129
|
+
|
130
|
+
1. If `streamed=False` and `iterator=False` return `bytes`. This is the default argument values
|
131
|
+
therefore it should be first as it will be used to lookup default arguments. 2. If `iterator=True`
|
132
|
+
return `Iterator[Any]`. This can be combined with both `streamed=True` and `streamed=False`. 3. If
|
133
|
+
`streamed=True` and `iterator=False` return `None`. In this case `action` argument can be set to a
|
134
|
+
callable that accepts `bytes`.
|
135
|
+
|
136
|
+
Signed-off-by: Igor Ponomarev <igor.ponomarev@collabora.com>
|
137
|
+
|
138
|
+
- **api**: Narrow down return type of ProjectFileManager.raw using typing.overload
|
139
|
+
([`36d9b24`](https://github.com/python-gitlab/python-gitlab/commit/36d9b24ff27d8df514c1beebd0fff8ad000369b7))
|
140
|
+
|
141
|
+
This is equivalent to the changes in 44fd9dc1176a2c5529c45cc3186c0e775026175e but for
|
142
|
+
`ProjectFileManager.raw` method that I must have missed in the original commit.
|
143
|
+
|
144
|
+
Signed-off-by: Igor Ponomarev <igor.ponomarev@collabora.com>
|
145
|
+
|
146
|
+
|
4
147
|
## v5.3.1 (2025-01-07)
|
5
148
|
|
6
149
|
### Bug Fixes
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.2
|
2
2
|
Name: python-gitlab
|
3
|
-
Version: 5.
|
3
|
+
Version: 5.4.0
|
4
4
|
Summary: The python wrapper for the GitLab REST and GraphQL APIs.
|
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>
|
@@ -211,3 +211,20 @@ on your own, such as for nested API responses and ``Union`` return types. For ex
|
|
211
211
|
|
212
212
|
if TYPE_CHECKING:
|
213
213
|
assert isinstance(license["plan"], str)
|
214
|
+
|
215
|
+
Per request HTTP headers override
|
216
|
+
---------------------------------
|
217
|
+
|
218
|
+
The ``extra_headers`` keyword argument can be used to add and override
|
219
|
+
the HTTP headers for a specific request. For example, it can be used do add ``Range``
|
220
|
+
header to download a part of artifacts archive:
|
221
|
+
|
222
|
+
.. code-block:: python
|
223
|
+
|
224
|
+
import gitlab
|
225
|
+
|
226
|
+
gl = gitlab.Gitlab(url, token)
|
227
|
+
project = gl.projects.get(1)
|
228
|
+
job = project.jobs.get(123)
|
229
|
+
|
230
|
+
artifacts = job.artifacts(extra_headers={"Range": "bytes=0-9"})
|
@@ -0,0 +1,57 @@
|
|
1
|
+
#######################
|
2
|
+
External Status Checks
|
3
|
+
#######################
|
4
|
+
|
5
|
+
Manage external status checks for projects and merge requests.
|
6
|
+
|
7
|
+
|
8
|
+
Project external status checks
|
9
|
+
===============================
|
10
|
+
|
11
|
+
Reference
|
12
|
+
---------
|
13
|
+
|
14
|
+
* v4 API:
|
15
|
+
|
16
|
+
+ :class:`gitlab.v4.objects.ProjectExternalStatusCheck`
|
17
|
+
+ :class:`gitlab.v4.objects.ProjectExternalStatusCheckManager`
|
18
|
+
+ :attr:`gitlab.v4.objects.Project.external_status_checks`
|
19
|
+
|
20
|
+
* GitLab API: https://docs.gitlab.com/ee/api/status_checks.html
|
21
|
+
|
22
|
+
Examples
|
23
|
+
---------
|
24
|
+
|
25
|
+
List external status checks for a project::
|
26
|
+
|
27
|
+
status_checks = project.external_status_checks.list()
|
28
|
+
|
29
|
+
Create an external status check with shared secret::
|
30
|
+
|
31
|
+
status_checks = project.external_status_checks.create({
|
32
|
+
"name": "mr_blocker",
|
33
|
+
"external_url": "https://example.com/mr-status-check",
|
34
|
+
"shared_secret": "secret-string"
|
35
|
+
})
|
36
|
+
|
37
|
+
Create an external status check with shared secret for protected branches::
|
38
|
+
|
39
|
+
protected_branch = project.protectedbranches.get('main')
|
40
|
+
|
41
|
+
status_check = project.external_status_checks.create({
|
42
|
+
"name": "mr_blocker",
|
43
|
+
"external_url": "https://example.com/mr-status-check",
|
44
|
+
"shared_secret": "secret-string",
|
45
|
+
"protected_branch_ids": [protected_branch.id]
|
46
|
+
})
|
47
|
+
|
48
|
+
|
49
|
+
Update an external status check::
|
50
|
+
|
51
|
+
status_check.external_url = "https://example.com/mr-blocker"
|
52
|
+
status_check.save()
|
53
|
+
|
54
|
+
Delete an external status check::
|
55
|
+
|
56
|
+
status_check.delete(status_check_id)
|
57
|
+
|
@@ -654,6 +654,7 @@ class Gitlab:
|
|
654
654
|
obey_rate_limit: bool = True,
|
655
655
|
retry_transient_errors: Optional[bool] = None,
|
656
656
|
max_retries: int = 10,
|
657
|
+
extra_headers: Optional[Dict[str, Any]] = None,
|
657
658
|
**kwargs: Any,
|
658
659
|
) -> requests.Response:
|
659
660
|
"""Make an HTTP request to the Gitlab server.
|
@@ -675,6 +676,7 @@ class Gitlab:
|
|
675
676
|
or 52x responses. Defaults to False.
|
676
677
|
max_retries: Max retries after 429 or transient errors,
|
677
678
|
set to -1 to retry forever. Defaults to 10.
|
679
|
+
extra_headers: Add and override HTTP headers for the request.
|
678
680
|
**kwargs: Extra options to send to the server (e.g. sudo)
|
679
681
|
|
680
682
|
Returns:
|
@@ -721,6 +723,9 @@ class Gitlab:
|
|
721
723
|
send_data = self._backend.prepare_send_data(files, post_data, raw)
|
722
724
|
opts["headers"]["Content-type"] = send_data.content_type
|
723
725
|
|
726
|
+
if extra_headers is not None:
|
727
|
+
opts["headers"].update(extra_headers)
|
728
|
+
|
724
729
|
retry = utils.Retry(
|
725
730
|
max_retries=max_retries,
|
726
731
|
obey_rate_limit=obey_rate_limit,
|
@@ -9,83 +9,83 @@ class GitlabEnum(str, Enum):
|
|
9
9
|
|
10
10
|
# https://gitlab.com/gitlab-org/gitlab/-/blob/e97357824bedf007e75f8782259fe07435b64fbb/lib/gitlab/access.rb#L12-18
|
11
11
|
class AccessLevel(IntEnum):
|
12
|
-
NO_ACCESS
|
13
|
-
MINIMAL_ACCESS
|
14
|
-
GUEST
|
15
|
-
PLANNER
|
16
|
-
REPORTER
|
17
|
-
DEVELOPER
|
18
|
-
MAINTAINER
|
19
|
-
OWNER
|
20
|
-
ADMIN
|
12
|
+
NO_ACCESS = 0
|
13
|
+
MINIMAL_ACCESS = 5
|
14
|
+
GUEST = 10
|
15
|
+
PLANNER = 15
|
16
|
+
REPORTER = 20
|
17
|
+
DEVELOPER = 30
|
18
|
+
MAINTAINER = 40
|
19
|
+
OWNER = 50
|
20
|
+
ADMIN = 60
|
21
21
|
|
22
22
|
|
23
23
|
# https://gitlab.com/gitlab-org/gitlab/-/blob/e97357824bedf007e75f8782259fe07435b64fbb/lib/gitlab/visibility_level.rb#L23-25
|
24
24
|
class Visibility(GitlabEnum):
|
25
|
-
PRIVATE
|
26
|
-
INTERNAL
|
27
|
-
PUBLIC
|
25
|
+
PRIVATE = "private"
|
26
|
+
INTERNAL = "internal"
|
27
|
+
PUBLIC = "public"
|
28
28
|
|
29
29
|
|
30
30
|
class NotificationLevel(GitlabEnum):
|
31
|
-
DISABLED
|
32
|
-
PARTICIPATING
|
33
|
-
WATCH
|
34
|
-
GLOBAL
|
35
|
-
MENTION
|
36
|
-
CUSTOM
|
31
|
+
DISABLED = "disabled"
|
32
|
+
PARTICIPATING = "participating"
|
33
|
+
WATCH = "watch"
|
34
|
+
GLOBAL = "global"
|
35
|
+
MENTION = "mention"
|
36
|
+
CUSTOM = "custom"
|
37
37
|
|
38
38
|
|
39
39
|
# https://gitlab.com/gitlab-org/gitlab/-/blob/e97357824bedf007e75f8782259fe07435b64fbb/app/views/search/_category.html.haml#L10-37
|
40
40
|
class SearchScope(GitlabEnum):
|
41
41
|
# all scopes (global, group and project)
|
42
|
-
PROJECTS
|
43
|
-
ISSUES
|
44
|
-
MERGE_REQUESTS
|
45
|
-
MILESTONES
|
46
|
-
WIKI_BLOBS
|
47
|
-
COMMITS
|
48
|
-
BLOBS
|
49
|
-
USERS
|
42
|
+
PROJECTS = "projects"
|
43
|
+
ISSUES = "issues"
|
44
|
+
MERGE_REQUESTS = "merge_requests"
|
45
|
+
MILESTONES = "milestones"
|
46
|
+
WIKI_BLOBS = "wiki_blobs"
|
47
|
+
COMMITS = "commits"
|
48
|
+
BLOBS = "blobs"
|
49
|
+
USERS = "users"
|
50
50
|
|
51
51
|
# specific global scope
|
52
|
-
GLOBAL_SNIPPET_TITLES
|
52
|
+
GLOBAL_SNIPPET_TITLES = "snippet_titles"
|
53
53
|
|
54
54
|
# specific project scope
|
55
|
-
PROJECT_NOTES
|
55
|
+
PROJECT_NOTES = "notes"
|
56
56
|
|
57
57
|
|
58
58
|
# https://docs.gitlab.com/ee/api/merge_requests.html#merge-status
|
59
59
|
class DetailedMergeStatus(GitlabEnum):
|
60
60
|
# possible values for the detailed_merge_status field of Merge Requests
|
61
|
-
BLOCKED_STATUS
|
62
|
-
BROKEN_STATUS
|
63
|
-
CHECKING
|
64
|
-
UNCHECKED
|
65
|
-
CI_MUST_PASS
|
66
|
-
CI_STILL_RUNNING
|
67
|
-
DISCUSSIONS_NOT_RESOLVED
|
68
|
-
DRAFT_STATUS
|
69
|
-
EXTERNAL_STATUS_CHECKS
|
70
|
-
MERGEABLE
|
71
|
-
NOT_APPROVED
|
72
|
-
NOT_OPEN
|
73
|
-
POLICIES_DENIED
|
61
|
+
BLOCKED_STATUS = "blocked_status"
|
62
|
+
BROKEN_STATUS = "broken_status"
|
63
|
+
CHECKING = "checking"
|
64
|
+
UNCHECKED = "unchecked"
|
65
|
+
CI_MUST_PASS = "ci_must_pass"
|
66
|
+
CI_STILL_RUNNING = "ci_still_running"
|
67
|
+
DISCUSSIONS_NOT_RESOLVED = "discussions_not_resolved"
|
68
|
+
DRAFT_STATUS = "draft_status"
|
69
|
+
EXTERNAL_STATUS_CHECKS = "external_status_checks"
|
70
|
+
MERGEABLE = "mergeable"
|
71
|
+
NOT_APPROVED = "not_approved"
|
72
|
+
NOT_OPEN = "not_open"
|
73
|
+
POLICIES_DENIED = "policies_denied"
|
74
74
|
|
75
75
|
|
76
76
|
# https://docs.gitlab.com/ee/api/pipelines.html
|
77
77
|
class PipelineStatus(GitlabEnum):
|
78
|
-
CREATED
|
79
|
-
WAITING_FOR_RESOURCE
|
80
|
-
PREPARING
|
81
|
-
PENDING
|
82
|
-
RUNNING
|
83
|
-
SUCCESS
|
84
|
-
FAILED
|
85
|
-
CANCELED
|
86
|
-
SKIPPED
|
87
|
-
MANUAL
|
88
|
-
SCHEDULED
|
78
|
+
CREATED = "created"
|
79
|
+
WAITING_FOR_RESOURCE = "waiting_for_resource"
|
80
|
+
PREPARING = "preparing"
|
81
|
+
PENDING = "pending"
|
82
|
+
RUNNING = "running"
|
83
|
+
SUCCESS = "success"
|
84
|
+
FAILED = "failed"
|
85
|
+
CANCELED = "canceled"
|
86
|
+
SKIPPED = "skipped"
|
87
|
+
MANUAL = "manual"
|
88
|
+
SCHEDULED = "scheduled"
|
89
89
|
|
90
90
|
|
91
91
|
DEFAULT_URL: str = "https://gitlab.com"
|
@@ -6,7 +6,9 @@ from typing import (
|
|
6
6
|
Dict,
|
7
7
|
Iterator,
|
8
8
|
List,
|
9
|
+
Literal,
|
9
10
|
Optional,
|
11
|
+
overload,
|
10
12
|
Tuple,
|
11
13
|
Type,
|
12
14
|
TYPE_CHECKING,
|
@@ -612,6 +614,39 @@ class DownloadMixin(_RestObjectBase):
|
|
612
614
|
_updated_attrs: Dict[str, Any]
|
613
615
|
manager: base.RESTManager
|
614
616
|
|
617
|
+
@overload
|
618
|
+
def download(
|
619
|
+
self,
|
620
|
+
streamed: Literal[False] = False,
|
621
|
+
action: None = None,
|
622
|
+
chunk_size: int = 1024,
|
623
|
+
*,
|
624
|
+
iterator: Literal[False] = False,
|
625
|
+
**kwargs: Any,
|
626
|
+
) -> bytes: ...
|
627
|
+
|
628
|
+
@overload
|
629
|
+
def download(
|
630
|
+
self,
|
631
|
+
streamed: bool = False,
|
632
|
+
action: None = None,
|
633
|
+
chunk_size: int = 1024,
|
634
|
+
*,
|
635
|
+
iterator: Literal[True] = True,
|
636
|
+
**kwargs: Any,
|
637
|
+
) -> Iterator[Any]: ...
|
638
|
+
|
639
|
+
@overload
|
640
|
+
def download(
|
641
|
+
self,
|
642
|
+
streamed: Literal[True] = True,
|
643
|
+
action: Optional[Callable[[bytes], None]] = None,
|
644
|
+
chunk_size: int = 1024,
|
645
|
+
*,
|
646
|
+
iterator: Literal[False] = False,
|
647
|
+
**kwargs: Any,
|
648
|
+
) -> None: ...
|
649
|
+
|
615
650
|
@cli.register_custom_action(cls_names=("GroupExport", "ProjectExport"))
|
616
651
|
@exc.on_http_error(exc.GitlabGetError)
|
617
652
|
def download(
|
@@ -3,7 +3,16 @@ GitLab API:
|
|
3
3
|
https://docs.gitlab.com/ee/api/job_artifacts.html
|
4
4
|
"""
|
5
5
|
|
6
|
-
from typing import
|
6
|
+
from typing import (
|
7
|
+
Any,
|
8
|
+
Callable,
|
9
|
+
Iterator,
|
10
|
+
Literal,
|
11
|
+
Optional,
|
12
|
+
overload,
|
13
|
+
TYPE_CHECKING,
|
14
|
+
Union,
|
15
|
+
)
|
7
16
|
|
8
17
|
import requests
|
9
18
|
|
@@ -43,6 +52,45 @@ class ProjectArtifactManager(RESTManager):
|
|
43
52
|
assert path is not None
|
44
53
|
self.gitlab.http_delete(path, **kwargs)
|
45
54
|
|
55
|
+
@overload
|
56
|
+
def download(
|
57
|
+
self,
|
58
|
+
ref_name: str,
|
59
|
+
job: str,
|
60
|
+
streamed: Literal[False] = False,
|
61
|
+
action: None = None,
|
62
|
+
chunk_size: int = 1024,
|
63
|
+
*,
|
64
|
+
iterator: Literal[False] = False,
|
65
|
+
**kwargs: Any,
|
66
|
+
) -> bytes: ...
|
67
|
+
|
68
|
+
@overload
|
69
|
+
def download(
|
70
|
+
self,
|
71
|
+
ref_name: str,
|
72
|
+
job: str,
|
73
|
+
streamed: bool = False,
|
74
|
+
action: None = None,
|
75
|
+
chunk_size: int = 1024,
|
76
|
+
*,
|
77
|
+
iterator: Literal[True] = True,
|
78
|
+
**kwargs: Any,
|
79
|
+
) -> Iterator[Any]: ...
|
80
|
+
|
81
|
+
@overload
|
82
|
+
def download(
|
83
|
+
self,
|
84
|
+
ref_name: str,
|
85
|
+
job: str,
|
86
|
+
streamed: Literal[True] = True,
|
87
|
+
action: Optional[Callable[[bytes], None]] = None,
|
88
|
+
chunk_size: int = 1024,
|
89
|
+
*,
|
90
|
+
iterator: Literal[False] = False,
|
91
|
+
**kwargs: Any,
|
92
|
+
) -> None: ...
|
93
|
+
|
46
94
|
@cli.register_custom_action(
|
47
95
|
cls_names="ProjectArtifactManager",
|
48
96
|
required=("ref_name", "job"),
|
@@ -94,6 +142,48 @@ class ProjectArtifactManager(RESTManager):
|
|
94
142
|
result, streamed, action, chunk_size, iterator=iterator
|
95
143
|
)
|
96
144
|
|
145
|
+
@overload
|
146
|
+
def raw(
|
147
|
+
self,
|
148
|
+
ref_name: str,
|
149
|
+
artifact_path: str,
|
150
|
+
job: str,
|
151
|
+
streamed: Literal[False] = False,
|
152
|
+
action: None = None,
|
153
|
+
chunk_size: int = 1024,
|
154
|
+
*,
|
155
|
+
iterator: Literal[False] = False,
|
156
|
+
**kwargs: Any,
|
157
|
+
) -> bytes: ...
|
158
|
+
|
159
|
+
@overload
|
160
|
+
def raw(
|
161
|
+
self,
|
162
|
+
ref_name: str,
|
163
|
+
artifact_path: str,
|
164
|
+
job: str,
|
165
|
+
streamed: bool = False,
|
166
|
+
action: None = None,
|
167
|
+
chunk_size: int = 1024,
|
168
|
+
*,
|
169
|
+
iterator: Literal[True] = True,
|
170
|
+
**kwargs: Any,
|
171
|
+
) -> Iterator[Any]: ...
|
172
|
+
|
173
|
+
@overload
|
174
|
+
def raw(
|
175
|
+
self,
|
176
|
+
ref_name: str,
|
177
|
+
artifact_path: str,
|
178
|
+
job: str,
|
179
|
+
streamed: Literal[True] = True,
|
180
|
+
action: Optional[Callable[[bytes], None]] = None,
|
181
|
+
chunk_size: int = 1024,
|
182
|
+
*,
|
183
|
+
iterator: Literal[False] = False,
|
184
|
+
**kwargs: Any,
|
185
|
+
) -> None: ...
|
186
|
+
|
97
187
|
@cli.register_custom_action(
|
98
188
|
cls_names="ProjectArtifactManager",
|
99
189
|
required=("ref_name", "artifact_path", "job"),
|
@@ -48,7 +48,9 @@ class ProjectCommit(RESTObject):
|
|
48
48
|
|
49
49
|
@cli.register_custom_action(cls_names="ProjectCommit", required=("branch",))
|
50
50
|
@exc.on_http_error(exc.GitlabCherryPickError)
|
51
|
-
def cherry_pick(
|
51
|
+
def cherry_pick(
|
52
|
+
self, branch: str, **kwargs: Any
|
53
|
+
) -> Union[Dict[str, Any], requests.Response]:
|
52
54
|
"""Cherry-pick a commit into a branch.
|
53
55
|
|
54
56
|
Args:
|
@@ -58,10 +60,13 @@ class ProjectCommit(RESTObject):
|
|
58
60
|
Raises:
|
59
61
|
GitlabAuthenticationError: If authentication is not correct
|
60
62
|
GitlabCherryPickError: If the cherry-pick could not be performed
|
63
|
+
|
64
|
+
Returns:
|
65
|
+
The new commit data (*not* a RESTObject)
|
61
66
|
"""
|
62
67
|
path = f"{self.manager.path}/{self.encoded_id}/cherry_pick"
|
63
68
|
post_data = {"branch": branch}
|
64
|
-
self.manager.gitlab.http_post(path, post_data=post_data, **kwargs)
|
69
|
+
return self.manager.gitlab.http_post(path, post_data=post_data, **kwargs)
|
65
70
|
|
66
71
|
@cli.register_custom_action(cls_names="ProjectCommit", optional=("type",))
|
67
72
|
@exc.on_http_error(exc.GitlabGetError)
|