python-gitlab 7.0.0__tar.gz → 8.0.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-7.0.0 → python_gitlab-8.0.0}/CHANGELOG.md +51 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/PKG-INFO +2 -2
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/_version.py +1 -1
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/cli.py +1 -1
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/client.py +2 -5
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/utils.py +1 -1
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/files.py +8 -1
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/projects.py +2 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/registry_protection_repository_rules.py +9 -1
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/pyproject.toml +1 -1
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/python_gitlab.egg-info/PKG-INFO +2 -2
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/python_gitlab.egg-info/requires.txt +1 -1
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/requirements-docker.txt +1 -1
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/requirements-docs.txt +3 -3
- python_gitlab-8.0.0/requirements-lint.txt +14 -0
- python_gitlab-8.0.0/requirements-precommit.txt +1 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/requirements-test.txt +6 -6
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/requirements.txt +1 -1
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_epics.py +5 -3
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_keys.py +9 -1
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_project_job_token_scope.py +4 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_projects.py +2 -2
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_registry.py +5 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/cli/test_cli_artifacts.py +2 -4
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/fixtures/.env +1 -1
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/fixtures/docker-compose.yml +1 -1
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/helpers.py +11 -11
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_registry_protection_rules.py +15 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/test_config.py +6 -16
- python_gitlab-7.0.0/requirements-lint.txt +0 -14
- python_gitlab-7.0.0/requirements-precommit.txt +0 -1
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/AUTHORS +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/COPYING +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/MANIFEST.in +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/README.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/Makefile +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/__init__.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/_static/js/gitter.js +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/api/gitlab.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/api/gitlab.v4.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/api-levels.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/api-objects.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/api-usage-advanced.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/api-usage-graphql.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/api-usage.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/changelog.md +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/cli-examples.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/cli-objects.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/cli-usage.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/conf.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/ext/__init__.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/ext/docstrings.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/ext/manager_tmpl.j2 +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/faq.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/access_requests.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/appearance.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/applications.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/badges.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/boards.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/branches.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/bulk_imports.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/ci_lint.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/cluster_agents.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/clusters.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/commits.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/deploy_keys.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/deploy_tokens.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/deployments.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/discussions.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/draft_notes.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/emojis.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/environments.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/epics.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/events.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/features.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/geo_nodes.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/group_access_tokens.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/groups.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/invitations.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/issues.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/iterations.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/job_token_scope.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/keys.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/labels.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/member_roles.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/merge_request_approvals.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/merge_requests.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/merge_trains.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/messages.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/milestones.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/namespaces.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/notes.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/notifications.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/packages.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/pagesdomains.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/personal_access_tokens.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/pipelines_and_jobs.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/project_access_tokens.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/projects.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/protected_branches.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/protected_container_repositories.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/protected_environments.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/protected_packages.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/pull_mirror.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/releases.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/remote_mirrors.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/repositories.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/repository_tags.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/resource_groups.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/runners.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/search.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/secure_files.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/settings.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/sidekiq.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/snippets.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/statistics.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/status_checks.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/system_hooks.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/templates.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/todos.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/topics.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/users.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/variables.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/gl_objects/wikis.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/index.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/make.bat +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/docs/release-notes.rst +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/__init__.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/__main__.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/_backends/__init__.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/_backends/graphql.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/_backends/protocol.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/_backends/requests_backend.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/base.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/config.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/const.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/exceptions.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/mixins.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/py.typed +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/types.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/__init__.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/cli.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/__init__.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/access_requests.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/appearance.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/applications.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/artifacts.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/audit_events.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/award_emojis.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/badges.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/boards.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/branches.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/broadcast_messages.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/bulk_imports.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/ci_lint.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/cluster_agents.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/clusters.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/commits.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/container_registry.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/custom_attributes.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/deploy_keys.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/deploy_tokens.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/deployments.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/discussions.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/draft_notes.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/environments.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/epics.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/events.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/export_import.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/features.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/geo_nodes.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/group_access_tokens.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/groups.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/hooks.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/integrations.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/invitations.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/issues.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/iterations.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/job_token_scope.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/jobs.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/keys.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/labels.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/ldap.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/member_roles.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/members.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/merge_request_approvals.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/merge_requests.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/merge_trains.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/milestones.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/namespaces.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/notes.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/notification_settings.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/package_protection_rules.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/packages.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/pages.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/personal_access_tokens.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/pipelines.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/project_access_tokens.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/push_rules.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/registry_protection_rules.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/releases.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/repositories.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/resource_groups.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/reviewers.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/runners.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/secure_files.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/service_accounts.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/settings.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/sidekiq.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/snippets.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/statistics.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/status_checks.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/tags.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/templates.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/todos.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/topics.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/triggers.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/users.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/variables.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/gitlab/v4/objects/wikis.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/python_gitlab.egg-info/SOURCES.txt +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/python_gitlab.egg-info/dependency_links.txt +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/python_gitlab.egg-info/entry_points.txt +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/python_gitlab.egg-info/top_level.txt +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/setup.cfg +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/__init__.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/conftest.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/__init__.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/__init__.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_boards.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_branches.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_bulk_imports.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_current_user.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_deploy_keys.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_deploy_tokens.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_gitlab.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_graphql.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_groups.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_import_export.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_issues.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_lazy_objects.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_member_roles.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_merge_requests.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_packages.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_push_rules.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_releases.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_repository.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_services.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_snippets.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_statistics.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_topics.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_users.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_variables.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_wikis.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/cli/__init__.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/cli/conftest.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/cli/test_cli.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/cli/test_cli_files.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/cli/test_cli_packages.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/cli/test_cli_projects.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/cli/test_cli_repository.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/cli/test_cli_resource_access_tokens.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/cli/test_cli_users.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/cli/test_cli_v4.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/cli/test_cli_variables.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/conftest.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/ee-test.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/fixtures/__init__.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/fixtures/avatar.png +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/fixtures/create_license.rb +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/fixtures/docker.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/fixtures/invalid_auth.cfg +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/fixtures/invalid_version.cfg +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/fixtures/set_token.rb +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/install/test_install.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/smoke/__init__.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/smoke/test_dists.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/__init__.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/_backends/__init__.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/_backends/test_requests_backend.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/base/test_rest_manager.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/base/test_rest_object.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/conftest.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/helpers.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/meta/__init__.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/meta/test_abstract_attrs.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/meta/test_imports.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/meta/test_mro.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/mixins/__init__.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/mixins/test_meta_mixins.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/mixins/test_mixin_methods.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/mixins/test_object_mixins_attributes.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/__init__.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/conftest.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_appearance.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_applications.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_audit_events.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_badges.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_bridges.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_bulk_imports.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_ci_lint.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_cluster_agents.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_commits.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_deploy_tokens.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_deployments.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_draft_notes.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_environments.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_group_access_tokens.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_group_merge_request_approvals.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_groups.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_hooks.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_invitations.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_issues.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_iterations.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_job_artifacts.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_job_token_scope.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_jobs.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_keys.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_member_roles.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_members.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_merge_request_pipelines.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_merge_requests.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_merge_trains.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_package_protection_rules.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_packages.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_personal_access_tokens.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_pipeline_schedules.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_pipelines.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_project_access_tokens.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_project_import_export.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_project_merge_request_approvals.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_project_statistics.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_projects.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_pull_mirror.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_registry_repositories.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_releases.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_remote_mirrors.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_repositories.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_resource_groups.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_resource_iteration_events.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_resource_label_events.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_resource_milestone_events.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_resource_state_events.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_runners.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_secure_files.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_services.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_snippets.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_statistics.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_status_checks.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_submodules.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_templates.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_todos.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_topics.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_users.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_variables.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/test_cli.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/test_exceptions.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/test_gitlab.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/test_gitlab_auth.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/test_gitlab_http_methods.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/test_graphql.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/test_retry.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/test_types.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/test_utils.py +0 -0
- {python_gitlab-7.0.0 → python_gitlab-8.0.0}/tox.ini +0 -0
|
@@ -2,6 +2,57 @@
|
|
|
2
2
|
|
|
3
3
|
All versions below are listed in reverse chronological order.
|
|
4
4
|
|
|
5
|
+
## v8.0.0 (2026-01-28)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- Actually define project repr_attr
|
|
10
|
+
([`4187a69`](https://github.com/python-gitlab/python-gitlab/commit/4187a69420dd7b2e60c2d833ab246aec745d35cb))
|
|
11
|
+
|
|
12
|
+
- File save start_branch as a body attribute
|
|
13
|
+
([`1001d93`](https://github.com/python-gitlab/python-gitlab/commit/1001d934e8c36cc3b14408b46b41030bf705a294))
|
|
14
|
+
|
|
15
|
+
### Chores
|
|
16
|
+
|
|
17
|
+
- **black**: Run black v26 on code
|
|
18
|
+
([`4a8d82b`](https://github.com/python-gitlab/python-gitlab/commit/4a8d82bec8f09fa142e8134589a0f40ef4f9c3be))
|
|
19
|
+
|
|
20
|
+
- **precommit**: Update dependency black to v26
|
|
21
|
+
([`ad43b76`](https://github.com/python-gitlab/python-gitlab/commit/ad43b763acdcd8d7db832972921fb071ea0a826f))
|
|
22
|
+
|
|
23
|
+
### Features
|
|
24
|
+
|
|
25
|
+
- **graphql**: Update to gql 4.0.0
|
|
26
|
+
([`6f0da67`](https://github.com/python-gitlab/python-gitlab/commit/6f0da671b4586b23232ae89d57622254fa8a7945))
|
|
27
|
+
|
|
28
|
+
### Breaking Changes
|
|
29
|
+
|
|
30
|
+
- **graphql**: GraphQL.execute() no longer accepts graphql.Source
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
## v7.1.0 (2025-12-28)
|
|
34
|
+
|
|
35
|
+
### Bug Fixes
|
|
36
|
+
|
|
37
|
+
- **utils**: Prevent negative sleep time in rate limit retry
|
|
38
|
+
([`4221195`](https://github.com/python-gitlab/python-gitlab/commit/422119576287de30e1b70411c7ab0bbe39231af7))
|
|
39
|
+
|
|
40
|
+
### Continuous Integration
|
|
41
|
+
|
|
42
|
+
- **release**: Use the correct token for publish to GitHub
|
|
43
|
+
([`614a74c`](https://github.com/python-gitlab/python-gitlab/commit/614a74c00f027f70b8e48a6b2a2ddcd3f823bffa))
|
|
44
|
+
|
|
45
|
+
### Features
|
|
46
|
+
|
|
47
|
+
- **registry-protection**: Add support for registry protection rule deletion
|
|
48
|
+
([`9dd62c3`](https://github.com/python-gitlab/python-gitlab/commit/9dd62c3f5bcf3e082c2733bd4edc068f993c22ec))
|
|
49
|
+
|
|
50
|
+
### Testing
|
|
51
|
+
|
|
52
|
+
- **functional**: Update to GitLab 18.6 and resolve issues found
|
|
53
|
+
([`c7c139b`](https://github.com/python-gitlab/python-gitlab/commit/c7c139b9e7823ec1800a819233aee469355ee8d1))
|
|
54
|
+
|
|
55
|
+
|
|
5
56
|
## v7.0.0 (2025-10-29)
|
|
6
57
|
|
|
7
58
|
### Features
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-gitlab
|
|
3
|
-
Version:
|
|
3
|
+
Version: 8.0.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>
|
|
@@ -35,7 +35,7 @@ Requires-Dist: argcomplete<3,>=1.10.0; extra == "autocompletion"
|
|
|
35
35
|
Provides-Extra: yaml
|
|
36
36
|
Requires-Dist: PyYaml>=6.0.1; extra == "yaml"
|
|
37
37
|
Provides-Extra: graphql
|
|
38
|
-
Requires-Dist: gql[httpx]<
|
|
38
|
+
Requires-Dist: gql[httpx]<5,>=3.5.0; extra == "graphql"
|
|
39
39
|
Dynamic: license-file
|
|
40
40
|
|
|
41
41
|
python-gitlab
|
|
@@ -334,7 +334,7 @@ def main() -> None:
|
|
|
334
334
|
# This first parsing step is used to find the gitlab config to use, and
|
|
335
335
|
# load the propermodule (v3 or v4) accordingly. At that point we don't have
|
|
336
336
|
# any subparser setup
|
|
337
|
-
|
|
337
|
+
options, _ = parser.parse_known_args(sys.argv)
|
|
338
338
|
try:
|
|
339
339
|
config = gitlab.config.GitlabConfigParser(options.gitlab, options.config_file)
|
|
340
340
|
except gitlab.config.ConfigError as e:
|
|
@@ -18,7 +18,6 @@ from gitlab import _backends, utils
|
|
|
18
18
|
try:
|
|
19
19
|
import gql
|
|
20
20
|
import gql.transport.exceptions
|
|
21
|
-
import graphql
|
|
22
21
|
import httpx
|
|
23
22
|
|
|
24
23
|
from ._backends.graphql import GitlabAsyncTransport, GitlabTransport
|
|
@@ -1350,7 +1349,7 @@ class GraphQL(_BaseGraphQL):
|
|
|
1350
1349
|
def __exit__(self, *args: Any) -> None:
|
|
1351
1350
|
self._http_client.close()
|
|
1352
1351
|
|
|
1353
|
-
def execute(self, request: str
|
|
1352
|
+
def execute(self, request: str, *args: Any, **kwargs: Any) -> Any:
|
|
1354
1353
|
parsed_document = self._gql(request)
|
|
1355
1354
|
retry = utils.Retry(
|
|
1356
1355
|
max_retries=self._max_retries,
|
|
@@ -1420,9 +1419,7 @@ class AsyncGraphQL(_BaseGraphQL):
|
|
|
1420
1419
|
async def __aexit__(self, *args: Any) -> None:
|
|
1421
1420
|
await self._http_client.aclose()
|
|
1422
1421
|
|
|
1423
|
-
async def execute(
|
|
1424
|
-
self, request: str | graphql.Source, *args: Any, **kwargs: Any
|
|
1425
|
-
) -> Any:
|
|
1422
|
+
async def execute(self, request: str, *args: Any, **kwargs: Any) -> Any:
|
|
1426
1423
|
parsed_document = self._gql(request)
|
|
1427
1424
|
retry = utils.Retry(
|
|
1428
1425
|
max_retries=self._max_retries,
|
|
@@ -133,7 +133,7 @@ class Retry:
|
|
|
133
133
|
if "Retry-After" in headers:
|
|
134
134
|
wait_time = int(headers["Retry-After"])
|
|
135
135
|
elif "RateLimit-Reset" in headers:
|
|
136
|
-
wait_time = int(headers["RateLimit-Reset"]) - time.time()
|
|
136
|
+
wait_time = max(0, int(headers["RateLimit-Reset"]) - time.time())
|
|
137
137
|
self.cur_retries += 1
|
|
138
138
|
time.sleep(wait_time)
|
|
139
139
|
return True
|
|
@@ -29,6 +29,7 @@ class ProjectFile(SaveMixin, ObjectDeleteMixin, RESTObject):
|
|
|
29
29
|
file_path: str
|
|
30
30
|
manager: ProjectFileManager
|
|
31
31
|
content: str # since the `decode()` method uses `self.content`
|
|
32
|
+
start_branch: str | None = None
|
|
32
33
|
|
|
33
34
|
def decode(self) -> bytes:
|
|
34
35
|
"""Returns the decoded content of the file.
|
|
@@ -41,7 +42,11 @@ class ProjectFile(SaveMixin, ObjectDeleteMixin, RESTObject):
|
|
|
41
42
|
# NOTE(jlvillal): Signature doesn't match SaveMixin.save() so ignore
|
|
42
43
|
# type error
|
|
43
44
|
def save( # type: ignore[override]
|
|
44
|
-
self,
|
|
45
|
+
self,
|
|
46
|
+
branch: str,
|
|
47
|
+
commit_message: str,
|
|
48
|
+
start_branch: str | None = None,
|
|
49
|
+
**kwargs: Any,
|
|
45
50
|
) -> None:
|
|
46
51
|
"""Save the changes made to the file to the server.
|
|
47
52
|
|
|
@@ -50,6 +55,7 @@ class ProjectFile(SaveMixin, ObjectDeleteMixin, RESTObject):
|
|
|
50
55
|
Args:
|
|
51
56
|
branch: Branch in which the file will be updated
|
|
52
57
|
commit_message: Message to send with the commit
|
|
58
|
+
start_branch: Name of the branch to start the new branch from
|
|
53
59
|
**kwargs: Extra options to send to the server (e.g. sudo)
|
|
54
60
|
|
|
55
61
|
Raises:
|
|
@@ -58,6 +64,7 @@ class ProjectFile(SaveMixin, ObjectDeleteMixin, RESTObject):
|
|
|
58
64
|
"""
|
|
59
65
|
self.branch = branch
|
|
60
66
|
self.commit_message = commit_message
|
|
67
|
+
self.start_branch = start_branch
|
|
61
68
|
self.file_path = utils.EncodedId(self.file_path)
|
|
62
69
|
super().save(**kwargs)
|
|
63
70
|
|
|
@@ -178,6 +178,8 @@ class Project(
|
|
|
178
178
|
_repr_attr = "path_with_namespace"
|
|
179
179
|
_upload_path = "/projects/{id}/uploads"
|
|
180
180
|
|
|
181
|
+
path_with_namespace: str
|
|
182
|
+
|
|
181
183
|
access_tokens: ProjectAccessTokenManager
|
|
182
184
|
accessrequests: ProjectAccessRequestManager
|
|
183
185
|
additionalstatistics: ProjectAdditionalStatisticsManager
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
from gitlab.base import RESTObject
|
|
2
|
-
from gitlab.mixins import
|
|
2
|
+
from gitlab.mixins import (
|
|
3
|
+
CreateMixin,
|
|
4
|
+
DeleteMixin,
|
|
5
|
+
ListMixin,
|
|
6
|
+
SaveMixin,
|
|
7
|
+
UpdateMethod,
|
|
8
|
+
UpdateMixin,
|
|
9
|
+
)
|
|
3
10
|
from gitlab.types import RequiredOptional
|
|
4
11
|
|
|
5
12
|
__all__ = [
|
|
@@ -16,6 +23,7 @@ class ProjectRegistryRepositoryProtectionRuleManager(
|
|
|
16
23
|
ListMixin[ProjectRegistryRepositoryProtectionRule],
|
|
17
24
|
CreateMixin[ProjectRegistryRepositoryProtectionRule],
|
|
18
25
|
UpdateMixin[ProjectRegistryRepositoryProtectionRule],
|
|
26
|
+
DeleteMixin[ProjectRegistryRepositoryProtectionRule],
|
|
19
27
|
):
|
|
20
28
|
_path = "/projects/{project_id}/registry/protection/repository/rules"
|
|
21
29
|
_obj_cls = ProjectRegistryRepositoryProtectionRule
|
|
@@ -43,7 +43,7 @@ dynamic = ["version"]
|
|
|
43
43
|
[project.optional-dependencies]
|
|
44
44
|
autocompletion = ["argcomplete>=1.10.0,<3"]
|
|
45
45
|
yaml = ["PyYaml>=6.0.1"]
|
|
46
|
-
graphql = ["gql[httpx]>=3.5.0,<
|
|
46
|
+
graphql = ["gql[httpx]>=3.5.0,<5"]
|
|
47
47
|
|
|
48
48
|
[project.scripts]
|
|
49
49
|
gitlab = "gitlab.cli:main"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-gitlab
|
|
3
|
-
Version:
|
|
3
|
+
Version: 8.0.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>
|
|
@@ -35,7 +35,7 @@ Requires-Dist: argcomplete<3,>=1.10.0; extra == "autocompletion"
|
|
|
35
35
|
Provides-Extra: yaml
|
|
36
36
|
Requires-Dist: PyYaml>=6.0.1; extra == "yaml"
|
|
37
37
|
Provides-Extra: graphql
|
|
38
|
-
Requires-Dist: gql[httpx]<
|
|
38
|
+
Requires-Dist: gql[httpx]<5,>=3.5.0; extra == "graphql"
|
|
39
39
|
Dynamic: license-file
|
|
40
40
|
|
|
41
41
|
python-gitlab
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
-r requirements.txt
|
|
2
|
+
argcomplete==2.0.0
|
|
3
|
+
black==26.1.0
|
|
4
|
+
commitizen==4.12.1
|
|
5
|
+
flake8==7.3.0
|
|
6
|
+
isort==7.0.0
|
|
7
|
+
mypy==1.19.1
|
|
8
|
+
pylint==4.0.4
|
|
9
|
+
pytest==9.0.2
|
|
10
|
+
responses==0.25.8
|
|
11
|
+
respx==0.22.0
|
|
12
|
+
types-PyYAML==6.0.12.20250915
|
|
13
|
+
types-requests==2.32.4.20260107
|
|
14
|
+
types-setuptools==80.10.0.20260124
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pre-commit==4.5.1
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
-r requirements.txt
|
|
2
|
-
anyio==4.
|
|
3
|
-
build==1.
|
|
4
|
-
coverage==7.
|
|
2
|
+
anyio==4.12.1
|
|
3
|
+
build==1.4.0
|
|
4
|
+
coverage==7.13.2
|
|
5
5
|
pytest-console-scripts==1.4.1
|
|
6
6
|
pytest-cov==7.0.0
|
|
7
7
|
pytest-github-actions-annotate-failures==0.3.0
|
|
8
|
-
pytest==
|
|
8
|
+
pytest==9.0.2
|
|
9
9
|
PyYaml==6.0.3
|
|
10
10
|
responses==0.25.8
|
|
11
11
|
respx==0.22.0
|
|
12
|
-
trio==0.
|
|
13
|
-
wheel==0.
|
|
12
|
+
trio==0.32.0
|
|
13
|
+
wheel==0.46.3
|
|
@@ -15,18 +15,20 @@ def test_epics(group):
|
|
|
15
15
|
assert group.epics.list()
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
@pytest.mark.xfail(reason="404 on issue.id")
|
|
19
18
|
def test_epic_issues(epic, issue):
|
|
20
19
|
assert not epic.issues.list()
|
|
21
20
|
|
|
21
|
+
# FYI: Creating an issue causes a note to be created
|
|
22
22
|
epic_issue = epic.issues.create({"issue_id": issue.id})
|
|
23
23
|
assert epic.issues.list()
|
|
24
24
|
|
|
25
|
+
# FYI: Deleting an issue causes a note to be created
|
|
25
26
|
epic_issue.delete()
|
|
26
27
|
|
|
27
28
|
|
|
28
29
|
def test_epic_notes(epic):
|
|
29
|
-
|
|
30
|
+
notes = epic.notes.list(get_all=True)
|
|
30
31
|
|
|
31
32
|
epic.notes.create({"body": "Test note"})
|
|
32
|
-
|
|
33
|
+
new_notes = epic.notes.list(get_all=True)
|
|
34
|
+
assert len(new_notes) == (len(notes) + 1), f"{new_notes} {notes}"
|
|
@@ -38,6 +38,14 @@ def test_keys_deploy(gl, project, DEPLOY_KEY):
|
|
|
38
38
|
key_by_fingerprint = gl.keys.get(fingerprint=fingerprint)
|
|
39
39
|
assert key_by_fingerprint.title == key.title
|
|
40
40
|
assert key_by_fingerprint.key == key.key
|
|
41
|
-
|
|
41
|
+
|
|
42
|
+
if not any(
|
|
43
|
+
key_project.get("project_id") == project.id
|
|
44
|
+
for key_project in key_by_fingerprint.deploy_keys_projects
|
|
45
|
+
):
|
|
46
|
+
raise AssertionError(
|
|
47
|
+
f"Project {project} not found in 'deploy_keys_projects' "
|
|
48
|
+
f"{key_by_fingerprint.pformat()}"
|
|
49
|
+
)
|
|
42
50
|
|
|
43
51
|
key.delete()
|
{python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/functional/api/test_project_job_token_scope.py
RENAMED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
|
|
3
|
+
|
|
1
4
|
# https://docs.gitlab.com/ee/ci/jobs/ci_job_token.html#allow-any-project-to-access-your-project
|
|
2
5
|
def test_enable_limit_access_to_this_project(gl, project):
|
|
3
6
|
scope = project.job_token_scope.get()
|
|
@@ -10,6 +13,7 @@ def test_enable_limit_access_to_this_project(gl, project):
|
|
|
10
13
|
assert scope.inbound_enabled
|
|
11
14
|
|
|
12
15
|
|
|
16
|
+
@pytest.mark.xfail(reason="https://gitlab.com/gitlab-org/gitlab/-/issues/582271")
|
|
13
17
|
def test_disable_limit_access_to_this_project(gl, project):
|
|
14
18
|
scope = project.job_token_scope.get()
|
|
15
19
|
|
|
@@ -26,9 +26,9 @@ def test_create_project(gl, user):
|
|
|
26
26
|
|
|
27
27
|
sudo_project = gl.projects.create({"name": "sudo_project"}, sudo=user.id)
|
|
28
28
|
|
|
29
|
-
created = gl.projects.list()
|
|
29
|
+
created = gl.projects.list(get_all=True)
|
|
30
30
|
created_gen = gl.projects.list(iterator=True)
|
|
31
|
-
owned = gl.projects.list(owned=True)
|
|
31
|
+
owned = gl.projects.list(owned=True, get_all=True)
|
|
32
32
|
|
|
33
33
|
assert admin_project in created and sudo_project in created
|
|
34
34
|
assert admin_project in owned and sudo_project not in owned
|
|
@@ -26,3 +26,8 @@ def test_project_protected_registry(project: Project):
|
|
|
26
26
|
protected_registry.minimum_access_level_for_push = "owner"
|
|
27
27
|
protected_registry.save()
|
|
28
28
|
assert protected_registry.minimum_access_level_for_push == "owner"
|
|
29
|
+
|
|
30
|
+
protected_registry.delete()
|
|
31
|
+
|
|
32
|
+
rules = project.registry_protection_repository_rules.list()
|
|
33
|
+
assert rules == []
|
|
@@ -7,14 +7,12 @@ from zipfile import is_zipfile
|
|
|
7
7
|
|
|
8
8
|
import pytest
|
|
9
9
|
|
|
10
|
-
content = textwrap.dedent(
|
|
11
|
-
"""\
|
|
10
|
+
content = textwrap.dedent("""\
|
|
12
11
|
test-artifact:
|
|
13
12
|
script: echo "test" > artifact.txt
|
|
14
13
|
artifacts:
|
|
15
14
|
untracked: true
|
|
16
|
-
"""
|
|
17
|
-
)
|
|
15
|
+
""")
|
|
18
16
|
data = {
|
|
19
17
|
"file_path": ".gitlab-ci.yml",
|
|
20
18
|
"branch": "main",
|
|
@@ -9,6 +9,7 @@ import pytest
|
|
|
9
9
|
import gitlab
|
|
10
10
|
import gitlab.base
|
|
11
11
|
import gitlab.exceptions
|
|
12
|
+
import gitlab.v4.objects
|
|
12
13
|
|
|
13
14
|
SLEEP_INTERVAL = 0.5
|
|
14
15
|
TIMEOUT = 60 # seconds before timeout will occur
|
|
@@ -37,6 +38,11 @@ def safe_delete(object: gitlab.base.RESTObject) -> None:
|
|
|
37
38
|
object = manager.get(object.get_id()) # type: ignore[attr-defined]
|
|
38
39
|
except gitlab.exceptions.GitlabGetError:
|
|
39
40
|
return
|
|
41
|
+
# If object is already marked for deletion we have succeeded
|
|
42
|
+
if getattr(object, "marked_for_deletion_on", None) is not None:
|
|
43
|
+
# 'Group' and 'Project' objects have a 'marked_for_deletion_on' attribute
|
|
44
|
+
logging.info(f"{object!r} is marked for deletion.")
|
|
45
|
+
return
|
|
40
46
|
|
|
41
47
|
if index:
|
|
42
48
|
logging.info(f"Attempt {index + 1} to delete {object!r}.")
|
|
@@ -52,22 +58,16 @@ def safe_delete(object: gitlab.base.RESTObject) -> None:
|
|
|
52
58
|
# we shouldn't cause test to fail if it still exists
|
|
53
59
|
return
|
|
54
60
|
elif isinstance(object, gitlab.v4.objects.Project):
|
|
55
|
-
#
|
|
56
|
-
#
|
|
57
|
-
object.delete(
|
|
58
|
-
pass
|
|
61
|
+
# Starting in GitLab 18, projects can't be immediately deleted.
|
|
62
|
+
# So this will mark it for deletion.
|
|
63
|
+
object.delete()
|
|
59
64
|
else:
|
|
60
65
|
# We only attempt to delete parent groups to prevent dangling sub-groups
|
|
61
|
-
# However parent groups can only be deleted on a delay in
|
|
66
|
+
# However parent groups can only be deleted on a delay in GitLab 16
|
|
62
67
|
# https://docs.gitlab.com/ee/api/groups.html#remove-group
|
|
63
68
|
object.delete()
|
|
64
69
|
except gitlab.exceptions.GitlabDeleteError:
|
|
65
|
-
logging.
|
|
66
|
-
if isinstance(object, gitlab.v4.objects.Group):
|
|
67
|
-
# Parent groups can never be immediately deleted in GL 16,
|
|
68
|
-
# so don't cause test to fail if it still exists
|
|
69
|
-
return
|
|
70
|
-
pass
|
|
70
|
+
logging.exception(f"Error attempting to delete: {object.pformat()}")
|
|
71
71
|
|
|
72
72
|
time.sleep(SLEEP_INTERVAL)
|
|
73
73
|
pytest.fail(f"{object!r} was not deleted")
|
{python_gitlab-7.0.0 → python_gitlab-8.0.0}/tests/unit/objects/test_registry_protection_rules.py
RENAMED
|
@@ -58,6 +58,17 @@ def resp_update_protected_registry():
|
|
|
58
58
|
yield rsps
|
|
59
59
|
|
|
60
60
|
|
|
61
|
+
@pytest.fixture
|
|
62
|
+
def resp_delete_protected_registry():
|
|
63
|
+
with responses.RequestsMock() as rsps:
|
|
64
|
+
rsps.add(
|
|
65
|
+
method=responses.DELETE,
|
|
66
|
+
url="http://localhost/api/v4/projects/1/registry/protection/repository/rules/1",
|
|
67
|
+
status=204,
|
|
68
|
+
)
|
|
69
|
+
yield rsps
|
|
70
|
+
|
|
71
|
+
|
|
61
72
|
def test_list_project_protected_registries(project, resp_list_protected_registries):
|
|
62
73
|
protected_registry = project.registry_protection_repository_rules.list()[0]
|
|
63
74
|
assert isinstance(protected_registry, ProjectRegistryRepositoryProtectionRule)
|
|
@@ -80,3 +91,7 @@ def test_update_project_protected_registry(project, resp_update_protected_regist
|
|
|
80
91
|
1, {"repository_path_pattern": "abc*"}
|
|
81
92
|
)
|
|
82
93
|
assert updated["repository_path_pattern"] == "abc*"
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def test_delete_project_protected_registry(project, resp_delete_protected_registry):
|
|
97
|
+
project.registry_protection_repository_rules.delete(1)
|
|
@@ -268,28 +268,22 @@ def test_ssl_verify_as_str(m_open, monkeypatch):
|
|
|
268
268
|
def test_data_from_helper(m_open, monkeypatch, tmp_path):
|
|
269
269
|
helper = tmp_path / "helper.sh"
|
|
270
270
|
helper.write_text(
|
|
271
|
-
dedent(
|
|
272
|
-
"""\
|
|
271
|
+
dedent("""\
|
|
273
272
|
#!/bin/sh
|
|
274
273
|
echo "secret"
|
|
275
|
-
"""
|
|
276
|
-
),
|
|
274
|
+
"""),
|
|
277
275
|
encoding="utf-8",
|
|
278
276
|
)
|
|
279
277
|
helper.chmod(0o755)
|
|
280
278
|
|
|
281
|
-
fd = io.StringIO(
|
|
282
|
-
dedent(
|
|
283
|
-
f"""\
|
|
279
|
+
fd = io.StringIO(dedent(f"""\
|
|
284
280
|
[global]
|
|
285
281
|
default = helper
|
|
286
282
|
|
|
287
283
|
[helper]
|
|
288
284
|
url = https://helper.url
|
|
289
285
|
oauth_token = helper: {helper}
|
|
290
|
-
"""
|
|
291
|
-
)
|
|
292
|
-
)
|
|
286
|
+
"""))
|
|
293
287
|
|
|
294
288
|
fd.close = mock.Mock(return_value=None)
|
|
295
289
|
m_open.return_value = fd
|
|
@@ -306,18 +300,14 @@ def test_data_from_helper(m_open, monkeypatch, tmp_path):
|
|
|
306
300
|
@pytest.mark.skipif(sys.platform.startswith("win"), reason="Not supported on Windows")
|
|
307
301
|
def test_from_helper_subprocess_error_raises_error(m_open, monkeypatch):
|
|
308
302
|
# using false here to force a non-zero return code
|
|
309
|
-
fd = io.StringIO(
|
|
310
|
-
dedent(
|
|
311
|
-
"""\
|
|
303
|
+
fd = io.StringIO(dedent("""\
|
|
312
304
|
[global]
|
|
313
305
|
default = helper
|
|
314
306
|
|
|
315
307
|
[helper]
|
|
316
308
|
url = https://helper.url
|
|
317
309
|
oauth_token = helper: false
|
|
318
|
-
"""
|
|
319
|
-
)
|
|
320
|
-
)
|
|
310
|
+
"""))
|
|
321
311
|
|
|
322
312
|
fd.close = mock.Mock(return_value=None)
|
|
323
313
|
m_open.return_value = fd
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
-r requirements.txt
|
|
2
|
-
argcomplete==2.0.0
|
|
3
|
-
black==25.9.0
|
|
4
|
-
commitizen==4.9.1
|
|
5
|
-
flake8==7.3.0
|
|
6
|
-
isort==7.0.0
|
|
7
|
-
mypy==1.18.2
|
|
8
|
-
pylint==4.0.1
|
|
9
|
-
pytest==8.4.2
|
|
10
|
-
responses==0.25.8
|
|
11
|
-
respx==0.22.0
|
|
12
|
-
types-PyYAML==6.0.12.20250915
|
|
13
|
-
types-requests==2.32.4.20250913
|
|
14
|
-
types-setuptools==80.9.0.20250822
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
pre-commit==4.3.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|