[build-system]
requires = ["setuptools>=61.0.0"]
build-backend = "setuptools.build_meta"
[project]
name = "python-gitlab"
description="The python wrapper for the GitLab REST and GraphQL APIs."
readme = "README.rst"
authors = [
{name = "Gauvain Pocentek", email= "gauvain@pocentek.net"}
]
maintainers = [
{name = "John Villalovos", email="john@sodarock.com"},
{name = "Max Wittig", email="max.wittig@siemens.com"},
{name = "Nejc Habjan", email="nejc.habjan@siemens.com"},
{name = "Roger Meier", email="r.meier@siemens.com"}
]
requires-python = ">=3.10.0"
dependencies = [
"requests>=2.32.0",
"requests-toolbelt>=1.0.0",
]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Intended Audience :: System Administrators",
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
"Natural Language :: English",
"Operating System :: POSIX",
"Operating System :: Microsoft :: Windows",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
]
keywords = ["api", "client", "gitlab", "python", "python-gitlab", "wrapper"]
license = {text = "LGPL-3.0-or-later"}
dynamic = ["version"]
[project.optional-dependencies]
autocompletion = ["argcomplete>=1.10.0,<3"]
yaml = ["PyYaml>=6.0.1"]
graphql = ["gql[httpx]>=3.5.0,<5"]
[project.scripts]
gitlab = "gitlab.cli:main"
[project.urls]
Homepage = "https://github.com/python-gitlab/python-gitlab"
Changelog = "https://github.com/python-gitlab/python-gitlab/blob/main/CHANGELOG.md"
Documentation = "https://python-gitlab.readthedocs.io"
Source = "https://github.com/python-gitlab/python-gitlab"
[tool.setuptools.packages.find]
exclude = ["docs*", "tests*"]
[tool.setuptools.dynamic]
version = { attr = "gitlab._version.__version__" }
[tool.isort]
profile = "black"
multi_line_output = 3
order_by_type = false
[tool.mypy]
files = "."
exclude = "build/.*"
strict = true
[tool.black]
skip_magic_trailing_comma = true
# Overrides for currently untyped modules
[[tool.mypy.overrides]]
module = [
"docs.*",
"docs.ext.*",
"tests.unit.*",
]
ignore_errors = true
[[tool.mypy.overrides]]
module = [
"tests.functional.*",
"tests.functional.api.*",
"tests.smoke.*",
]
disable_error_code = ["no-untyped-def"]
[tool.semantic_release]
branch = "main"
build_command = """
python -m pip install build~=0.10.0
python -m build .
"""
version_variables = [
"gitlab/_version.py:__version__",
]
commit_message = "chore: release v{version}"
[tool.semantic_release.changelog]
exclude_commit_patterns = [
'''chore\(deps\): .+''', # Exclude dependency updates from the changelog
]
mode = "update"
insertion_flag = "All versions below are listed in reverse chronological order."
[tool.pylint.messages_control]
max-line-length = 88
jobs = 0 # Use auto-detected number of multiple processes to speed up Pylint.
# TODO(jlvilla): Work on removing these disables over time.
disable = [
"arguments-differ",
"arguments-renamed",
"broad-except",
"cyclic-import",
"duplicate-code",
"import-outside-toplevel",
"invalid-name",
"missing-class-docstring",
"missing-function-docstring",
"missing-module-docstring",
"not-callable",
"protected-access",
"redefined-builtin",
"signature-differs",
"too-few-public-methods",
"too-many-ancestors",
"too-many-arguments",
"too-many-branches",
"too-many-instance-attributes",
"too-many-lines",
"too-many-locals",
"too-many-positional-arguments",
"too-many-public-methods",
"too-many-statements",
"unsubscriptable-object",
]
[tool.pytest.ini_options]
xfail_strict = true
markers = [
"gitlab_premium: marks tests that require GitLab Premium",
"gitlab_ultimate: marks tests that require GitLab Ultimate",
]
# If 'log_cli=True' the following apply
# NOTE: If set 'log_cli_level' to 'DEBUG' will show a log of all of the HTTP requests
# made in functional tests.
log_cli_level = "INFO"
log_cli_format = "%(asctime)s.%(msecs)03d [%(levelname)8s] (%(filename)s:%(funcName)s:L%(lineno)s) %(message)s"
log_cli_date_format = "%Y-%m-%d %H:%M:%S"