From 0a6c4085e75e02c715f9132d81a00e2be7df9267 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Oct 2025 02:43:25 +0000 Subject: [PATCH 1/8] chore(deps): update dependency pylint to v4 --- requirements-lint.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-lint.txt b/requirements-lint.txt index 81ca68a17..67fcbb647 100644 --- a/requirements-lint.txt +++ b/requirements-lint.txt @@ -5,7 +5,7 @@ commitizen==4.9.1 flake8==7.3.0 isort==6.1.0 mypy==1.18.2 -pylint==3.3.9 +pylint==4.0.1 pytest==8.4.2 responses==0.25.8 respx==0.22.0 From 2e0831c7b88ec98b3ef1cab944f1aba77b31fcc7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Oct 2025 03:01:55 +0000 Subject: [PATCH 2/8] chore(deps): update dependency isort to v7 --- requirements-lint.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-lint.txt b/requirements-lint.txt index 67fcbb647..b956034b6 100644 --- a/requirements-lint.txt +++ b/requirements-lint.txt @@ -3,7 +3,7 @@ argcomplete==2.0.0 black==25.9.0 commitizen==4.9.1 flake8==7.3.0 -isort==6.1.0 +isort==7.0.0 mypy==1.18.2 pylint==4.0.1 pytest==8.4.2 From d623085b39c05be14f3e136730d8d617fb961c46 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Oct 2025 04:11:53 +0000 Subject: [PATCH 3/8] chore(deps): update pre-commit hook pycqa/isort to v7 --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 75b98ce66..fd18f39d1 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -16,7 +16,7 @@ repos: hooks: - id: flake8 - repo: https://github.com/pycqa/isort - rev: 6.1.0 + rev: 7.0.0 hooks: - id: isort - repo: https://github.com/pycqa/pylint From e213849bef447b94f2185f5c5e2bb3cbdef0a0f6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Oct 2025 04:30:54 +0000 Subject: [PATCH 4/8] chore(deps): update pre-commit hook pycqa/pylint to v4 --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fd18f39d1..364d107a7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -20,7 +20,7 @@ repos: hooks: - id: isort - repo: https://github.com/pycqa/pylint - rev: v3.3.9 + rev: v4.0.1 hooks: - id: pylint additional_dependencies: From 0f5655c7c018223b325d3ebc42029d92bac449c1 Mon Sep 17 00:00:00 2001 From: "John L. Villalovos" Date: Sun, 19 Oct 2025 22:27:41 -0700 Subject: [PATCH 5/8] chore(deps): upgrade coverage to 7.11.0 for Python > 3.9 For Python versions newer than 3.9 use 'coverage==7.11.0' For 3.9 and older continue to use 'coverage==7.10.7' --- requirements-test.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements-test.txt b/requirements-test.txt index 369c95673..8be29d41c 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -1,7 +1,8 @@ -r requirements.txt anyio==4.11.0 build==1.3.0 -coverage==7.10.7 +coverage==7.10.7 ; python_version <= '3.9' +coverage==7.11.0 ; python_version > '3.9' pytest-console-scripts==1.4.1 pytest-cov==7.0.0 pytest-github-actions-annotate-failures==0.3.0 From adbc833b982c3328a47d618bd0e61e4bb068e0ba Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 27 Oct 2025 00:40:38 +0000 Subject: [PATCH 6/8] chore(deps): update github artifact actions --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 94dde7910..baf3f5262 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -122,7 +122,7 @@ jobs: pip install -r requirements-test.txt - name: Build package run: python -m build -o dist/ - - uses: actions/upload-artifact@v4.6.2 + - uses: actions/upload-artifact@v5.0.0 with: name: dist path: dist @@ -136,7 +136,7 @@ jobs: uses: actions/setup-python@v6.0.0 with: python-version: '3.14' - - uses: actions/download-artifact@v5.0.0 + - uses: actions/download-artifact@v6.0.0 with: name: dist path: dist From 22941acc3f331d5b683599c014ec962ece5d4b76 Mon Sep 17 00:00:00 2001 From: "John L. Villalovos" Date: Wed, 29 Oct 2025 07:18:00 -0700 Subject: [PATCH 7/8] feat!: drop Python 3.9 support and add Python 3.14 Python 3.9 is End-of-Life (EOL) as of 2025-10 as stated in https://devguide.python.org/versions/ and https://peps.python.org/pep-0596/#lifespan By dropping support for Python 3.9 and requiring Python 3.10 or higher it allows python-gitlab to take advantage of new features in Python 3.10, which are documented at: https://docs.python.org/3/whatsnew/3.10.html Also mark Python 3.14 as officially supported as it has been released. Closes: https://github.com/python-gitlab/python-gitlab/issues/3285 BREAKING CHANGE: As of python-gitlab 7.0.0, Python 3.9 is no longer supported. Python 3.10 or higher is required. --- .github/workflows/test.yml | 12 +++++------- .readthedocs.yml | 2 +- README.rst | 2 +- pyproject.toml | 4 ++-- requirements-test.txt | 3 +-- tox.ini | 4 ++-- 6 files changed, 12 insertions(+), 15 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index baf3f5262..7f1b877ca 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,8 +26,6 @@ jobs: matrix: os: [ubuntu-latest] python: - - version: "3.9" - toxenv: py39,smoke - version: "3.10" toxenv: py310,smoke - version: "3.11" @@ -36,17 +34,17 @@ jobs: toxenv: py312,smoke - version: "3.13" toxenv: py313,smoke - - version: "3.14.0-alpha - 3.14" # SemVer's version range syntax + - version: "3.14" toxenv: py314,smoke include: - os: macos-latest python: - version: "3.13" - toxenv: py313,smoke + version: "3.14" + toxenv: py314,smoke - os: windows-latest python: - version: "3.13" - toxenv: py313,smoke + version: "3.14" + toxenv: py314,smoke steps: - uses: actions/checkout@v5.0.0 - name: Set up Python ${{ matrix.python.version }} diff --git a/.readthedocs.yml b/.readthedocs.yml index 2d561b88b..facdbd3f9 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -3,7 +3,7 @@ version: 2 build: os: ubuntu-22.04 tools: - python: "3.11" + python: "3.13" sphinx: configuration: docs/conf.py diff --git a/README.rst b/README.rst index 101add1eb..1b7b7ce48 100644 --- a/README.rst +++ b/README.rst @@ -53,7 +53,7 @@ Features Installation ------------ -As of 5.0.0, ``python-gitlab`` is compatible with Python 3.9+. +As of 7.0.0, ``python-gitlab`` is compatible with Python 3.10+. Use ``pip`` to install the latest stable version of ``python-gitlab``: diff --git a/pyproject.toml b/pyproject.toml index 5aad28aee..7b8510b94 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,7 +15,7 @@ maintainers = [ {name = "Nejc Habjan", email="nejc.habjan@siemens.com"}, {name = "Roger Meier", email="r.meier@siemens.com"} ] -requires-python = ">=3.9.0" +requires-python = ">=3.10.0" dependencies = [ "requests>=2.32.0", "requests-toolbelt>=1.0.0", @@ -30,11 +30,11 @@ classifiers = [ "Operating System :: Microsoft :: Windows", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.9", "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"} diff --git a/requirements-test.txt b/requirements-test.txt index 8be29d41c..64b22c3af 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -1,8 +1,7 @@ -r requirements.txt anyio==4.11.0 build==1.3.0 -coverage==7.10.7 ; python_version <= '3.9' -coverage==7.11.0 ; python_version > '3.9' +coverage==7.11.0 pytest-console-scripts==1.4.1 pytest-cov==7.0.0 pytest-github-actions-annotate-failures==0.3.0 diff --git a/tox.ini b/tox.ini index 05a15c6c4..0ba295692 100644 --- a/tox.ini +++ b/tox.ini @@ -2,14 +2,14 @@ minversion = 4.0 skipsdist = True skip_missing_interpreters = True -envlist = py313,py312,py311,py310,py39,black,isort,flake8,mypy,twine-check,cz,pylint +envlist = py314,py313,py312,py311,py310,black,isort,flake8,mypy,twine-check,cz,pylint # NOTE(jlvillal): To use a label use the `-m` flag. # For example to run the `func` label group of environments do: # tox -m func labels = lint = black,isort,flake8,mypy,pylint,cz - unit = py313,py312,py311,py310,py39,py38 + unit = py314,py313,py312,py311,py310 # func is the functional tests. This is very time consuming. func = cli_func_v4,api_func_v4 From 378b72d841b5c7ff34eb7b9d8b4c3083af367a4c Mon Sep 17 00:00:00 2001 From: semantic-release Date: Wed, 29 Oct 2025 15:05:36 +0000 Subject: [PATCH 8/8] chore: release v7.0.0 --- CHANGELOG.md | 12 ++++++++++++ gitlab/_version.py | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f13242484..de7c0d113 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,18 @@ All versions below are listed in reverse chronological order. +## v7.0.0 (2025-10-29) + +### Features + +- Drop Python 3.9 support and add Python 3.14 + ([`22941ac`](https://github.com/python-gitlab/python-gitlab/commit/22941acc3f331d5b683599c014ec962ece5d4b76)) + +### Breaking Changes + +- As of python-gitlab 7.0.0, Python 3.9 is no longer supported. Python 3.10 or higher is required. + + ## v6.5.0 (2025-10-17) ### Bug Fixes diff --git a/gitlab/_version.py b/gitlab/_version.py index 5c642f8f0..e7817062d 100644 --- a/gitlab/_version.py +++ b/gitlab/_version.py @@ -3,4 +3,4 @@ __email__ = "gauvainpocentek@gmail.com" __license__ = "LGPL3" __title__ = "python-gitlab" -__version__ = "6.5.0" +__version__ = "7.0.0"