]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blob - src/allmydata/_auto_deps.py
Suppress a DeprecationWarning from Twisted.
[tahoe-lafs/tahoe-lafs.git] / src / allmydata / _auto_deps.py
1 # Note: please minimize imports in this file. In particular, do not import
2 # any module from Tahoe-LAFS or its dependencies, and do not import any
3 # modules at all at global level. That includes setuptools and pkg_resources.
4 # It is ok to import modules from the Python Standard Library if they are
5 # always available, or the import is protected by try...except ImportError.
6
7 install_requires = [
8     # we require newer versions of setuptools (actually
9     # zetuptoolz) to build, but can handle older versions to run
10     "setuptools >= 0.6c6",
11
12     "zfec >= 1.1.0",
13
14     # Feisty has simplejson 1.4
15     "simplejson >= 1.4",
16
17     # zope.interface >= 3.6.0 is required for Twisted >= 12.1.0.
18     # zope.interface 3.6.3 and 3.6.4 are incompatible with Nevow (#1435).
19     "zope.interface == 3.6.0, == 3.6.1, == 3.6.2, >= 3.6.5",
20
21     # * On Windows we need at least Twisted 9.0 to avoid an indirect
22     #   dependency on pywin32.
23     # * On Linux we need at least Twisted 10.1.0 for inotify support used by
24     #   the drop-upload frontend.
25     # * We also need Twisted 10.1 for the FTP frontend in order for Twisted's
26     #   FTP server to support asynchronous close.
27     # * When the cloud backend lands, it will depend on Twisted 10.2.0 which
28     #   includes the fix to https://twistedmatrix.com/trac/ticket/411
29     # * The SFTP frontend depends on Twisted 11.0.0 to fix the SSH server
30     #   rekeying bug http://twistedmatrix.com/trac/ticket/4395
31     #
32     # service-identity is necessary for Twisted and pyOpenSSL to be able to
33     # verify PKI certificates.
34     #
35     "Twisted >= 11.0.0",
36     "service-identity",
37
38     # * foolscap < 0.5.1 had a performance bug which spent O(N**2) CPU for
39     #   transferring large mutable files of size N.
40     # * foolscap < 0.6 is incompatible with Twisted 10.2.0.
41     # * foolscap 0.6.1 quiets a DeprecationWarning.
42     # * foolscap < 0.6.3 is incompatible with Twisted-11.1.0 and newer. Since
43     #   current Twisted is 12.0, any build which needs twisted will grab a
44     #   version that requires foolscap>=0.6.3
45     # * pyOpenSSL is required by foolscap for it (foolscap) to provide secure
46     #   connections. Foolscap doesn't reliably declare this dependency in a
47     #   machine-readable way, so we need to declare a dependency on pyOpenSSL
48     #   ourselves. Tahoe-LAFS doesn't *really* depend directly on pyOpenSSL,
49     #   so if something changes in the relationship between foolscap and
50     #   pyOpenSSL, such as foolscap requiring a specific version of
51     #   pyOpenSSL, or foolscap switching from pyOpenSSL to a different crypto
52     #   library, we need to update this declaration here.
53     #
54     "foolscap >= 0.6.3",
55     "pyOpenSSL",
56
57     "Nevow >= 0.6.0",
58
59     # Needed for SFTP. pyasn1 is needed by twisted.conch in Twisted >= 9.0.
60     # pycrypto 2.2 doesn't work due to https://bugs.launchpad.net/pycrypto/+bug/620253
61     # pycrypto 2.4 doesn't work due to https://bugs.launchpad.net/pycrypto/+bug/881130
62     "pycrypto == 2.1.0, == 2.3, >= 2.4.1",
63     "pyasn1 >= 0.0.8a",
64
65     # http://www.voidspace.org.uk/python/mock/ , 0.8.0 provides "call"
66     "mock >= 0.8.0",
67
68     # pycryptopp-0.6.0 includes ed25519
69     "pycryptopp >= 0.6.0",
70
71     # Will be needed to test web apps, but not yet. See #1001.
72     #"windmill >= 1.3",
73 ]
74
75 # Includes some indirect dependencies, but does not include allmydata.
76 # These are in the order they should be listed by --version, etc.
77 package_imports = [
78     # package name       module name
79     ('foolscap',         'foolscap'),
80     ('pycryptopp',       'pycryptopp'),
81     ('zfec',             'zfec'),
82     ('Twisted',          'twisted'),
83     ('Nevow',            'nevow'),
84     ('zope.interface',   'zope.interface'),
85     ('python',           None),
86     ('platform',         None),
87     ('pyOpenSSL',        'OpenSSL'),
88     ('simplejson',       'simplejson'),
89     ('pycrypto',         'Crypto'),
90     ('pyasn1',           'pyasn1'),
91     ('mock',             'mock'),
92     ('service-identity', 'service_identity')
93 ]
94
95 def require_more():
96     import sys
97
98     # Don't try to get the version number of setuptools in frozen builds, because
99     # that triggers 'site' processing that causes failures. Note that frozen
100     # builds still (unfortunately) import pkg_resources in .tac files, so the
101     # entry for setuptools in install_requires above isn't conditional.
102     if not hasattr(sys, 'frozen'):
103         package_imports.append(('setuptools', 'setuptools'))
104
105 require_more()
106
107
108 # These are suppressed globally:
109
110 global_deprecation_messages = [
111     "BaseException.message has been deprecated as of Python 2.6",
112     "twisted.internet.interfaces.IFinishableConsumer was deprecated in Twisted 11.1.0: Please use IConsumer (and IConsumer.unregisterProducer) instead.",
113     "twisted.internet.interfaces.IStreamClientEndpointStringParser was deprecated in Twisted 14.0.0: This interface has been superseded by IStreamClientEndpointStringParserWithReactor.",
114 ]
115
116 # These are suppressed while importing dependencies:
117
118 deprecation_messages = [
119     "the sha module is deprecated; use the hashlib module instead",
120     "object.__new__\(\) takes no parameters",
121     "The popen2 module is deprecated.  Use the subprocess module.",
122     "the md5 module is deprecated; use hashlib instead",
123     "twisted.web.error.NoResource is deprecated since Twisted 9.0.  See twisted.web.resource.NoResource.",
124     "the sets module is deprecated",
125 ]
126
127 runtime_warning_messages = [
128     "Not using mpz_powm_sec.  You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.",
129 ]
130
131 warning_imports = [
132     'nevow',
133     'twisted.persisted.sob',
134     'twisted.python.filepath',
135     'Crypto.Hash.SHA',
136 ]