Commit 8a33154b authored by Jason R. Coombs's avatar Jason R. Coombs

Officially deprecated Features functionality (per #65).

parent 6f6edeb7
...@@ -24,6 +24,7 @@ CHANGES ...@@ -24,6 +24,7 @@ CHANGES
wget for retrieving the Setuptools tarball for improved security of the wget for retrieving the Setuptools tarball for improved security of the
install. The script will still fall back to a simple ``urlopen`` on install. The script will still fall back to a simple ``urlopen`` on
platforms that do not have these tools. platforms that do not have these tools.
* Issue #65: Deprecated the ``Features`` functionality.
----- -----
0.9.8 0.9.8
......
...@@ -2,6 +2,7 @@ __all__ = ['Distribution'] ...@@ -2,6 +2,7 @@ __all__ = ['Distribution']
import re import re
import sys import sys
import warnings
from distutils.core import Distribution as _Distribution from distutils.core import Distribution as _Distribution
from setuptools.depends import Require from setuptools.depends import Require
from setuptools.command.install import install from setuptools.command.install import install
...@@ -132,7 +133,7 @@ def check_packages(dist, attr, value): ...@@ -132,7 +133,7 @@ def check_packages(dist, attr, value):
"WARNING: %r not a valid package name; please use only" "WARNING: %r not a valid package name; please use only"
".-separated package names in setup.py", pkgname ".-separated package names in setup.py", pkgname
) )
...@@ -194,7 +195,8 @@ class Distribution(_Distribution): ...@@ -194,7 +195,8 @@ class Distribution(_Distribution):
EasyInstall and requests one of your extras, the corresponding EasyInstall and requests one of your extras, the corresponding
additional requirements will be installed if needed. additional requirements will be installed if needed.
'features' -- a dictionary mapping option names to 'setuptools.Feature' 'features' **deprecated** -- a dictionary mapping option names to
'setuptools.Feature'
objects. Features are a portion of the distribution that can be objects. Features are a portion of the distribution that can be
included or excluded based on user options, inter-feature dependencies, included or excluded based on user options, inter-feature dependencies,
and availability on the current system. Excluded features are omitted and availability on the current system. Excluded features are omitted
...@@ -252,6 +254,8 @@ class Distribution(_Distribution): ...@@ -252,6 +254,8 @@ class Distribution(_Distribution):
have_package_data = hasattr(self, "package_data") have_package_data = hasattr(self, "package_data")
if not have_package_data: if not have_package_data:
self.package_data = {} self.package_data = {}
if 'features' in attrs or 'require_features' in attrs:
Feature.warn_deprecated()
self.require_features = [] self.require_features = []
self.features = {} self.features = {}
self.dist_files = [] self.dist_files = []
...@@ -745,7 +749,13 @@ for module in distutils.dist, distutils.core, distutils.cmd: ...@@ -745,7 +749,13 @@ for module in distutils.dist, distutils.core, distutils.cmd:
class Feature: class Feature:
"""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 future version.
A subset of the distribution that can be excluded if unneeded/wanted
Features are created using these keyword arguments: Features are created using these keyword arguments:
...@@ -794,9 +804,17 @@ class Feature: ...@@ -794,9 +804,17 @@ class Feature:
Aside from the methods, the only feature attributes that distributions look Aside from the methods, the only feature attributes that distributions look
at are 'description' and 'optional'. at are 'description' and 'optional'.
""" """
@staticmethod
def warn_deprecated():
warnings.warn("Features are deprecated and will be removed in "
"a future version. See http://bitbucket.org/pypa/setuptools/65.",
DeprecationWarning)
def __init__(self, description, standard=False, available=True, def __init__(self, description, standard=False, available=True,
optional=True, require_features=(), remove=(), **extras optional=True, require_features=(), remove=(), **extras
): ):
self.warn_deprecated()
self.description = description self.description = description
self.standard = standard self.standard = standard
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment