summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xLib/platform.py37
1 files changed, 25 insertions, 12 deletions
diff --git a/Lib/platform.py b/Lib/platform.py
index 7015044..3dc9106 100755
--- a/Lib/platform.py
+++ b/Lib/platform.py
@@ -31,6 +31,7 @@
# Colin Kong, Trent Mick
#
# History:
+# 1.0.2 - fix a bug with caching of value for platform()
# 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
@@ -102,7 +103,7 @@ __copyright__ = """
"""
-__version__ = '1.0.1'
+__version__ = '1.0.2'
import sys,string,os,re
@@ -1135,8 +1136,10 @@ def python_compiler():
### The Opus Magnum of platform strings :-)
-_platform_cache = {True:None, False:None}
-_platform_aliased_cache = {True:None, False:None}
+_platform_cache_terse = None
+_platform_cache_not_terse = None
+_platform_aliased_cache_terse = None
+_platform_aliased_cache_not_terse = None
def platform(aliased=0, terse=0):
@@ -1157,12 +1160,17 @@ def platform(aliased=0, terse=0):
absolute minimum information needed to identify the platform.
"""
- global _platform_cache,_platform_aliased_cache
-
- if not aliased and (_platform_cache[bool(terse)] is not None):
- return _platform_cache[bool(terse)]
- elif _platform_aliased_cache[bool(terse)] is not None:
- return _platform_aliased_cache[bool(terse)]
+ 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
# Get uname information and then apply platform specific cosmetics
# to it...
@@ -1218,12 +1226,17 @@ def platform(aliased=0, terse=0):
bits,linkage = architecture(sys.executable)
platform = _platform(system,release,machine,processor,bits,linkage)
- if aliased:
- _platform_aliased_cache[bool(terse)] = platform
+ if aliased and terse:
+ _platform_aliased_cache_terse = platform
+ elif aliased and not terse:
+ _platform_aliased_cache_not_terse = platform
elif terse:
pass
else:
- _platform_cache[bool(terse)] = platform
+ if terse:
+ _platform_cache_terse = platform
+ else:
+ _platform_cache_not_terse = platform
return platform
### Command line interface