Issue #15164: Change return value of platform.uname() from a
plain tuple to a collections.namedtuple.
diff --git a/Lib/platform.py b/Lib/platform.py
index 3cb7c3e..b653822 100755
--- a/Lib/platform.py
+++ b/Lib/platform.py
@@ -111,6 +111,7 @@
 
 __version__ = '1.0.7'
 
+import collections
 import sys, os, re
 
 ### Globals & Constants
@@ -1027,6 +1028,9 @@
 
 ### Portable uname() interface
 
+uname_result = collections.namedtuple("uname_result",
+                    "system node release version machine processor")
+
 _uname_cache = None
 
 def uname():
@@ -1161,7 +1165,7 @@
         system = 'Windows'
         release = 'Vista'
 
-    _uname_cache = system,node,release,version,machine,processor
+    _uname_cache = uname_result(system,node,release,version,machine,processor)
     return _uname_cache
 
 ### Direct interfaces to some of the uname() return values
@@ -1173,7 +1177,7 @@
         An empty string is returned if the value cannot be determined.
 
     """
-    return uname()[0]
+    return uname().system
 
 def node():
 
@@ -1183,7 +1187,7 @@
         An empty string is returned if the value cannot be determined.
 
     """
-    return uname()[1]
+    return uname().node
 
 def release():
 
@@ -1192,7 +1196,7 @@
         An empty string is returned if the value cannot be determined.
 
     """
-    return uname()[2]
+    return uname().release
 
 def version():
 
@@ -1201,7 +1205,7 @@
         An empty string is returned if the value cannot be determined.
 
     """
-    return uname()[3]
+    return uname().version
 
 def machine():
 
@@ -1210,7 +1214,7 @@
         An empty string is returned if the value cannot be determined.
 
     """
-    return uname()[4]
+    return uname().machine
 
 def processor():
 
@@ -1222,7 +1226,7 @@
         e.g.  NetBSD does this.
 
     """
-    return uname()[5]
+    return uname().processor
 
 ### Various APIs for extracting information from sys.version