From 1d9e67aa6e93b809dec7fac01d4350f14a394ee2 Mon Sep 17 00:00:00 2001 From: JinWang An Date: Mon, 27 Mar 2023 17:02:30 +0900 Subject: [PATCH] Imported Upstream version 51.3.1 --- .bumpversion.cfg | 2 +- CHANGES.rst | 9 ++++ setup.cfg | 2 +- setuptools/command/egg_info.py | 10 ++-- setuptools/tests/test_egg_info.py | 84 +++++++++++++------------------ 5 files changed, 49 insertions(+), 58 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 0789cb9..2cb5029 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 51.3.0 +current_version = 51.3.1 commit = True tag = True diff --git a/CHANGES.rst b/CHANGES.rst index 48669d9..2be5fa2 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,12 @@ +v51.3.1 +------- + + +Misc +^^^^ +* #2536: Reverted tag deduplication handling. + + v51.3.0 ------- diff --git a/setup.cfg b/setup.cfg index 43c4f23..aead434 100644 --- a/setup.cfg +++ b/setup.cfg @@ -2,7 +2,7 @@ license_files = LICENSE name = setuptools -version = 51.3.0 +version = 51.3.1 author = Python Packaging Authority author_email = distutils-sig@python.org description = Easily download, build, install, upgrade, and uninstall Python packages diff --git a/setuptools/command/egg_info.py b/setuptools/command/egg_info.py index bb47203..1f120b6 100644 --- a/setuptools/command/egg_info.py +++ b/setuptools/command/egg_info.py @@ -131,12 +131,10 @@ class InfoCommon: egg_info may be called more than once for a distribution, in which case the version string already contains all tags. """ - # Remove the tags if they exist. The tags maybe have been normalized - # (e.g. turning .dev into .dev0) so we can't just compare strings - base_version = parse_version(version).base_version - - # Add the tags - return base_version + self.vtags + return ( + version if self.vtags and version.endswith(self.vtags) + else version + self.vtags + ) def tags(self): version = '' diff --git a/setuptools/tests/test_egg_info.py b/setuptools/tests/test_egg_info.py index 1d0f07e..1047468 100644 --- a/setuptools/tests/test_egg_info.py +++ b/setuptools/tests/test_egg_info.py @@ -6,7 +6,6 @@ import re import stat import time -from setuptools.build_meta import prepare_metadata_for_build_wheel from setuptools.command.egg_info import ( egg_info, manifest_maker, EggInfoDeprecationWarning, get_pkg_info_revision, ) @@ -20,26 +19,6 @@ from .textwrap import DALS from . import contexts -def _run_egg_info_command(tmpdir_cwd, env, cmd=None, output=None): - environ = os.environ.copy().update( - HOME=env.paths['home'], - ) - if cmd is None: - cmd = [ - 'egg_info', - ] - code, data = environment.run_setup_py( - cmd=cmd, - pypath=os.pathsep.join([env.paths['lib'], str(tmpdir_cwd)]), - data_stream=1, - env=environ, - ) - assert not code, data - - if output: - assert output in data - - class Environment(str): pass @@ -153,7 +132,7 @@ class TestEggInfo: def test_expected_files_produced(self, tmpdir_cwd, env): self._create_project() - _run_egg_info_command(tmpdir_cwd, env) + self._run_egg_info_command(tmpdir_cwd, env) actual = os.listdir('foo.egg-info') expected = [ @@ -187,7 +166,7 @@ class TestEggInfo: # currently configured to use a subprocess, the actual traceback # object is lost and we need to parse it from stderr with pytest.raises(AssertionError) as exc: - _run_egg_info_command(tmpdir_cwd, env) + self._run_egg_info_command(tmpdir_cwd, env) # Hopefully this is not too fragile: the only argument to the # assertion error should be a traceback, ending with: @@ -201,13 +180,13 @@ class TestEggInfo: """Ensure timestamps are updated when the command is re-run.""" self._create_project() - _run_egg_info_command(tmpdir_cwd, env) + self._run_egg_info_command(tmpdir_cwd, env) timestamp_a = os.path.getmtime('foo.egg-info') # arbitrary sleep just to handle *really* fast systems time.sleep(.001) - _run_egg_info_command(tmpdir_cwd, env) + self._run_egg_info_command(tmpdir_cwd, env) timestamp_b = os.path.getmtime('foo.egg-info') assert timestamp_a != timestamp_b @@ -222,7 +201,7 @@ class TestEggInfo: 'usage.rst': "Run 'hi'", } }) - _run_egg_info_command(tmpdir_cwd, env) + self._run_egg_info_command(tmpdir_cwd, env) egg_info_dir = os.path.join('.', 'foo.egg-info') sources_txt = os.path.join(egg_info_dir, 'SOURCES.txt') with open(sources_txt) as f: @@ -462,7 +441,7 @@ class TestEggInfo: self, tmpdir_cwd, env, requires, use_setup_cfg, expected_requires, install_cmd_kwargs): self._setup_script_with_requires(requires, use_setup_cfg) - _run_egg_info_command(tmpdir_cwd, env, **install_cmd_kwargs) + self._run_egg_info_command(tmpdir_cwd, env, **install_cmd_kwargs) egg_info_dir = os.path.join('.', 'foo.egg-info') requires_txt = os.path.join(egg_info_dir, 'requires.txt') if os.path.exists(requires_txt): @@ -482,14 +461,14 @@ class TestEggInfo: req = 'install_requires={"fake-factory==0.5.2", "pytz"}' self._setup_script_with_requires(req) with pytest.raises(AssertionError): - _run_egg_info_command(tmpdir_cwd, env) + self._run_egg_info_command(tmpdir_cwd, env) def test_extras_require_with_invalid_marker(self, tmpdir_cwd, env): tmpl = 'extras_require={{":{marker}": ["barbazquux"]}},' req = tmpl.format(marker=self.invalid_marker) self._setup_script_with_requires(req) with pytest.raises(AssertionError): - _run_egg_info_command(tmpdir_cwd, env) + self._run_egg_info_command(tmpdir_cwd, env) assert glob.glob(os.path.join(env.paths['lib'], 'barbazquux*')) == [] def test_extras_require_with_invalid_marker_in_req(self, tmpdir_cwd, env): @@ -497,7 +476,7 @@ class TestEggInfo: req = tmpl.format(marker=self.invalid_marker) self._setup_script_with_requires(req) with pytest.raises(AssertionError): - _run_egg_info_command(tmpdir_cwd, env) + self._run_egg_info_command(tmpdir_cwd, env) assert glob.glob(os.path.join(env.paths['lib'], 'barbazquux*')) == [] def test_provides_extra(self, tmpdir_cwd, env): @@ -886,22 +865,26 @@ class TestEggInfo: sources = f.read().split('\n') assert 'setup.py' in sources - @pytest.mark.parametrize( - ('make_metadata_path', 'run_command'), - [ - ( - lambda env: os.path.join('.', 'foo.egg-info', 'PKG-INFO'), - lambda tmpdir_cwd, env: _run_egg_info_command(tmpdir_cwd, env) - ), - ( - lambda env: os.path.join(env, 'foo.dist-info', 'METADATA'), - lambda tmpdir_cwd, env: prepare_metadata_for_build_wheel(env) - ) - ] - ) - def test_egg_info_tag_only_once( - self, tmpdir_cwd, env, make_metadata_path, run_command - ): + def _run_egg_info_command(self, tmpdir_cwd, env, cmd=None, output=None): + environ = os.environ.copy().update( + HOME=env.paths['home'], + ) + if cmd is None: + cmd = [ + 'egg_info', + ] + code, data = environment.run_setup_py( + cmd=cmd, + pypath=os.pathsep.join([env.paths['lib'], str(tmpdir_cwd)]), + data_stream=1, + env=environ, + ) + assert not code, data + + if output: + assert output in data + + def test_egg_info_tag_only_once(self, tmpdir_cwd, env): self._create_project() build_files({ 'setup.cfg': DALS(""" @@ -911,10 +894,11 @@ class TestEggInfo: tag_svn_revision = 0 """), }) - run_command(tmpdir_cwd, env) - with open(make_metadata_path(env)) as metadata_file: - metadata_lines = metadata_file.read().split('\n') - assert 'Version: 0.0.0.dev0' in metadata_lines + self._run_egg_info_command(tmpdir_cwd, env) + egg_info_dir = os.path.join('.', 'foo.egg-info') + with open(os.path.join(egg_info_dir, 'PKG-INFO')) as pkginfo_file: + pkg_info_lines = pkginfo_file.read().split('\n') + assert 'Version: 0.0.0.dev0' in pkg_info_lines def test_get_pkg_info_revision_deprecated(self): pytest.warns(EggInfoDeprecationWarning, get_pkg_info_revision) -- 2.34.1