From b7ca4761851c0f9e55187c75551f8c3f9fa8c4d7 Mon Sep 17 00:00:00 2001 From: Giovanny Rodriguez Date: Tue, 13 Oct 2026 12:34:20 -0500 Subject: [PATCH] docs: drop GLPI 9.x from supported versions; state CI integration testing The docs claimed "9.1 and later" and, in one place, "tested on 9.x"; no 9.x release was tested. Supported versions are now GLPI 10.0, 11.x and 12.x, backed by the integration workflow. CHANGELOG gains an Unreleased section covering the integration tests, DCO and lint/type checks. Co-Authored-By: Claude Opus 5.5 Signed-off-by: Giovanny Rodriguez --- CHANGELOG.md | 22 ++++++++++++++++++++++ README.md | 4 ++-- docs/guides/installation.md | 8 ++++---- docs/guides/oauth2.md | 2 +- docs/index.md | 10 +++++----- examples/api/basic_usage.py | 2 +- examples/async_api/basic_async.py | 2 +- glpi_utils/__init__.py | 2 +- mkdocs.yml | 2 +- setup.cfg | 2 +- 10 files changed, 39 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 63bfc39..3551ebc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,28 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm --- +## [Unreleased] + +### Removed + +- **GLPI 9.x is no longer listed as supported.** The README and docs claimed + "9.1 and later" (one page said "tested on 9.x"), but no 9.x release was ever + tested and the official `glpi/glpi` images start at 10.0. Supported: GLPI + 10.0, 11.x and 12.x; the High-Level API clients need 11.0.6+. + +### Added + +- **Integration tests against real GLPI in CI** (`tests/integration`, + `.github/workflows/integration.yaml`): both clients, sync and async, against + the latest patch of `glpi/glpi:10.0`, `11.0` and `12.0` on every pull request + and weekly. Each bug fixed in 1.5.0 has a test that fails on the old + behaviour. Skipped locally unless `GLPI_IT_URL` is set. +- **DCO sign-off required on contributions** (`DCO`, `dco` CI check). +- **Lint and type checks in CI:** `ruff check` (rules in `ruff.toml`) and + `mypy --strict`, pinned versions; the code base is clean on both. + +--- + ## [2.0.0] – 2026-10-13 **License change: MIT → AGPL-3.0-or-later.** From 2.0.0 on, python-glpi-utils is diff --git a/README.md b/README.md index 5a5df6f..0850346 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ On the GLPI side, enable the API in *Setup → General → API*. For the legacy | Sync / async | GLPI API | Auth | GLPI versions | |---|---|---|---| -| `GlpiAPI` / `AsyncGlpiAPI` | legacy `/apirest.php` | username + password, or personal `user_token` | 9.1 and later | +| `GlpiAPI` / `AsyncGlpiAPI` | legacy `/apirest.php` | username + password, or personal `user_token` | 10.0 and later | | `GlpiOAuthClient` / `AsyncGlpiOAuthClient` | High-Level `/api.php` | OAuth2 password grant, token refreshed automatically | 11.0.6 and later, 12 | ```python @@ -87,7 +87,7 @@ Guides and API reference: **https://giovanny07.github.io/python-glpi-utils/** Beta, actively maintained. Releases follow [semantic versioning](https://semver.org/) and every change is listed in the [CHANGELOG](https://github.com/giovanny07/python-glpi-utils/blob/main/CHANGELOG.md). The legacy clients are the most stable part. The OAuth2 clients follow GLPI's High-Level API, which is still evolving, and their behaviour changed in 1.4 and 1.5. -Tested in CI on Python 3.9 to 3.13 with mocked HTTP. Tested by hand against real servers for 1.5.0 (2026-10-13): GLPI 10.0.28 (legacy API), 11.0.9 and 12.0.0 (legacy API, High-Level API 2.3 and 3.0). Older GLPI 9.x and 10.x releases are expected to work with the legacy clients but are not tested. +Unit tests run in CI on Python 3.9 to 3.13. Integration tests run both clients, sync and async, against official `glpi/glpi` containers: the latest patch of GLPI 10.0 (legacy API), 11.0 and 12.0 (legacy API and every High-Level API version the server offers), on every pull request and weekly. GLPI 9.x is not supported. ## Contributing diff --git a/docs/guides/installation.md b/docs/guides/installation.md index 7e0ac91..56ed5df 100755 --- a/docs/guides/installation.md +++ b/docs/guides/installation.md @@ -5,7 +5,7 @@ | Dependency | Version | |------------|---------| | Python | ≥ 3.9 | -| GLPI | ≥ 9.1 | +| GLPI | ≥ 10.0 | | requests | ≥ 2.28 | | aiohttp | ≥ 3.9 *(async only)* | @@ -13,10 +13,10 @@ | Client | Endpoint | GLPI version | |--------|----------|-------------| -| `GlpiAPI` / `AsyncGlpiAPI` | `/apirest.php` | **≥ 9.1** — tested on 9.x, 10.x and 11.x | -| `GlpiOAuthClient` / `AsyncGlpiOAuthClient` | `/api.php` | **11+ only** | +| `GlpiAPI` / `AsyncGlpiAPI` | `/apirest.php` | **10.0, 11.x, 12.x** | +| `GlpiOAuthClient` / `AsyncGlpiOAuthClient` | `/api.php` | **11.0.6+, 12.x** | -The legacy REST API (`/apirest.php`) has been stable since GLPI 9.1. The OAuth2 high-level API (`/api.php`) was introduced in GLPI 11. +The OAuth2 high-level API (`/api.php`) was introduced in GLPI 11. GLPI 9.x is not supported. Tested in CI against real servers: the latest patch of GLPI 10.0, 11.0 and 12.0, on every pull request and weekly. --- diff --git a/docs/guides/oauth2.md b/docs/guides/oauth2.md index 6de9584..0d67c51 100755 --- a/docs/guides/oauth2.md +++ b/docs/guides/oauth2.md @@ -1,5 +1,5 @@ !!! warning "GLPI 11 and 12 only" - The OAuth2 high-level API (`/api.php`) was introduced in GLPI 11. If you are running GLPI 9.x or 10.x, use `GlpiAPI` or `AsyncGlpiAPI` instead. + The OAuth2 high-level API (`/api.php`) was introduced in GLPI 11. If you are running GLPI 10.x, use `GlpiAPI` or `AsyncGlpiAPI` instead. !!! warning "GLPI 11.0.6+ recommended" `DELETE` and `Timeline` sub-item endpoints (`Followup`, `Task`, `Solution`) return diff --git a/docs/index.md b/docs/index.md index 6b584f3..38e0bba 100755 --- a/docs/index.md +++ b/docs/index.md @@ -26,12 +26,12 @@ | Client | Endpoint | GLPI version | |--------|----------|-------------| -| `GlpiAPI` | `/apirest.php` | **≥ 9.1** (tested on 10.x, 11.x and 12.0) | -| `AsyncGlpiAPI` | `/apirest.php` | **≥ 9.1** (tested on 10.x, 11.x and 12.0) | -| `GlpiOAuthClient` | `/api.php` | **11+ only** | -| `AsyncGlpiOAuthClient` | `/api.php` | **11+ only** | +| `GlpiAPI` | `/apirest.php` | **10.0, 11.x, 12.x** | +| `AsyncGlpiAPI` | `/apirest.php` | **10.0, 11.x, 12.x** | +| `GlpiOAuthClient` | `/api.php` | **11.0.6+, 12.x** | +| `AsyncGlpiOAuthClient` | `/api.php` | **11.0.6+, 12.x** | -The legacy REST API (`/apirest.php`) has been stable since GLPI 9.1 and works without changes across 9.x, 10.x, 11.x and 12.x. +The legacy REST API (`/apirest.php`) works the same on GLPI 10.0, 11.x and 12.x. GLPI 9.x is not supported. Tested in CI against real servers: the latest patch of GLPI 10.0, 11.0 and 12.0, on every pull request and weekly. The high-level OAuth2 API (`/api.php`) was introduced in GLPI 11 (HL API 2.x); GLPI 12 adds HL API 3.0. --- diff --git a/examples/api/basic_usage.py b/examples/api/basic_usage.py index efdaad4..69cec66 100644 --- a/examples/api/basic_usage.py +++ b/examples/api/basic_usage.py @@ -3,7 +3,7 @@ """ Basic usage — synchronous client (GlpiAPI) -Works with GLPI 9.1, 10.x and 11.x via /apirest.php +Works with GLPI 10.0, 11.x and 12.x via /apirest.php Usage: export GLPI_URL=https://glpi.example.com diff --git a/examples/async_api/basic_async.py b/examples/async_api/basic_async.py index 0a08e77..30f026a 100644 --- a/examples/async_api/basic_async.py +++ b/examples/async_api/basic_async.py @@ -3,7 +3,7 @@ """ Basic usage — asynchronous client (AsyncGlpiAPI) -Works with GLPI 9.1, 10.x and 11.x via /apirest.php +Works with GLPI 10.0, 11.x and 12.x via /apirest.php Requirements: pip install glpi-utils[async] diff --git a/glpi_utils/__init__.py b/glpi_utils/__init__.py index 73ba15a..f009a33 100644 --- a/glpi_utils/__init__.py +++ b/glpi_utils/__init__.py @@ -5,7 +5,7 @@ glpi_utils ~~~~~~~~~~ -Python library for the GLPI REST API (legacy and High-Level, GLPI 9.1 to 12). +Python library for the GLPI REST API (legacy and High-Level, GLPI 10 to 12). Clients ------- diff --git a/mkdocs.yml b/mkdocs.yml index 8ee6b6f..83963e3 100755 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,5 +1,5 @@ site_name: python-glpi-utils -site_description: Python library for the GLPI REST API (GLPI 9.1 to 12) +site_description: Python library for the GLPI REST API (GLPI 10 to 12) site_url: https://giovanny07.github.io/python-glpi-utils/ repo_url: https://github.com/giovanny07/python-glpi-utils repo_name: giovanny07/python-glpi-utils diff --git a/setup.cfg b/setup.cfg index 5ff3a8e..6571a4b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -3,7 +3,7 @@ name = glpi-utils version = 2.0.0 author = Giovanny Rodriguez author_email = giovanny@imagunet.com -description = Python client for GLPI's legacy REST API and OAuth2 High-Level API, sync or async (GLPI 9.1 to 12) +description = Python client for GLPI's legacy REST API and OAuth2 High-Level API, sync or async (GLPI 10 to 12) long_description = file: README.md long_description_content_type = text/markdown license_expression = AGPL-3.0-or-later