Changeset: c57caf2e3730 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c57caf2e3730
Added Files:
        clients/python3/test/control.py
Modified Files:
        clients/python3/monetdb/__init__.py
        clients/python3/monetdb/control.py
        clients/python3/monetdb/exceptions.py
        clients/python3/monetdb/mapi.py
        clients/python3/monetdb/sql/__init__.py
        clients/python3/monetdb/sql/connections.py
        clients/python3/monetdb/sql/converters.py
        clients/python3/monetdb/sql/cursors.py
        clients/python3/monetdb/sql/monetize.py
        clients/python3/monetdb/sql/pythonize.py
        clients/python3/monetdb/sql/types.py
Branch: Feb2013
Log Message:

sync python3 with python2


diffs (truncated from 1253 to 300 lines):

diff --git a/clients/python3/monetdb/__init__.py 
b/clients/python3/monetdb/__init__.py
--- a/clients/python3/monetdb/__init__.py
+++ b/clients/python3/monetdb/__init__.py
@@ -32,4 +32,3 @@ __all__ = ["sql", "mapi"]
 
 # for backwards compatability
 monetdb_exceptions = exceptions
-
diff --git a/clients/python3/monetdb/control.py 
b/clients/python3/monetdb/control.py
--- a/clients/python3/monetdb/control.py
+++ b/clients/python3/monetdb/control.py
@@ -20,6 +20,7 @@ def parse_statusline(line):
 
     subparts = rest.split(',')
     sub_iter = iter(subparts)
+
     info = {}
 
     info['name'] = sub_iter.__next__()
diff --git a/clients/python3/monetdb/exceptions.py 
b/clients/python3/monetdb/exceptions.py
--- a/clients/python3/monetdb/exceptions.py
+++ b/clients/python3/monetdb/exceptions.py
@@ -18,6 +18,7 @@
 MonetDB Python API specific exceptions
 """
 
+
 class Warning(Exception):
     """Exception raised for important warnings like data
     truncations while inserting, etc. It must be a subclass of
@@ -25,6 +26,7 @@ class Warning(Exception):
     exceptions)."""
     pass
 
+
 class Error(Exception):
     """Exception that is the base class of all other error
     exceptions. You can use this to catch all errors with one
@@ -41,17 +43,20 @@ class InterfaceError(Error):
     must be a subclass of Error."""
     pass
 
+
 class DatabaseError(Error):
     """Exception raised for errors that are related to the
     database.  It must be a subclass of Error."""
     pass
 
+
 class DataError(DatabaseError):
     """Exception raised for errors that are due to problems with
     the processed data like division by zero, numeric value
     out of range, etc. It must be a subclass of DatabaseError."""
     pass
 
+
 class OperationalError(DatabaseError):
     """Exception raised for errors that are related to the
     database's operation and not necessarily under the control
@@ -61,12 +66,14 @@ class OperationalError(DatabaseError):
     processing, etc.  It must be a subclass of DatabaseError."""
     pass
 
+
 class IntegrityError(DatabaseError):
     """Exception raised when the relational integrity of the
     database is affected, e.g. a foreign key check fails.  It
     must be a subclass of DatabaseError."""
     pass
 
+
 class InternalError(DatabaseError):
     """Exception raised when the database encounters an internal
     error, e.g. the cursor is not valid anymore, the
@@ -74,6 +81,7 @@ class InternalError(DatabaseError):
     DatabaseError."""
     pass
 
+
 class ProgrammingError(DatabaseError):
     """Exception raised for programming errors, e.g. table not
     found or already exists, syntax error in the SQL
@@ -81,11 +89,10 @@ class ProgrammingError(DatabaseError):
     must be a subclass of DatabaseError."""
     pass
 
+
 class NotSupportedError(DatabaseError):
     """Exception raised in case a method or database API was used which is not
     supported by the database, e.g. requesting a .rollback() on a connection
     that does not support transaction or has transactions turned off.  It must
     be a subclass of DatabaseError."""
     pass
-
-
diff --git a/clients/python3/monetdb/mapi.py b/clients/python3/monetdb/mapi.py
--- a/clients/python3/monetdb/mapi.py
+++ b/clients/python3/monetdb/mapi.py
@@ -24,14 +24,15 @@ import logging
 import struct
 import hashlib
 from io import BytesIO
-import time
 
-from monetdb.exceptions import OperationalError, DatabaseError, 
ProgrammingError, NotSupportedError
+
+from monetdb.exceptions import OperationalError, DatabaseError,\
+    ProgrammingError, NotSupportedError
 
 logger = logging.getLogger("monetdb")
 logger.addHandler(logging.NullHandler())
 
-MAX_PACKAGE_LENGTH = (1024*8)-2
+MAX_PACKAGE_LENGTH = (1024 * 8) - 2
 
 MSG_PROMPT = ""
 MSG_MORE = "\1\2\n"
@@ -53,6 +54,7 @@ STATE_INIT = 0
 STATE_READY = 1
 
 
+# noinspection PyExceptionInherit
 class Connection(object):
     """
     MAPI (low level MonetDB API) connection
@@ -85,15 +87,9 @@ class Connection(object):
         self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 0)
         self.socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
 
-        try:
-            self.socket.connect((hostname, port))
-        except socket.error as error:
-            (error_code, error_str) = error
-            raise OperationalError(error_str + " (%s:%s)" % (self.hostname, 
self.port))
-
+        self.socket.connect((hostname, port))
         self.__login()
 
-
     def __login(self, iteration=0):
         """ Reads challenge from line, generate response and check if
         everything is okay """
@@ -103,13 +99,13 @@ class Connection(object):
         self.__putblock(response)
         prompt = self.__getblock().strip()
 
-        if len(prompt) == 0 :
+        if len(prompt) == 0:
             # Empty response, server is happy
             pass
         elif prompt == MSG_OK:
             pass
         elif prompt.startswith(MSG_INFO):
-            logger.info("II %s" % prompt[1:])
+            logger.info("%s" % prompt[1:])
 
         elif prompt.startswith(MSG_ERROR):
             logger.error(prompt[1:])
@@ -120,23 +116,22 @@ class Connection(object):
             # the first
             redirect = prompt.split()[0][1:].split(':')
             if redirect[1] == "merovingian":
-                logger.debug("II: merovingian proxy, restarting " +
-                        "authenticatiton")
+                logger.debug("restarting authentication")
                 if iteration <= 10:
-                    self.__login(iteration=iteration+1)
+                    self.__login(iteration=iteration + 1)
                 else:
-                    raise OperationalError("maximal number of redirects " +
-                    "reached (10)")
+                    raise OperationalError("maximal number of redirects "
+                                           "reached (10)")
 
             elif redirect[1] == "monetdb":
                 self.hostname = redirect[2][2:]
                 self.port, self.database = redirect[3].split('/')
                 self.port = int(self.port)
-                logger.info("II: merovingian redirect to monetdb://%s:%s/%s" %
-                        (self.hostname, self.port, self.database))
+                logger.info("redirect to monetdb://%s:%s/%s" %
+                            (self.hostname, self.port, self.database))
                 self.socket.close()
                 self.connect(self.hostname, self.port, self.username,
-                        self.password, self.database, self.language)
+                             self.password, self.database, self.language)
 
             else:
                 raise ProgrammingError("unknown redirect: %s" % prompt)
@@ -147,16 +142,14 @@ class Connection(object):
         self.state = STATE_READY
         return True
 
-
     def disconnect(self):
         """ disconnect from the monetdb server """
         self.state = STATE_INIT
         self.socket.close()
 
-
     def cmd(self, operation):
         """ put a mapi command on the line"""
-        logger.debug("II: executing command %s" % operation)
+        logger.debug("executing command %s" % operation)
 
         if self.state != STATE_READY:
             raise ProgrammingError
@@ -177,7 +170,6 @@ class Connection(object):
         else:
             raise ProgrammingError("unknown state: %s" % response)
 
-
     def __challenge_response(self, challenge):
         """ generate a response to a mapi login challenge """
         challenges = challenge.split(':')
@@ -207,11 +199,11 @@ class Connection(object):
             m.update(salt.encode())
             pwhash = "{MD5}" + m.hexdigest()
         else:
-            raise NotSupportedError("Unsupported hash algorithms required for 
login: %s" % (hashes));
+            raise NotSupportedError("Unsupported hash algorithms required"
+                                    " for login: %s" % hashes)
 
         return ":".join(["BIG", self.username, pwhash, self.language,
-            self.database]) + ":"
-
+                         self.database]) + ":"
 
     def __getblock(self):
         """ read one mapi encoded block """
@@ -219,17 +211,13 @@ class Connection(object):
         last = 0
         while not last:
             flag = self.__getbytes(2)
-            unpacked = struct.unpack('<H', flag)[0] # unpack little endian 
short
+            unpacked = struct.unpack('<H', flag)[0]  # little endian short
             length = unpacked >> 1
             last = unpacked & 1
-            #logger.debug("II: reading %i bytes, last: %s" % (length, 
bool(last)))
             result.write(self.__getbytes(length))
         result_str = result.getvalue()
-        #logger.debug("RX: length: %i payload: %s" % (len(result_str), 
result_str))
         return result_str.decode()
 
-
-
     def __getbytes(self, bytes):
         """Read an amount of bytes from the socket"""
         result = BytesIO()
@@ -238,33 +226,27 @@ class Connection(object):
             recv = self.socket.recv(count)
             if len(recv) == 0:
                 raise OperationalError("Server closed connection")
-            #logger.debug("II: package size: %i payload: %s" % (len(recv), 
recv))
             count -= len(recv)
             result.write(recv)
         return result.getvalue()
 
-
     def __putblock(self, block):
         """ wrap the line in mapi format and put it into the socket """
         pos = 0
         last = 0
         while not last:
-            data = block[pos:pos+MAX_PACKAGE_LENGTH].encode()
+            data = block[pos:pos + MAX_PACKAGE_LENGTH].encode()
             length = len(data)
             if length < MAX_PACKAGE_LENGTH:
                 last = 1
-            flag = struct.pack( '<H', ( length << 1 ) + last )
-            #logger.debug("II: sending %i bytes, last: %s" % (length, 
bool(last)))
-            #logger.debug("TX: %s" % data)
+            flag = struct.pack('<H', (length << 1) + last)
             self.socket.send(flag)
             self.socket.send(data)
             pos += length
 
-
     def __del__(self):
         if self.socket:
             self.socket.close()
 
 #backwards compatiblity
 Server = Connection
-
diff --git a/clients/python3/monetdb/sql/__init__.py 
b/clients/python3/monetdb/sql/__init__.py
--- a/clients/python3/monetdb/sql/__init__.py
+++ b/clients/python3/monetdb/sql/__init__.py
@@ -19,22 +19,24 @@ from monetdb.sql.connections import Conn
 from monetdb.sql.pythonize import *
 from monetdb.exceptions import *
 
-apilevel="2.0"
-threadsafety=0
-paramstyle="pyformat"
+apilevel = "2.0"
+threadsafety = 0
+paramstyle = "pyformat"
+
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to