]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blob - src/allmydata/_auto_deps.py
src/allmydata/_auto_deps.py: 'pysqlite.dbapi2' module should have been 'pysqlite2...
[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     "zfec >= 1.1.0",
9
10     # Feisty has simplejson 1.4
11     "simplejson >= 1.4",
12
13     "zope.interface",
14
15     "Twisted >= 2.4.0",
16
17     # foolscap < 0.5.1 had a performance bug which spent
18     # O(N**2) CPU for transferring large mutable files
19     # of size N.
20     # foolscap < 0.6 is incompatible with Twisted 10.2.0.
21     # foolscap 0.6.1 quiets a DeprecationWarning.
22     "foolscap[secure_connections] >= 0.6.1",
23
24     "Nevow >= 0.6.0",
25
26     # Needed for SFTP. pyasn1 is needed by twisted.conch in Twisted >= 9.0.
27     # pycrypto 2.2 doesn't work due to https://bugs.launchpad.net/pycrypto/+bug/620253
28     "pycrypto == 2.0.1, == 2.1.0, >= 2.3",
29     "pyasn1 >= 0.0.8a",
30
31     # http://www.voidspace.org.uk/python/mock/
32     "mock",
33
34     # Will be needed to test web apps, but not yet. See #1001.
35     #"windmill >= 1.3",
36 ]
37
38 # Includes some indirect dependencies, but does not include allmydata.
39 # These are in the order they should be listed by --version, etc.
40 package_imports = [
41     # package name      module name
42     ('foolscap',        'foolscap'),
43     ('pycryptopp',      'pycryptopp'),
44     ('zfec',            'zfec'),
45     ('Twisted',         'twisted'),
46     ('Nevow',           'nevow'),
47     ('zope.interface',  'zope.interface'),
48     ('python',          None),
49     ('platform',        None),
50     ('pyOpenSSL',       'OpenSSL'),
51     ('simplejson',      'simplejson'),
52     ('pycrypto',        'Crypto'),
53     ('pyasn1',          'pyasn1'),
54     ('mock',            'mock'),
55 ]
56
57 def require_more():
58     import platform, sys
59
60     if platform.machine().lower() in ['i386', 'x86_64', 'amd64', 'x86', '']:
61         # pycryptopp v0.5.20 fixes bugs in SHA-256 and AES on x86 or amd64
62         # (from Crypto++ revisions 470, 471, 480, 492).  The '' is there
63         # in case platform.machine is broken and this is actually an x86
64         # or amd64 machine.
65         install_requires.append("pycryptopp >= 0.5.20")
66     else:
67         # pycryptopp v0.5.13 had a new bundled version of Crypto++
68         # (v5.6.0) and a new bundled version of setuptools (although that
69         # shouldn't make any difference to users of pycryptopp).
70         install_requires.append("pycryptopp >= 0.5.14")
71
72     # Sqlite comes built into Python >= 2.5, and is provided by the "pysqlite"
73     # distribution for Python 2.4.
74     try:
75         import sqlite3
76         sqlite3 # hush pyflakes
77         package_imports.append(('sqlite3', 'sqlite3'))
78     except ImportError:
79         # pysqlite v2.0.5 was shipped in Ubuntu 6.06 LTS "dapper" and Nexenta NCP 1.
80         install_requires.append("pysqlite >= 2.0.5")
81         package_imports.append(('pysqlite', 'pysqlite2.dbapi2'))
82
83     if not hasattr(sys, 'frozen'):
84         # we require newer versions of setuptools (actually
85         # zetuptoolz) to build, but can handle older versions to run
86         install_requires.append("setuptools >= 0.6c6")
87         package_imports.append(('setuptools', 'setuptools'))
88
89 require_more()
90
91 deprecation_messages = [
92     "the sha module is deprecated; use the hashlib module instead",
93     "object.__new__\(\) takes no parameters",
94     "The popen2 module is deprecated.  Use the subprocess module.",
95     "the md5 module is deprecated; use hashlib instead",
96     "twisted.web.error.NoResource is deprecated since Twisted 9.0.  See twisted.web.resource.NoResource.",
97     "the sets module is deprecated",
98 ]
99
100 deprecation_imports = [
101     'nevow',
102     'twisted.persisted.sob',
103     'twisted.python.filepath',
104     'Crypto.Hash.SHA',
105 ]