[Python-checkins] r67999 - in sandbox/trunk/io-c: _textio.c io.py

amaury.forgeotdarc python-checkins at python.org
Mon Dec 29 01:18:08 CET 2008


Author: amaury.forgeotdarc
Date: Mon Dec 29 01:18:07 2008
New Revision: 67999

Log:
Add IncrementalNewlineDecoder.newlines property
One more test passes


Modified:
   sandbox/trunk/io-c/_textio.c
   sandbox/trunk/io-c/io.py

Modified: sandbox/trunk/io-c/_textio.c
==============================================================================
--- sandbox/trunk/io-c/_textio.c	(original)
+++ sandbox/trunk/io-c/_textio.c	Mon Dec 29 01:18:07 2008
@@ -56,7 +56,7 @@
     PyObject *errors;
     int pendingcr:1;
     int translate:1;
-    int seennl:3;
+    unsigned int seennl:3;
 } PyNewLineDecoderObject;
 
 static int
@@ -272,6 +272,31 @@
     return PyObject_CallMethod(self->decoder, "reset", NULL);
 }
 
+static PyObject *
+IncrementalNewlineDecoder_newlines_get(PyNewLineDecoderObject *self, void *context)
+{
+    switch (self->seennl) {
+    case SEEN_CR:
+	return PyUnicode_FromString("\r");
+    case SEEN_LF:
+	return PyUnicode_FromString("\n");
+    case SEEN_CRLF:
+	return PyUnicode_FromString("\r\n");
+    case SEEN_CR | SEEN_LF:
+	return Py_BuildValue("ss", "\r", "\n");
+    case SEEN_CR | SEEN_CRLF:
+	return Py_BuildValue("ss", "\r", "\r\n");
+    case SEEN_LF | SEEN_CRLF:
+	return Py_BuildValue("ss", "\n", "\r\n");
+    case SEEN_CR | SEEN_LF | SEEN_CRLF:
+	return Py_BuildValue("sss", "\r", "\n", "\r\n");
+    default:
+	Py_RETURN_NONE;
+   }
+
+}
+
+
 static PyMethodDef IncrementalNewlineDecoder_methods[] = {
     {"decode", (PyCFunction)IncrementalNewlineDecoder_decode, METH_VARARGS|METH_KEYWORDS},
     {"getstate", (PyCFunction)IncrementalNewlineDecoder_getstate, METH_NOARGS},
@@ -280,6 +305,11 @@
     {0}
 };
 
+static PyGetSetDef IncrementalNewlineDecoder_getset[] = {
+    {"newlines", (getter)IncrementalNewlineDecoder_newlines_get, NULL, NULL},
+    {0}
+};
+
 PyTypeObject PyIncrementalNewlineDecoder_Type = {
     PyVarObject_HEAD_INIT(NULL, 0)
     "IncrementalNewlineDecoder", /*tp_name*/
@@ -310,12 +340,12 @@
     0,                          /* tp_iternext */
     IncrementalNewlineDecoder_methods, /* tp_methods */
     0,                          /* tp_members */
-    0,                          /* tp_getset */
+    IncrementalNewlineDecoder_getset, /* tp_getset */
     0,                          /* tp_base */
     0,                          /* tp_dict */
     0,                          /* tp_descr_get */
     0,                          /* tp_descr_set */
-    0,                          /*tp_dictoffset*/
+    0,                          /* tp_dictoffset */
     (initproc)IncrementalNewlineDecoder_init, /* tp_init */
     0,                          /* tp_alloc */
     PyType_GenericNew,          /* tp_new */

Modified: sandbox/trunk/io-c/io.py
==============================================================================
--- sandbox/trunk/io-c/io.py	(original)
+++ sandbox/trunk/io-c/io.py	Mon Dec 29 01:18:07 2008
@@ -79,7 +79,7 @@
         self.characters_written = characters_written
 
 
-def unused_open(file, mode="r", buffering=None, encoding=None, errors=None,
+def open(file, mode="r", buffering=None, encoding=None, errors=None,
          newline=None, closefd=True):
 
     r"""Open file and return a stream.  Raise IOError upon failure.
@@ -257,7 +257,7 @@
 import _io
 BlockingIOError = _io.BlockingIOError
 UnsupportedOperation = _io.UnsupportedOperation
-open = _io.open
+#open = _io.open
 
 class unused_DocDescriptor:
     """Helper for builtins.open.__doc__
@@ -1364,8 +1364,8 @@
                )[self.seennl]
 
 
-TextIOWrapper = _io.TextIOWrapper
-class unusedTextIOWrapper(TextIOBase):
+#TextIOWrapper = _io.TextIOWrapper
+class TextIOWrapper(TextIOBase):
 
     r"""Character and line based layer over a BufferedIOBase object, buffer.
 


More information about the Python-checkins mailing list