Python version support policy - sympy/sympy GitHub Wiki

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 of major Python versions once they reach their end of life (EOL). We may also drop 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 was January 1, 2020. The last release of SymPy made in 2019 was SymPy 1.5.1 and is the last version to support Python 2.7. Please see http://python3statement.org/ and https://www.asmeurer.com/blog/posts/moving-away-from-python-2/ on why it was 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.