]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blob - src/allmydata/_auto_deps.py
Since DeprecationWarning about twisted.internet.interfaces.IFinishableConsumer is...
[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.3 and 3.6.4 are incompatible with Nevow (#1435).
18     "zope.interface <= 3.6.2, >= 3.6.5",
19
20     # On Windows we need at least Twisted 9.0 to avoid an indirect dependency on pywin32.
21     # On Linux we need at least Twisted 10.1.0 for inotify support used by the drop-upload
22     # frontend.
23     # We also need Twisted 10.1 for the FTP frontend in order for Twisted's FTP server to
24     # support asynchronous close.
25     "Twisted >= 10.1.0",
26
27     # foolscap < 0.5.1 had a performance bug which spent
28     # O(N**2) CPU for transferring large mutable files
29     # of size N.
30     # foolscap < 0.6 is incompatible with Twisted 10.2.0.
31     # foolscap 0.6.1 quiets a DeprecationWarning.
32     # pyOpenSSL is required by foolscap for it (foolscap) to provide secure
33     # connections. Foolscap doesn't reliably declare this dependency in a
34     # machine-readable way, so we need to declare a dependency on pyOpenSSL
35     # ourselves. Tahoe-LAFS doesn't *really* depend directly on pyOpenSSL,
36     # so if something changes in the relationship between foolscap and
37     # pyOpenSSL, such as foolscap requiring a specific version of pyOpenSSL,
38     # or foolscap switching from pyOpenSSL to a different crypto library, we
39     # need to update this declaration here.
40     "foolscap >= 0.6.1",
41     "pyOpenSSL",
42
43     "Nevow >= 0.6.0",
44
45     # Needed for SFTP. pyasn1 is needed by twisted.conch in Twisted >= 9.0.
46     # pycrypto 2.2 doesn't work due to https://bugs.launchpad.net/pycrypto/+bug/620253
47     # pycrypto 2.4 doesn't work due to https://bugs.launchpad.net/pycrypto/+bug/881130
48     "pycrypto == 2.1.0, == 2.3, >= 2.4.1",
49     "pyasn1 >= 0.0.8a",
50
51     # http://www.voidspace.org.uk/python/mock/
52     "mock",
53
54     # pycryptopp-0.6.0 includes ed25519
55     "pycryptopp >= 0.6.0",
56
57     # Will be needed to test web apps, but not yet. See #1001.
58     #"windmill >= 1.3",
59 ]
60
61 # Includes some indirect dependencies, but does not include allmydata.
62 # These are in the order they should be listed by --version, etc.
63 package_imports = [
64     # package name      module name
65     ('foolscap',        'foolscap'),
66     ('pycryptopp',      'pycryptopp'),
67     ('zfec',            'zfec'),
68     ('Twisted',         'twisted'),
69     ('Nevow',           'nevow'),
70     ('zope.interface',  'zope.interface'),
71     ('python',          None),
72     ('platform',        None),
73     ('pyOpenSSL',       'OpenSSL'),
74     ('simplejson',      'simplejson'),
75     ('pycrypto',        'Crypto'),
76     ('pyasn1',          'pyasn1'),
77     ('mock',            'mock'),
78 ]
79
80 def require_more():
81     import sys
82
83     # Don't try to get the version number of setuptools in frozen builds, because
84     # that triggers 'site' processing that causes failures. Note that frozen
85     # builds still (unfortunately) import pkg_resources in .tac files, so the
86     # entry for setuptools in install_requires above isn't conditional.
87     if not hasattr(sys, 'frozen'):
88         package_imports.append(('setuptools', 'setuptools'))
89
90 require_more()
91
92
93 # These are suppressed globally:
94
95 global_deprecation_messages = [
96     "BaseException.message has been deprecated as of Python 2.6",
97     "twisted.internet.interfaces.IFinishableConsumer was deprecated in Twisted 11.1.0: Please use IConsumer (and IConsumer.unregisterProducer) instead.",
98 ]
99
100 # These are suppressed while importing dependencies:
101
102 deprecation_messages = [
103     "the sha module is deprecated; use the hashlib module instead",
104     "object.__new__\(\) takes no parameters",
105     "The popen2 module is deprecated.  Use the subprocess module.",
106     "the md5 module is deprecated; use hashlib instead",
107     "twisted.web.error.NoResource is deprecated since Twisted 9.0.  See twisted.web.resource.NoResource.",
108     "the sets module is deprecated",
109 ]
110
111 user_warning_messages = [
112     "Hashing uninitialized InterfaceClass instance",
113     "Reliable disconnection notification requires pywin32 215 or later",
114 ]
115
116 runtime_warning_messages = [
117     "Not using mpz_powm_sec.  You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.",
118 ]
119
120 warning_imports = [
121     'nevow',
122     'twisted.persisted.sob',
123     'twisted.python.filepath',
124     'Crypto.Hash.SHA',
125 ]