Skip to main content

The python wrapper for the GitLab REST and GraphQL APIs.

Project description

https://github.com/python-gitlab/python-gitlab/workflows/Test/badge.svg https://badge.fury.io/py/python-gitlab.svg https://readthedocs.org/projects/python-gitlab/badge/?version=latest https://codecov.io/github/python-gitlab/python-gitlab/coverage.svg?branch=main https://img.shields.io/pypi/pyversions/python-gitlab.svg https://img.shields.io/gitter/room/python-gitlab/Lobby.svg https://img.shields.io/badge/code%20style-black-000000.svg https://img.shields.io/github/license/python-gitlab/python-gitlab

python-gitlab is a Python package providing access to the GitLab APIs.

It includes a client for GitLab’s v4 REST API, synchronous and asynchronous GraphQL API clients, as well as a CLI tool (gitlab) wrapping REST API endpoints.

Features

python-gitlab enables you to:

  • write Pythonic code to manage your GitLab resources.

  • pass arbitrary parameters to the GitLab API. Simply follow GitLab’s docs on what parameters are available.

  • use a synchronous or asynchronous client when using the GraphQL API.

  • access arbitrary endpoints as soon as they are available on GitLab, by using lower-level API methods.

  • use persistent requests sessions for authentication, proxy and certificate handling.

  • handle smart retries on network and server errors, with rate-limit handling.

  • flexible handling of paginated responses, including lazy iterators.

  • automatically URL-encode paths and parameters where needed.

  • automatically convert some complex data structures to API attribute types

  • merge configuration from config files, environment variables and arguments.

Installation

As of 7.0.0, python-gitlab is compatible with Python 3.10+.

Use pip to install the latest stable version of python-gitlab:

$ pip install --upgrade python-gitlab

The current development version is available on both GitHub.com and GitLab.com, and can be installed directly from the git repository:

$ pip install git+https://github.com/python-gitlab/python-gitlab.git

From GitLab:

$ pip install git+https://gitlab.com/python-gitlab/python-gitlab.git

Using the docker images

python-gitlab provides Docker images in two flavors, based on the Alpine and Debian slim python base images. The default tag is alpine, but you can explicitly use the alias (see below).

The alpine image is smaller, but you may want to use the Debian-based slim tag (currently based on -slim-bullseye) if you are running into issues or need a more complete environment with a bash shell, such as in CI jobs.

The images are published on the GitLab registry, for example:

  • registry.gitlab.com/python-gitlab/python-gitlab:latest (latest, alpine alias)

  • registry.gitlab.com/python-gitlab/python-gitlab:alpine (latest alpine)

  • registry.gitlab.com/python-gitlab/python-gitlab:slim-bullseye (latest slim-bullseye)

  • registry.gitlab.com/python-gitlab/python-gitlab:v3.2.0 (alpine alias)

  • registry.gitlab.com/python-gitlab/python-gitlab:v3.2.0-alpine

  • registry.gitlab.com/python-gitlab/python-gitlab:v3.2.0-slim-bullseye

You can run the Docker image directly from the GitLab registry:

$ docker run -it --rm registry.gitlab.com/python-gitlab/python-gitlab:latest <command> ...

For example, to get a project on GitLab.com (without authentication):

$ docker run -it --rm registry.gitlab.com/python-gitlab/python-gitlab:latest project get --id gitlab-org/gitlab

You can also mount your own config file:

$ docker run -it --rm -v /path/to/python-gitlab.cfg:/etc/python-gitlab.cfg registry.gitlab.com/python-gitlab/python-gitlab:latest <command> ...

Usage inside GitLab CI

If you want to use the Docker image directly inside your GitLab CI as an image, you will need to override the entrypoint, as noted in the official GitLab documentation:

Job Name:
   image:
      name: registry.gitlab.com/python-gitlab/python-gitlab:latest
      entrypoint: [""]
   before_script:
      gitlab --version
   script:
      gitlab <command>

Building the image

To build your own image from this repository, run:

$ docker build -t python-gitlab:latest .

Run your own image:

$ docker run -it --rm python-gitlab:latest <command> ...

Build a Debian slim-based image:

$ docker build -t python-gitlab:latest --build-arg PYTHON_FLAVOR=slim-bullseye .

Bug reports

Please report bugs and feature requests at https://github.com/python-gitlab/python-gitlab/issues.

Gitter Community Chat

We have a gitter community chat available at https://gitter.im/python-gitlab/Lobby, which you can also directly access via the Open Chat button below.

If you have a simple question, the community might be able to help already, without you opening an issue. If you regularly use python-gitlab, we also encourage you to join and participate. You might discover new ideas and use cases yourself!

Documentation

The full documentation for CLI and API is available on readthedocs.

Build the docs

We use tox to manage our environment and build the documentation:

pip install tox
tox -e docs

Contributing

For guidelines for contributing to python-gitlab, refer to CONTRIBUTING.rst.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_gitlab-7.0.0.tar.gz (400.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_gitlab-7.0.0-py3-none-any.whl (144.4 kB view details)

Uploaded Python 3

File details

Details for the file python_gitlab-7.0.0.tar.gz.

File metadata

  • Download URL: python_gitlab-7.0.0.tar.gz
  • Upload date:
  • Size: 400.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for python_gitlab-7.0.0.tar.gz
Algorithm Hash digest
SHA256 e4d934430f64efc09e6208b782c61cc0a3389527765e03ffbef17f4323dce441
MD5 98d28a0f76994e84cfd0513b40ff3740
BLAKE2b-256 5ec40b613303b4f0fcda69b3d2e03d0a1fb1b6b079a7c7832e03a8d92461e9fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_gitlab-7.0.0.tar.gz:

Publisher: release.yml on python-gitlab/python-gitlab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file python_gitlab-7.0.0-py3-none-any.whl.

File metadata

  • Download URL: python_gitlab-7.0.0-py3-none-any.whl
  • Upload date:
  • Size: 144.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for python_gitlab-7.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 712a6c8c5e79e7e66f6dabb25d8fe7831a6b238d4a5132f8231df6b3b890ceff
MD5 89953ca6b96cc017160c455c17361349
BLAKE2b-256 4f9e811edc46a15f8deb828cba7ef8aab3451dc11ca72d033f3df72a5af865d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_gitlab-7.0.0-py3-none-any.whl:

Publisher: release.yml on python-gitlab/python-gitlab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page