Remove last traces of cStringIO.
diff --git a/Doc/library/csv.rst b/Doc/library/csv.rst
index 6beadc5..9043dbc 100644
--- a/Doc/library/csv.rst
+++ b/Doc/library/csv.rst
@@ -484,7 +484,7 @@
 parameter in their constructor and make sure that the data passes the real
 reader or writer encoded as UTF-8::
 
-   import csv, codecs, cStringIO
+   import csv, codecs, io
 
    class UTF8Recoder:
        """
@@ -524,7 +524,7 @@
 
        def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds):
            # Redirect output to a queue
-           self.queue = cStringIO.StringIO()
+           self.queue = io.StringIO()
            self.writer = csv.writer(self.queue, dialect=dialect, **kwds)
            self.stream = f
            self.encoder = codecs.getincrementalencoder(encoding)()
diff --git a/Doc/library/email.message.rst b/Doc/library/email.message.rst
index 5344b45..f51230c 100644
--- a/Doc/library/email.message.rst
+++ b/Doc/library/email.message.rst
@@ -48,7 +48,7 @@
       :class:`Generator` instance and use its :meth:`flatten` method directly.
       For example::
 
-         from cStringIO import StringIO
+         from io import StringIO
          from email.generator import Generator
          fp = StringIO()
          g = Generator(fp, mangle_from_=False, maxheaderlen=60)
diff --git a/Doc/library/pickle.rst b/Doc/library/pickle.rst
index 2194523..76248ac 100644
--- a/Doc/library/pickle.rst
+++ b/Doc/library/pickle.rst
@@ -555,7 +555,7 @@
 Here's a silly example that *might* shed more light::
 
    import pickle
-   from cStringIO import StringIO
+   from io import StringIO
 
    src = StringIO()
    p = pickle.Pickler(src)
diff --git a/Include/cStringIO.h b/Include/cStringIO.h
deleted file mode 100644
index d22b9eb..0000000
--- a/Include/cStringIO.h
+++ /dev/null
@@ -1,70 +0,0 @@
-#ifndef Py_CSTRINGIO_H
-#define Py_CSTRINGIO_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
-
-  This header provides access to cStringIO objects from C.
-  Functions are provided for calling cStringIO objects and
-  macros are provided for testing whether you have cStringIO 
-  objects.
-
-  Before calling any of the functions or macros, you must initialize
-  the routines with:
-
-    PycString_IMPORT
-
-  This would typically be done in your init function.
-
-*/
-#define PycString_IMPORT \
-  PycStringIO = (struct PycStringIO_CAPI*)PyCObject_Import("cStringIO", \
-                                                           "cStringIO_CAPI")
-
-/* Basic functions to manipulate cStringIO objects from C */
-
-static struct PycStringIO_CAPI {
-  
- /* Read a string from an input object.  If the last argument
-    is -1, the remainder will be read.
-    */
-  int(*cread)(PyObject *, char **, Py_ssize_t);
-
- /* Read a line from an input object.  Returns the length of the read
-    line as an int and a pointer inside the object buffer as char** (so
-    the caller doesn't have to provide its own buffer as destination).
-    */
-  int(*creadline)(PyObject *, char **);
-
-  /* Write a string to an output object*/
-  int(*cwrite)(PyObject *, const char *, Py_ssize_t);
-
-  /* Get the output object as a Python string (returns new reference). */
-  PyObject *(*cgetvalue)(PyObject *);
-
-  /* Create a new output object */
-  PyObject *(*NewOutput)(int);
-
-  /* Create an input object from a Python string
-     (copies the Python string reference).
-     */
-  PyObject *(*NewInput)(PyObject *);
-
-  /* The Python types for cStringIO input and output objects.
-     Note that you can do input on an output object.
-     */
-  PyTypeObject *InputType, *OutputType;
-
-} *PycStringIO;
-
-/* These can be used to test if you have one */
-#define PycStringIO_InputCheck(O) \
-  (Py_TYPE(O)==PycStringIO->InputType)
-#define PycStringIO_OutputCheck(O) \
-  (Py_TYPE(O)==PycStringIO->OutputType)
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_CSTRINGIO_H */
diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py
index 14f55fb..e9570e9 100644
--- a/Lib/test/test_sys.py
+++ b/Lib/test/test_sys.py
@@ -297,7 +297,7 @@
         self.assert_(isinstance(vi[4], int))
 
     def test_43581(self):
-        # Can't use sys.stdout, as this is a cStringIO object when
+        # Can't use sys.stdout, as this is a StringIO object when
         # the test runs under regrtest.
         self.assertEqual(sys.__stdout__.encoding, sys.__stderr__.encoding)
 
diff --git a/Modules/Setup.dist b/Modules/Setup.dist
index 88c85b5..a790556 100644
--- a/Modules/Setup.dist
+++ b/Modules/Setup.dist
@@ -339,9 +339,6 @@
 # Fred Drake's interface to the Python parser
 #parser parsermodule.c
 
-# cStringIO
-#cStringIO cStringIO.c
-
 
 # Lee Busby's SIGFPE modules.
 # The library to link fpectl with is platform specific.
diff --git a/PC/VS8.0/pythoncore.vcproj b/PC/VS8.0/pythoncore.vcproj
index 2d34d12..b8c0ffe 100644
--- a/PC/VS8.0/pythoncore.vcproj
+++ b/PC/VS8.0/pythoncore.vcproj
@@ -691,10 +691,6 @@
 				>

 			</File>

 			<File

-				RelativePath="..\..\Include\cStringIO.h"

-				>

-			</File>

-			<File

 				RelativePath="..\..\Include\datetime.h"

 				>

 			</File>

diff --git a/PC/os2emx/config.c b/PC/os2emx/config.c
index 93fbecc..88ece9d 100644
--- a/PC/os2emx/config.c
+++ b/PC/os2emx/config.c
@@ -50,7 +50,6 @@
 extern void init_weakref();
 extern void initarray();
 extern void initbinascii();
-extern void initcStringIO();
 extern void initcollections();
 extern void initcmath();
 extern void initdatetime();
@@ -110,7 +109,6 @@
 	{"_weakref", init_weakref},
 	{"array", initarray},
 	{"binascii", initbinascii},
-	{"cStringIO", initcStringIO},
 	{"collections", initcollections},
 	{"cmath", initcmath},
 	{"datetime", initdatetime},
diff --git a/PC/os2emx/python26.def b/PC/os2emx/python26.def
index 3cdb44a..46c548e 100644
--- a/PC/os2emx/python26.def
+++ b/PC/os2emx/python26.def
@@ -1218,9 +1218,6 @@
 ;  "initcPickle"
 ;  "fast_save_leave"
 
-; From python26_s.lib(cStringIO)
-;  "initcStringIO"
-
 ; From python26_s.lib(_csv)
 ;  "init_csv"
 
diff --git a/PC/os2vacpp/config.c b/PC/os2vacpp/config.c
index aba6e79..bbdf6f3 100644
--- a/PC/os2vacpp/config.c
+++ b/PC/os2vacpp/config.c
@@ -34,7 +34,6 @@
 extern void initstruct(void);
 extern void inittime(void);
 extern void init_thread(void);
-extern void initcStringIO(void);
 extern void initpcre(void);
 #ifdef WIN32
 extern void initmsvcrt(void);
@@ -78,7 +77,6 @@
 #ifdef WITH_THREAD
         {"_thread", init_thread},
 #endif
-        {"cStringIO", initcStringIO},
         {"pcre", initpcre},
 #ifdef WIN32
         {"msvcrt", initmsvcrt},
diff --git a/PC/os2vacpp/makefile b/PC/os2vacpp/makefile
index 55bb783..d47ff1f 100644
--- a/PC/os2vacpp/makefile
+++ b/PC/os2vacpp/makefile
@@ -180,7 +180,6 @@
                   $(PATHOBJ)\ArrayModule.obj   \
                   $(PATHOBJ)\BinAscii.obj      \
                   $(PATHOBJ)\CMathModule.obj   \
-                  $(PATHOBJ)\cStringIO.obj     \
                   $(PATHOBJ)\ErrnoModule.obj   \
                   $(PATHOBJ)\GCModule.obj      \
                   $(PATHOBJ)\GetBuildInfo.obj  \
@@ -440,7 +439,7 @@
 
 cpickle.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
 	 $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
-	 $(PY_INCLUDE)\cstringio.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
+	 $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
 	 $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
 	 $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
 	 $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
@@ -466,20 +465,6 @@
 	 $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
 	 $(PY_INCLUDE)\tupleobject.h
 
-cstringio.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
-	 $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \
-	 $(PY_INCLUDE)\cstringio.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
-	 $(PY_INCLUDE)\floatobject.h $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h \
-	 $(PY_INCLUDE)\intobject.h $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h \
-	 $(PY_INCLUDE)\longobject.h $(PY_INCLUDE)\methodobject.h \
-	 $(PY_INCLUDE)\modsupport.h $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h \
-	 $(PY_INCLUDE)\myproto.h $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h \
-	 $(PY_INCLUDE)\pydebug.h $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h \
-	 $(PY_INCLUDE)\pystate.h $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h \
-	 $(PY_INCLUDE)\rangeobject.h $(PY_INCLUDE)\sliceobject.h \
-	 $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
-	 $(PY_INCLUDE)\tupleobject.h
-
 cursesmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h \
 	 $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
 	 pyconfig.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
diff --git a/PC/os2vacpp/makefile.omk b/PC/os2vacpp/makefile.omk
index 7083c78..4f7f478 100644
--- a/PC/os2vacpp/makefile.omk
+++ b/PC/os2vacpp/makefile.omk
@@ -142,7 +142,6 @@
                   ArrayModule.obj   \
                   BinAscii.obj      \
                   CMathModule.obj   \
-                  cStringIO.obj     \
                   ErrnoModule.obj   \
                   GetBuildInfo.obj  \
                   GetPathP.obj      \
@@ -379,7 +378,7 @@
 	 stringobject.h sysmodule.h traceback.h tupleobject.h
 
 cpickle.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
-	 pyconfig.h cstringio.h dictobject.h fileobject.h floatobject.h \
+	 pyconfig.h dictobject.h fileobject.h floatobject.h \
 	 funcobject.h import.h intobject.h intrcheck.h listobject.h \
 	 longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
 	 mymath.h myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
@@ -394,14 +393,6 @@
 	 pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \
 	 traceback.h tupleobject.h
 
-cstringio.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \
-	 pyconfig.h cstringio.h dictobject.h fileobject.h floatobject.h \
-	 funcobject.h import.h intobject.h intrcheck.h listobject.h \
-	 longobject.h methodobject.h modsupport.h moduleobject.h mymalloc.h \
-	 myproto.h object.h objimpl.h pydebug.h pyerrors.h pyfpe.h \
-	 pystate.h python.h pythonrun.h rangeobject.h sliceobject.h \
-	 stringobject.h sysmodule.h traceback.h tupleobject.h
-
 cursesmodule.obj: abstract.h ceval.h classobject.h cobject.h \
 	 complexobject.h pyconfig.h dictobject.h fileobject.h floatobject.h \
 	 funcobject.h import.h intobject.h intrcheck.h listobject.h \
diff --git a/PCbuild/pythoncore.vcproj b/PCbuild/pythoncore.vcproj
index d877115..ca33a97 100644
--- a/PCbuild/pythoncore.vcproj
+++ b/PCbuild/pythoncore.vcproj
@@ -695,10 +695,6 @@
 				>
 			</File>
 			<File
-				RelativePath="..\Include\cStringIO.h"
-				>
-			</File>
-			<File
 				RelativePath="..\Include\datetime.h"
 				>
 			</File>