[Python-checkins] python/dist/src/Modules _csv.c,1.25,1.26

andrewmcnamara at users.sourceforge.net andrewmcnamara at users.sourceforge.net
Tue Jan 11 03:18:39 CET 2005


Update of /cvsroot/python/python/dist/src/Modules
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25624/Modules

Modified Files:
	_csv.c 
Log Message:
No longer attempt to instantiate python classes describing dialects. This
was done because we were previously performing validation of the dialect
from python, but this is now down within the C module. Also, the method
we were using to detect classes did not work with new-style classes.


Index: _csv.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/_csv.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- _csv.c	11 Jan 2005 01:28:24 -0000	1.25
+++ _csv.c	11 Jan 2005 02:18:35 -0000	1.26
@@ -288,40 +288,6 @@
         self->ob_type->tp_free((PyObject *)self);
 }
 
-/*
- * Return a new reference to a dialect instance
- *
- * If given a string, looks up the name in our dialect registry
- * If given a class, instantiate (which runs python validity checks)
- * If given an instance, return a new reference to the instance
- */
-static PyObject *
-dialect_instantiate(PyObject *dialect)
-{
-	Py_INCREF(dialect);
-	/* If dialect is a string, look it up in our registry */
-	if (IS_BASESTRING(dialect)) {
-		PyObject * new_dia;
-		new_dia = get_dialect_from_registry(dialect);
-		Py_DECREF(dialect);
-		return new_dia;
-	}
-	/* A class rather than an instance? Instantiate */
-	if (PyObject_TypeCheck(dialect, &PyClass_Type)) {
-		PyObject * new_dia;
-		new_dia = PyObject_CallFunction(dialect, "");
-		Py_DECREF(dialect);
-		return new_dia;
-	}
-	/* Make sure we finally have an instance */
-	if (!PyInstance_Check(dialect)) {
-		PyErr_SetString(PyExc_TypeError, "dialect must be an instance");
-		Py_DECREF(dialect);
-		return NULL;
-	}
-	return dialect;
-}
-
 static char *dialect_kws[] = {
 	"dialect",
 	"delimiter",
@@ -371,9 +337,12 @@
 	Py_XINCREF(skipinitialspace);
 	Py_XINCREF(strict);
 	if (dialect != NULL) {
-		dialect = dialect_instantiate(dialect);
-		if (dialect == NULL)
-			goto err;
+		if (IS_BASESTRING(dialect)) {
+			dialect = get_dialect_from_registry(dialect);
+			if (dialect == NULL)
+				goto err;
+		} else
+			Py_INCREF(dialect);
 #define DIALECT_GETATTR(v, n) \
 		if (v == NULL) \
 			v = PyObject_GetAttrString(dialect, n)



More information about the Python-checkins mailing list