Skip to content

Conversation

seanbudd
Copy link
Member

@seanbudd seanbudd commented Aug 13, 2025

Link to issue number:

Part of #18591

Summary of the issue:

We want to update to Python 3.13 from 3.11

Description of user facing changes:

brltty will break

Description of developer facing changes:

  • Update python to 3.13.6
  • remove typing_extensions

Description of development approach:

Testing strategy:

CI/CD

Known issues with pull request:

None

Code Review Checklist:

  • Documentation:
    • Change log entry
    • User Documentation
    • Developer / Technical Documentation
    • Context sensitive help for GUI changes
  • Testing:
    • Unit tests
    • System (end to end) tests
    • Manual testing
  • UX of all users considered:
    • Speech
    • Braille
    • Low Vision
    • Different web browsers
    • Localization in other languages / culture than English
  • API is compatible with existing add-ons.
  • Security precautions taken.

@coderabbitai summary

@seanbudd seanbudd mentioned this pull request Aug 13, 2025
7 tasks
@seanbudd seanbudd added this to the 2026.1 milestone Aug 13, 2025
@seanbudd seanbudd marked this pull request as ready for review August 13, 2025 07:58
@Copilot Copilot AI review requested due to automatic review settings August 13, 2025 07:58
@seanbudd seanbudd requested review from a team as code owners August 13, 2025 07:58
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR updates NVDA from Python 3.11 to Python 3.13.6 to modernize the codebase and leverage newer language features. The update includes removing the typing_extensions dependency since Python 3.13 includes those features natively.

Key changes:

  • Updated Python version from 3.11.9 to 3.13.6 across all configuration files
  • Migrated from typing_extensions.TypeAlias to native type statements
  • Replaced ParamSpec usage with parameter list syntax ([**P])
  • Removed deprecated SupportsLessThan import and implemented custom protocol

Reviewed Changes

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

Show a summary per file
File Description
.python-versions Updated Python version specification
pyproject.toml Updated Python requirement and removed typing_extensions dependency
.github/workflows/*.yml Updated CI/CD workflows to use Python 3.13
source/gui/guiHelper.py Modernized type annotations using parameter lists
source/gui/message.py Converted TypeAlias to type statements
source/keyboardHandler.py Converted TypeAlias to type statements
source/gui/addonStoreGui/viewModels/addonList.py Implemented custom SupportsLessThan protocol
source/UIAHandler/_remoteOps/remoteFuncWrapper.py Modernized type annotations using parameter lists
tests/unit/test_baseObject.py Simplified version-specific test logic
user_docs/en/userGuide.md Updated Python documentation link

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@LeonarddeR
Copy link
Collaborator

At least one knnown issue is that brltty will break. I'm able to provide an x64 binding for Python 3.13, but honestly I'm not that motivated to provide one for X86 as it will only be temporary.

@seanbudd seanbudd added the conceptApproved Similar 'triaged' for issues, PR accepted in theory, implementation needs review. label Aug 14, 2025
@seanbudd seanbudd merged commit 9613ce6 into master Aug 15, 2025
22 checks passed
@seanbudd seanbudd deleted the py3.13 branch August 15, 2025 05:10
seanbudd added a commit that referenced this pull request Aug 15, 2025
@burmancomp
Copy link
Contributor

Will brltty be supported in the future? Some others may also have old displays which are not supported by nvda but by brltty. Personally I have alva satellite 544 which I use when I need braille display when travelling.

@seanbudd
Copy link
Member Author

@burmancomp - thanks to very promising efforts from @LeonarddeR, yes we should have support for brltty by the time 2026.1beta1 is released. Leonard is holding off until we switch alphas to 64bit, as we need to update brltty for both 64bit and python 3.13, doing both at the same time is easier.

@seanbudd
Copy link
Member Author

You can track this in #18657

@burmancomp
Copy link
Contributor

Thanks for the information, and all success to @LeonarddeR!

OzancanKaratas pushed a commit to OzancanKaratas/nvda that referenced this pull request Aug 17, 2025
Part of nvaccess#18591
Summary of the issue:

We want to update to Python 3.13 from 3.11
Description of user facing changes:

brltty will break
Description of developer facing changes:

    Update python to 3.13.6
    remove typing_extensions

Description of development approach:

    Updated all references of python 3.11 to 3.13
    Updated usages of TypeAlias to type: https://docs.python.org/3.13/library/typing.html#type-aliases
    Updated usages of ParamSpec to parameter lists: https://docs.python.org/3.13/library/typing.html#typing.ParamSpec
    Remove deprecated SupportsLessThan: 

Add SupportsLessThan to typing and typing_extensions python/typing_extensions#9 (comment)
OzancanKaratas pushed a commit to OzancanKaratas/nvda that referenced this pull request Aug 17, 2025
seanbudd pushed a commit that referenced this pull request Aug 18, 2025
…18708)

Requested in #18689
Related to #18650 
Summary of the issue:

System tests should be executed on every supported os Github Actions offers.
Description of user facing changes:

None
Description of developer facing changes:

None
Description of development approach:

Add extra variables to the matrix to specify additional runners to run system tests on
OzancanKaratas pushed a commit to OzancanKaratas/nvda that referenced this pull request Aug 18, 2025
Part of nvaccess#18591
Summary of the issue:

We want to update to Python 3.13 from 3.11
Description of user facing changes:

brltty will break
Description of developer facing changes:

    Update python to 3.13.6
    remove typing_extensions

Description of development approach:

    Updated all references of python 3.11 to 3.13
    Updated usages of TypeAlias to type: https://docs.python.org/3.13/library/typing.html#type-aliases
    Updated usages of ParamSpec to parameter lists: https://docs.python.org/3.13/library/typing.html#typing.ParamSpec
    Remove deprecated SupportsLessThan: 

Add SupportsLessThan to typing and typing_extensions python/typing_extensions#9 (comment)
OzancanKaratas pushed a commit to OzancanKaratas/nvda that referenced this pull request Aug 18, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api-breaking-change conceptApproved Similar 'triaged' for issues, PR accepted in theory, implementation needs review.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants