From 18b997db3e74d179af12175bff3d1a37006017fc Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Fri, 22 Oct 2021 13:16:50 -0400 Subject: Emit a SetuptoolsDeprecationWarning when setup_requires is used. Ref #2823. --- changelog.d/2823.change.rst | 1 + pytest.ini | 25 ++++++++++++++----------- setuptools/__init__.py | 6 ++++++ 3 files changed, 21 insertions(+), 11 deletions(-) create mode 100644 changelog.d/2823.change.rst diff --git a/changelog.d/2823.change.rst b/changelog.d/2823.change.rst new file mode 100644 index 00000000..69db4c0d --- /dev/null +++ b/changelog.d/2823.change.rst @@ -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. diff --git a/pytest.ini b/pytest.ini index eebb212f..f81b6cfb 100644 --- a/pytest.ini +++ b/pytest.ini @@ -8,21 +8,24 @@ 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. diff --git a/setuptools/__init__.py b/setuptools/__init__.py index 9d6f0bc0..a623262e 100644 --- a/setuptools/__init__.py +++ b/setuptools/__init__.py @@ -4,6 +4,7 @@ from fnmatch import fnmatchcase import functools import os import re +import warnings import _distutils_hack.override # noqa: F401 @@ -144,6 +145,11 @@ def _install_setup_requires(attrs): # 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) -- cgit v1.2.1 From fc5c3083908170e1cbfd1dec91f87a3e2707e3fa Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Fri, 22 Oct 2021 15:27:51 -0400 Subject: Deprecate setup.py install and easy_install. Ref #917. --- changelog.d/917.change.rst | 1 + pytest.ini | 4 ++++ setuptools/command/easy_install.py | 6 ++++++ setuptools/command/install.py | 7 +++++++ 4 files changed, 18 insertions(+) create mode 100644 changelog.d/917.change.rst diff --git a/changelog.d/917.change.rst b/changelog.d/917.change.rst new file mode 100644 index 00000000..a2d3f7b8 --- /dev/null +++ b/changelog.d/917.change.rst @@ -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. diff --git a/pytest.ini b/pytest.ini index f81b6cfb..c7b62cc6 100644 --- a/pytest.ini +++ b/pytest.ini @@ -29,3 +29,7 @@ filterwarnings= # 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. diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py index b88c3e9a..1aed0e87 100644 --- a/setuptools/command/easy_install.py +++ b/setuptools/command/easy_install.py @@ -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 diff --git a/setuptools/command/install.py b/setuptools/command/install.py index 72b9a3e4..35e54d20 100644 --- a/setuptools/command/install.py +++ b/setuptools/command/install.py @@ -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 -- cgit v1.2.1