summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorMarc-André Lemburg <mal@egenix.com>2004-03-25 18:35:12 (GMT)
committerMarc-André Lemburg <mal@egenix.com>2004-03-25 18:35:12 (GMT)
commit91e83e209d66d4b7a892c9360f9e524d6e282191 (patch)
tree52bb581179579e8eb1297c13932c17307cd77768 /Lib
parent9001cde559ef1b4f6b700c76bc2c86aef14b4e9d (diff)
downloadcpython-91e83e209d66d4b7a892c9360f9e524d6e282191.zip
cpython-91e83e209d66d4b7a892c9360f9e524d6e282191.tar.gz
cpython-91e83e209d66d4b7a892c9360f9e524d6e282191.tar.bz2
Added more Windows version names (thanks to Thomas Heller).
Fixed bug in platform() cache (thanks to Brett Cannon). (Restored Python 1.5.2 compatibility.)
Diffstat (limited to 'Lib')
-rwxr-xr-xLib/platform.py52
1 files changed, 23 insertions, 29 deletions
diff --git a/Lib/platform.py b/Lib/platform.py
index 3dc9106..573debe 100755
--- a/Lib/platform.py
+++ b/Lib/platform.py
@@ -31,7 +31,7 @@
# Colin Kong, Trent Mick
#
# History:
-# 1.0.2 - fix a bug with caching of value for platform()
+# 1.0.2 - added more Windows support
# 1.0.1 - reformatted to make doc.py happy
# 1.0.0 - reformatted a bit and checked into Python CVS
# 0.8.0 - added sys.version parser and various new access
@@ -457,7 +457,11 @@ def win32_ver(release='',version='',csd='',ptype=''):
"""
# XXX Is there any way to find out the processor type on WinXX ?
# XXX Is win32 available on Windows CE ?
+ #
# Adapted from code posted by Karl Putland to comp.lang.python.
+ #
+ # The mappings between reg. values and release names can be found
+ # here: http://msdn.microsoft.com/library/en-us/sysinfo/base/osversioninfo_str.asp
# Import the needed APIs
try:
@@ -479,8 +483,12 @@ def win32_ver(release='',version='',csd='',ptype=''):
if maj == 4:
if min == 0:
release = '95'
- else:
+ elif min == 10:
release = '98'
+ elif min == 90:
+ release = 'Me'
+ else:
+ release = 'postMe'
elif maj == 5:
release = '2000'
elif plat == VER_PLATFORM_WIN32_NT:
@@ -488,7 +496,14 @@ def win32_ver(release='',version='',csd='',ptype=''):
if maj <= 4:
release = 'NT'
elif maj == 5:
- release = '2000'
+ if min == 0:
+ release = '2000'
+ elif min == 1:
+ release = 'XP'
+ elif min == 2:
+ release = '2003Server'
+ else:
+ release = 'post2003'
else:
if not release:
# E.g. Win3.1 with win32s
@@ -1136,10 +1151,7 @@ def python_compiler():
### The Opus Magnum of platform strings :-)
-_platform_cache_terse = None
-_platform_cache_not_terse = None
-_platform_aliased_cache_terse = None
-_platform_aliased_cache_not_terse = None
+_platform_cache = {}
def platform(aliased=0, terse=0):
@@ -1160,17 +1172,9 @@ def platform(aliased=0, terse=0):
absolute minimum information needed to identify the platform.
"""
- global _platform_cache_terse, _platform_cache_not_terse
- global _platform_aliased_cache_terse, _platform_aliased_cache_not_terse
-
- if not aliased and terse and (_platform_cache_terse is not None):
- return _platform_cache_terse
- elif not aliased and not terse and (_platform_cache_not_terse is not None):
- return _platform_cache_not_terse
- elif terse and _platform_aliased_cache_terse is not None:
- return _platform_aliased_cache_terse
- elif not terse and _platform_aliased_cache_not_terse is not None:
- return _platform_aliased_cache_not_terse
+ result = _platform_cache.get((aliased, terse), None)
+ if result is not None:
+ return result
# Get uname information and then apply platform specific cosmetics
# to it...
@@ -1226,17 +1230,7 @@ def platform(aliased=0, terse=0):
bits,linkage = architecture(sys.executable)
platform = _platform(system,release,machine,processor,bits,linkage)
- if aliased and terse:
- _platform_aliased_cache_terse = platform
- elif aliased and not terse:
- _platform_aliased_cache_not_terse = platform
- elif terse:
- pass
- else:
- if terse:
- _platform_cache_terse = platform
- else:
- _platform_cache_not_terse = platform
+ _platform_cache[(aliased, terse)] = platform
return platform
### Command line interface