python-gitlab 8.2.0__tar.gz → 8.3.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-8.2.0 → python_gitlab-8.3.0}/CHANGELOG.md +16 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/PKG-INFO +1 -1
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/api-objects.rst +1 -0
- python_gitlab-8.3.0/docs/gl_objects/service_accounts.rst +153 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/_version.py +1 -1
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/client.py +2 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/mixins.py +9 -1
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/projects.py +2 -0
- python_gitlab-8.3.0/gitlab/v4/objects/service_accounts.py +155 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/variables.py +50 -7
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/python_gitlab.egg-info/PKG-INFO +1 -1
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/python_gitlab.egg-info/SOURCES.txt +2 -0
- python_gitlab-8.3.0/requirements-lint.txt +14 -0
- python_gitlab-8.3.0/requirements-precommit.txt +1 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/requirements-test.txt +5 -5
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/requirements.txt +1 -1
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_variables.py +36 -0
- python_gitlab-8.3.0/tests/unit/objects/test_service_accounts.py +592 -0
- python_gitlab-8.2.0/gitlab/v4/objects/service_accounts.py +0 -20
- python_gitlab-8.2.0/requirements-lint.txt +0 -14
- python_gitlab-8.2.0/requirements-precommit.txt +0 -1
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/AUTHORS +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/COPYING +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/MANIFEST.in +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/README.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/Makefile +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/__init__.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/_static/js/gitter.js +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/api/gitlab.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/api/gitlab.v4.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/api-levels.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/api-usage-advanced.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/api-usage-graphql.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/api-usage.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/changelog.md +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/cli-examples.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/cli-objects.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/cli-usage.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/conf.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/ext/__init__.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/ext/docstrings.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/ext/manager_tmpl.j2 +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/faq.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/access_requests.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/appearance.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/applications.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/badges.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/boards.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/branches.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/bulk_imports.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/ci_lint.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/cluster_agents.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/clusters.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/commits.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/deploy_keys.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/deploy_tokens.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/deployments.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/discussions.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/draft_notes.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/emojis.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/environments.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/epics.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/events.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/geo_nodes.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/gitlab_features.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/group_access_tokens.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/groups.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/invitations.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/issues.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/iterations.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/job_token_scope.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/keys.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/labels.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/member_roles.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/merge_request_approvals.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/merge_requests.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/merge_trains.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/messages.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/milestones.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/namespaces.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/notes.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/notifications.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/packages.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/pagesdomains.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/personal_access_tokens.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/pipelines_and_jobs.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/project_access_tokens.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/project_feature_flag_user_lists.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/project_feature_flags.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/projects.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/protected_branches.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/protected_container_repositories.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/protected_environments.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/protected_packages.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/pull_mirror.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/releases.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/remote_mirrors.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/repositories.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/repository_tags.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/resource_groups.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/runners.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/search.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/secure_files.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/settings.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/sidekiq.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/snippets.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/statistics.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/status_checks.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/system_hooks.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/templates.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/todos.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/topics.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/users.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/variables.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/gl_objects/wikis.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/index.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/make.bat +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/docs/release-notes.rst +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/__init__.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/__main__.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/_backends/__init__.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/_backends/graphql.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/_backends/protocol.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/_backends/requests_backend.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/base.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/cli.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/config.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/const.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/exceptions.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/py.typed +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/types.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/utils.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/__init__.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/cli.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/__init__.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/access_requests.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/appearance.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/applications.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/artifacts.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/audit_events.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/award_emojis.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/badges.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/boards.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/branches.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/broadcast_messages.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/bulk_imports.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/ci_lint.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/cluster_agents.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/clusters.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/commits.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/container_registry.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/custom_attributes.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/deploy_keys.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/deploy_tokens.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/deployments.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/discussions.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/draft_notes.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/environments.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/epics.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/events.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/export_import.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/feature_flag_user_lists.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/feature_flags.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/features.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/files.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/geo_nodes.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/group_access_tokens.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/groups.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/hooks.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/integrations.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/invitations.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/issues.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/iterations.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/job_token_scope.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/jobs.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/keys.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/labels.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/ldap.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/member_roles.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/members.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/merge_request_approvals.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/merge_requests.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/merge_trains.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/milestones.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/namespaces.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/notes.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/notification_settings.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/package_protection_rules.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/packages.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/pages.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/personal_access_tokens.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/pipelines.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/project_access_tokens.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/push_rules.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/registry_protection_repository_rules.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/registry_protection_rules.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/releases.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/repositories.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/resource_groups.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/reviewers.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/runners.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/secure_files.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/settings.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/sidekiq.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/snippets.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/statistics.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/status_checks.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/tags.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/templates.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/todos.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/topics.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/triggers.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/users.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/gitlab/v4/objects/wikis.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/pyproject.toml +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/python_gitlab.egg-info/dependency_links.txt +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/python_gitlab.egg-info/entry_points.txt +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/python_gitlab.egg-info/requires.txt +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/python_gitlab.egg-info/top_level.txt +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/requirements-docker.txt +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/requirements-docs.txt +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/setup.cfg +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/__init__.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/conftest.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/__init__.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/__init__.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_boards.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_branches.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_bulk_imports.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_current_user.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_deploy_keys.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_deploy_tokens.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_epics.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_gitlab.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_graphql.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_groups.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_import_export.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_issues.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_keys.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_lazy_objects.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_member_roles.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_merge_requests.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_packages.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_project_feature_flag_user_lists.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_project_feature_flags.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_project_job_token_scope.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_projects.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_push_rules.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_registry.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_releases.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_repository.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_services.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_snippets.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_statistics.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_topics.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_users.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/api/test_wikis.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/cli/__init__.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/cli/conftest.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/cli/test_cli.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/cli/test_cli_artifacts.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/cli/test_cli_files.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/cli/test_cli_packages.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/cli/test_cli_project_feature_flag_user_lists.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/cli/test_cli_project_feature_flags.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/cli/test_cli_projects.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/cli/test_cli_repository.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/cli/test_cli_resource_access_tokens.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/cli/test_cli_users.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/cli/test_cli_v4.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/cli/test_cli_variables.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/conftest.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/ee-test.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/fixtures/.env +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/fixtures/__init__.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/fixtures/avatar.png +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/fixtures/create_license.rb +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/fixtures/docker-compose.yml +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/fixtures/docker.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/fixtures/invalid_auth.cfg +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/fixtures/invalid_version.cfg +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/fixtures/set_token.rb +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/functional/helpers.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/install/test_install.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/smoke/__init__.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/smoke/test_dists.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/__init__.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/_backends/__init__.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/_backends/test_requests_backend.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/base/test_rest_manager.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/base/test_rest_object.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/conftest.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/helpers.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/meta/__init__.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/meta/test_abstract_attrs.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/meta/test_imports.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/meta/test_mro.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/mixins/__init__.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/mixins/test_meta_mixins.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/mixins/test_mixin_methods.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/mixins/test_object_mixins_attributes.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/__init__.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/conftest.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_appearance.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_applications.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_audit_events.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_badges.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_bridges.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_bulk_imports.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_ci_lint.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_cluster_agents.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_commits.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_deploy_tokens.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_deployments.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_draft_notes.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_environments.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_group_access_tokens.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_group_merge_request_approvals.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_groups.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_hooks.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_invitations.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_issues.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_iterations.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_job_artifacts.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_job_token_scope.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_jobs.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_keys.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_member_roles.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_members.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_merge_request_pipelines.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_merge_requests.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_merge_trains.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_package_protection_rules.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_packages.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_personal_access_tokens.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_pipeline_schedules.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_pipelines.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_project_access_tokens.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_project_feature_flag_user_lists.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_project_feature_flags.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_project_import_export.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_project_merge_request_approvals.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_project_statistics.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_projects.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_pull_mirror.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_registry_protection_rules.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_registry_repositories.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_releases.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_remote_mirrors.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_repositories.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_resource_groups.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_resource_iteration_events.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_resource_label_events.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_resource_milestone_events.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_resource_state_events.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_runners.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_secure_files.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_services.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_snippets.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_statistics.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_status_checks.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_submodules.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_templates.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_todos.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_topics.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_users.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/objects/test_variables.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/test_cli.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/test_config.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/test_exceptions.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/test_gitlab.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/test_gitlab_auth.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/test_gitlab_http_methods.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/test_graphql.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/test_retry.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/test_types.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tests/unit/test_utils.py +0 -0
- {python_gitlab-8.2.0 → python_gitlab-8.3.0}/tox.ini +0 -0
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
All versions below are listed in reverse chronological order.
|
|
4
4
|
|
|
5
|
+
## v8.3.0 (2026-04-28)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- **api**: Update CI/CD variable create and update attributes
|
|
10
|
+
([`849301b`](https://github.com/python-gitlab/python-gitlab/commit/849301b830b0d4f76ab85ffa3f39b22a6e628df9))
|
|
11
|
+
|
|
12
|
+
- **mixins**: Register service account token classes in RotateMixin CLI actions
|
|
13
|
+
([`2cf430b`](https://github.com/python-gitlab/python-gitlab/commit/2cf430b9c55c88f1d43fd31122a022dda0a88700))
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
- **api**: Add full service account support at instance, group, and project level
|
|
18
|
+
([`feb6ced`](https://github.com/python-gitlab/python-gitlab/commit/feb6cedeffa75ef386ef13a3226bc07bcb396f61))
|
|
19
|
+
|
|
20
|
+
|
|
5
21
|
## v8.2.0 (2026-03-28)
|
|
6
22
|
|
|
7
23
|
### Documentation
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-gitlab
|
|
3
|
-
Version: 8.
|
|
3
|
+
Version: 8.3.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>
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
################
|
|
2
|
+
Service Accounts
|
|
3
|
+
################
|
|
4
|
+
|
|
5
|
+
References
|
|
6
|
+
----------
|
|
7
|
+
|
|
8
|
+
* v4 API:
|
|
9
|
+
|
|
10
|
+
+ :class:`gitlab.v4.objects.ServiceAccount`
|
|
11
|
+
+ :class:`gitlab.v4.objects.ServiceAccountManager`
|
|
12
|
+
+ :class:`gitlab.v4.objects.GroupServiceAccount`
|
|
13
|
+
+ :class:`gitlab.v4.objects.GroupServiceAccountManager`
|
|
14
|
+
+ :class:`gitlab.v4.objects.GroupServiceAccountAccessToken`
|
|
15
|
+
+ :class:`gitlab.v4.objects.GroupServiceAccountAccessTokenManager`
|
|
16
|
+
+ :class:`gitlab.v4.objects.ProjectServiceAccount`
|
|
17
|
+
+ :class:`gitlab.v4.objects.ProjectServiceAccountManager`
|
|
18
|
+
+ :class:`gitlab.v4.objects.ProjectServiceAccountAccessToken`
|
|
19
|
+
+ :class:`gitlab.v4.objects.ProjectServiceAccountAccessTokenManager`
|
|
20
|
+
|
|
21
|
+
* GitLab API: https://docs.gitlab.com/api/service_accounts/
|
|
22
|
+
|
|
23
|
+
Instance service accounts
|
|
24
|
+
-------------------------
|
|
25
|
+
|
|
26
|
+
List instance service accounts::
|
|
27
|
+
|
|
28
|
+
accounts = gl.service_accounts.list()
|
|
29
|
+
|
|
30
|
+
Create an instance service account::
|
|
31
|
+
|
|
32
|
+
sa = gl.service_accounts.create({})
|
|
33
|
+
# with optional attributes
|
|
34
|
+
sa = gl.service_accounts.create({"name": "my-bot", "username": "my-bot", "email": "my-bot@example.com"})
|
|
35
|
+
|
|
36
|
+
Update an instance service account::
|
|
37
|
+
|
|
38
|
+
gl.service_accounts.update(sa.id, {"name": "renamed-bot"})
|
|
39
|
+
# or via the object
|
|
40
|
+
sa.name = "renamed-bot"
|
|
41
|
+
sa.save()
|
|
42
|
+
|
|
43
|
+
Group service accounts
|
|
44
|
+
----------------------
|
|
45
|
+
|
|
46
|
+
List group service accounts::
|
|
47
|
+
|
|
48
|
+
accounts = group.service_accounts.list()
|
|
49
|
+
|
|
50
|
+
Create a group service account::
|
|
51
|
+
|
|
52
|
+
sa = group.service_accounts.create({})
|
|
53
|
+
# with optional attributes
|
|
54
|
+
sa = group.service_accounts.create({"name": "ci-bot", "username": "ci-bot"})
|
|
55
|
+
|
|
56
|
+
Update a group service account::
|
|
57
|
+
|
|
58
|
+
group.service_accounts.update(sa.id, {"name": "renamed-bot"})
|
|
59
|
+
# or via the object
|
|
60
|
+
sa.name = "renamed-bot"
|
|
61
|
+
sa.save()
|
|
62
|
+
|
|
63
|
+
Delete a group service account::
|
|
64
|
+
|
|
65
|
+
group.service_accounts.delete(sa.id)
|
|
66
|
+
# or via the object
|
|
67
|
+
sa.delete()
|
|
68
|
+
|
|
69
|
+
Group service account personal access tokens
|
|
70
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
71
|
+
|
|
72
|
+
List tokens for a group service account::
|
|
73
|
+
|
|
74
|
+
tokens = sa.access_tokens.list()
|
|
75
|
+
|
|
76
|
+
Create a token for a group service account::
|
|
77
|
+
|
|
78
|
+
token = sa.access_tokens.create({
|
|
79
|
+
"name": "ci-token",
|
|
80
|
+
"scopes": ["api"],
|
|
81
|
+
"expires_at": "2026-01-01",
|
|
82
|
+
})
|
|
83
|
+
print(token.token)
|
|
84
|
+
|
|
85
|
+
Rotate a token::
|
|
86
|
+
|
|
87
|
+
token.rotate()
|
|
88
|
+
print(token.token)
|
|
89
|
+
# or directly using a token ID
|
|
90
|
+
new_token = sa.access_tokens.rotate(token.id)
|
|
91
|
+
print(new_token["token"])
|
|
92
|
+
|
|
93
|
+
Revoke a token::
|
|
94
|
+
|
|
95
|
+
sa.access_tokens.delete(token.id)
|
|
96
|
+
# or via the object
|
|
97
|
+
token.delete()
|
|
98
|
+
|
|
99
|
+
Project service accounts
|
|
100
|
+
------------------------
|
|
101
|
+
|
|
102
|
+
List project service accounts::
|
|
103
|
+
|
|
104
|
+
accounts = project.service_accounts.list()
|
|
105
|
+
|
|
106
|
+
Create a project service account::
|
|
107
|
+
|
|
108
|
+
sa = project.service_accounts.create({})
|
|
109
|
+
# with optional attributes
|
|
110
|
+
sa = project.service_accounts.create({"name": "ci-bot", "username": "ci-bot"})
|
|
111
|
+
|
|
112
|
+
Update a project service account::
|
|
113
|
+
|
|
114
|
+
project.service_accounts.update(sa.id, {"name": "renamed-bot"})
|
|
115
|
+
# or via the object
|
|
116
|
+
sa.name = "renamed-bot"
|
|
117
|
+
sa.save()
|
|
118
|
+
|
|
119
|
+
Delete a project service account::
|
|
120
|
+
|
|
121
|
+
project.service_accounts.delete(sa.id)
|
|
122
|
+
# or via the object
|
|
123
|
+
sa.delete()
|
|
124
|
+
|
|
125
|
+
Project service account personal access tokens
|
|
126
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
127
|
+
|
|
128
|
+
List tokens for a project service account::
|
|
129
|
+
|
|
130
|
+
tokens = sa.access_tokens.list()
|
|
131
|
+
|
|
132
|
+
Create a token for a project service account::
|
|
133
|
+
|
|
134
|
+
token = sa.access_tokens.create({
|
|
135
|
+
"name": "ci-token",
|
|
136
|
+
"scopes": ["read_repository"],
|
|
137
|
+
"expires_at": "2026-01-01",
|
|
138
|
+
})
|
|
139
|
+
print(token.token)
|
|
140
|
+
|
|
141
|
+
Rotate a token::
|
|
142
|
+
|
|
143
|
+
token.rotate()
|
|
144
|
+
print(token.token)
|
|
145
|
+
# or directly using a token ID
|
|
146
|
+
new_token = sa.access_tokens.rotate(token.id)
|
|
147
|
+
print(new_token["token"])
|
|
148
|
+
|
|
149
|
+
Revoke a token::
|
|
150
|
+
|
|
151
|
+
sa.access_tokens.delete(token.id)
|
|
152
|
+
# or via the object
|
|
153
|
+
token.delete()
|
|
@@ -211,6 +211,8 @@ class Gitlab:
|
|
|
211
211
|
"""See :class:`~gitlab.v4.objects.PersonalAccessTokenManager`"""
|
|
212
212
|
self.topics = objects.TopicManager(self)
|
|
213
213
|
"""See :class:`~gitlab.v4.objects.TopicManager`"""
|
|
214
|
+
self.service_accounts = objects.ServiceAccountManager(self)
|
|
215
|
+
"""See :class:`~gitlab.v4.objects.ServiceAccountManager`"""
|
|
214
216
|
self.statistics = objects.ApplicationStatisticsManager(self)
|
|
215
217
|
"""See :class:`~gitlab.v4.objects.ApplicationStatisticsManager`"""
|
|
216
218
|
|
|
@@ -619,6 +619,8 @@ class RotateMixin(base.RESTManager[base.TObjCls]):
|
|
|
619
619
|
"PersonalAccessTokenManager",
|
|
620
620
|
"GroupAccessTokenManager",
|
|
621
621
|
"ProjectAccessTokenManager",
|
|
622
|
+
"GroupServiceAccountAccessTokenManager",
|
|
623
|
+
"ProjectServiceAccountAccessTokenManager",
|
|
622
624
|
),
|
|
623
625
|
optional=("expires_at",),
|
|
624
626
|
)
|
|
@@ -656,7 +658,13 @@ class ObjectRotateMixin(_RestObjectBase):
|
|
|
656
658
|
manager: base.RESTManager[Any]
|
|
657
659
|
|
|
658
660
|
@cli.register_custom_action(
|
|
659
|
-
cls_names=(
|
|
661
|
+
cls_names=(
|
|
662
|
+
"PersonalAccessToken",
|
|
663
|
+
"GroupAccessToken",
|
|
664
|
+
"ProjectAccessToken",
|
|
665
|
+
"GroupServiceAccountAccessToken",
|
|
666
|
+
"ProjectServiceAccountAccessToken",
|
|
667
|
+
),
|
|
660
668
|
optional=("expires_at",),
|
|
661
669
|
)
|
|
662
670
|
@exc.on_http_error(exc.GitlabRotateError)
|
|
@@ -91,6 +91,7 @@ from .repositories import RepositoryMixin
|
|
|
91
91
|
from .resource_groups import ProjectResourceGroupManager
|
|
92
92
|
from .runners import ProjectRunnerManager # noqa: F401
|
|
93
93
|
from .secure_files import ProjectSecureFileManager # noqa: F401
|
|
94
|
+
from .service_accounts import ProjectServiceAccountManager # noqa: F401
|
|
94
95
|
from .snippets import ProjectSnippetManager # noqa: F401
|
|
95
96
|
from .statistics import ( # noqa: F401
|
|
96
97
|
ProjectAdditionalStatisticsManager,
|
|
@@ -251,6 +252,7 @@ class Project(
|
|
|
251
252
|
repositories: ProjectRegistryRepositoryManager
|
|
252
253
|
runners: ProjectRunnerManager
|
|
253
254
|
secure_files: ProjectSecureFileManager
|
|
255
|
+
service_accounts: ProjectServiceAccountManager
|
|
254
256
|
services: ProjectServiceManager
|
|
255
257
|
snippets: ProjectSnippetManager
|
|
256
258
|
external_status_checks: ProjectExternalStatusCheckManager
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"""
|
|
2
|
+
GitLab API: https://docs.gitlab.com/api/service_accounts/
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from gitlab.base import RESTObject
|
|
6
|
+
from gitlab.mixins import (
|
|
7
|
+
CreateMixin,
|
|
8
|
+
DeleteMixin,
|
|
9
|
+
ListMixin,
|
|
10
|
+
ObjectDeleteMixin,
|
|
11
|
+
ObjectRotateMixin,
|
|
12
|
+
RotateMixin,
|
|
13
|
+
SaveMixin,
|
|
14
|
+
UpdateMethod,
|
|
15
|
+
UpdateMixin,
|
|
16
|
+
)
|
|
17
|
+
from gitlab.types import ArrayAttribute, RequiredOptional
|
|
18
|
+
|
|
19
|
+
__all__ = [
|
|
20
|
+
"ServiceAccount",
|
|
21
|
+
"ServiceAccountManager",
|
|
22
|
+
"GroupServiceAccount",
|
|
23
|
+
"GroupServiceAccountManager",
|
|
24
|
+
"GroupServiceAccountAccessToken",
|
|
25
|
+
"GroupServiceAccountAccessTokenManager",
|
|
26
|
+
"ProjectServiceAccount",
|
|
27
|
+
"ProjectServiceAccountManager",
|
|
28
|
+
"ProjectServiceAccountAccessToken",
|
|
29
|
+
"ProjectServiceAccountAccessTokenManager",
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
_SA_ACCOUNT_ATTRS = RequiredOptional(optional=("name", "username", "email"))
|
|
33
|
+
|
|
34
|
+
_SA_TOKEN_CREATE_ATTRS = RequiredOptional(
|
|
35
|
+
required=("name", "scopes"), optional=("description", "expires_at")
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
_SA_TOKEN_LIST_FILTERS = (
|
|
39
|
+
"created_after",
|
|
40
|
+
"created_before",
|
|
41
|
+
"expires_after",
|
|
42
|
+
"expires_before",
|
|
43
|
+
"last_used_after",
|
|
44
|
+
"last_used_before",
|
|
45
|
+
"revoked",
|
|
46
|
+
"search",
|
|
47
|
+
"sort",
|
|
48
|
+
"state",
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
# ---------------------------------------------------------------------------
|
|
53
|
+
# Instance-level service accounts
|
|
54
|
+
# ---------------------------------------------------------------------------
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class ServiceAccount(SaveMixin, RESTObject):
|
|
58
|
+
pass
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class ServiceAccountManager(
|
|
62
|
+
CreateMixin[ServiceAccount], ListMixin[ServiceAccount], UpdateMixin[ServiceAccount]
|
|
63
|
+
):
|
|
64
|
+
_path = "/service_accounts"
|
|
65
|
+
_obj_cls = ServiceAccount
|
|
66
|
+
_create_attrs = _SA_ACCOUNT_ATTRS
|
|
67
|
+
_update_attrs = _SA_ACCOUNT_ATTRS
|
|
68
|
+
_update_method = UpdateMethod.PATCH
|
|
69
|
+
_list_filters = ("order_by", "sort")
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
# ---------------------------------------------------------------------------
|
|
73
|
+
# Group-level service accounts
|
|
74
|
+
# ---------------------------------------------------------------------------
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
class GroupServiceAccountAccessToken(ObjectDeleteMixin, ObjectRotateMixin, RESTObject):
|
|
78
|
+
pass
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
class GroupServiceAccountAccessTokenManager(
|
|
82
|
+
CreateMixin[GroupServiceAccountAccessToken],
|
|
83
|
+
DeleteMixin[GroupServiceAccountAccessToken],
|
|
84
|
+
ListMixin[GroupServiceAccountAccessToken],
|
|
85
|
+
RotateMixin[GroupServiceAccountAccessToken],
|
|
86
|
+
):
|
|
87
|
+
_path = "/groups/{group_id}/service_accounts/{user_id}/personal_access_tokens"
|
|
88
|
+
_obj_cls = GroupServiceAccountAccessToken
|
|
89
|
+
_from_parent_attrs = {"group_id": "group_id", "user_id": "id"}
|
|
90
|
+
_create_attrs = _SA_TOKEN_CREATE_ATTRS
|
|
91
|
+
_types = {"scopes": ArrayAttribute}
|
|
92
|
+
_list_filters = _SA_TOKEN_LIST_FILTERS
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
class GroupServiceAccount(SaveMixin, ObjectDeleteMixin, RESTObject):
|
|
96
|
+
access_tokens: GroupServiceAccountAccessTokenManager
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
class GroupServiceAccountManager(
|
|
100
|
+
CreateMixin[GroupServiceAccount],
|
|
101
|
+
DeleteMixin[GroupServiceAccount],
|
|
102
|
+
ListMixin[GroupServiceAccount],
|
|
103
|
+
UpdateMixin[GroupServiceAccount],
|
|
104
|
+
):
|
|
105
|
+
_path = "/groups/{group_id}/service_accounts"
|
|
106
|
+
_obj_cls = GroupServiceAccount
|
|
107
|
+
_from_parent_attrs = {"group_id": "id"}
|
|
108
|
+
_create_attrs = _SA_ACCOUNT_ATTRS
|
|
109
|
+
_update_attrs = _SA_ACCOUNT_ATTRS
|
|
110
|
+
_update_method = UpdateMethod.PATCH
|
|
111
|
+
_list_filters = ("order_by", "sort")
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
# ---------------------------------------------------------------------------
|
|
115
|
+
# Project-level service accounts
|
|
116
|
+
# ---------------------------------------------------------------------------
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
class ProjectServiceAccountAccessToken(
|
|
120
|
+
ObjectDeleteMixin, ObjectRotateMixin, RESTObject
|
|
121
|
+
):
|
|
122
|
+
pass
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
class ProjectServiceAccountAccessTokenManager(
|
|
126
|
+
CreateMixin[ProjectServiceAccountAccessToken],
|
|
127
|
+
DeleteMixin[ProjectServiceAccountAccessToken],
|
|
128
|
+
ListMixin[ProjectServiceAccountAccessToken],
|
|
129
|
+
RotateMixin[ProjectServiceAccountAccessToken],
|
|
130
|
+
):
|
|
131
|
+
_path = "/projects/{project_id}/service_accounts/{user_id}/personal_access_tokens"
|
|
132
|
+
_obj_cls = ProjectServiceAccountAccessToken
|
|
133
|
+
_from_parent_attrs = {"project_id": "project_id", "user_id": "id"}
|
|
134
|
+
_create_attrs = _SA_TOKEN_CREATE_ATTRS
|
|
135
|
+
_types = {"scopes": ArrayAttribute}
|
|
136
|
+
_list_filters = _SA_TOKEN_LIST_FILTERS
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
class ProjectServiceAccount(SaveMixin, ObjectDeleteMixin, RESTObject):
|
|
140
|
+
access_tokens: ProjectServiceAccountAccessTokenManager
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
class ProjectServiceAccountManager(
|
|
144
|
+
CreateMixin[ProjectServiceAccount],
|
|
145
|
+
DeleteMixin[ProjectServiceAccount],
|
|
146
|
+
ListMixin[ProjectServiceAccount],
|
|
147
|
+
UpdateMixin[ProjectServiceAccount],
|
|
148
|
+
):
|
|
149
|
+
_path = "/projects/{project_id}/service_accounts"
|
|
150
|
+
_obj_cls = ProjectServiceAccount
|
|
151
|
+
_from_parent_attrs = {"project_id": "id"}
|
|
152
|
+
_create_attrs = _SA_ACCOUNT_ATTRS
|
|
153
|
+
_update_attrs = _SA_ACCOUNT_ATTRS
|
|
154
|
+
_update_method = UpdateMethod.PATCH
|
|
155
|
+
_list_filters = ("order_by", "sort")
|
|
@@ -27,10 +27,19 @@ class VariableManager(CRUDMixin[Variable]):
|
|
|
27
27
|
_path = "/admin/ci/variables"
|
|
28
28
|
_obj_cls = Variable
|
|
29
29
|
_create_attrs = RequiredOptional(
|
|
30
|
-
required=("key", "value"),
|
|
30
|
+
required=("key", "value"),
|
|
31
|
+
optional=("description", "masked", "protected", "raw", "variable_type"),
|
|
31
32
|
)
|
|
32
33
|
_update_attrs = RequiredOptional(
|
|
33
|
-
required=("key",
|
|
34
|
+
required=("key",),
|
|
35
|
+
optional=(
|
|
36
|
+
"description",
|
|
37
|
+
"masked",
|
|
38
|
+
"protected",
|
|
39
|
+
"raw",
|
|
40
|
+
"value",
|
|
41
|
+
"variable_type",
|
|
42
|
+
),
|
|
34
43
|
)
|
|
35
44
|
|
|
36
45
|
|
|
@@ -43,10 +52,28 @@ class GroupVariableManager(CRUDMixin[GroupVariable]):
|
|
|
43
52
|
_obj_cls = GroupVariable
|
|
44
53
|
_from_parent_attrs = {"group_id": "id"}
|
|
45
54
|
_create_attrs = RequiredOptional(
|
|
46
|
-
required=("key", "value"),
|
|
55
|
+
required=("key", "value"),
|
|
56
|
+
optional=(
|
|
57
|
+
"description",
|
|
58
|
+
"environment_scope",
|
|
59
|
+
"masked",
|
|
60
|
+
"masked_and_hidden",
|
|
61
|
+
"protected",
|
|
62
|
+
"raw",
|
|
63
|
+
"variable_type",
|
|
64
|
+
),
|
|
47
65
|
)
|
|
48
66
|
_update_attrs = RequiredOptional(
|
|
49
|
-
required=("key",
|
|
67
|
+
required=("key",),
|
|
68
|
+
optional=(
|
|
69
|
+
"description",
|
|
70
|
+
"environment_scope",
|
|
71
|
+
"masked",
|
|
72
|
+
"protected",
|
|
73
|
+
"raw",
|
|
74
|
+
"value",
|
|
75
|
+
"variable_type",
|
|
76
|
+
),
|
|
50
77
|
)
|
|
51
78
|
|
|
52
79
|
|
|
@@ -60,9 +87,25 @@ class ProjectVariableManager(CRUDMixin[ProjectVariable]):
|
|
|
60
87
|
_from_parent_attrs = {"project_id": "id"}
|
|
61
88
|
_create_attrs = RequiredOptional(
|
|
62
89
|
required=("key", "value"),
|
|
63
|
-
optional=(
|
|
90
|
+
optional=(
|
|
91
|
+
"description",
|
|
92
|
+
"environment_scope",
|
|
93
|
+
"masked",
|
|
94
|
+
"masked_and_hidden",
|
|
95
|
+
"protected",
|
|
96
|
+
"raw",
|
|
97
|
+
"variable_type",
|
|
98
|
+
),
|
|
64
99
|
)
|
|
65
100
|
_update_attrs = RequiredOptional(
|
|
66
|
-
required=("key",
|
|
67
|
-
optional=(
|
|
101
|
+
required=("key",),
|
|
102
|
+
optional=(
|
|
103
|
+
"description",
|
|
104
|
+
"environment_scope",
|
|
105
|
+
"masked",
|
|
106
|
+
"protected",
|
|
107
|
+
"raw",
|
|
108
|
+
"value",
|
|
109
|
+
"variable_type",
|
|
110
|
+
),
|
|
68
111
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-gitlab
|
|
3
|
-
Version: 8.
|
|
3
|
+
Version: 8.3.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>
|
|
@@ -93,6 +93,7 @@ docs/gl_objects/resource_groups.rst
|
|
|
93
93
|
docs/gl_objects/runners.rst
|
|
94
94
|
docs/gl_objects/search.rst
|
|
95
95
|
docs/gl_objects/secure_files.rst
|
|
96
|
+
docs/gl_objects/service_accounts.rst
|
|
96
97
|
docs/gl_objects/settings.rst
|
|
97
98
|
docs/gl_objects/sidekiq.rst
|
|
98
99
|
docs/gl_objects/snippets.rst
|
|
@@ -359,6 +360,7 @@ tests/unit/objects/test_resource_milestone_events.py
|
|
|
359
360
|
tests/unit/objects/test_resource_state_events.py
|
|
360
361
|
tests/unit/objects/test_runners.py
|
|
361
362
|
tests/unit/objects/test_secure_files.py
|
|
363
|
+
tests/unit/objects/test_service_accounts.py
|
|
362
364
|
tests/unit/objects/test_services.py
|
|
363
365
|
tests/unit/objects/test_snippets.py
|
|
364
366
|
tests/unit/objects/test_statistics.py
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
-r requirements.txt
|
|
2
|
+
argcomplete==2.0.0
|
|
3
|
+
black==26.3.1
|
|
4
|
+
commitizen==4.13.10
|
|
5
|
+
flake8==7.3.0
|
|
6
|
+
isort==8.0.1
|
|
7
|
+
mypy==1.20.2
|
|
8
|
+
pylint==4.0.5
|
|
9
|
+
pytest==9.0.3
|
|
10
|
+
responses==0.26.0
|
|
11
|
+
respx==0.23.1
|
|
12
|
+
types-PyYAML==6.0.12.20260408
|
|
13
|
+
types-requests==2.33.0.20260408
|
|
14
|
+
types-setuptools==82.0.0.20260408
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pre-commit==4.6.0
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
-r requirements.txt
|
|
2
|
-
anyio==4.
|
|
3
|
-
build==1.4.
|
|
2
|
+
anyio==4.13.0
|
|
3
|
+
build==1.4.4
|
|
4
4
|
coverage==7.13.5
|
|
5
5
|
pytest-console-scripts==1.4.1
|
|
6
6
|
pytest-cov==7.1.0
|
|
7
7
|
pytest-github-actions-annotate-failures==0.4.0
|
|
8
|
-
pytest==9.0.
|
|
8
|
+
pytest==9.0.3
|
|
9
9
|
PyYaml==6.0.3
|
|
10
10
|
responses==0.26.0
|
|
11
|
-
respx==0.
|
|
11
|
+
respx==0.23.1
|
|
12
12
|
trio==0.33.0
|
|
13
|
-
wheel==0.
|
|
13
|
+
wheel==0.47.0
|
|
@@ -43,3 +43,39 @@ def test_project_variables(project):
|
|
|
43
43
|
assert variable.value == "new_value1"
|
|
44
44
|
|
|
45
45
|
variable.delete()
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def test_hidden_group_variables(group):
|
|
49
|
+
variable = group.variables.create(
|
|
50
|
+
{"key": "key1", "value": "secret_value", "masked_and_hidden": True}
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
variable = group.variables.get(variable.key)
|
|
54
|
+
assert variable.value is None
|
|
55
|
+
assert variable.description is None
|
|
56
|
+
assert variable in group.variables.list()
|
|
57
|
+
|
|
58
|
+
variable.description = "new_description"
|
|
59
|
+
variable.save()
|
|
60
|
+
variable = group.variables.get(variable.key)
|
|
61
|
+
assert variable.description == "new_description"
|
|
62
|
+
|
|
63
|
+
variable.delete()
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def test_hidden_project_variables(project):
|
|
67
|
+
variable = project.variables.create(
|
|
68
|
+
{"key": "key1", "value": "secret_value", "masked_and_hidden": True}
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
variable = project.variables.get(variable.key)
|
|
72
|
+
assert variable.value is None
|
|
73
|
+
assert variable.description is None
|
|
74
|
+
assert variable in project.variables.list()
|
|
75
|
+
|
|
76
|
+
variable.description = "new_description"
|
|
77
|
+
variable.save()
|
|
78
|
+
variable = project.variables.get(variable.key)
|
|
79
|
+
assert variable.description == "new_description"
|
|
80
|
+
|
|
81
|
+
variable.delete()
|