Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 16 additions & 4 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#
# Jobs:
# quality — format check, lint, copyright headers, security scan (runs once)
# test — full test suite with coverage enforcement (matrix: 3.10–3.13)
# test — full test suite with coverage enforcement (matrix: 3.10–3.14, beta 3.15)
#
# The quality job runs on a single Python version since these checks are
# version-agnostic. The test matrix runs independently so all versions
Expand Down Expand Up @@ -73,14 +73,24 @@ jobs:
# -- test
# Runs the full test suite with coverage enforcement on all supported
# Python versions. fail-fast is disabled so all versions report results
# independently — a 3.10 failure doesn't hide a 3.13 failure.
# independently — a 3.10 failure doesn't hide a 3.14 failure.
# Python 3.15 (beta) is included with continue-on-error so failures are
# visible but do not block merges.
test:
name: Test (Python ${{ matrix.python-version }})
name: Test (Python ${{ matrix.python-version }}${{ matrix.beta && ' beta' || '' }})
runs-on: ubuntu-24.04
continue-on-error: ${{ matrix.beta || false }}
strategy:
fail-fast: false
matrix:
python-version: ['3.10', '3.11', '3.12', '3.13']
include:
- python-version: '3.10'
- python-version: '3.11'
- python-version: '3.12'
- python-version: '3.13'
- python-version: '3.14'
- python-version: '3.15'
beta: true

steps:
- name: Checkout repository
Expand All @@ -91,6 +101,8 @@ jobs:
with:
enable-cache: true
python-version: ${{ matrix.python-version }}
python-version-file: ''
allow-python-prereleases: ${{ matrix.beta || false }}

- name: Install dependencies
run: uv sync --frozen
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Itential MCP — Codebase Reference

**Version:** 0.12.1 | **Python:** 3.10–3.13 | **Updated:** 2026-03-08
**Version:** 0.12.1 | **Python:** 3.10–3.14, beta 3.15 | **Updated:** 2026-03-18

---

Expand Down
10 changes: 8 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ export PYTHONDONTWRITEBYTECODE := 1

.PHONY: build certs check check-headers clean clean-venv container coverage \
fix fix-headers format lint ci run security test \
tox tox-py310 tox-py311 tox-py312 tox-py313 \
tox tox-py310 tox-py311 tox-py312 tox-py313 tox-py314 tox-py315 \
tox-coverage tox-format tox-lint tox-list tox-ci tox-security \
help

Expand Down Expand Up @@ -102,7 +102,7 @@ container: ## Build multi-arch container image (amd64 + arm64)
# Tox (multi-version testing)
# ------------------------------------------------------------------------------

tox: ## Run tests across all supported Python versions (3.10-3.13)
tox: ## Run tests across all supported Python versions (3.10-3.14)
uv run tox

tox-py310: ## Run tests with Python 3.10
Expand All @@ -117,6 +117,12 @@ tox-py312: ## Run tests with Python 3.12
tox-py313: ## Run tests with Python 3.13
uv run tox -e py313

tox-py314: ## Run tests with Python 3.14
uv run tox -e py314

tox-py315: ## Run tests with Python 3.15 (beta)
uv run tox -e py315

tox-coverage: ## Run tests with coverage report via tox
uv run tox -e coverage

Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ This project is automatically tested against the following Python versions:
- Python 3.11
- Python 3.12
- Python 3.13
- Python 3.14
- Python 3.15 _(beta — tested but failures do not block releases)_

## 🔧 Installation
The `itential-mcp` application can be installed using either PyPI or it can be
Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ classifiers = [
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Typing :: Typed",
]

Expand Down
6 changes: 0 additions & 6 deletions tests/test_services_configuration_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -371,9 +371,6 @@ async def test_create_golden_config_tree_http_error_without_response(
# Create an HTTPStatusError without a response attribute (edge case)
http_error = Exception("Network error")
server_error = ipsdk.exceptions.HTTPStatusError(http_error)
# Ensure response attribute doesn't exist or is None
if hasattr(server_error, "response"):
object.__setattr__(server_error, "response", None)
mock_client.post.side_effect = server_error

with pytest.raises(exceptions.ServerException) as exc_info:
Expand Down Expand Up @@ -607,9 +604,6 @@ async def test_add_golden_config_node_http_error_without_response(
# Create an HTTPStatusError without a response attribute (edge case)
http_error = Exception("Network error")
server_error = ipsdk.exceptions.HTTPStatusError(http_error)
# Ensure response attribute doesn't exist or is None
if hasattr(server_error, "response"):
object.__setattr__(server_error, "response", None)
mock_client.post.side_effect = server_error

with pytest.raises(exceptions.ServerException) as exc_info:
Expand Down
13 changes: 11 additions & 2 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
# This configuration uses tox-uv for faster dependency resolution and installation

[tox]
# Define test environments for Python 3.10, 3.11, 3.12, and 3.13
envlist = py310,py311,py312,py313
# Define test environments for Python 3.10, 3.11, 3.12, 3.13, and 3.14
# Python 3.15 (beta) is available via the explicit tox-py315 Makefile target
envlist = py310,py311,py312,py313,py314
min_version = 4.0
# Use uv for package installation (requires tox-uv plugin)
requires =
Expand Down Expand Up @@ -55,6 +56,14 @@ description = Run tests with Python 3.12
basepython = python3.13
description = Run tests with Python 3.13

[testenv:py314]
basepython = python3.14
description = Run tests with Python 3.14

[testenv:py315]
basepython = python3.15
description = Run tests with Python 3.15 (beta)

[testenv:coverage]
# Special environment for running tests with coverage
basepython = python3.12
Expand Down
Loading