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.
" setuptools >= 11.3 " ,
2011-01-22 01:24:42 +00:00
2011-01-21 05:36:10 +00:00
" zfec >= 1.1.0 " ,
# Feisty has simplejson 1.4
" simplejson >= 1.4 " ,
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-02-03 06:19:57 +00:00
" foolscap >= 0.10.1 " ,
2011-01-21 05:36:10 +00:00
2014-09-30 18:03:25 +00:00
# Needed for SFTP.
# pycrypto 2.2 doesn't work due to <https://bugs.launchpad.net/pycrypto/+bug/620253>
# pycrypto 2.4 doesn't work due to <https://bugs.launchpad.net/pycrypto/+bug/881130>
2015-01-20 18:52:02 +00:00
" pycrypto >= 2.1.0, != 2.2, != 2.4 " ,
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-25 18:44:15 +00:00
" Twisted[tls] >= 13.0.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 " ,
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
( ' simplejson ' , ' simplejson ' ) ,
( ' pycrypto ' , ' Crypto ' ) ,
( ' 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 ' ) ,
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 ' ,
]
2014-10-07 18:06:14 +00:00
import sys
2011-01-21 05:36:10 +00:00
2014-10-07 18:06:14 +00:00
# Don't try to get the version number of setuptools in frozen builds, because
# that triggers 'site' processing that causes failures. Note that frozen
# builds still (unfortunately) import pkg_resources in .tac files, so the
# entry for setuptools in install_requires above isn't conditional.
if not hasattr ( sys , ' frozen ' ) :
package_imports . append ( ( ' setuptools ' , ' setuptools ' ) )
2011-01-21 05:36:10 +00:00
2016-03-15 17:31:13 +00:00
if sys . platform == " win32 " :
install_requires . append ( ' pypiwin32 ' )
package_imports . append ( ( ' pypiwin32 ' , ' win32api ' ) )
2015-05-02 21:26:39 +00:00
setup_requires = [ ]
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 ' ,
' Crypto.Hash.SHA ' ,
]