From a1a8fe204dd1a11371e6e03a357af464a5cb44a2 Mon Sep 17 00:00:00 2001 From: DongHun Kwak Date: Mon, 18 Jul 2022 15:39:03 +0900 Subject: [PATCH] Imported Upstream version 58.5.3 --- CHANGES.rst | 13 +++++++- PKG-INFO | 2 +- setup.cfg | 2 +- setuptools.egg-info/PKG-INFO | 2 +- setuptools/command/egg_info.py | 10 +++++- setuptools/tests/test_sdist.py | 71 ++++++++++++++++++++++++++++++++++++------ 6 files changed, 85 insertions(+), 15 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 67d62cc..7285616 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,14 @@ +v58.5.3 +------- + + +Misc +^^^^ +* #2849: Add fallback for custom ``build_py`` commands inheriting directly from + :mod:`distutils`, while still handling ``include_package_data=True`` for + ``sdist``. + + v58.5.2 ------- @@ -13,7 +24,7 @@ v58.5.1 Misc ^^^^ -* #2486: Move PkgResourcesDeprecationWarning above implicitly-called function so that it's in the namespace when version warnings are generated in an environment that contains them. +* #2846: Move PkgResourcesDeprecationWarning above implicitly-called function so that it's in the namespace when version warnings are generated in an environment that contains them. v58.5.0 diff --git a/PKG-INFO b/PKG-INFO index fdd158f..7b7d52e 100644 --- a/PKG-INFO +++ b/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: setuptools -Version: 58.5.2 +Version: 58.5.3 Summary: Easily download, build, install, upgrade, and uninstall Python packages Home-page: https://github.com/pypa/setuptools Author: Python Packaging Authority diff --git a/setup.cfg b/setup.cfg index c2426ab..04d8ae6 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = setuptools -version = 58.5.2 +version = 58.5.3 author = Python Packaging Authority author_email = distutils-sig@python.org description = Easily download, build, install, upgrade, and uninstall Python packages diff --git a/setuptools.egg-info/PKG-INFO b/setuptools.egg-info/PKG-INFO index fdd158f..7b7d52e 100644 --- a/setuptools.egg-info/PKG-INFO +++ b/setuptools.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: setuptools -Version: 58.5.2 +Version: 58.5.3 Summary: Easily download, build, install, upgrade, and uninstall Python packages Home-page: https://github.com/pypa/setuptools Author: Python Packaging Authority diff --git a/setuptools/command/egg_info.py b/setuptools/command/egg_info.py index 4165c35..8ae27d8 100644 --- a/setuptools/command/egg_info.py +++ b/setuptools/command/egg_info.py @@ -618,7 +618,15 @@ class manifest_maker(sdist): Therefore, avoid triggering any attempt of analyzing/building the manifest again. """ - return build_py.get_data_files_without_manifest() + if hasattr(build_py, 'get_data_files_without_manifest'): + return build_py.get_data_files_without_manifest() + + log.warn( + "Custom 'build_py' does not implement " + "'get_data_files_without_manifest'.\nPlease extend command classes" + " from setuptools instead of distutils." + ) + return build_py.get_data_files() def write_file(filename, contents): diff --git a/setuptools/tests/test_sdist.py b/setuptools/tests/test_sdist.py index 34c32bb..e6d8e90 100644 --- a/setuptools/tests/test_sdist.py +++ b/setuptools/tests/test_sdist.py @@ -6,6 +6,7 @@ import tempfile import unicodedata import contextlib import io +from unittest import mock import pytest @@ -106,6 +107,13 @@ class TestSdistTest: with tmpdir.as_cwd(): yield + def assert_package_data_in_manifest(self, cmd): + manifest = cmd.filelist.files + assert os.path.join('sdist_test', 'a.txt') in manifest + assert os.path.join('sdist_test', 'b.txt') in manifest + assert os.path.join('sdist_test', 'c.rst') not in manifest + assert os.path.join('d', 'e.dat') in manifest + def test_package_data_in_sdist(self): """Regression test for pull request #4: ensures that files listed in package_data are included in the manifest even if they're not added to @@ -120,11 +128,7 @@ class TestSdistTest: with quiet(): cmd.run() - manifest = cmd.filelist.files - assert os.path.join('sdist_test', 'a.txt') in manifest - assert os.path.join('sdist_test', 'b.txt') in manifest - assert os.path.join('sdist_test', 'c.rst') not in manifest - assert os.path.join('d', 'e.dat') in manifest + self.assert_package_data_in_manifest(cmd) def test_package_data_and_include_package_data_in_sdist(self): """ @@ -142,11 +146,58 @@ class TestSdistTest: with quiet(): cmd.run() - manifest = cmd.filelist.files - assert os.path.join('sdist_test', 'a.txt') in manifest - assert os.path.join('sdist_test', 'b.txt') in manifest - assert os.path.join('sdist_test', 'c.rst') not in manifest - assert os.path.join('d', 'e.dat') in manifest + self.assert_package_data_in_manifest(cmd) + + @mock.patch('setuptools.command.egg_info.log') + def test_custom_build_py(self, log_stub): + """ + Ensure projects defining custom build_py don't break + when creating sdists (issue #2849) + """ + from distutils.command.build_py import build_py as OrigBuildPy + + using_custom_command_guard = mock.Mock() + + class CustomBuildPy(OrigBuildPy): + """ + Some projects have custom commands inheriting from `distutils` + """ + + def get_data_files(self): + using_custom_command_guard() + return super().get_data_files() + + setup_attrs = {**SETUP_ATTRS, 'include_package_data': True} + assert setup_attrs['package_data'] + + dist = Distribution(setup_attrs) + dist.script_name = 'setup.py' + cmd = sdist(dist) + cmd.ensure_finalized() + + # Make sure we use the custom command + cmd.cmdclass = {'build_py': CustomBuildPy} + cmd.distribution.cmdclass = {'build_py': CustomBuildPy} + assert cmd.distribution.get_command_class('build_py') == CustomBuildPy + + with quiet(): + cmd.run() + + using_custom_command_guard.assert_called() + self.assert_package_data_in_manifest(cmd) + + warn_stub = log_stub.warn + warn_stub.assert_called() + for call in warn_stub.call_args_list: + args, _kw = call + if "setuptools instead of distutils" in args[0]: + return + else: + raise AssertionError( + "The user should have been warned to extend setuptools command" + " classes instead of distutils", + warn_stub.call_args_list + ) def test_setup_py_exists(self): dist = Distribution(SETUP_ATTRS) -- 2.7.4