[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