SF patch #770521:  make itertools type declarations static
(Contributed by Andrew I MacIntyre.)
diff --git a/Modules/itertoolsmodule.c b/Modules/itertoolsmodule.c
index fae4511..e63d02a 100644
--- a/Modules/itertoolsmodule.c
+++ b/Modules/itertoolsmodule.c
@@ -16,7 +16,7 @@
 	int firstpass;
 } cycleobject;
 
-PyTypeObject cycle_type;
+static PyTypeObject cycle_type;
 
 static PyObject *
 cycle_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
@@ -111,7 +111,7 @@
 Return elements from the iterable until it is exhausted.\n\
 Then repeat the sequence indefinitely.");
 
-PyTypeObject cycle_type = {
+static PyTypeObject cycle_type = {
 	PyObject_HEAD_INIT(NULL)
 	0,				/* ob_size */
 	"itertools.cycle",		/* tp_name */
@@ -166,7 +166,7 @@
 	long	 start;
 } dropwhileobject;
 
-PyTypeObject dropwhile_type;
+static PyTypeObject dropwhile_type;
 
 static PyObject *
 dropwhile_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
@@ -260,7 +260,7 @@
 Drop items from the iterable while predicate(item) is true.\n\
 Afterwards, return every element until the iterable is exhausted.");
 
-PyTypeObject dropwhile_type = {
+static PyTypeObject dropwhile_type = {
 	PyObject_HEAD_INIT(NULL)
 	0,				/* ob_size */
 	"itertools.dropwhile",		/* tp_name */
@@ -315,7 +315,7 @@
 	long	 stop;
 } takewhileobject;
 
-PyTypeObject takewhile_type;
+static PyTypeObject takewhile_type;
 
 static PyObject *
 takewhile_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
@@ -408,7 +408,7 @@
 Return successive entries from an iterable as long as the \n\
 predicate evaluates to true for each entry.");
 
-PyTypeObject takewhile_type = {
+static PyTypeObject takewhile_type = {
 	PyObject_HEAD_INIT(NULL)
 	0,				/* ob_size */
 	"itertools.takewhile",		/* tp_name */
@@ -465,7 +465,7 @@
 	long	cnt;
 } isliceobject;
 
-PyTypeObject islice_type;
+static PyTypeObject islice_type;
 
 static PyObject *
 islice_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
@@ -598,7 +598,7 @@
 skipped between successive calls.  Works like a slice() on a list\n\
 but returns an iterator.");
 
-PyTypeObject islice_type = {
+static PyTypeObject islice_type = {
 	PyObject_HEAD_INIT(NULL)
 	0,				/* ob_size */
 	"itertools.islice",		/* tp_name */
@@ -652,7 +652,7 @@
 	PyObject *it;
 } starmapobject;
 
-PyTypeObject starmap_type;
+static PyTypeObject starmap_type;
 
 static PyObject *
 starmap_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
@@ -737,7 +737,7 @@
 Return an iterator whose values are returned from the function evaluated\n\
 with a argument tuple taken from the given sequence.");
 
-PyTypeObject starmap_type = {
+static PyTypeObject starmap_type = {
 	PyObject_HEAD_INIT(NULL)
 	0,				/* ob_size */
 	"itertools.starmap",		/* tp_name */
@@ -791,7 +791,7 @@
 	PyObject *func;
 } imapobject;
 
-PyTypeObject imap_type;
+static PyTypeObject imap_type;
 
 static PyObject *
 imap_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
@@ -924,7 +924,7 @@
 iterable is exhausted instead of filling in None for shorter\n\
 iterables.");
 
-PyTypeObject imap_type = {
+static PyTypeObject imap_type = {
 	PyObject_HEAD_INIT(NULL)
 	0,				/* ob_size */
 	"itertools.imap",		/* tp_name */
@@ -979,7 +979,7 @@
 	PyObject *ittuple;		/* tuple of iterators */
 } chainobject;
 
-PyTypeObject chain_type;
+static PyTypeObject chain_type;
 
 static PyObject *
 chain_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
@@ -1061,7 +1061,7 @@
 first iterable until it is exhausted, then elements from the next\n\
 iterable, until all of the iterables are exhausted.");
 
-PyTypeObject chain_type = {
+static PyTypeObject chain_type = {
 	PyObject_HEAD_INIT(NULL)
 	0,				/* ob_size */
 	"itertools.chain",		/* tp_name */
@@ -1115,7 +1115,7 @@
 	PyObject *it;
 } ifilterobject;
 
-PyTypeObject ifilter_type;
+static PyTypeObject ifilter_type;
 
 static PyObject *
 ifilter_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
@@ -1210,7 +1210,7 @@
 Return those items of sequence for which function(item) is true.\n\
 If function is None, return the items that are true.");
 
-PyTypeObject ifilter_type = {
+static PyTypeObject ifilter_type = {
 	PyObject_HEAD_INIT(NULL)
 	0,				/* ob_size */
 	"itertools.ifilter",		/* tp_name */
@@ -1264,7 +1264,7 @@
 	PyObject *it;
 } ifilterfalseobject;
 
-PyTypeObject ifilterfalse_type;
+static PyTypeObject ifilterfalse_type;
 
 static PyObject *
 ifilterfalse_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
@@ -1359,7 +1359,7 @@
 Return those items of sequence for which function(item) is false.\n\
 If function is None, return the items that are false.");
 
-PyTypeObject ifilterfalse_type = {
+static PyTypeObject ifilterfalse_type = {
 	PyObject_HEAD_INIT(NULL)
 	0,				/* ob_size */
 	"itertools.ifilterfalse",	/* tp_name */
@@ -1412,7 +1412,7 @@
 	long	cnt;
 } countobject;
 
-PyTypeObject count_type;
+static PyTypeObject count_type;
 
 static PyObject *
 count_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
@@ -1444,7 +1444,7 @@
 Return a count object whose .next() method returns consecutive\n\
 integers starting from zero or, if specified, from firstval.");
 
-PyTypeObject count_type = {
+static PyTypeObject count_type = {
 	PyObject_HEAD_INIT(NULL)
 	0,				/* ob_size */
 	"itertools.count",		/* tp_name */
@@ -1499,7 +1499,7 @@
 	PyObject *result;
 } izipobject;
 
-PyTypeObject izip_type;
+static PyTypeObject izip_type;
 
 static PyObject *
 izip_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
@@ -1637,7 +1637,7 @@
 function but consumes less memory by returning an iterator instead of\n\
 a list.");
 
-PyTypeObject izip_type = {
+static PyTypeObject izip_type = {
 	PyObject_HEAD_INIT(NULL)
 	0,				/* ob_size */
 	"itertools.izip",		/* tp_name */
@@ -1691,7 +1691,7 @@
 	long cnt;
 } repeatobject;
 
-PyTypeObject repeat_type;
+static PyTypeObject repeat_type;
 
 static PyObject *
 repeat_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
@@ -1747,7 +1747,7 @@
 for the specified number of times.  If not specified, returns the element\n\
 endlessly.");
 
-PyTypeObject repeat_type = {
+static PyTypeObject repeat_type = {
 	PyObject_HEAD_INIT(NULL)
 	0,				/* ob_size */
 	"itertools.repeat",		/* tp_name */