Skip to content

Commit

Permalink
Merge pull request #2824 from pypa/debt/deprecate-setup-requires
Browse files Browse the repository at this point in the history
Deprecate setup_requires, setup.py install, and easy_install command.
  • Loading branch information
jaraco committed Oct 22, 2021
2 parents ce9cc34 + fc5c308 commit 391bb5d
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 11 deletions.
1 change: 1 addition & 0 deletions changelog.d/2823.change.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Officially deprecated support for ``setup_requires``. Users are encouraged instead to migrate to PEP 518 ``build-system.requires`` in ``pyproject.toml``. Users reliant on ``setup_requires`` should consider pinning to this major version to avoid disruption.
1 change: 1 addition & 0 deletions changelog.d/917.change.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
``setup.py install`` and ``easy_install`` commands are now officially deprecated. Use other standards-based installers (like pip) and builders (like build). Workloads reliant on this behavior should pin to this major version of Setuptools.
29 changes: 18 additions & 11 deletions pytest.ini
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,28 @@ doctest_optionflags=ALLOW_UNICODE ELLIPSIS
# workaround for warning pytest-dev/pytest#6178
junit_family=xunit2
filterwarnings=
# Fail on warnings
error
# Fail on warnings
error

## upstream
## upstream
# Suppress deprecation warning in flake8
ignore:SelectableGroups dict interface is deprecated::flake8
# Suppress deprecation warning in pypa/packaging#433
ignore:The distutils package is deprecated::packaging.tags
## end upstream

# https://github.com/pypa/setuptools/issues/1823
ignore:bdist_wininst command is deprecated
# Suppress this error; unimportant for CI tests
ignore:Extraction path is writable by group/others:UserWarning
# Suppress weird RuntimeWarning.
ignore:Parent module 'setuptools' not found while handling absolute import:RuntimeWarning
# Suppress use of bytes for filenames on Windows until fixed #2016
ignore:The Windows bytes API has been deprecated:DeprecationWarning
# https://github.com/pypa/setuptools/issues/1823
ignore:bdist_wininst command is deprecated
# Suppress this error; unimportant for CI tests
ignore:Extraction path is writable by group/others:UserWarning
# Suppress weird RuntimeWarning.
ignore:Parent module 'setuptools' not found while handling absolute import:RuntimeWarning
# Suppress use of bytes for filenames on Windows until fixed #2016
ignore:The Windows bytes API has been deprecated:DeprecationWarning

# https://github.com/pypa/setuptools/issues/2823
ignore:setup_requires is deprecated.

# https://github.com/pypa/setuptools/issues/917
ignore:setup.py install is deprecated.
ignore:easy_install command is deprecated.
6 changes: 6 additions & 0 deletions setuptools/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import functools
import os
import re
import warnings

import _distutils_hack.override # noqa: F401

Expand Down Expand Up @@ -144,6 +145,11 @@ def finalize_options(self):
# Honor setup.cfg's options.
dist.parse_config_files(ignore_option_errors=True)
if dist.setup_requires:
warnings.warn(
"setup_requires is deprecated. Supply build "
"dependencies using PEP 517 pyproject.toml build-requires.",
SetuptoolsDeprecationWarning,
)
dist.fetch_build_eggs(dist.setup_requires)


Expand Down
6 changes: 6 additions & 0 deletions setuptools/command/easy_install.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,12 @@ class easy_install(Command):
create_index = PackageIndex

def initialize_options(self):
warnings.warn(
"easy_install command is deprecated. "
"Use build and pip and other standards-based tools.",
EasyInstallDeprecationWarning,
)

# the --user option seems to be an opt-in one,
# so the default should be False.
self.user = 0
Expand Down
7 changes: 7 additions & 0 deletions setuptools/command/install.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,13 @@ class install(orig.install):
_nc = dict(new_commands)

def initialize_options(self):

warnings.warn(
"setup.py install is deprecated. "
"Use build and pip and other standards-based tools.",
setuptools.SetuptoolsDeprecationWarning,
)

orig.install.initialize_options(self)
self.old_and_unmanageable = None
self.single_version_externally_managed = None
Expand Down

0 comments on commit 391bb5d

Please sign in to comment.