diff --git a/Lib/platform.py b/Lib/platform.py index cbbe6d8b3c8..c3c4b328e11 100755 --- a/Lib/platform.py +++ b/Lib/platform.py @@ -1183,6 +1183,14 @@ _ironpython_sys_version_parser = re.compile( '(?: \(([\d\.]+)\))?' ' on (.NET [\d\.]+)', re.ASCII) +# IronPython covering 2.6 and 2.7 +_ironpython26_sys_version_parser = re.compile( + r'([\d.]+)\s*' + '\(IronPython\s*' + '[\d.]+\s*' + '\(([\d.]+)\) on ([\w.]+ [\d.]+(?: \(\d+-bit\))?)\)' +) + _pypy_sys_version_parser = re.compile( r'([\w.+]+)\s*' '\(#?([^,]+),\s*([\w ]+),\s*([\w :]+)\)\s*' @@ -1220,19 +1228,24 @@ def _sys_version(sys_version=None): return result # Parse it - if sys_version[:10] == 'IronPython': + if 'IronPython' in sys_version: # IronPython name = 'IronPython' - match = _ironpython_sys_version_parser.match(sys_version) + if sys_version.startswith('IronPython'): + match = _ironpython_sys_version_parser.match(sys_version) + else: + match = _ironpython26_sys_version_parser.match(sys_version) + if match is None: raise ValueError( 'failed to parse IronPython sys.version: %s' % repr(sys_version)) + version, alt_version, compiler = match.groups() buildno = '' builddate = '' - elif sys.platform[:4] == 'java': + elif sys.platform.startswith('java'): # Jython name = 'Jython' match = _sys_version_parser.match(sys_version) diff --git a/Lib/test/test_platform.py b/Lib/test/test_platform.py index 6abf44342aa..0dcfe0504a5 100644 --- a/Lib/test/test_platform.py +++ b/Lib/test/test_platform.py @@ -91,15 +91,28 @@ class PlatformTest(unittest.TestCase): ("CPython", "2.6.1", "tags/r261", "67515", ('r261:67515', 'Dec 6 2008 15:26:00'), 'GCC 4.0.1 (Apple Computer, Inc. build 5370)'), + ("IronPython 2.0 (2.0.0.0) on .NET 2.0.50727.3053", None, "cli") : ("IronPython", "2.0.0", "", "", ("", ""), ".NET 2.0.50727.3053"), + + ("2.6.1 (IronPython 2.6.1 (2.6.10920.0) on .NET 2.0.50727.1433)", None, "cli") + : + ("IronPython", "2.6.1", "", "", ("", ""), + ".NET 2.0.50727.1433"), + + ("2.7.4 (IronPython 2.7.4 (2.7.0.40) on Mono 4.0.30319.1 (32-bit))", None, "cli") + : + ("IronPython", "2.7.4", "", "", ("", ""), + "Mono 4.0.30319.1 (32-bit)"), + ("2.5 (trunk:6107, Mar 26 2009, 13:02:18) \n[Java HotSpot(TM) Client VM (\"Apple Computer, Inc.\")]", ('Jython', 'trunk', '6107'), "java1.5.0_16") : ("Jython", "2.5.0", "trunk", "6107", ('trunk:6107', 'Mar 26 2009'), "java1.5.0_16"), + ("2.5.2 (63378, Mar 26 2009, 18:03:29)\n[PyPy 1.0.0]", ('PyPy', 'trunk', '63378'), self.save_platform) : diff --git a/Misc/ACKS b/Misc/ACKS index 880e4f0baa2..849fe99c3e8 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -818,6 +818,7 @@ Nick Mathewson Simon Mathieu Laura Matson Graham Matthews +Martin Matusiak Dieter Maurer Daniel May Madison May diff --git a/Misc/NEWS b/Misc/NEWS index af66063d69d..8a31887d7f6 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -62,6 +62,9 @@ Core and Builtins Library ------- +- Issue #8964: fix platform._sys_version to handle IronPython 2.6+. + Patch by Martin Matusiak. + - Issue #18958: Improve error message for json.load(s) while passing a string that starts with a UTF-8 BOM.