chore: add min / recommended / latest tested python version to ci
What changed, and why it matters
This commit is purely a maintenance change to the project's build and test setup. It expands the officially supported Python versions from only 3.12.3 to a range from 3.11.5 up to (but not including) 3.13, and updates the continuous integration (CI) tests to run against two specific versions: 3.11.5 and 3.12.13. There are no changes to application code, user-facing behavior, or security-sensitive logic.
No security action required. Treat as normal CI/infrastructure hygiene. Optionally verify that the chosen Python versions and dependency resolution still pass the full test suite on the target hardware/simulator.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The patch modifies pyproject.toml to set python = “>=3.11.5, <3.13” instead of the previous “^3.12.3”. It regenerates poetry.lock accordingly, including dependency marker adjustments for dill across Python 3.11 and 3.12. The GitHub Actions workflow tests.yml is updated to use a matrix strategy running linting, translation validation, and unit tests on Python 3.11.5 and 3.12.13. Coverage reporting is pinned to 3.12.13 only. No source code, cryptographic, or firmware logic is touched.
Changed components
.github/workflows/tests.ymlpyproject.tomlpoetry.lockInspect captured patch +38 / −13
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index a202a66..d6c69e0 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -9,13 +9,19 @@ on:
jobs:
lint-black:
+ strategy:
+ matrix:
+ # minimum tested python version
+ # maximum python version
+ py-version: [ "3.11.5", "3.12.13"]
+
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
- python-version: '3.11'
+ python-version: ${{ matrix.py-version }}
- uses: psf/black@stable
with:
options: "--check --verbose"
@@ -38,13 +44,18 @@ jobs:
src: "./tests"
lint-pylint:
+ strategy:
+ matrix:
+ # minimum tested python version
+ # maximum python version
+ py-version: [ "3.11.5", "3.12.13"]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
- python-version: '3.11'
+ python-version: ${{ matrix.py-version }}
- name: Install dependencies
run: |
python3 -m pip install --upgrade pip
@@ -57,17 +68,27 @@ jobs:
pylint src
check-translations:
+ strategy:
+ matrix:
+ # minimum tested python version
+ # maximum python version
+ py-version: [ "3.11.5", "3.12.13"]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
- python-version: '3.11'
+ python-version: ${{ matrix.py-version }}
- name: Validate translations
run: cd i18n && python3 i18n.py validate
run-tests:
+ strategy:
+ matrix:
+ # minimum tested python version
+ # maximum python version
+ py-version: [ "3.11.5", "3.12.13"]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@@ -76,7 +97,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v5
with:
- python-version: '3.11'
+ python-version: ${{ matrix.py-version }}
- name: Install dependencies
run: |
python3 -m pip install --upgrade pip
@@ -95,7 +116,8 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v5
with:
- python-version: '3.11'
+ # no need to use many coverages
+ python-version: 3.12.13
- name: Install dependencies
run: |
python3 -m pip install --upgrade pip
diff --git a/poetry.lock b/poetry.lock
index 3aa16bf..9562294 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,4 +1,4 @@
-# This file is automatically @generated by Poetry 2.3.3 and should not be changed by hand.
+# This file is automatically @generated by Poetry 2.3.1 and should not be changed by hand.
[[package]]
name = "astroid"
@@ -420,15 +420,15 @@ profile = ["gprof2dot (>=2022.7.29)"]
[[package]]
name = "embit"
version = "0.8.0"
-description = "A minimal bitcoin library for MicroPython and Python3 with a focus on embedded systems."
+description = "A minimal bitcoin library for MicroPython and CPython 3.10+ with a focus on embedded systems."
optional = false
-python-versions = "^3.0"
+python-versions = ">=3.10"
groups = ["main"]
files = []
develop = true
[package.extras]
-dev = ["black", "mkdocs", "mkdocs-material", "mkdocstrings[python]", "mypy", "pre-commit", "pytest", "pytest-cov", "requests"]
+dev = ["black", "mkdocs", "mkdocs-material", "mkdocstrings[python]", "mypy", "pre-commit", "pytest", "pytest-cov", "requests", "ruff"]
[package.source]
type = "directory"
@@ -1301,7 +1301,10 @@ files = [
[package.dependencies]
astroid = ">=4.0.2,<=4.1.dev0"
colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
-dill = {version = ">=0.3.7", markers = "python_version >= \"3.12\""}
+dill = [
+ {version = ">=0.3.7", markers = "python_version >= \"3.12\""},
+ {version = ">=0.3.6", markers = "python_version == \"3.11\""},
+]
isort = ">=5,<5.13 || >5.13,<9"
mccabe = ">=0.6,<0.8"
platformdirs = ">=2.2"
@@ -1825,5 +1828,5 @@ simulator = ["Pillow", "numpy", "opencv-python", "pygame", "pyzbar"]
[metadata]
lock-version = "2.1"
-python-versions = "^3.12.3"
-content-hash = "70d5a90b1031241e83ab4cf3c73c0ab8a469368e8cd8a6761b0faf94f321b505"
+python-versions = ">=3.11.5, <3.13"
+content-hash = "84b3333b5d91b1529bc96f97b53be9fd952aef6d8e103d1e2d8221d2884a915a"
diff --git a/pyproject.toml b/pyproject.toml
index 7e7950a..0be8d07 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -29,7 +29,7 @@ readme = "README.md"
license = "MIT"
[tool.poetry.dependencies]
-python = "^3.12.3"
+python = ">=3.11.5, <3.13" # minimum and maximum supported
embit = { path = "./vendor/embit/", develop = true }
ur = { path = "./vendor/foundation-ur-py/", develop = true }
urtypes = { path = "./vendor/urtypes/", develop = true }
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.