bpo-27593: Get SCM build info from git instead of hg. (#446)

sys.version and the platform module python_build(),
python_branch(), and python_revision() functions now use
git information rather than hg when building from a repo.

Based on original patches by Brett Cannon and Steve Dower.
This commit is contained in:
Ned Deily 2017-03-04 00:19:55 -05:00 committed by GitHub
parent fc64c351c7
commit 5c4b0d063a
9 changed files with 84 additions and 78 deletions

View file

@ -1198,7 +1198,9 @@ def _sys_version(sys_version=None):
elif buildtime:
builddate = builddate + ' ' + buildtime
if hasattr(sys, '_mercurial'):
if hasattr(sys, '_git'):
_, branch, revision = sys._git
elif hasattr(sys, '_mercurial'):
_, branch, revision = sys._mercurial
elif hasattr(sys, 'subversion'):
# sys.subversion was added in Python 2.5

View file

@ -67,12 +67,12 @@ class PlatformTest(unittest.TestCase):
def setUp(self):
self.save_version = sys.version
self.save_mercurial = sys._mercurial
self.save_git = sys._git
self.save_platform = sys.platform
def tearDown(self):
sys.version = self.save_version
sys._mercurial = self.save_mercurial
sys._git = self.save_git
sys.platform = self.save_platform
def test_sys_version(self):
@ -102,7 +102,7 @@ class PlatformTest(unittest.TestCase):
('CPython', '2.4.3', '', '', 'truncation', '', 'GCC')),
):
# branch and revision are not "parsed", but fetched
# from sys._mercurial. Ignore them
# from sys._git. Ignore them
(name, version, branch, revision, buildno, builddate, compiler) \
= platform._sys_version(input)
self.assertEqual(
@ -149,10 +149,10 @@ class PlatformTest(unittest.TestCase):
sys_versions.items():
sys.version = version_tag
if subversion is None:
if hasattr(sys, "_mercurial"):
del sys._mercurial
if hasattr(sys, "_git"):
del sys._git
else:
sys._mercurial = subversion
sys._git = subversion
if sys_platform is not None:
sys.platform = sys_platform
self.assertEqual(platform.python_implementation(), info[0])