[bumpversion]
-current_version = 58.2.0
+current_version = 58.3.0
commit = True
tag = True
comment: false
+coverage:
+ status:
+ project:
+ threshold: 0.5%
+v58.3.0
+-------
+
+
+Changes
+^^^^^^^
+* #917: ``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.
+* #1988: Deprecated the ``bdist_rpm`` command. Binary packages should be built as wheels instead.
+ -- by :user:`hugovk`
+* #2785: Replace confirparser's readfp with read_file, deprecated since Python 3.2.
+ -- by :user:`hugovk`
+* #2823: 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.
+
+Misc
+^^^^
+* #2762: Changed codecov.yml to configure the threshold to be lower
+ -- by :user:`tanvimoharir`
+
+
v58.2.0
-------
+++ /dev/null
-Deprecated the ``bdist_rpm`` command. Binary packages should be built as wheels instead.
--- by :user:`hugovk`
+++ /dev/null
-Replace confirparser's readfp with read_file, deprecated since Python 3.2.
--- by :user:`hugovk`
Key Type Minimum Version Notes
======================= =================================== =============== =========
zip_safe bool
-setup_requires list-semi
+setup_requires list-semi 36.7.0
install_requires list-semi
extras_require section [#opt-2]_
-python_requires str
+python_requires str 34.4.0
entry_points file:, section 51.0.0
scripts list-comma
eager_resources list-comma
package_data section [#opt-1]_
exclude_package_data section
namespace_packages list-comma
-py_modules list-comma
+py_modules list-comma 34.4.0
data_files dict 40.6.0
======================= =================================== =============== =========
to generate a daily build or snapshot for. See the section below on the
:ref:`egg_info <egg_info>` command for more details.
-(Also, before you release your project, be sure to see the section above on
+(Also, before you release your project, be sure to see the section on
:ref:`Specifying Your Project's Version` for more information about how pre- and
post-release tags affect how version numbers are interpreted. This is
important in order to make sure that dependency processing tools will know
# 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.
[metadata]
name = setuptools
-version = 58.2.0
+version = 58.3.0
author = Python Packaging Authority
author_email = distutils-sig@python.org
description = Easily download, build, install, upgrade, and uninstall Python packages
import functools
import os
import re
+import warnings
import _distutils_hack.override # noqa: F401
# 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)
elif v == 'GNULD':
return 'yes'
sysconfig.get_config_var = gcv
- self.assertEqual(self.cc.rpath_foo(), '-R/foo')
+ self.assertEqual(self.cc.rpath_foo(), '-Wl,--enable-new-dtags,-R/foo')
# non-GCC non-GNULD
sys.platform = 'bar'
elif v == 'GNULD':
return 'no'
sysconfig.get_config_var = gcv
- self.assertEqual(self.cc.rpath_foo(), '-R/foo')
+ self.assertEqual(self.cc.rpath_foo(), '-Wl,-R/foo')
@unittest.skipIf(sys.platform == 'win32', "can't test on Windows")
def test_cc_overrides_ldshared(self):
if self._is_gcc(compiler):
return ["-Wl,+s", "-L" + dir]
return ["+s", "-L" + dir]
+
+ # For all compilers, `-Wl` is the presumed way to
+ # pass a compiler option to the linker and `-R` is
+ # the way to pass an RPATH.
+ if sysconfig.get_config_var("GNULD") == "yes":
+ # GNU ld needs an extra option to get a RUNPATH
+ # instead of just an RPATH.
+ return "-Wl,--enable-new-dtags,-R" + dir
else:
- if self._is_gcc(compiler):
- # gcc on non-GNU systems does not need -Wl, but can
- # use it anyway. Since distutils has always passed in
- # -Wl whenever gcc was used in the past it is probably
- # safest to keep doing so.
- if sysconfig.get_config_var("GNULD") == "yes":
- # GNU ld needs an extra option to get a RUNPATH
- # instead of just an RPATH.
- return "-Wl,--enable-new-dtags,-R" + dir
- else:
- return "-Wl,-R" + dir
- else:
- # No idea how --enable-new-dtags would be passed on to
- # ld if this system was using GNU ld. Don't know if a
- # system like this even exists.
- return "-R" + dir
+ return "-Wl,-R" + dir
def library_option(self, lib):
return "-l" + lib
"""Return the version of macOS for which we are building.
The target version defaults to the version in sysconfig latched at time
- the Python interpreter was built, unless overriden by an environment
+ the Python interpreter was built, unless overridden by an environment
variable. If neither source has a value, then None is returned"""
syscfg_ver = get_macosx_target_ver_from_syscfg()
env_ver = os.environ.get(MACOSX_VERSION_VAR)
if env_ver:
- # Validate overriden version against sysconfig version, if have both.
+ # Validate overridden version against sysconfig version, if have both.
# Ensure that the deployment target of the build process is not less
# than 10.3 if the interpreter was built for 10.3 or later. This
# ensures extension modules are built with correct compatibility
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
_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
"""
Check setuptools can be installed in a clean environment.
"""
- bare_virtualenv.run(['python', 'setup.py', 'install'], cd=tmp_src)
+ cmd = [bare_virtualenv.python, 'setup.py', 'install']
+ bare_virtualenv.run(cmd, cd=tmp_src)
def _get_pip_versions():
Quick and dirty test to ensure all external dependencies are vendored.
"""
for command in ('upload',): # sorted(distutils.command.__all__):
- cmd = ['python', 'setup.py', command, '-h']
+ cmd = [bare_virtualenv.python, 'setup.py', command, '-h']
bare_virtualenv.run(cmd, cd=request.config.rootdir)