from distutils.core import Distribution as _Distribution
from setuptools.depends import Require
from setuptools.command.install import install
"WARNING: %r not a valid package name; please use only"
".-separated package names in setup.py", pkgname
EasyInstall and requests one of your extras, the corresponding
additional requirements will be installed if needed.
- 'features' -- a dictionary mapping option names to 'setuptools.Feature'
+ 'features' **deprecated** -- a dictionary mapping option names to
objects. Features are a portion of the distribution that can be
included or excluded based on user options, inter-feature dependencies,
and availability on the current system. Excluded features are omitted
have_package_data = hasattr(self, "package_data")
if not have_package_data:
+ if 'features' in attrs or 'require_features' in attrs:
self.require_features = 
- """A subset of the distribution that can be excluded if unneeded/wanted
+ **deprecated** -- The `Feature` facility was never completely implemented
+ or supported, `has reported issues
+ <https://bitbucket.org/pypa/setuptools/issue/58>`_ and will be removed in
+ A subset of the distribution that can be excluded if unneeded/wanted
Features are created using these keyword arguments:
Aside from the methods, the only feature attributes that distributions look
at are 'description' and 'optional'.
+ warnings.warn("Features are deprecated and will be removed in "
+ "a future version. See http://bitbucket.org/pypa/setuptools/65.",
def __init__(self, description, standard=False, available=True,
optional=True, require_features=(), remove=(), **extras
self.description = description