[Python-checkins] cpython (3.5): Issue #21313: Tolerate truncated buildinfo in sys.version

martin.panter python-checkins at python.org
Wed Jun 8 05:50:56 EDT 2016


https://hg.python.org/cpython/rev/4deec876db0d
changeset: 101785:4deec876db0d
branch: 3.5
parent: 101780:11ebd14076b4
user: Martin Panter <vadmium+py at gmail.com>
date: Wed Jun 08 06:12:22 2016 +0000
summary:
 Issue #21313: Tolerate truncated buildinfo in sys.version
files:
 Lib/platform.py | 15 +++++++++++----
 Lib/test/test_platform.py | 16 ++++++++++++++++
 Misc/NEWS | 3 +++
 3 files changed, 30 insertions(+), 4 deletions(-)
diff --git a/Lib/platform.py b/Lib/platform.py
--- a/Lib/platform.py
+++ b/Lib/platform.py
@@ -1146,9 +1146,11 @@
 ### Various APIs for extracting information from sys.version
 
 _sys_version_parser = re.compile(
- r'([\w.+]+)\s*'
- '\(#?([^,]+),\s*([\w ]+),\s*([\w :]+)\)\s*'
- '\[([^\]]+)\]?', re.ASCII)
+ r'([\w.+]+)\s*' # "version<space>"
+ r'\(#?([^,]+)' # "(#buildno"
+ r'(?:,\s*([\w ]*)' # ", builddate"
+ r'(?:,\s*([\w :]*))?)?\)\s*' # ", buildtime)<space>"
+ r'\[([^\]]+)\]?', re.ASCII) # "[compiler]"
 
 _ironpython_sys_version_parser = re.compile(
 r'IronPython\s*'
@@ -1227,6 +1229,8 @@
 'failed to parse Jython sys.version: %s' %
 repr(sys_version))
 version, buildno, builddate, buildtime, _ = match.groups()
+ if builddate is None:
+ builddate = ''
 compiler = sys.platform
 
 elif "PyPy" in sys_version:
@@ -1249,7 +1253,10 @@
 version, buildno, builddate, buildtime, compiler = \
 match.groups()
 name = 'CPython'
- builddate = builddate + ' ' + buildtime
+ if builddate is None:
+ builddate = ''
+ elif buildtime:
+ builddate = builddate + ' ' + buildtime
 
 if hasattr(sys, '_mercurial'):
 _, branch, revision = sys._mercurial
diff --git a/Lib/test/test_platform.py b/Lib/test/test_platform.py
--- a/Lib/test/test_platform.py
+++ b/Lib/test/test_platform.py
@@ -76,6 +76,22 @@
 ('IronPython', '1.0.60816', '', '', '', '', '.NET 2.0.50727.42')),
 ('IronPython 1.0 (1.0.61005.1977) on .NET 2.0.50727.42',
 ('IronPython', '1.0.0', '', '', '', '', '.NET 2.0.50727.42')),
+ ('2.4.3 (truncation, date, t) \n[GCC]',
+ ('CPython', '2.4.3', '', '', 'truncation', 'date t', 'GCC')),
+ ('2.4.3 (truncation, date, ) \n[GCC]',
+ ('CPython', '2.4.3', '', '', 'truncation', 'date', 'GCC')),
+ ('2.4.3 (truncation, date,) \n[GCC]',
+ ('CPython', '2.4.3', '', '', 'truncation', 'date', 'GCC')),
+ ('2.4.3 (truncation, date) \n[GCC]',
+ ('CPython', '2.4.3', '', '', 'truncation', 'date', 'GCC')),
+ ('2.4.3 (truncation, d) \n[GCC]',
+ ('CPython', '2.4.3', '', '', 'truncation', 'd', 'GCC')),
+ ('2.4.3 (truncation, ) \n[GCC]',
+ ('CPython', '2.4.3', '', '', 'truncation', '', 'GCC')),
+ ('2.4.3 (truncation,) \n[GCC]',
+ ('CPython', '2.4.3', '', '', 'truncation', '', 'GCC')),
+ ('2.4.3 (truncation) \n[GCC]',
+ ('CPython', '2.4.3', '', '', 'truncation', '', 'GCC')),
 ):
 # branch and revision are not "parsed", but fetched
 # from sys._mercurial. Ignore them
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -131,6 +131,9 @@
 Library
 -------
 
+- Issue #21313: Fix the "platform" module to tolerate when sys.version
+ contains truncated build information.
+
 - Issue #26839: On Linux, :func:`os.urandom` now calls ``getrandom()`` with
 ``GRND_NONBLOCK`` to fall back on reading ``/dev/urandom`` if the urandom
 entropy pool is not initialized yet. Patch written by Colm Buckley.
-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /