Python version support policy

Aaron Meurer edited this page Jun 26, 2018 · 4 revisions

Every major version of Python that SymPy supports adds a maintenance burden on development. Every test build on Travis CI must be run against every major version, meaning the entire test suite must be run n times for every pull request to support n Python versions. Furthermore, newer versions of Python may have bug fixes or new features which must be worked around to continue to support older versions. This is particularly the case for Python 2, as Python 3 contains many features which cannot yet be used in SymPy library code. With that being said, we do understand that many users are incapable of always using the newest version of Python. Thus, we do support older versions, so that we do not unnecessarily restrict who is able to make use of SymPy.

Our policy is to drop support major Python versions once they reach their end of life (EOL). We may also support sooner, depending on how the release schedule is timed (for instance, if a SymPy release is made one month before a EOL date for a major Python version, support for that version may be dropped in that release). The EOL date is when the core Python team stops releasing even security updates for a given Python version, so when that point is reached, we consider that version of Python to be defunct.

In particular, the official end of life for Python 2.7 is January 1, 2020. The last release of SymPy that is made in 2019 will be the last version to support Python 2.7. We do not have a set release schedule, so we do not yet know the exact date of such a release. Please see http://python3statement.org/ and https://www.asmeurer.com/blog/posts/moving-away-from-python-2/ on why it is important to drop Python 2 support.

For alternate implementations of Python that we support (currently only PyPy), we support the latest version only.

For external dependencies, both required and optional, we generally will only test against the latest version on Travis CI. We may keep compatibility code for older versions for some time if it is not a huge burden. Such things are considered on a case-by-case basis.

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.