diff --git setup.py setup.py
index 26f052b..e63f1b5 100755
|
|
dependency resolution is disabled. |
54 | 54 | |
55 | 55 | from twisted.python.dist import ( |
56 | 56 | STATIC_PACKAGE_METADATA, getDataFiles, getExtensions, getAllScripts, |
57 | | getPackages, setup) |
| 57 | getPackages, setup, EXTRAS_REQUIRE) |
58 | 58 | |
59 | 59 | scripts = getAllScripts() |
60 | 60 | |
… |
… |
dependency resolution is disabled. |
62 | 62 | packages=getPackages('twisted'), |
63 | 63 | conditionalExtensions=getExtensions(), |
64 | 64 | scripts=scripts, |
| 65 | extras_require=EXTRAS_REQUIRE, |
65 | 66 | data_files=getDataFiles('twisted'), |
66 | 67 | **STATIC_PACKAGE_METADATA)) |
67 | 68 | |
diff --git twisted/python/dist.py twisted/python/dist.py
index 9566039..1ff46d0 100644
|
|
twisted_subprojects = ["conch", "lore", "mail", "names", |
50 | 50 | "words"] |
51 | 51 | |
52 | 52 | |
| 53 | # extras_require is a dictionary of items that can be passed to setup.py |
| 54 | # to install optional dependencies. For example, to install the optional |
| 55 | # dev dependencies one would type `pip install -e . "twisted[dev]"` |
| 56 | # This has been supported by setuptools since 0.5a4 |
| 57 | EXTRAS_REQUIRE = dict( |
| 58 | docs = ['sphinx >= 1.2.2', |
| 59 | 'pydoctor >= 0.5'], |
| 60 | dev = ['twistedchecker >= 0.2.0', |
| 61 | 'pyflakes >= 0.8.1', |
| 62 | 'twisted-dev-tools >= 0.0.2'], |
| 63 | ssl = ['pyopenssl', |
| 64 | 'service_identity', |
| 65 | 'PyCrypto'], |
| 66 | conch = ['gmpy', 'pyasn1'], |
| 67 | subunit = ['python-subunit'], |
| 68 | soap = ['soappy'], |
| 69 | windows = ['pywin32'], |
| 70 | cocoa = ['pyobjc'], |
| 71 | serial = ['pyserial'], |
| 72 | gtk = ['PyGTK'], |
| 73 | pam = ['pam'], |
| 74 | wx = ['wxPython'], |
| 75 | ) |
| 76 | |
53 | 77 | |
54 | 78 | class ConditionalExtension(Extension): |
55 | 79 | """ |
diff --git twisted/python/test/test_dist.py twisted/python/test/test_dist.py
index d2288ee..17954d3 100644
|
|
Tests for parts of our release automation system. |
9 | 9 | import os |
10 | 10 | import sys |
11 | 11 | |
12 | | from distutils.core import Distribution |
| 12 | from setuptools.dist import Distribution |
13 | 13 | |
14 | 14 | from twisted.trial.unittest import TestCase |
15 | 15 | |
16 | 16 | from twisted.python import dist |
17 | 17 | from twisted.python.dist import (get_setup_args, ConditionalExtension, |
18 | | build_scripts_twisted) |
| 18 | build_scripts_twisted, EXTRAS_REQUIRE) |
19 | 19 | from twisted.python.filepath import FilePath |
20 | 20 | |
21 | 21 | |
… |
… |
class SetupTest(TestCase): |
58 | 58 | self.assertEqual(ext.define_macros, [("whatever", 2), ("WIN32", 1)]) |
59 | 59 | |
60 | 60 | |
| 61 | class OptionalDependenciesTest(TestCase): |
| 62 | """ |
| 63 | Tests for L{dist.EXTRA_REQUIRES} |
| 64 | |
| 65 | Test whether or not the setuptools generates the correct Distribution |
| 66 | object when extra_requires are passed to it. As long as the distribution |
| 67 | object looks correct, it *should* generate the correct egg_info. |
| 68 | """ |
| 69 | def test_distributeTakesExtrasRequire(self): |
| 70 | """ |
| 71 | Test that setuptools Distribtution object can use extra_requires. |
| 72 | """ |
| 73 | attrs = dict(extras_require=EXTRAS_REQUIRE) |
| 74 | dist = Distribution(attrs) |
| 75 | self.assertEqual(dist.extras_require, EXTRAS_REQUIRE) |
| 76 | |
61 | 77 | |
62 | 78 | class GetExtensionsTest(TestCase): |
63 | 79 | """ |
diff --git twisted/topfiles/3696.misc twisted/topfiles/3696.misc
new file mode 100644
index 0000000..78e79d4
-
|
+
|
|
| 1 | Optional dependencies can be installed using the extra_requires facility provided by setuptools |
| 2 | No newline at end of file |