Ticket #3696: extras_require-3696-3.diff

File extras_require-3696-3.diff, 4.2 KB (added by Chris Wolfe, 5 years ago)
  • setup.py

    diff --git setup.py setup.py
    index 26f052b..e63f1b5 100755
    dependency resolution is disabled. 
    5454
    5555    from twisted.python.dist import (
    5656        STATIC_PACKAGE_METADATA, getDataFiles, getExtensions, getAllScripts,
    57         getPackages, setup)
     57        getPackages, setup, EXTRAS_REQUIRE)
    5858
    5959    scripts = getAllScripts()
    6060
    dependency resolution is disabled. 
    6262        packages=getPackages('twisted'),
    6363        conditionalExtensions=getExtensions(),
    6464        scripts=scripts,
     65        extras_require=EXTRAS_REQUIRE,
    6566        data_files=getDataFiles('twisted'),
    6667        **STATIC_PACKAGE_METADATA))
    6768
  • twisted/python/dist.py

    diff --git twisted/python/dist.py twisted/python/dist.py
    index 9566039..eae91b3 100644
    twisted_subprojects = ["conch", "lore", "mail", "names", 
    4949                       "news", "pair", "runner", "web",
    5050                       "words"]
    5151
     52# extras_require is a dictionary of items that can be passed to setup.py
     53# to install optional dependencies. For example, to install the optional
     54# dev dependencies one would type `pip install -e . "twisted[dev]"`
     55# This has been supported by setuptools since 0.5a4
     56EXTRAS_REQUIRE = dict(
     57    docs = ['sphinx >= 1.2.2',
     58            'pydoctor >= 0.5'],
     59    dev = ['twistedchecker >= 0.2.0',
     60           'pyflakes >= 0.8.1',
     61           'twisted-dev-tools >= 0.0.2'],
     62    tls = ['pyopenssl >= 0.11',
     63           'service_identity'],
     64    conch = ['gmpy',
     65             'pyasn1'
     66             'PyCrypto'],
     67    subunit = ['python-subunit'],
     68    soap = ['soappy'],
     69    serial = ['pyserial'],
     70    pam = ['pam'],
     71    gtk = ['PyGTK'],
     72    windows = ['pywin32'],
     73    osx = ['pyobjc']
     74)
    5275
    5376
    5477class ConditionalExtension(Extension):
  • twisted/python/test/test_dist.py

    diff --git twisted/python/test/test_dist.py twisted/python/test/test_dist.py
    index d2288ee..d6ea244 100644
    Tests for parts of our release automation system. 
    99import os
    1010import sys
    1111
    12 from distutils.core import Distribution
     12from setuptools.dist import Distribution
    1313
    1414from twisted.trial.unittest import TestCase
    1515
    1616from twisted.python import dist
    1717from twisted.python.dist import (get_setup_args, ConditionalExtension,
    18     build_scripts_twisted)
     18                                 build_scripts_twisted, EXTRAS_REQUIRE)
    1919from twisted.python.filepath import FilePath
    2020
    2121
    class SetupTest(TestCase): 
    5858        self.assertEqual(ext.define_macros, [("whatever", 2), ("WIN32", 1)])
    5959
    6060
     61class OptionalDependenciesTests(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' Distribution 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
     77    def test_extrasRequireDictContainsKeys(self):
     78        """
     79        Test that the L{dist.EXTRA_REQUIRES} dictionary contains all of the
     80        expected keys.
     81        """
     82        self.assertIn('docs', EXTRAS_REQUIRE)
     83        self.assertIn('dev', EXTRAS_REQUIRE)
     84        self.assertIn('tls', EXTRAS_REQUIRE)
     85        self.assertIn('conch', EXTRAS_REQUIRE)
     86        self.assertIn('subunit', EXTRAS_REQUIRE)
     87        self.assertIn('soap', EXTRAS_REQUIRE)
     88        self.assertIn('serial', EXTRAS_REQUIRE)
     89        self.assertIn('gtk', EXTRAS_REQUIRE)
     90        self.assertIn('pam', EXTRAS_REQUIRE)
     91        self.assertIn('windows', EXTRAS_REQUIRE)
     92        self.assertIn('osx', EXTRAS_REQUIRE)
     93
    6194
    6295class GetExtensionsTest(TestCase):
    6396    """
  • new file twisted/topfiles/3696.misc

    diff --git twisted/topfiles/3696.misc twisted/topfiles/3696.misc
    new file mode 100644
    index 0000000..78e79d4
    - +  
     1Optional dependencies can be installed using the extra_requires facility provided by setuptools
     2 No newline at end of file