Update of /usr/cvs/Public/pygresql/module
In directory druid.net:/tmp/cvs-serv25114/module
Modified Files:
pg.py pgmodule.c test_pg.py
Log Message:
Reimplemented "protocol_version" and "server_version" as attributes instead of
methods.
To see the diffs for this commit:
http://www.druid.net/pygresql/viewcvs.cgi/cvs/pygresql/module/pg.py.diff?r1=1.69&r2=1.70
Index: pg.py
===================================================================
RCS file: /usr/cvs/Public/pygresql/module/pg.py,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -r1.69 -r1.70
--- pg.py 2 Dec 2008 22:39:56 -0000 1.69
+++ pg.py 3 Dec 2008 00:17:15 -0000 1.70
@@ -5,7 +5,7 @@
# Written by D'Arcy J.M. Cain
# Improved by Christoph Zwerschke
#
-# $Id: pg.py,v 1.69 2008/12/02 22:39:56 cito Exp $
+# $Id: pg.py,v 1.70 2008/12/03 00:17:15 cito Exp $
#
"""PyGreSQL classic interface.
@@ -249,22 +249,6 @@
# so we define unescape_bytea as a method as well
unescape_bytea = staticmethod(unescape_bytea)
- def server_version(self):
- """Return an integer representing the backend version."""
- try:
- return self._server_version
- except AttributeError:
- self._server_version = self.db.server_version()
- return self._server_version
-
- def protocol_version(self):
- """Interrogate the frontend/backend protocol being used."""
- try:
- return self._protocol_version
- except AttributeError:
- self._protocol_version = self.db.protocol_version()
- return self._protocol_version
-
def close(self):
"""Close the database connection."""
# Wraps shared library function so we can track state.
@@ -283,7 +267,6 @@
"""
self.db.reset()
- delattr(self, '_protocol_version')
def reopen(self):
"""Reopen connection to the database.
@@ -298,8 +281,6 @@
if self.db:
self.db.close()
self.db = db
- delattr(self, '_server_version')
- delattr(self, '_protocol_version')
def query(self, qstr):
"""Executes a SQL command string.
http://www.druid.net/pygresql/viewcvs.cgi/cvs/pygresql/module/pgmodule.c.diff?r1=1.89&r2=1.90
Index: pgmodule.c
===================================================================
RCS file: /usr/cvs/Public/pygresql/module/pgmodule.c,v
retrieving revision 1.89
retrieving revision 1.90
diff -u -r1.89 -r1.90
--- pgmodule.c 2 Dec 2008 22:39:56 -0000 1.89
+++ pgmodule.c 3 Dec 2008 00:17:15 -0000 1.90
@@ -1,5 +1,5 @@
/*
- * $Id: pgmodule.c,v 1.89 2008/12/02 22:39:56 cito Exp $
+ * $Id: pgmodule.c,v 1.90 2008/12/03 00:17:15 cito Exp $
* PyGres, version 2.2 A Python interface for PostgreSQL database. Written by
* D'Arcy J.M. Cain, ([EMAIL PROTECTED]). Based heavily on code written by
* Pascal Andre, [EMAIL PROTECTED] Copyright (c) 1995, Pascal Andre
@@ -1783,58 +1783,6 @@
#endif
}
-/* get protocol version */
-static char pg_protocol_version__doc__[] =
-"protocol_version() -- interrogate the frontend/backend protocol being used.";
-
-static PyObject *
-pg_protocol_version(pgobject * self, PyObject * args)
-{
- if (!self->cnx)
- {
- PyErr_SetString(PyExc_TypeError, "Connection is not valid.");
- return NULL;
- }
-
- /* checks args */
- if (!PyArg_ParseTuple(args, ""))
- {
- PyErr_SetString(PyExc_TypeError,
- "method server_version() takes no parameters.");
- return NULL;
- }
-
- return PyInt_FromLong(PQprotocolVersion(self->cnx));
-}
-
-/* get backend version */
-static char pg_server_version__doc__[] =
-"server_version() -- return an integer representing the backend version.";
-
-static PyObject *
-pg_server_version(pgobject * self, PyObject * args)
-{
- if (!self->cnx)
- {
- PyErr_SetString(PyExc_TypeError, "Connection is not valid.");
- return NULL;
- }
-
- /* checks args */
- if (!PyArg_ParseTuple(args, ""))
- {
- PyErr_SetString(PyExc_TypeError,
- "method server_version() takes no parameters.");
- return NULL;
- }
-
-#if PG_VERSION_NUM < 80000
- return PyInt_FromLong(PG_VERSION_NUM);
-#else
- return PyInt_FromLong(PQserverVersion(self->cnx));
-#endif
-}
-
/* get number of rows */
static char pgquery_ntuples__doc__[] =
"ntuples() -- returns number of tuples returned by query.";
@@ -2933,10 +2881,6 @@
{"cancel", (PyCFunction) pg_cancel, METH_VARARGS, pg_cancel__doc__},
{"close", (PyCFunction) pg_close, METH_VARARGS, pg_close__doc__},
{"fileno", (PyCFunction) pg_fileno, METH_VARARGS, pg_fileno__doc__},
- {"protocol_version", (PyCFunction) pg_protocol_version, METH_VARARGS,
- pg_protocol_version__doc__},
- {"server_version", (PyCFunction) pg_server_version, METH_VARARGS,
- pg_server_version__doc__},
{"getnotify", (PyCFunction) pg_getnotify, METH_VARARGS,
pg_getnotify__doc__},
{"inserttable", (PyCFunction) pg_inserttable, METH_VARARGS,
@@ -3018,13 +2962,24 @@
/* provided user name */
if (!strcmp(name, "user"))
- return PyString_FromString("Deprecated facility");
- /* return PyString_FromString(fe_getauthname("<unknown user>")); */
+ return PyString_FromString(PQuser(self->cnx));
+
+ /* protocol version */
+ if (!strcmp(name, "protocol_version"))
+ return PyInt_FromLong(PQprotocolVersion(self->cnx));
+
+ /* backend version */
+ if (!strcmp(name, "server_version"))
+#if PG_VERSION_NUM < 80000
+ return PyInt_FromLong(PG_VERSION_NUM);
+#else
+ return PyInt_FromLong(PQserverVersion(self->cnx));
+#endif
/* attributes list */
if (!strcmp(name, "__members__"))
{
- PyObject *list = PyList_New(8);
+ PyObject *list = PyList_New(10);
if (list)
{
@@ -3036,6 +2991,8 @@
PyList_SET_ITEM(list, 5, PyString_FromString("error"));
PyList_SET_ITEM(list, 6, PyString_FromString("status"));
PyList_SET_ITEM(list, 7, PyString_FromString("user"));
+ PyList_SET_ITEM(list, 8,
PyString_FromString("protocol_version"));
+ PyList_SET_ITEM(list, 9,
PyString_FromString("server_version"));
}
return list;
http://www.druid.net/pygresql/viewcvs.cgi/cvs/pygresql/module/test_pg.py.diff?r1=1.21&r2=1.22
Index: test_pg.py
===================================================================
RCS file: /usr/cvs/Public/pygresql/module/test_pg.py,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- test_pg.py 23 Nov 2008 14:32:18 -0000 1.21
+++ test_pg.py 3 Dec 2008 00:17:15 -0000 1.22
@@ -4,7 +4,7 @@
#
# Written by Christoph Zwerschke
#
-# $Id: test_pg.py,v 1.21 2008/11/23 14:32:18 cito Exp $
+# $Id: test_pg.py,v 1.22 2008/12/03 00:17:15 cito Exp $
#
"""Test the classic PyGreSQL interface in the pg module.
@@ -346,19 +346,17 @@
self.connection.close()
def testAllConnectAttributes(self):
- attributes = ['db', 'error', 'host', 'options',
- 'port', 'status', 'tty', 'user']
+ attributes = ['db', 'error', 'host', 'options', 'port',
+ 'protocol_version', 'server_version', 'status', 'tty', 'user']
connection_attributes = [a for a in dir(self.connection)
if not callable(eval("self.connection." + a))]
self.assertEqual(attributes, connection_attributes)
def testAllConnectMethods(self):
- methods = ['cancel', 'close', 'endcopy',
- 'escape_bytea', 'escape_string',
- 'fileno', 'getline', 'getlo', 'getnotify',
- 'inserttable', 'locreate', 'loimport',
- 'parameter', 'putline', 'query', 'reset',
- 'source', 'transaction']
+ methods = ['cancel', 'close', 'endcopy', 'escape_bytea',
+ 'escape_string', 'fileno', 'getline', 'getlo', 'getnotify',
+ 'inserttable', 'locreate', 'loimport', 'parameter', 'putline',
+ 'query', 'reset', 'source', 'transaction']
connection_methods = [a for a in dir(self.connection)
if callable(eval("self.connection." + a))]
self.assertEqual(methods, connection_methods)
@@ -382,6 +380,16 @@
def_port = 5432
self.assertEqual(self.connection.port, def_port)
+ def testAttributeProtocolVersion(self):
+ protocol_version = self.connection.protocol_version
+ self.assert_(isinstance(protocol_version, int))
+ self.assert_(2 <= protocol_version < 4)
+
+ def testAttributeServerVersion(self):
+ server_version = self.connection.server_version
+ self.assert_(isinstance(server_version, int))
+ self.assert_(70400 <= server_version < 90000)
+
def testAttributeStatus(self):
status_ok = 1
self.assertEqual(self.connection.status, status_ok)
@@ -391,8 +399,10 @@
self.assertEqual(self.connection.tty, def_tty)
def testAttributeUser(self):
- def_user = 'Deprecated facility'
- self.assertEqual(self.connection.user, def_user)
+ no_user = 'Deprecated facility'
+ user = self.connection.user
+ self.assert_(self.connection.user)
+ self.assertNotEqual(self.connection.user, no_user)
def testMethodQuery(self):
self.connection.query("select 1+1")
@@ -673,17 +683,14 @@
self.db.close()
def testAllDBAttributes(self):
- attributes = ['cancel', 'clear', 'close',
- 'db', 'dbname', 'debug', 'delete', 'endcopy',
- 'error', 'escape_bytea', 'escape_string',
- 'fileno', 'get', 'get_attnames',
- 'get_databases', 'get_relations', 'get_tables',
- 'getline', 'getlo', 'getnotify', 'host',
- 'insert', 'inserttable', 'locreate', 'loimport',
- 'options', 'parameter', 'pkey', 'port', 'putline',
- 'query', 'reopen', 'reset', 'source', 'status',
- 'transaction', 'tty', 'unescape_bytea',
- 'update', 'user']
+ attributes = ['cancel', 'clear', 'close', 'db', 'dbname', 'debug',
+ 'delete', 'endcopy', 'error', 'escape_bytea', 'escape_string',
+ 'fileno', 'get', 'get_attnames', 'get_databases', 'get_relations',
+ 'get_tables', 'getline', 'getlo', 'getnotify', 'host', 'insert',
+ 'inserttable', 'locreate', 'loimport', 'options', 'parameter',
+ 'pkey', 'port', 'protocol_version', 'putline', 'query', 'reopen',
+ 'reset', 'server_version', 'source', 'status', 'transaction',
+ 'tty', 'unescape_bytea', 'update', 'user']
db_attributes = [a for a in dir(self.db)
if not a.startswith('_')]
self.assertEqual(attributes, db_attributes)
@@ -701,33 +708,52 @@
def testAttributeHost(self):
def_host = 'localhost'
- self.assertEqual(self.db.host, def_host)
- self.assertEqual(self.db.db.host, def_host)
+ host = self.db.host
+ self.assertEqual(host, def_host)
+ self.assertEqual(host, self.db.db.host)
def testAttributeOptions(self):
no_options = ''
- self.assertEqual(self.db.options, no_options)
- self.assertEqual(self.db.db.options, no_options)
+ options = self.db.options
+ self.assertEqual(options, no_options)
+ self.assertEqual(options, self.db.db.options)
def testAttributePort(self):
def_port = 5432
- self.assertEqual(self.db.port, def_port)
- self.assertEqual(self.db.db.port, def_port)
+ port = self.db.port
+ self.assertEqual(port, def_port)
+ self.assertEqual(port, self.db.db.port)
+
+ def testAttributeProtocolVersion(self):
+ protocol_version = self.db.protocol_version
+ self.assert_(isinstance(protocol_version, int))
+ self.assert_(2 <= protocol_version < 4)
+ self.assertEqual(protocol_version, self.db.db.protocol_version)
+
+ def testAttributeServerVersion(self):
+ server_version = self.db.server_version
+ self.assert_(isinstance(server_version, int))
+ self.assert_(70400 <= server_version < 90000)
+ self.assertEqual(server_version, self.db.db.server_version)
def testAttributeStatus(self):
status_ok = 1
- self.assertEqual(self.db.status, status_ok)
- self.assertEqual(self.db.db.status, status_ok)
+ status = self.db.status
+ self.assertEqual(status, status_ok)
+ self.assertEqual(status, self.db.db.status)
def testAttributeTty(self):
def_tty = ''
- self.assertEqual(self.db.tty, def_tty)
- self.assertEqual(self.db.db.tty, def_tty)
+ tty = self.db.tty
+ self.assertEqual(tty, def_tty)
+ self.assertEqual(tty, self.db.db.tty)
def testAttributeUser(self):
- def_user = 'Deprecated facility'
- self.assertEqual(self.db.user, def_user)
- self.assertEqual(self.db.db.user, def_user)
+ no_user = 'Deprecated facility'
+ user = self.db.user
+ self.assert_(user)
+ self.assertNotEqual(user, no_user)
+ self.assertEqual(user, self.db.db.user)
def testMethodEscapeString(self):
self.assertEqual(self.db.escape_string("plain"), "plain")
_______________________________________________
PyGreSQL mailing list
[email protected]
http://mailman.vex.net/mailman/listinfo/pygresql