diff options
Diffstat (limited to 'setuptools/dist.py')
-rw-r--r-- | setuptools/dist.py | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/setuptools/dist.py b/setuptools/dist.py index 2941f26..cd3af26 100644 --- a/setuptools/dist.py +++ b/setuptools/dist.py @@ -1,7 +1,7 @@ __all__ = ['Distribution', 'Feature'] - from distutils.core import Distribution as _Distribution from distutils.core import Extension +from setuptools.depends import Require from setuptools.command.build_py import build_py from setuptools.command.build_ext import build_ext from setuptools.command.install import install @@ -11,7 +11,6 @@ from distutils.errors import DistutilsSetupError sequence = tuple, list class Distribution(_Distribution): - """Distribution with support for features, tests, and package data This is an enhanced version of 'distutils.dist.Distribution' that @@ -67,7 +66,6 @@ class Distribution(_Distribution): self.cmdclass.setdefault('build_ext',build_ext) self.cmdclass.setdefault('install',install) self.cmdclass.setdefault('install_lib',install_lib) - if self.features: self._set_global_opts_from_features() @@ -288,7 +286,6 @@ class Distribution(_Distribution): class Feature: - """A subset of the distribution that can be excluded if unneeded/wanted Features are created using these keyword arguments: @@ -312,6 +309,8 @@ class Feature: 'requires' -- a string or sequence of strings naming features that should also be included if this feature is included. Defaults to empty list. + May also contain 'Require' objects that should be added/removed from + the distribution. 'remove' -- a string or list of strings naming packages to be removed from the distribution if this feature is *not* included. If the @@ -345,15 +344,15 @@ class Feature: self.standard = standard self.available = available self.optional = optional - - if isinstance(requires,str): + if isinstance(requires,(str,Require)): requires = requires, - self.requires = requires + self.requires = [r for r in requires if isinstance(r,str)] + er = [r for r in requires if not isinstance(r,str)] + if er: extras['requires'] = er if isinstance(remove,str): remove = remove, - self.remove = remove self.extras = extras @@ -368,7 +367,6 @@ class Feature: """Should this feature be included by default?""" return self.available and self.standard - def include_in(self,dist): """Ensure feature and its requirements are included in distribution |