Issue 1820:  structseq objects did not work with the % formatting operator or isinstance(t, tuple).

Orignal patch (without tests) by Leif Walsh.
diff --git a/Lib/test/test_structseq.py b/Lib/test/test_structseq.py
index 83c7ccf..02c2f72 100644
--- a/Lib/test/test_structseq.py
+++ b/Lib/test/test_structseq.py
@@ -26,6 +26,12 @@
         for i in xrange(-len(t), len(t)-1):
             self.assertEqual(t[i], astuple[i])
 
+    def test_tuple_subclass(self):
+        # Issue 1820
+        t = time.localtime()
+        s = ('%s ' * len(t)) % t        # This used to fail because t was not a tuple subclass
+        self.assert_(isinstance(t, tuple))
+
     def test_repr(self):
         t = time.gmtime()
         self.assert_(repr(t))
diff --git a/Misc/ACKS b/Misc/ACKS
index 2ae4528..2090f85 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -686,6 +686,7 @@
 Charles Waldman
 Richard Walker
 Larry Wall
+Leif Walsh
 Greg Ward
 Barry Warsaw
 Steve Waterbury
diff --git a/Misc/NEWS b/Misc/NEWS
index 32dab10..048e984 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -975,6 +975,10 @@
 Extension Modules
 -----------------
 
+- Issue 1820: structseq objects did not subclass from tuple so they did
+  not pass isinstance(t, tuple) tests and they could not be passed to
+  the % string formatting operator as an input tuple.
+
 - _winreg's HKEY object has gained __enter__ and __exit__ methods to support
   the context manager protocol.  The _winreg module also gained a new function
   ``ExpandEnvironmentStrings`` to expand REG_EXPAND_SZ keys.
diff --git a/Objects/structseq.c b/Objects/structseq.c
index b6126ba..6b1b590 100644
--- a/Objects/structseq.c
+++ b/Objects/structseq.c
@@ -460,7 +460,7 @@
 	structseq_methods,      		/* tp_methods */
         NULL,			             	/* tp_members */
 	0,			          	/* tp_getset */
-	0,					/* tp_base */
+	&PyTuple_Type,				/* tp_base */
 	0,					/* tp_dict */
 	0,					/* tp_descr_get */
 	0,					/* tp_descr_set */