[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

AltStyle によって変換されたページ (->オリジナル) /