diff options
| author | Roberto Bertó <463349+robertoberto@users.noreply.github.com> | 2026-05-19 03:06:11 +0000 |
|---|---|---|
| committer | Roberto Bertó <463349+robertoberto@users.noreply.github.com> | 2026-05-19 03:06:11 +0000 |
| commit | 7aa4989061950a336287cd8b581813ccd60b1832 (patch) | |
| tree | 3a72b976bea9aaa1e7de403a16ea168a522c55fa | |
| parent | b2f1765d286502307ea07a62648718d0414e4f39 (diff) | |
| download | pyvyos-7aa4989061950a336287cd8b581813ccd60b1832.tar.gz pyvyos-7aa4989061950a336287cd8b581813ccd60b1832.zip | |
build: tighten runtime deps and lower Python floor to 3.11
- requires-python: >=3.13 -> >=3.11. The code does not use any
3.13-only feature. typing.List/Dict/Union/Optional throughout, no
PEP 695 generics, no Self, no match. Classifiers updated to advertise
3.11/3.12/3.13.
- runtime dependencies: trim to requests only.
- python-dotenv is only used by examples; move to the dev extra.
- urllib3 is never imported by pyvyos directly; it remains available
transitively through requests.
- pre-existing dev tooling (pytest, pytest-cov, pytest-env) untouched.
- CI: PR validation runs on a 3.11/3.12/3.13 matrix.
- README: reword the Python requirement.
- .python-version: 3.13.0 -> 3.13 (CI uses the matrix).
- Wheel build verified to include pyvyos/py.typed and to declare
Requires-Python: >=3.11 with requests as the only runtime requirement.
| -rw-r--r-- | .github/workflows/python-pr-validation.yml | 12 | ||||
| -rw-r--r-- | .python-version | 2 | ||||
| -rw-r--r-- | CHANGELOG.md | 9 | ||||
| -rw-r--r-- | README.md | 2 | ||||
| -rw-r--r-- | pyproject.toml | 7 |
5 files changed, 23 insertions, 9 deletions
diff --git a/.github/workflows/python-pr-validation.yml b/.github/workflows/python-pr-validation.yml index 611372b..081f7a8 100644 --- a/.github/workflows/python-pr-validation.yml +++ b/.github/workflows/python-pr-validation.yml @@ -10,14 +10,18 @@ permissions: jobs: validate: runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ["3.11", "3.12", "3.13"] steps: - name: Checkout uses: actions/checkout@v4 - - name: Set up Python 3.13 + - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: - python-version: "3.13" + python-version: ${{ matrix.python-version }} - name: Install uv uses: astral-sh/setup-uv@v3 @@ -25,7 +29,7 @@ jobs: enable-cache: true - name: Install dependencies - run: uv sync --extra dev + run: uv sync --extra dev --python ${{ matrix.python-version }} - name: Run tests - run: uv run pytest -v + run: uv run --python ${{ matrix.python-version }} pytest -v diff --git a/.python-version b/.python-version index 4eba2a6..24ee5b1 100644 --- a/.python-version +++ b/.python-version @@ -1 +1 @@ -3.13.0 +3.13 diff --git a/CHANGELOG.md b/CHANGELOG.md index 13bc332..293a942 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,15 @@ behavior**. - Documented public API stability and deprecation timeline in `README.md`. ### Changed +- `requires-python` lowered to `>=3.11` (was `>=3.13`). The codebase + does not use any 3.13-only syntax, and the lower floor makes the + package reachable for the typical VyOS automation environment. CI now + validates against 3.11, 3.12, and 3.13. +- Runtime dependencies trimmed to `requests>=2.32.0,<3.0` only. + - `python-dotenv` was never imported by the library itself — it is now + a `dev` extra used by the bundled examples. + - `urllib3` was never used directly by `pyvyos` — it stays available + transitively through `requests`. - `vagrant/` lab setup moved to `examples/vagrant/`. - `pyvyos.core.*` is now the internal implementation layer; the supported public API is `from pyvyos import VyDevice, ApiResponse`. The legacy @@ -17,7 +17,7 @@ tooling, and integrations with configuration management systems. pip install pyvyos ``` -Requires **Python 3.13 or newer**. +Requires **Python 3.11 or newer**. Tested on 3.11, 3.12, and 3.13. ## Quick start diff --git a/pyproject.toml b/pyproject.toml index 1f35384..b266351 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ authors = [ ] description = "Python SDK for interacting with the VyOS HTTPS API" readme = "README.md" -requires-python = ">=3.13" +requires-python = ">=3.11" license = { file = "LICENSE" } keywords = ["vyos", "networking", "sdk", "api", "router", "firewall"] classifiers = [ @@ -20,6 +20,8 @@ classifiers = [ "Topic :: System :: Networking", "Topic :: Software Development :: Libraries :: Python Modules", "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", @@ -27,12 +29,11 @@ classifiers = [ ] dependencies = [ "requests>=2.32.0,<3.0", - "python-dotenv>=1.0.1,<2.0", - "urllib3>=2.5.0", ] [project.optional-dependencies] dev = [ + "python-dotenv>=1.0.1,<2.0", "pytest>=8.0,<10.0", "pytest-cov>=5.0,<7.0", "pytest-env>=0.6.2,<1.3", |
