Skip to content

python added 3.15 support - #1761

Open
OmkarSarkar204 wants to merge 4 commits into
ArduPilot:masterfrom
OmkarSarkar204:version-bump
Open

OmkarSarkar204 wants to merge 4 commits into
ArduPilot:masterfrom
OmkarSarkar204:version-bump

Conversation

@OmkarSarkar204

@OmkarSarkar204 OmkarSarkar204 commented Jun 22, 2026 •

Copy link
Copy Markdown
Contributor

Description

Closes : #1753

Checklist

  • Run pre-commit checks locally
  • Verified by a human programmer
  • All commits are signed off (use git commit --signoff)
  • Code follows our coding standards
  • Documentation updated if needed
  • No breaking changes or properly documented

Testing

Describe how you tested these changes:

  • Unit tests pass
  • Integration tests pass
  • Manual testing performed
  • Tested on flight controller hardware

Copilot AI review requested due to automatic review settings June 22, 2026 02:27

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot couldn't run its full agentic review because no GitHub Actions runner was available. Make sure your repository has a runner available to run Copilot's review, or add a copilot-setup-steps.yml file specifying one with the runs-on attribute. See the docs for more details.

Adds Python 3.15 support across packaging metadata and CI/dev tooling so the project can publish/test against the newer interpreter.

Changes:

  • Add Python 3.15 Trove classifier in pyproject.toml.
  • Expand GitHub Actions matrices (and some pinned workflow versions) to include/use Python 3.15.
  • Update Windows developer setup script to treat 3.15 similarly to 3.14 for build-tools warnings.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
pyproject.toml Adds Python 3.15 classifier to advertised supported versions.
SetupDeveloperPC.bat Extends Python-version detection to match 3.15.
.github/workflows/update_vehicle_templates.yml Adds 3.15 to the workflow Python matrix.
.github/workflows/update_configuration_steps_translation.yaml Switches workflow runtime Python to 3.15.
.github/workflows/update_codebase_chart.yml Adds 3.15 to workflow matrices.
.github/workflows/reuse.yml Switches workflow runtime Python to 3.15.
.github/workflows/python-publish.yml Switches publish workflow runtime Python to 3.15.
.github/workflows/pytest.yml Adds 3.15 to test matrix and carryforward coverage config.
.github/workflows/pylint.yml Adds 3.15 to pylint matrix.
.github/workflows/build_windows_macos.yml Adds 3.15 to build matrices across OS jobs.

Comment thread SetupDeveloperPC.bat
Comment thread .github/workflows/pylint.yml Outdated
amilcarlucas
amilcarlucas previously approved these changes Jun 22, 2026
@amilcarlucas

Copy link
Copy Markdown
Collaborator

I corrected some stuff, let's see if the tests pass. And if they do, let's see if the windows executables run correctly.

@amilcarlucas

Copy link
Copy Markdown
Collaborator

At least lxml 6.1.1 causes issues. So we need to wait until that is fixed upstream until we can progress with this.

@OmkarSarkar204

Copy link
Copy Markdown
Contributor Author

At least lxml 6.1.1 causes issues. So we need to wait until that is fixed upstream until we can progress with this.

Yes, i also got the lxml error, thats why I had reverted the CI YAMLs and just kept the pyproject.toml bump :)

@amilcarlucas

Copy link
Copy Markdown
Collaborator

The pyproject.toml bump is a lie if python 3.15 does not pass ci :)

@amilcarlucas

Copy link
Copy Markdown
Collaborator

My guess is that once it is officially released, most issues will go away.

@amilcarlucas
amilcarlucas force-pushed the version-bump branch 2 times, most recently from b08a023 to 08a655c Compare July 10, 2026 02:11
@coveralls

Copy link
Copy Markdown

Coverage Report for CI Build 29822454163

Warning

No base build found for commit ec2f219 on master.
Coverage changes can't be calculated without a base build.
If a base build is processing, this comment will update automatically when it completes.

Coverage: 94.286%

Details

  • Patch coverage: No coverable lines changed in this PR.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

Requires a base build to compare against. How to fix this →


Coverage Stats

Coverage Status
Relevant Lines: 14472
Covered Lines: 13645
Line Coverage: 94.29%
Relevant Branches: 2223
Covered Branches: 2148
Branch Coverage: 96.63%
Branches in Coverage %: No
Coverage Strength: 0.94 hits per line

💛 - Coveralls

@amilcarlucas amilcarlucas added the AIReview Request an automated AI review; picked up by the reviewprs sweep label Oct 5, 2026
@AP-Review

AP-Review commented Oct 5, 2026 •

Copy link
Copy Markdown

Deprecated — see below for the updated review.

Previous review (2026-10-05)

Automated review note — AI-generated (Claude+Codex), validated against the live diff. Please sanity-check before acting.
Verdict: REQUEST CHANGES

Reviewed at head d782351945.
Full report: https://firmware.ardupilot.org/Tools/APReview/DevCallReviews/PRReviews/ardupilot/methodicconfigurator/1761/1.html#prMethodicConfigurator-1761

Thanks for working on Python 3.15 support. Two things need fixing before this can go in.

  1. The macOS and Linux release builds now use 3.15 (https://github.com/ArduPilot/MethodicConfigurator/pull/1761/files#diff-7ad8d8dcc9d03fa22466151743062a81bdf381fa908ef2e52ba0e1ff770308f8R210, https://github.com/ArduPilot/MethodicConfigurator/pull/1761/files#diff-7ad8d8dcc9d03fa22466151743062a81bdf381fa908ef2e52ba0e1ff770308f8R314), but they install .[mac_dist]/.[linux_dist] with pip, and those pin pyinstaller==6.20.0, which declares Requires-Python <3.15. pip refuses to install it on 3.15, and the release job needs all three builds. Please move to an exact PyInstaller release that supports 3.15, or keep the build jobs on 3.14 for now.
  2. pytest (windows-latest, 3.15) (https://github.com/ArduPilot/MethodicConfigurator/pull/1761/files#diff-2500680f4bc6c1b75c3d4b36372bf4d64c5f603b90bfd7a5186f66a20329d16aR31) segfaults (exit 139) on CPython 3.15.0rc3 before any results are written, while Windows 3.14 passes on master. We have not pinned down which component crashes. As the maintainer said, the 3.15 classifier (https://github.com/ArduPilot/MethodicConfigurator/pull/1761/files#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711R39) needs a passing 3.15 CI.

Smaller points: please keep an exact Windows interpreter version rather than '3.15' (https://github.com/ArduPilot/MethodicConfigurator/pull/1761/files#diff-7ad8d8dcc9d03fa22466151743062a81bdf381fa908ef2e52ba0e1ff770308f8R28); the 3.14.6 pin was added in f59554c for reproducible, working builds. Also update the Coveralls carryforward list at .github/workflows/pytest.yml:282 to the new py3.15 flag names. We did not run the release workflow or the frozen executables, so their behaviour on 3.15 is unverified.

@AP-Review

AP-Review commented Oct 5, 2026 •

Copy link
Copy Markdown

Deprecated — see below for the updated review.

Previous review (2026-10-05)

Automated review note — AI-generated (Claude+Codex), validated against the live diff. Please sanity-check before acting.
Verdict: REQUEST CHANGES

Reviewed at head 3ccbbded6c.
Full report: https://firmware.ardupilot.org/Tools/APReview/DevCallReviews/PRReviews/ardupilot/methodicconfigurator/1761/2.html#prMethodicConfigurator-1761

Thanks for the update. The PyInstaller bump fixes the earlier Python-version rejection, but it introduces a new blocker. I've re-reviewed at the new head 3ccbbde.

  1. pyinstaller==6.22.3 (https://github.com/ArduPilot/MethodicConfigurator/pull/1761/files#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711R110, R117, R124) requires pyinstaller-hooks-contrib>=2026.7, but the dist extras still pin ==2026.6. All three extras are unsatisfiable, which is why every pytest leg (including ubuntu 3.10), pylint 3.15 and Docker fail at dependency install at this head. Bumping the hooks pin to an exact 2026.7 resolves on linux/windows/macOS for 3.14 and 3.15.
  2. The macOS and Linux build jobs (https://github.com/ArduPilot/MethodicConfigurator/pull/1761/files#diff-7ad8d8dcc9d03fa22466151743062a81bdf381fa908ef2e52ba0e1ff770308f8R210, https://github.com/ArduPilot/MethodicConfigurator/pull/1761/files#diff-7ad8d8dcc9d03fa22466151743062a81bdf381fa908ef2e52ba0e1ff770308f8R314) use actions/setup-python without allow-prereleases. The current manifest only has 3.15 release candidates, so those jobs likely cannot find a 3.15 until GA is published. Keep them on 3.14 until then, or set allow-prereleases. We did not run the build workflow to confirm this.
  3. As the maintainer noted, the 3.15 classifier (https://github.com/ArduPilot/MethodicConfigurator/pull/1761/files#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711R39) needs passing 3.15 CI. No 3.15 test leg has run yet, so we can't tell whether the earlier Windows segfault is gone.

Smaller points: numpy 2.3.4 and matplotlib 3.10.9 have no cp315 wheels, so consider 3.15-specific pins to releases that ship them. Please keep an exact Windows interpreter version rather than '3.15' (https://github.com/ArduPilot/MethodicConfigurator/pull/1761/files#diff-7ad8d8dcc9d03fa22466151743062a81bdf381fa908ef2e52ba0e1ff770308f8R28). Also update the Coveralls carryforward list at .github/workflows/pytest.yml:282 to the py3.15 Ubuntu/Windows flags that the renamed matrix (https://github.com/ArduPilot/MethodicConfigurator/pull/1761/files#diff-2500680f4bc6c1b75c3d4b36372bf4d64c5f603b90bfd7a5186f66a20329d16aR31) now uploads. The release workflow and frozen executables were not run.

@AP-Review

AP-Review commented Oct 8, 2026 •

Copy link
Copy Markdown

Deprecated — see below for the updated review.

Previous review (2026-10-08)

Automated review note — AI-generated (Claude+Codex), validated against the live diff. Please sanity-check before acting.
Verdict: REQUEST CHANGES

Reviewed at head 24ce07be8f.
Full report: https://firmware.ardupilot.org/Tools/APReview/DevCallReviews/PRReviews/ardupilot/methodicconfigurator/1761/3.html#prMethodicConfigurator-1761

The new head 24ce07b is a straight rebase of the previously reviewed 3ccbbde, so the earlier points all still apply.

  1. pyinstaller==6.22.3 (https://github.com/ArduPilot/MethodicConfigurator/pull/1761/files#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711R110, R117, R124) requires pyinstaller-hooks-contrib>=2026.7, but the dist extras still pin ==2026.6. All three extras are unsatisfiable on every Python version. That is why pytest (including ubuntu 3.10), pylint 3.10 and Docker fail at dependency install before any test runs. Bumping the hooks pin to 2026.7 alongside PyInstaller resolves on Linux, Windows and macOS.
  2. The macOS and Linux build jobs (https://github.com/ArduPilot/MethodicConfigurator/pull/1761/files#diff-7ad8d8dcc9d03fa22466151743062a81bdf381fa908ef2e52ba0e1ff770308f8R210, https://github.com/ArduPilot/MethodicConfigurator/pull/1761/files#diff-7ad8d8dcc9d03fa22466151743062a81bdf381fa908ef2e52ba0e1ff770308f8R314) use actions/setup-python with '3.15' and no allow-prereleases. The manifest currently has only 3.15 release candidates, so those builds will likely fail until 3.15.0 is published. Keep them on 3.14 for now, or set allow-prereleases. This was not run to confirm.
  3. As the maintainer said, the 3.15 classifier (https://github.com/ArduPilot/MethodicConfigurator/pull/1761/files#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711R39) needs passing 3.15 CI. Once item 1 is fixed the 3.15 tests will actually run, and that will also show whether the earlier Windows crash is gone.

Smaller points:

The release workflow, frozen executables and the 3.15 source builds were not exercised.

amilcarlucas and others added 3 commits October 11, 2026 12:03
Signed-off-by: Omkar Sarkar <omkarsarkar24@gmail.com>
Bumps [pyinstaller](https://github.com/pyinstaller/pyinstaller) from 6.20.0 to 6.22.3.
- [Release notes](https://github.com/pyinstaller/pyinstaller/releases)
- [Changelog](https://github.com/pyinstaller/pyinstaller/blob/develop/doc/CHANGES.rst)
- [Commits](pyinstaller/pyinstaller@v6.20.0...v6.22.3)

---
updated-dependencies:
- dependency-name: pyinstaller
  dependency-version: 6.22.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@amilcarlucas

Copy link
Copy Markdown
Collaborator

The tests pass now. The only issue is a ty finding exclusion that must be removed in 3.15, but must be present on 3.10

So I guess this requires an updated ty version at some point

@AP-Review

Copy link
Copy Markdown

Automated review note — AI-generated (Claude+Codex), validated against the live diff. Please sanity-check before acting.
Verdict: REQUEST CHANGES

Reviewed at head f2fa0e4535.
Full report: https://firmware.ardupilot.org/Tools/APReview/DevCallReviews/PRReviews/ardupilot/methodicconfigurator/1761/5.html#prMethodicConfigurator-1761

Thanks for the update. This is a review of head f2fa0e4, which adds real changes on top of the previously reviewed 24ce07b. The earlier points are sorted: the hooks-contrib pin, the 3.15 numpy/matplotlib pins, the exact interpreter versions, the Coveralls list and the lxml steps. Pytest now passes on Python 3.15.0 on Linux, Windows and macOS, and the earlier Windows crash is gone. One thing still blocks.

  1. pylint (3.15.0) is the only failing check, and it comes from the new matplotlib==3.11.2 pin (https://github.com/ArduPilot/MethodicConfigurator/pull/1761/files#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711R53). In matplotlib 3.11 Axes.pie() returns a PieContainer rather than a tuple, so ty check reports the # ty: ignore[index-out-of-bounds] at scripts/generate_codebase_pie_chart.py:145 as unused and exits 1 before pylint runs. On the maintainer's comment that this needs a newer ty: it doesn't have to wait. Replacing scripts/generate_codebase_pie_chart.py:143-145 with wedges, texts, *rest = pie_result and autotexts = rest[0] if rest else [] passes ty 0.0.75 against matplotlib 3.10.3, 3.10.9 and 3.11.2 with no ignore comment. The same rewrite fixes a real crash: PieContainer has no len(), so line 144 raises TypeError when the script runs on 3.15 with the pinned matplotlib. The chart workflow still runs on 3.14, so it is not affected today.

Not blocking:

  1. The installer build workflow has not run for this head; it has no pull_request trigger and there is no run in the fork. That leaves the Windows build without the TCL_LIBRARY/TK_LIBRARY workaround (https://github.com/ArduPilot/MethodicConfigurator/pull/1761/files#diff-891d8e6b02972ea991ffbf5ae2b9aa9a4565cfd6931f1bf43e360235afe6555fR9), the new frozen smoke step (https://github.com/ArduPilot/MethodicConfigurator/pull/1761/files#diff-7ad8d8dcc9d03fa22466151743062a81bdf381fa908ef2e52ba0e1ff770308f8R93) and the macOS/Linux moves to 3.15.0 (https://github.com/ArduPilot/MethodicConfigurator/pull/1761/files#diff-7ad8d8dcc9d03fa22466151743062a81bdf381fa908ef2e52ba0e1ff770308f8R225, https://github.com/ArduPilot/MethodicConfigurator/pull/1761/files#diff-7ad8d8dcc9d03fa22466151743062a81bdf381fa908ef2e52ba0e1ff770308f8R329) untested. Nothing suggests they are broken, and a local Linux build passed the frozen check, but a workflow_dispatch run on this branch before merging would show the Windows executable starts.
  2. A successful --validate-tkinter prints nothing, because the logging_info call (https://github.com/ArduPilot/MethodicConfigurator/pull/1761/files#diff-07c8aae629798ce99b3a341b36fe9273c6afcf8de3d503dfbc9e720055f5630fR136) runs before logging is configured. Printing that line would let the build log show which Tcl library the frozen app used.

For the maintainer only: 33fb099 and f2fa0e4 carry no Signed-off-by line.

Not exercised here: the Windows, macOS and Linux installer builds and frozen executables, a full local pytest run, and the cancelled pylint (3.10) leg.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AIReview Request an automated AI review; picked up by the reviewprs sweep

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Python 3.15 support

6 participants