Python 2 is now unsupported.

This commit is contained in:
Itamar Turner-Trauring 2022-02-15 10:20:29 -05:00
parent 7ea106a018
commit be2590f9b8
2 changed files with 14 additions and 33 deletions

View File

@ -53,12 +53,11 @@ For more detailed instructions, read `Installing Tahoe-LAFS <docs/Installation/i
Once ``tahoe --version`` works, see `How to Run Tahoe-LAFS <docs/running.rst>`__ to learn how to set up your first Tahoe-LAFS node. Once ``tahoe --version`` works, see `How to Run Tahoe-LAFS <docs/running.rst>`__ to learn how to set up your first Tahoe-LAFS node.
🐍 Python 3 Support 🐍 Python 2
-------------------- -----------
Python 3 support has been introduced starting with Tahoe-LAFS 1.16.0, alongside Python 2. Python 3.7 or later is now required.
System administrators are advised to start running Tahoe on Python 3 and should expect Python 2 support to be dropped in a future version. If you are still using Python 2.7, use Tahoe-LAFS version 1.17.1.
Please, feel free to file issues if you run into bugs while running Tahoe on Python 3.
🤖 Issues 🤖 Issues

View File

@ -55,8 +55,7 @@ install_requires = [
# * foolscap >= 0.12.6 has an i2p.sam_endpoint() that takes kwargs # * foolscap >= 0.12.6 has an i2p.sam_endpoint() that takes kwargs
# * foolscap 0.13.2 drops i2p support completely # * foolscap 0.13.2 drops i2p support completely
# * foolscap >= 21.7 is necessary for Python 3 with i2p support. # * foolscap >= 21.7 is necessary for Python 3 with i2p support.
"foolscap == 0.13.1 ; python_version < '3.0'", "foolscap >= 21.7.0",
"foolscap >= 21.7.0 ; python_version > '3.0'",
# * cryptography 2.6 introduced some ed25519 APIs we rely on. Note that # * cryptography 2.6 introduced some ed25519 APIs we rely on. Note that
# Twisted[conch] also depends on cryptography and Twisted[tls] # Twisted[conch] also depends on cryptography and Twisted[tls]
@ -106,16 +105,10 @@ install_requires = [
# for 'tahoe invite' and 'tahoe join' # for 'tahoe invite' and 'tahoe join'
"magic-wormhole >= 0.10.2", "magic-wormhole >= 0.10.2",
# Eliot is contemplating dropping Python 2 support. Stick to a version we # We want a new enough version to support custom JSON encoders.
# know works on Python 2.7. "eliot >= 1.13.0",
"eliot ~= 1.7 ; python_version < '3.0'",
# On Python 3, we want a new enough version to support custom JSON encoders.
"eliot >= 1.13.0 ; python_version > '3.0'",
# Pyrsistent 0.17.0 (which we use by way of Eliot) has dropped "pyrsistent",
# Python 2 entirely; stick to the version known to work for us.
"pyrsistent < 0.17.0 ; python_version < '3.0'",
"pyrsistent ; python_version > '3.0'",
# A great way to define types of values. # A great way to define types of values.
"attrs >= 18.2.0", "attrs >= 18.2.0",
@ -135,14 +128,8 @@ install_requires = [
# Linux distribution detection: # Linux distribution detection:
"distro >= 1.4.0", "distro >= 1.4.0",
# Backported configparser for Python 2: # For the RangeMap datastructure. Need 2.0.2 at least for bugfixes.
"configparser ; python_version < '3.0'", "collections-extended >= 2.0.2",
# For the RangeMap datastructure. Need 2.0.2 at least for bugfixes. Python
# 2 doesn't actually need this, since HTTP storage protocol isn't supported
# there, so we just pick whatever version so that code imports.
"collections-extended >= 2.0.2 ; python_version > '3.0'",
"collections-extended ; python_version < '3.0'",
# HTTP server and client # HTTP server and client
"klein", "klein",
@ -201,8 +188,7 @@ trove_classifiers=[
"Natural Language :: English", "Natural Language :: English",
"Programming Language :: C", "Programming Language :: C",
"Programming Language :: Python", "Programming Language :: Python",
"Programming Language :: Python :: 2", "Programming Language :: Python :: 3",
"Programming Language :: Python :: 2.7",
"Topic :: Utilities", "Topic :: Utilities",
"Topic :: System :: Systems Administration", "Topic :: System :: Systems Administration",
"Topic :: System :: Filesystems", "Topic :: System :: Filesystems",
@ -229,7 +215,7 @@ def run_command(args, cwd=None):
use_shell = sys.platform == "win32" use_shell = sys.platform == "win32"
try: try:
p = subprocess.Popen(args, stdout=subprocess.PIPE, cwd=cwd, shell=use_shell) p = subprocess.Popen(args, stdout=subprocess.PIPE, cwd=cwd, shell=use_shell)
except EnvironmentError as e: # if this gives a SyntaxError, note that Tahoe-LAFS requires Python 2.7+ except EnvironmentError as e: # if this gives a SyntaxError, note that Tahoe-LAFS requires Python 3.7+
print("Warning: unable to run %r." % (" ".join(args),)) print("Warning: unable to run %r." % (" ".join(args),))
print(e) print(e)
return None return None
@ -380,8 +366,8 @@ setup(name="tahoe-lafs", # also set in __init__.py
package_dir = {'':'src'}, package_dir = {'':'src'},
packages=find_packages('src') + ['allmydata.test.plugins'], packages=find_packages('src') + ['allmydata.test.plugins'],
classifiers=trove_classifiers, classifiers=trove_classifiers,
# We support Python 2.7, and Python 3.7 or later. # We support Python 3.7 or later.
python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*", python_requires=">=3.7",
install_requires=install_requires, install_requires=install_requires,
extras_require={ extras_require={
# Duplicate the Twisted pywin32 dependency here. See # Duplicate the Twisted pywin32 dependency here. See
@ -400,10 +386,6 @@ setup(name="tahoe-lafs", # also set in __init__.py
"tox", "tox",
"pytest", "pytest",
"pytest-twisted", "pytest-twisted",
# XXX: decorator isn't a direct dependency, but pytest-twisted
# depends on decorator, and decorator 5.x isn't compatible with
# Python 2.7.
"decorator < 5",
"hypothesis >= 3.6.1", "hypothesis >= 3.6.1",
"towncrier", "towncrier",
"testtools", "testtools",