2011-01-21 05:36:10 +00:00
# Note: please minimize imports in this file. In particular, do not import
# any module from Tahoe-LAFS or its dependencies, and do not import any
# modules at all at global level. That includes setuptools and pkg_resources.
# It is ok to import modules from the Python Standard Library if they are
# always available, or the import is protected by try...except ImportError.
2015-01-20 18:52:02 +00:00
# The semantics for requirement specs changed incompatibly in setuptools 8,
# which now follows PEP 440. The requirements used in this file must be valid
# under both the old and new semantics. That can be achieved by limiting
# requirement specs to one of the following forms:
#
# * >= X, <= Y where X < Y
# * >= X, != Y, != Z, ... where X < Y < Z...
#
# (In addition, check_requirement in allmydata/__init__.py only supports
# >=, <= and != operators.)
2011-01-21 05:36:10 +00:00
install_requires = [
2016-03-18 18:28:58 +00:00
# we don't need much out of setuptools, but the __init__.py stuff does
# need pkg_resources . We use >=11.3 here because that's what
# "cryptography" requires (which is a sub-dependency of TLS-using
# packages), so there's no point in requiring less.
2018-03-12 22:43:09 +00:00
" setuptools >= 28.8.0 " ,
2011-01-22 01:24:42 +00:00
2011-01-21 05:36:10 +00:00
" zfec >= 1.1.0 " ,
2013-04-25 18:33:55 +00:00
# zope.interface >= 3.6.0 is required for Twisted >= 12.1.0.
2011-08-15 02:53:47 +00:00
# zope.interface 3.6.3 and 3.6.4 are incompatible with Nevow (#1435).
2015-01-20 18:52:02 +00:00
" zope.interface >= 3.6.0, != 3.6.3, != 3.6.4 " ,
2011-01-21 05:36:10 +00:00
2012-06-24 19:10:24 +00:00
# * foolscap < 0.5.1 had a performance bug which spent O(N**2) CPU for
# transferring large mutable files of size N.
# * foolscap < 0.6 is incompatible with Twisted 10.2.0.
# * foolscap 0.6.1 quiets a DeprecationWarning.
2014-10-07 20:04:40 +00:00
# * foolscap < 0.6.3 is incompatible with Twisted 11.1.0 and newer.
2015-04-28 16:21:31 +00:00
# * foolscap 0.8.0 generates 2048-bit RSA-with-SHA-256 signatures,
# rather than 1024-bit RSA-with-MD5. This also allows us to work
# with a FIPS build of OpenSSL.
2016-09-02 05:39:03 +00:00
# * foolscap >= 0.12.3 provides tcp/tor/i2p connection handlers we need,
# and allocate_tcp_port
2016-12-08 05:42:00 +00:00
# * foolscap >= 0.12.5 has ConnectionInfo and ReconnectionInfo
2017-01-17 21:05:23 +00:00
# * foolscap >= 0.12.6 has an i2p.sam_endpoint() that takes kwargs
" foolscap >= 0.12.6 " ,
2011-01-21 05:36:10 +00:00
2012-03-14 06:13:51 +00:00
# pycryptopp-0.6.0 includes ed25519
" pycryptopp >= 0.6.0 " ,
2015-04-21 20:15:54 +00:00
" service-identity " , # this is needed to suppress complaints about being unable to verify certs
" characteristic >= 14.0.0 " , # latest service-identity depends on this version
2015-07-16 14:38:06 +00:00
" pyasn1 >= 0.1.8 " , # latest pyasn1-modules depends on this version
2015-04-21 20:15:54 +00:00
" pyasn1-modules >= 0.0.5 " , # service-identity depends on this
2016-03-15 17:30:35 +00:00
# * On Linux we need at least Twisted 10.1.0 for inotify support
# used by the drop-upload frontend.
# * We also need Twisted 10.1.0 for the FTP frontend in order for
# Twisted's FTP server to support asynchronous close.
# * The SFTP frontend depends on Twisted 11.0.0 to fix the SSH server
# rekeying bug <https://twistedmatrix.com/trac/ticket/4395>
# * The FTP frontend depends on Twisted >= 11.1.0 for
# filepath.Permissions
# * Nevow 0.11.1 depends on Twisted >= 13.0.0.
2016-03-25 18:44:15 +00:00
# * The SFTP frontend and manhole depend on the conch extra. However, we
# can't explicitly declare that without an undesirable dependency on gmpy,
# as explained in ticket #2740.
2016-03-25 18:33:04 +00:00
# * Due to a setuptools bug, we need to declare a dependency on the tls
# extra even though we only depend on it via foolscap.
2016-03-30 18:33:36 +00:00
# * Twisted >= 15.1.0 is the first version that provided the [tls] extra.
2016-04-26 20:44:07 +00:00
# * Twisted-16.1.0 fixes https://twistedmatrix.com/trac/ticket/8223,
# which otherwise causes test_system to fail (DirtyReactorError, due to
# leftover timers)
2019-01-23 19:01:37 +00:00
# * Twisted-16.4.0 introduces `python -m twisted.trial` which is needed
# for coverage testing
# * Twisted 16.6.0 drops the undesirable gmpy dependency from the conch
# extra, letting us use that extra instead of trying to duplicate its
# dependencies here. Twisted[conch] >18.7 introduces a dependency on
# bcrypt. It is nice to avoid that if the user ends up with an older
# version of Twisted. That's hard to express except by using the extra.
" Twisted[tls,conch] >= 16.6.0 " ,
2016-03-15 17:30:35 +00:00
# We need Nevow >= 0.11.1 which can be installed using pip.
" Nevow >= 0.11.1 " ,
# * pyOpenSSL is required in order for foolscap to provide secure connections.
# Since foolscap doesn't reliably declare this dependency in a machine-readable
# way, we need to declare a dependency on pyOpenSSL ourselves. Tahoe-LAFS does
# not *directly* depend on pyOpenSSL.
# * pyOpenSSL >= 0.13 is needed in order to avoid
# <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2005>, and also to check the
# version of OpenSSL that pyOpenSSL is using.
# * pyOpenSSL >= 0.14 is needed in order to avoid
# <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2474>.
" pyOpenSSL >= 0.14 " ,
2016-05-10 20:19:35 +00:00
" PyYAML >= 3.11 " ,
2016-10-19 05:17:48 +00:00
" six >= 1.10.0 " ,
2016-10-07 18:15:05 +00:00
# for 'tahoe invite' and 'tahoe join'
" magic-wormhole >= 0.10.2 " ,
2019-02-18 16:47:20 +00:00
# Eliot is contemplating dropping Python 2 support. Stick to a version we
# know works on Python 2.7. Because we don't have support for `==`
2019-03-20 12:57:39 +00:00
# constraints, pin 1.7.x this way. I feel pretty safe betting that we
# won't end up stuck on Eliot 1.7.100 with a critical fix only present in
# 1.7.101. And if we do, I know how to deal with that situation.
" eliot >= 1.7.0, <= 1.7.100 " ,
2019-02-25 16:55:47 +00:00
# A great way to define types of values.
" attrs >= 18.2.0 " ,
2011-01-21 05:36:10 +00:00
]
# Includes some indirect dependencies, but does not include allmydata.
# These are in the order they should be listed by --version, etc.
package_imports = [
2014-09-01 18:39:57 +00:00
# package name module name
( ' foolscap ' , ' foolscap ' ) ,
( ' pycryptopp ' , ' pycryptopp ' ) ,
( ' zfec ' , ' zfec ' ) ,
( ' Twisted ' , ' twisted ' ) ,
( ' Nevow ' , ' nevow ' ) ,
( ' zope.interface ' , ' zope.interface ' ) ,
( ' python ' , None ) ,
( ' platform ' , None ) ,
( ' pyOpenSSL ' , ' OpenSSL ' ) ,
2015-06-02 17:07:20 +00:00
( ' OpenSSL ' , None ) ,
2014-09-01 18:39:57 +00:00
( ' pyasn1 ' , ' pyasn1 ' ) ,
2015-04-21 20:15:54 +00:00
( ' service-identity ' , ' service_identity ' ) ,
( ' characteristic ' , ' characteristic ' ) ,
( ' pyasn1-modules ' , ' pyasn1_modules ' ) ,
2016-03-15 17:30:35 +00:00
( ' cryptography ' , ' cryptography ' ) ,
( ' cffi ' , ' cffi ' ) ,
( ' six ' , ' six ' ) ,
( ' enum34 ' , ' enum ' ) ,
( ' pycparser ' , ' pycparser ' ) ,
2016-05-10 20:19:35 +00:00
( ' PyYAML ' , ' yaml ' ) ,
2018-03-29 18:11:15 +00:00
( ' magic-wormhole ' , ' wormhole ' ) ,
2019-02-18 16:47:20 +00:00
( ' setuptools ' , ' setuptools ' ) ,
( ' eliot ' , ' eliot ' ) ,
2019-02-25 16:55:47 +00:00
( ' attrs ' , ' attr ' ) ,
2011-01-21 05:36:10 +00:00
]
2014-09-25 17:54:14 +00:00
# Dependencies for which we don't know how to get a version number at run-time.
not_import_versionable = [
' zope.interface ' ,
]
# Dependencies reported by pkg_resources that we can safely ignore.
ignorable = [
' argparse ' ,
' pyutil ' ,
' zbase32 ' ,
' distribute ' ,
' twisted-web ' ,
' twisted-core ' ,
' twisted-conch ' ,
]
2011-01-21 05:36:10 +00:00
2018-03-12 22:43:09 +00:00
setup_requires = [
' setuptools >= 28.8.0 ' , # for PEP-440 style versions
]
2014-10-07 20:04:40 +00:00
2012-06-14 21:23:08 +00:00
# These are suppressed globally:
global_deprecation_messages = [
" BaseException.message has been deprecated as of Python 2.6 " ,
" twisted.internet.interfaces.IFinishableConsumer was deprecated in Twisted 11.1.0: Please use IConsumer (and IConsumer.unregisterProducer) instead. " ,
2014-09-01 20:12:53 +00:00
" twisted.internet.interfaces.IStreamClientEndpointStringParser was deprecated in Twisted 14.0.0: This interface has been superseded by IStreamClientEndpointStringParserWithReactor. " ,
2012-06-14 21:23:08 +00:00
]
# These are suppressed while importing dependencies:
2011-01-21 05:36:10 +00:00
deprecation_messages = [
" the sha module is deprecated; use the hashlib module instead " ,
" object.__new__ \ ( \ ) takes no parameters " ,
" The popen2 module is deprecated. Use the subprocess module. " ,
" the md5 module is deprecated; use hashlib instead " ,
" twisted.web.error.NoResource is deprecated since Twisted 9.0. See twisted.web.resource.NoResource. " ,
" the sets module is deprecated " ,
]
2012-05-14 03:23:52 +00:00
runtime_warning_messages = [
" Not using mpz_powm_sec. You should rebuild using libgmp >= 5 to avoid timing attack vulnerability. " ,
]
2011-08-18 04:07:49 +00:00
warning_imports = [
2011-01-21 05:36:10 +00:00
' nevow ' ,
' twisted.persisted.sob ' ,
' twisted.python.filepath ' ,
]