Imported Upstream version 51.3.1 upstream/51.3.1
authorJinWang An <jinwang.an@samsung.com>
Mon, 27 Mar 2023 08:02:30 +0000 (17:02 +0900)
committerJinWang An <jinwang.an@samsung.com>
Mon, 27 Mar 2023 08:02:30 +0000 (17:02 +0900)
.bumpversion.cfg
CHANGES.rst
setup.cfg
setuptools/command/egg_info.py
setuptools/tests/test_egg_info.py

index 0789cb984702351bf1db72ee3d516424ff965d5b..2cb50290ea00964daa84b4d424b1ff5eba4dc92c 100644 (file)
@@ -1,5 +1,5 @@
 [bumpversion]
-current_version = 51.3.0
+current_version = 51.3.1
 commit = True
 tag = True
 
index 48669d992cad2aea0bfbdb82cd5388b9f63a780d..2be5fa2fac91bfc9e2ec5485619160ad1852c070 100644 (file)
@@ -1,3 +1,12 @@
+v51.3.1
+-------
+
+
+Misc
+^^^^
+* #2536: Reverted tag deduplication handling.
+
+
 v51.3.0
 -------
 
index 43c4f23b6f5408ffbdb1c57335fff741c8884171..aead43461bfbb5c1892f382cd335dd7548268a9c 100644 (file)
--- 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
index bb472036022d8e7feaf6d2f87940e7d3e7c7697f..1f120b67d1893ebb543941377dae445d8b26ac4d 100644 (file)
@@ -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 = ''
index 1d0f07e30671ffa555ba19d06d98bc60afd54da8..1047468b185a13ad3ad3c9570c6ec783fcd6f293 100644 (file)
@@ -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)