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

Reply via email to