Raise Minimum Required Version of Python #2634
Labels
feature
Request or pull request for a new feature
priority:high
High priority issue or pull request
status:accepted
Issue or pull request accepted by maintainer
Milestone
Overview
With the next major release of Runway, I would like to raise the minimum required version of Python to align with Runway's dependencies, Python's release/EoL schedule, and enable our developers to innovate with the newest features of Python.
Context
Currently Runway's minimum required version of Python is 3.9.
Python 3.9 enters it's end of life 2025-10.
Even though 3.9 is still ~1 year from end of life, it is already being dropped from some of Runway's dependencies.
Although it is only used to generate documentation, Sphinx is the most impactful of these.
Python 3.9 also lacks numerous improvements to type annotations.
The gaps are reduced in size by
typing_extensions
, there are still syntax shortcomings that cannot be overcome.Goals
Non-Goals
Proposed Solution
Previous discussions among Runway's maintainers landed us on 3.10 as the version to move forward with.
However, I would like to reopen this discussion as I was recently reminded of some of the drawbacks when attempting to lower the minimum required version of another package I maintain from 3.11 to 3.10 so that it would be usable here.
I would like to propose raising the minimum required version of Python to 3.11.
Some of the key changes in 3.11 that would impact Runway's codebase include:
tomllib
— Support for parsing TOML in the Standard Librarytomli
)TypedDict
styping_extensions.Self
depending on Python versionTypeError
if attempted with older versions of Python)logging.LoggerAdapter
is the main one that comes to mind (example)Alternative Solutions
3.10
Some of the key changes in 3.10 that would impact Runway's codebase include:
X | Y
|
unions inpydantic
modelsisinstance()
(e.g.isinstance(value, list | set)
vsisinstance(value, (list, set))
)Note that any of the proposed minimum Python versions benefit from these changes with this being the lowest of the three.
3.12
I am not going to go into detail here because, while I feel using 3.12 > 3.11 is better it may overly limit Runway's user base due to it still being fairly new.
Impact
pyenv
provides an easy way to do thispip
andpoetry
) will not allow the installation of the newest major release of Runway even if explicitly requestedThe text was updated successfully, but these errors were encountered: