[Python-modules-commits] [python-vertica] 06/08: merge patched into master

Jean Baptiste Favre jbfavre-guest at moszumanska.debian.org
Sun Apr 10 15:54:49 UTC 2016


This is an automated email from the git hooks/post-receive script.

jbfavre-guest pushed a commit to branch master
in repository python-vertica.

commit b851e5eb69b947d68870af239753d6d558208877
Merge: d9cb82e 4bd817c
Author: Jean Baptiste Favre <github at jbfavre.org>
Date:   Sun Apr 10 17:49:03 2016 +0200

    merge patched into master

 debian/.git-dpm                                    |   4 +-
 ...0001-Update-python-3-compatibility-patch.patch} | 764 +++++++++++++++++----
 debian/patches/series                              |   2 +-
 vertica_python/errors.py                           |  18 +-
 vertica_python/tests/basic_tests.py                |   2 +-
 vertica_python/tests/unicode_tests.py              |  11 +
 vertica_python/vertica/column.py                   |  11 +-
 vertica_python/vertica/connection.py               |  24 +-
 vertica_python/vertica/cursor.py                   |   8 +-
 .../messages/backend_messages/authentication.py    |   2 +-
 .../messages/backend_messages/backend_key_data.py  |   2 +-
 .../messages/backend_messages/bind_complete.py     |   2 +-
 .../messages/backend_messages/close_complete.py    |   2 +-
 .../messages/backend_messages/command_complete.py  |  10 +-
 .../messages/backend_messages/copy_in_response.py  |   4 +-
 .../vertica/messages/backend_messages/data_row.py  |   3 +-
 .../backend_messages/empty_query_response.py       |   2 +-
 .../messages/backend_messages/error_response.py    |   2 +-
 .../vertica/messages/backend_messages/no_data.py   |   2 +-
 .../messages/backend_messages/notice_response.py   |  30 +-
 .../backend_messages/parameter_description.py      |   2 +-
 .../messages/backend_messages/parameter_status.py  |   6 +-
 .../messages/backend_messages/parse_complete.py    |   2 +-
 .../messages/backend_messages/portal_suspended.py  |   2 +-
 .../messages/backend_messages/ready_for_query.py   |   8 +-
 .../messages/backend_messages/row_description.py   |   6 +-
 .../vertica/messages/frontend_messages/bind.py     |  16 +-
 .../vertica/messages/frontend_messages/close.py    |   2 +-
 .../messages/frontend_messages/copy_data.py        |   2 +-
 .../messages/frontend_messages/copy_done.py        |   2 +-
 .../messages/frontend_messages/copy_fail.py        |   2 +-
 .../messages/frontend_messages/copy_stream.py      |   2 +-
 .../vertica/messages/frontend_messages/describe.py |   2 +-
 .../vertica/messages/frontend_messages/execute.py  |   2 +-
 .../vertica/messages/frontend_messages/flush.py    |   2 +-
 .../vertica/messages/frontend_messages/parse.py    |   2 +-
 .../vertica/messages/frontend_messages/password.py |   2 +-
 .../vertica/messages/frontend_messages/query.py    |   7 +-
 .../vertica/messages/frontend_messages/startup.py  |   6 +-
 .../vertica/messages/frontend_messages/sync.py     |   2 +-
 .../messages/frontend_messages/terminate.py        |   2 +-
 vertica_python/vertica/messages/message.py         |  12 +-
 42 files changed, 755 insertions(+), 241 deletions(-)

diff --cc debian/.git-dpm
index 1e13515,0000000..b58c905
mode 100644,000000..100644
--- a/debian/.git-dpm
+++ b/debian/.git-dpm
@@@ -1,11 -1,0 +1,11 @@@
 +# see git-dpm(1) from git-dpm package
- 1073fb22a17118aad454aedce26c510115984f1e
- 1073fb22a17118aad454aedce26c510115984f1e
++4bd817c41fbba2c3383ef26dc1439e145884ab0a
++4bd817c41fbba2c3383ef26dc1439e145884ab0a
 +ae8b3b3ef96558d8f3f28f77dfc946ea612084d5
 +ae8b3b3ef96558d8f3f28f77dfc946ea612084d5
 +python-vertica_0.5.6.orig.tar.gz
 +d8a8f8dd8ba452aa0938d48cb33a563c9ea76f6e
 +22874
 +debianTag="debian/%e%v"
 +patchedTag="patched/%e%v"
 +upstreamTag="upstream/%e%u"
diff --cc debian/patches/0001-Update-python-3-compatibility-patch.patch
index 03e8c46,0000000..fd5103b
mode 100644,000000..100644
--- a/debian/patches/0001-Update-python-3-compatibility-patch.patch
+++ b/debian/patches/0001-Update-python-3-compatibility-patch.patch
@@@ -1,711 -1,0 +1,1219 @@@
- From 1073fb22a17118aad454aedce26c510115984f1e Mon Sep 17 00:00:00 2001
- From: Jean Baptiste Favre <debian at jbfavre.org>
- Date: Thu, 8 Oct 2015 13:20:49 -0700
- Subject: remove deprecated import for python 3
++From 4bd817c41fbba2c3383ef26dc1439e145884ab0a Mon Sep 17 00:00:00 2001
++From: Jean Baptiste Favre <github at jbfavre.org>
++Date: Sun, 10 Apr 2016 17:49:01 +0200
++Subject: Update python 3 compatibility patch
 +
- Origin: other
- Reviewed-by: Jean Baptiste Favre <debian at jbfavre.org>
- Last-Update: 2015-08-16
- Patch-Name: fix_python3_compatibility.patch
 +---
 + vertica_python/__init__.py                         |  2 +-
 + vertica_python/datatypes.py                        |  2 +-
-  vertica_python/errors.py                           | 10 ++--
-  vertica_python/tests/basic_tests.py                |  2 +-
++ vertica_python/errors.py                           | 28 +++++----
++ vertica_python/tests/basic_tests.py                |  4 +-
 + vertica_python/tests/date_tests.py                 |  2 +-
-  vertica_python/vertica/column.py                   |  6 +-
-  vertica_python/vertica/connection.py               | 11 ++--
-  vertica_python/vertica/cursor.py                   |  6 +-
++ vertica_python/tests/unicode_tests.py              | 11 ++++
++ vertica_python/vertica/column.py                   | 15 ++---
++ vertica_python/vertica/connection.py               | 35 ++++++-----
++ vertica_python/vertica/cursor.py                   | 14 +++--
 + vertica_python/vertica/messages/__init__.py        | 70 +++++++++++-----------
-  .../messages/backend_messages/authentication.py    |  2 +-
-  .../messages/backend_messages/backend_key_data.py  |  2 +-
-  .../messages/backend_messages/bind_complete.py     |  2 +-
-  .../messages/backend_messages/close_complete.py    |  2 +-
-  .../messages/backend_messages/command_complete.py  |  2 +-
-  .../messages/backend_messages/copy_in_response.py  |  2 +-
-  .../vertica/messages/backend_messages/data_row.py  |  4 +-
-  .../backend_messages/empty_query_response.py       |  2 +-
-  .../messages/backend_messages/error_response.py    |  2 +-
-  .../vertica/messages/backend_messages/no_data.py   |  2 +-
-  .../messages/backend_messages/notice_response.py   |  2 +-
-  .../backend_messages/parameter_description.py      |  2 +-
-  .../messages/backend_messages/parameter_status.py  |  2 +-
-  .../messages/backend_messages/parse_complete.py    |  2 +-
-  .../messages/backend_messages/portal_suspended.py  |  2 +-
-  .../messages/backend_messages/ready_for_query.py   |  2 +-
-  .../messages/backend_messages/row_description.py   |  4 +-
++ .../messages/backend_messages/authentication.py    |  4 +-
++ .../messages/backend_messages/backend_key_data.py  |  4 +-
++ .../messages/backend_messages/bind_complete.py     |  4 +-
++ .../messages/backend_messages/close_complete.py    |  4 +-
++ .../messages/backend_messages/command_complete.py  | 12 ++--
++ .../messages/backend_messages/copy_in_response.py  |  6 +-
++ .../vertica/messages/backend_messages/data_row.py  |  7 ++-
++ .../backend_messages/empty_query_response.py       |  4 +-
++ .../messages/backend_messages/error_response.py    |  4 +-
++ .../vertica/messages/backend_messages/no_data.py   |  4 +-
++ .../messages/backend_messages/notice_response.py   | 30 +++++-----
++ .../backend_messages/parameter_description.py      |  4 +-
++ .../messages/backend_messages/parameter_status.py  |  6 +-
++ .../messages/backend_messages/parse_complete.py    |  4 +-
++ .../messages/backend_messages/portal_suspended.py  |  4 +-
++ .../messages/backend_messages/ready_for_query.py   | 10 ++--
++ .../messages/backend_messages/row_description.py   |  8 +--
 + .../vertica/messages/backend_messages/unknown.py   |  2 +-
-  .../vertica/messages/frontend_messages/bind.py     |  4 +-
++ .../vertica/messages/frontend_messages/bind.py     | 14 ++---
 + .../messages/frontend_messages/cancel_request.py   |  2 +-
-  .../vertica/messages/frontend_messages/close.py    |  2 +-
-  .../messages/frontend_messages/copy_data.py        |  2 +-
-  .../messages/frontend_messages/copy_done.py        |  2 +-
-  .../messages/frontend_messages/copy_fail.py        |  2 +-
-  .../messages/frontend_messages/copy_stream.py      |  2 +-
-  .../vertica/messages/frontend_messages/describe.py |  2 +-
-  .../vertica/messages/frontend_messages/execute.py  |  2 +-
-  .../vertica/messages/frontend_messages/flush.py    |  2 +-
-  .../vertica/messages/frontend_messages/parse.py    |  2 +-
-  .../vertica/messages/frontend_messages/password.py |  2 +-
-  .../vertica/messages/frontend_messages/query.py    |  4 +-
++ .../vertica/messages/frontend_messages/close.py    |  4 +-
++ .../messages/frontend_messages/copy_data.py        |  4 +-
++ .../messages/frontend_messages/copy_done.py        |  4 +-
++ .../messages/frontend_messages/copy_fail.py        |  4 +-
++ .../messages/frontend_messages/copy_stream.py      |  4 +-
++ .../vertica/messages/frontend_messages/describe.py |  4 +-
++ .../vertica/messages/frontend_messages/execute.py  |  4 +-
++ .../vertica/messages/frontend_messages/flush.py    |  4 +-
++ .../vertica/messages/frontend_messages/parse.py    |  4 +-
++ .../vertica/messages/frontend_messages/password.py |  4 +-
++ .../vertica/messages/frontend_messages/query.py    |  9 +--
 + .../messages/frontend_messages/ssl_request.py      |  2 +-
-  .../vertica/messages/frontend_messages/startup.py  |  2 +-
-  .../vertica/messages/frontend_messages/sync.py     |  2 +-
-  .../messages/frontend_messages/terminate.py        |  2 +-
-  vertica_python/vertica/messages/message.py         |  2 +-
-  45 files changed, 97 insertions(+), 94 deletions(-)
++ .../vertica/messages/frontend_messages/startup.py  |  8 +--
++ .../vertica/messages/frontend_messages/sync.py     |  4 +-
++ .../messages/frontend_messages/terminate.py        |  4 +-
++ vertica_python/vertica/messages/message.py         | 14 ++---
++ 46 files changed, 205 insertions(+), 196 deletions(-)
 +
 +diff --git a/vertica_python/__init__.py b/vertica_python/__init__.py
 +index 5a7dc99..1a751da 100644
 +--- a/vertica_python/__init__.py
 ++++ b/vertica_python/__init__.py
 +@@ -1,4 +1,4 @@
 +-from __future__ import absolute_import
 ++
 + 
 + from vertica_python.vertica.connection import Connection
 + 
 +diff --git a/vertica_python/datatypes.py b/vertica_python/datatypes.py
 +index c459295..89fe296 100644
 +--- a/vertica_python/datatypes.py
 ++++ b/vertica_python/datatypes.py
 +@@ -1,4 +1,4 @@
 +-from __future__ import absolute_import
 ++
 + 
 + from datetime import datetime
 + from datetime import timedelta
 +diff --git a/vertica_python/errors.py b/vertica_python/errors.py
- index 1b9f842..28bc605 100644
++index 1b9f842..08ae256 100644
 +--- a/vertica_python/errors.py
 ++++ b/vertica_python/errors.py
 +@@ -1,14 +1,16 @@
 +-from __future__ import absolute_import
 + 
 +-import exceptions
 ++
 ++import sys
 ++if sys.version_info < (3,):
 ++    import exceptions
 + import re
 + 
 + 
 +-class Error(exceptions.StandardError):
 ++class Error(Exception):
 +     pass
 + 
 + 
 +-class Warning(exceptions.StandardError):
 ++class Warning(Exception):
 +     pass
 + 
 + 
++@@ -128,13 +130,13 @@ class InvalidDatetimeFormat(QueryError):
++ 
++ 
++ QUERY_ERROR_CLASSES = {
++-    '55V03': LockFailure,
++-    '53000': InsufficientResources,
++-    '53200': OutOfMemory,
++-    '42601': VerticaSyntaxError,
++-    '42V01': MissingRelation,
++-    '42703': MissingColumn,
++-    '22V04': CopyRejected,
++-    '42501': PermissionDenied,
++-    '22007': InvalidDatetimeFormat
+++    b'55V03': LockFailure,
+++    b'53000': InsufficientResources,
+++    b'53200': OutOfMemory,
+++    b'42601': VerticaSyntaxError,
+++    b'42V01': MissingRelation,
+++    b'42703': MissingColumn,
+++    b'22V04': CopyRejected,
+++    b'42501': PermissionDenied,
+++    b'22007': InvalidDatetimeFormat
++ }
 +diff --git a/vertica_python/tests/basic_tests.py b/vertica_python/tests/basic_tests.py
- index 0593e40..9627c43 100644
++index 0593e40..dbc72de 100644
 +--- a/vertica_python/tests/basic_tests.py
 ++++ b/vertica_python/tests/basic_tests.py
 +@@ -2,7 +2,7 @@ import unittest
 + import logging
 + import tempfile
 + 
 +-from test_commons import conn_info
 ++from .test_commons import conn_info
 + 
 + import vertica_python
 + from vertica_python import errors
++@@ -184,7 +184,7 @@ class TestVerticaPython(unittest.TestCase):
++         cur2 = conn.cursor()
++     
++         f = tempfile.TemporaryFile()
++-        f.write("1,foo\n2,bar")
+++        f.write(b"1,foo\n2,bar")
++         # move rw pointer to top of file
++         f.seek(0)
++         cur.copy(""" COPY vertica_python_unit_test (a, b) from stdin DELIMITER ',' """,  f)
 +diff --git a/vertica_python/tests/date_tests.py b/vertica_python/tests/date_tests.py
 +index 90e4486..4477165 100644
 +--- a/vertica_python/tests/date_tests.py
 ++++ b/vertica_python/tests/date_tests.py
 +@@ -1,5 +1,5 @@
 + from datetime import date, datetime
 +-from test_commons import *
 ++from .test_commons import *
 + from vertica_python import errors
 + from vertica_python.vertica.column import timestamp_parse
 + 
++diff --git a/vertica_python/tests/unicode_tests.py b/vertica_python/tests/unicode_tests.py
++index 42a5bc6..5fe9907 100644
++--- a/vertica_python/tests/unicode_tests.py
+++++ b/vertica_python/tests/unicode_tests.py
++@@ -3,6 +3,17 @@ from .. import connect
++ 
++ 
++ class UnicodeTestCase(VerticaTestCase):
+++    def test_unicode_query(self):
+++        value = u'\u16a0'
+++        query = u"SELECT '%s'" % value
+++
+++        with connect(**conn_info) as conn:
+++            cur = conn.cursor()
+++            cur.execute(query)
+++            res = cur.fetchone()
+++
+++            assert res[0] == value
+++
++     def test_unicode_named_parameter_binding(self):
++         key = u'\u16a0'
++         value = 1
 +diff --git a/vertica_python/vertica/column.py b/vertica_python/vertica/column.py
- index 7dd4df5..52e3e55 100644
++index 7dd4df5..91c41dd 100644
 +--- a/vertica_python/vertica/column.py
 ++++ b/vertica_python/vertica/column.py
- @@ -1,4 +1,4 @@
++@@ -1,8 +1,9 @@
 +-from __future__ import absolute_import
 ++
 + 
 + from collections import namedtuple
 + import re
- @@ -81,7 +81,7 @@ def date_parse(s):
-      if s.endswith(' BC'):
-          raise errors.NotSupportedError('Dates Before Christ are not supported. Got: ' + s)
++ 
+++from builtins import str
++ from decimal import Decimal
++ from datetime import date
++ from datetime import datetime
++@@ -78,10 +79,10 @@ def date_parse(s):
++     :return: an instance of datetime.date
++     :raises NotSupportedError when a date Before Christ is encountered
++     """
++-    if s.endswith(' BC'):
++-        raise errors.NotSupportedError('Dates Before Christ are not supported. Got: ' + s)
+++    if s.endswith(b' BC'):
+++        raise errors.NotSupportedError('Dates Before Christ are not supported. Got: ' + str(s, 'utf-8'))
 + 
 +-    return date(*map(lambda x: int(x), s.split('-')))
- +    return date(*[int(x) for x in s.split('-')])
+++    return date(*map(lambda x: int(x), s.split(b'-')))
 + 
 + ColumnTuple = namedtuple(
 +     'Column',
- @@ -165,7 +165,7 @@ class Column(object):
++@@ -105,8 +106,8 @@ class Column(object):
++             ('bool', lambda s: s == 't'),
++             ('integer', lambda s: int(s)),
++             ('float', lambda s: float(s)),
++-            ('char', lambda s: unicode(s, 'utf-8', unicode_error)),
++-            ('varchar', lambda s: unicode(s, 'utf-8', unicode_error)),
+++            ('char', lambda s: str(s, 'utf-8', unicode_error)),
+++            ('varchar', lambda s: str(s, 'utf-8', unicode_error)),
++             ('date', date_parse),
++             ('time', None),
++             ('timestamp', timestamp_parse),
++@@ -165,7 +166,7 @@ class Column(object):
 +         return self.props.__str__()
 + 
 +     def __unicode__(self):
 +-        return unicode(self.props.__str__())
 ++        return str(self.props.__str__())
 + 
 +     def __repr__(self):
 +         return self.props.__str__()
 +diff --git a/vertica_python/vertica/connection.py b/vertica_python/vertica/connection.py
- index 8bc9a1e..7176f48 100644
++index 8bc9a1e..ddbdaf4 100644
 +--- a/vertica_python/vertica/connection.py
 ++++ b/vertica_python/vertica/connection.py
 +@@ -1,4 +1,4 @@
 +-from __future__ import absolute_import
 ++
 + 
 + import logging
 + import select
- @@ -14,6 +14,7 @@ from vertica_python.vertica.messages.message import BackendMessage
++@@ -7,6 +7,8 @@ import ssl
++ 
++ from struct import unpack
++ 
+++from builtins import str
+++
++ import vertica_python.errors as errors
++ import vertica_python.vertica.messages as messages
++ 
++@@ -14,6 +16,7 @@ from vertica_python.vertica.messages.message import BackendMessage
 + 
 + from vertica_python.vertica.cursor import Cursor
 + from vertica_python.errors import SSLNotSupported
 ++import collections
 + 
 + logger = logging.getLogger('vertica')
 + 
- @@ -24,7 +25,7 @@ class Connection(object):
++@@ -24,7 +27,7 @@ class Connection(object):
 + 
 +         options = options or {}
 +         self.options = dict(
 +-            (key, value) for key, value in options.iteritems() if value is not None
 ++            (key, value) for key, value in options.items() if value is not None
 +         )
 + 
 +         # we only support one cursor per connection
- @@ -134,7 +135,7 @@ class Connection(object):
++@@ -37,13 +40,13 @@ class Connection(object):
++     def __enter__(self):
++         return self
++ 
++-    def __exit__(self, type, value, traceback):
+++    def __exit__(self, type_, value, traceback):
++         try:
++             # if there's no outstanding transaction, we can simply close the connection
++             if self.transaction_status in (None, 'in_transaction'):
++                 return
++ 
++-            if type is not None:
+++            if type_ is not None:
++                 self.rollback()
++             else:
++                 self.commit()
++@@ -134,7 +137,7 @@ class Connection(object):
 + 
 +         is_stream = hasattr(message, "read_bytes")
 + 
 +-        if (hasattr(message, 'to_bytes') is False or callable(getattr(message, 'to_bytes')) is False) and not is_stream:
 ++        if (hasattr(message, 'to_bytes') is False or isinstance(getattr(message, 'to_bytes'), collections.Callable) is False) and not is_stream:
 +             raise TypeError("invalid message: ({0})".format(message))
 + 
 +         logger.debug('=> %s', message)
- @@ -151,7 +152,7 @@ class Connection(object):
++@@ -151,12 +154,12 @@ class Connection(object):
 + 
 +                     self._socket().sendall(data)
 + 
 +-        except Exception, e:
 ++        except Exception as e:
 +             self.close_socket()
-              if e.message == 'unsupported authentication method: 9':
++-            if e.message == 'unsupported authentication method: 9':
+++            if str(e) == 'unsupported authentication method: 9':
 +                 raise errors.ConnectionError('Error during authentication. Your password might be expired.')
- @@ -221,7 +222,7 @@ class Connection(object):
++             else:
++-                raise errors.ConnectionError(e.message)
+++                raise errors.ConnectionError(str(e))
++ 
++     def close_socket(self):
++         try:
++@@ -173,14 +176,14 @@ class Connection(object):
++         try:
++             ready = select.select([self._socket()], [], [], self.options['read_timeout'])
++             if len(ready[0]) > 0:
++-                type = self.read_bytes(1)
+++                type_ = self.read_bytes(1)
++                 size = unpack('!I', self.read_bytes(4))[0]
++ 
++                 if size < 4:
++                     raise errors.MessageError(
++                         "Bad message size: {0}".format(size)
++                     )
++-                message = BackendMessage.factory(type, self.read_bytes(size - 4))
+++                message = BackendMessage.factory(type_, self.read_bytes(size - 4))
++                 logger.debug('<= %s', message)
++                 return message
++             else:
++@@ -190,7 +193,7 @@ class Connection(object):
++             raise
++         except Exception as e:
++             self.close_socket()
++-            raise errors.ConnectionError(e.message)
+++            raise errors.ConnectionError(str(e))
++ 
++     def process_message(self, message):
++         if isinstance(message, messages.ErrorResponse):
++@@ -221,7 +224,7 @@ class Connection(object):
 + 
 +     def __str__(self):
 +         safe_options = dict(
 +-            (key, value) for key, value in self.options.iteritems() if key != 'password'
 ++            (key, value) for key, value in self.options.items() if key != 'password'
 +         )
 +         s1 = "<Vertica.Connection:{0} parameters={1} backend_pid={2}, ".format(
 +             id(self), self.parameters, self.backend_pid
++@@ -233,12 +236,12 @@ class Connection(object):
++         return s1 + s2
++ 
++     def read_bytes(self, n):
++-        results = ''
+++        results = bytes()
++         while len(results) < n:
++-            bytes = self._socket().recv(n - len(results))
++-            if not bytes:
+++            bytes_ = self._socket().recv(n - len(results))
+++            if not bytes_:
++                 raise errors.ConnectionError("Connection closed by Vertica")
++-            results = results + bytes
+++            results = results + bytes_
++         return results
++ 
++     def startup_connection(self):
 +diff --git a/vertica_python/vertica/cursor.py b/vertica_python/vertica/cursor.py
- index 4389951..c4a0381 100644
++index 4389951..e26d3c1 100644
 +--- a/vertica_python/vertica/cursor.py
 ++++ b/vertica_python/vertica/cursor.py
- @@ -1,4 +1,4 @@
++@@ -1,8 +1,10 @@
 +-from __future__ import absolute_import
 ++
 + 
 + import re
 + import logging
- @@ -57,7 +57,7 @@ class Cursor(object):
++ 
+++from builtins import str
+++
++ import vertica_python.errors as errors
++ 
++ import vertica_python.vertica.messages as messages
++@@ -30,7 +32,7 @@ class Cursor(object):
++     def __enter__(self):
++         return self
++ 
++-    def __exit__(self, type, value, traceback):
+++    def __exit__(self, type_, value, traceback):
++         self.close()
++ 
++     #
++@@ -57,19 +59,19 @@ class Cursor(object):
 +                 for key in parameters:
 +                     param = parameters[key]
 +                     # Make sure adapt() behaves properly
 +-                    if isinstance(param, unicode):
 ++                    if isinstance(param, str):
 +                         v = adapt(param.encode('utf8')).getquoted()
 +                     else:
 +                         v = adapt(param).getquoted()
- @@ -69,7 +69,7 @@ class Cursor(object):
++ 
++                     # Using a regex with word boundary to correctly handle params with similar names
++                     # such as :s and :start
++-                    match_str = u':%s\\b' % unicode(key)
+++                    match_str = u':%s\\b' % str(key)
++                     operation = re.sub(match_str, v.decode('utf-8'), operation, flags=re.UNICODE)
 +             elif isinstance(parameters, tuple):
 +                 tlist = []
 +                 for p in parameters:
 +-                    if isinstance(p, unicode):
 ++                    if isinstance(p, str):
 +                         tlist.append(adapt(p.encode('utf8')).getquoted())
 +                     else:
 +                         tlist.append(adapt(p).getquoted())
++@@ -89,7 +91,7 @@ class Cursor(object):
++             if isinstance(message, messages.ErrorResponse):
++                 raise errors.QueryError.from_error_response(message, operation)
++             elif isinstance(message, messages.RowDescription):
++-                self.description = map(lambda fd: Column(fd, self.unicode_error), message.fields)
+++                self.description = list(map(lambda fd: Column(fd, self.unicode_error), message.fields))
++             elif isinstance(message, messages.DataRow):
++                 break
++             elif isinstance(message, messages.ReadyForQuery):
 +diff --git a/vertica_python/vertica/messages/__init__.py b/vertica_python/vertica/messages/__init__.py
 +index d15ed69..7168246 100644
 +--- a/vertica_python/vertica/messages/__init__.py
 ++++ b/vertica_python/vertica/messages/__init__.py
 +@@ -1,39 +1,39 @@
 +-from backend_messages.authentication import Authentication
 +-from backend_messages.backend_key_data import BackendKeyData
 +-from backend_messages.bind_complete import BindComplete
 +-from backend_messages.close_complete import CloseComplete
 +-from backend_messages.command_complete import CommandComplete
 +-from backend_messages.copy_in_response import CopyInResponse
 +-from backend_messages.data_row import DataRow
 +-from backend_messages.empty_query_response import EmptyQueryResponse
 +-from backend_messages.error_response import ErrorResponse
 +-from backend_messages.no_data import NoData
 +-from backend_messages.notice_response import NoticeResponse
 +-from backend_messages.parameter_description import ParameterDescription
 +-from backend_messages.parameter_status import ParameterStatus
 +-from backend_messages.parse_complete import ParseComplete
 +-from backend_messages.portal_suspended import PortalSuspended
 +-from backend_messages.ready_for_query import ReadyForQuery
 +-from backend_messages.row_description import RowDescription
 +-from backend_messages.unknown import Unknown
 ++from .backend_messages.authentication import Authentication
 ++from .backend_messages.backend_key_data import BackendKeyData
 ++from .backend_messages.bind_complete import BindComplete
 ++from .backend_messages.close_complete import CloseComplete
 ++from .backend_messages.command_complete import CommandComplete
 ++from .backend_messages.copy_in_response import CopyInResponse
 ++from .backend_messages.data_row import DataRow
 ++from .backend_messages.empty_query_response import EmptyQueryResponse
 ++from .backend_messages.error_response import ErrorResponse
 ++from .backend_messages.no_data import NoData
 ++from .backend_messages.notice_response import NoticeResponse
 ++from .backend_messages.parameter_description import ParameterDescription
 ++from .backend_messages.parameter_status import ParameterStatus
 ++from .backend_messages.parse_complete import ParseComplete
 ++from .backend_messages.portal_suspended import PortalSuspended
 ++from .backend_messages.ready_for_query import ReadyForQuery
 ++from .backend_messages.row_description import RowDescription
 ++from .backend_messages.unknown import Unknown
 + 
 +-from frontend_messages.bind import Bind
 +-from frontend_messages.cancel_request import CancelRequest
 +-from frontend_messages.close import Close
 +-from frontend_messages.copy_data import CopyData
 +-from frontend_messages.copy_stream import CopyStream
 +-from frontend_messages.copy_done import CopyDone
 +-from frontend_messages.copy_fail import CopyFail
 +-from frontend_messages.describe import Describe
 +-from frontend_messages.execute import Execute
 +-from frontend_messages.flush import Flush
 +-from frontend_messages.parse import Parse
 +-from frontend_messages.password import Password
 +-from frontend_messages.query import Query
 +-from frontend_messages.ssl_request import SslRequest
 +-from frontend_messages.startup import Startup
 +-from frontend_messages.sync import Sync
 +-from frontend_messages.terminate import Terminate
 ++from .frontend_messages.bind import Bind
 ++from .frontend_messages.cancel_request import CancelRequest
 ++from .frontend_messages.close import Close
 ++from .frontend_messages.copy_data import CopyData
 ++from .frontend_messages.copy_stream import CopyStream
 ++from .frontend_messages.copy_done import CopyDone
 ++from .frontend_messages.copy_fail import CopyFail
 ++from .frontend_messages.describe import Describe
 ++from .frontend_messages.execute import Execute
 ++from .frontend_messages.flush import Flush
 ++from .frontend_messages.parse import Parse
 ++from .frontend_messages.password import Password
 ++from .frontend_messages.query import Query
 ++from .frontend_messages.ssl_request import SslRequest
 ++from .frontend_messages.startup import Startup
 ++from .frontend_messages.sync import Sync
 ++from .frontend_messages.terminate import Terminate
 + 
 + __all__ = ["Authentication", "BackendKeyData", "BindComplete", "CloseComplete", "CommandComplete",
 +            "CopyInResponse", "DataRow", "EmptyQueryResponse", "ErrorResponse", "NoData", "NoticeResponse",
 +diff --git a/vertica_python/vertica/messages/backend_messages/authentication.py b/vertica_python/vertica/messages/backend_messages/authentication.py
- index 54add1a..6575207 100644
++index 54add1a..3e0a93e 100644
 +--- a/vertica_python/vertica/messages/backend_messages/authentication.py
 ++++ b/vertica_python/vertica/messages/backend_messages/authentication.py
 +@@ -1,4 +1,4 @@
 +-from __future__ import absolute_import
 ++
 + 
 + from struct import unpack
 + 
++@@ -27,4 +27,4 @@ class Authentication(BackendMessage):
++             self.auth_data = other
++ 
++ 
++-Authentication._message_id('R')
+++Authentication._message_id(b'R')
 +diff --git a/vertica_python/vertica/messages/backend_messages/backend_key_data.py b/vertica_python/vertica/messages/backend_messages/backend_key_data.py
- index 317d450..ce1ce52 100644
++index 317d450..d2f8316 100644
 +--- a/vertica_python/vertica/messages/backend_messages/backend_key_data.py
 ++++ b/vertica_python/vertica/messages/backend_messages/backend_key_data.py
 +@@ -1,4 +1,4 @@
 +-from __future__ import absolute_import
 ++
 + 
 + from struct import unpack
 + 
++@@ -13,4 +13,4 @@ class BackendKeyData(BackendMessage):
++         self.key = unpacked[1]
++ 
++ 
++-BackendKeyData._message_id('K')
+++BackendKeyData._message_id(b'K')
 +diff --git a/vertica_python/vertica/messages/backend_messages/bind_complete.py b/vertica_python/vertica/messages/backend_messages/bind_complete.py
- index 5d25e1d..e2510da 100644
++index 5d25e1d..12c352a 100644
 +--- a/vertica_python/vertica/messages/backend_messages/bind_complete.py
 ++++ b/vertica_python/vertica/messages/backend_messages/bind_complete.py
 +@@ -1,4 +1,4 @@
 +-from __future__ import absolute_import
 ++
 + 
 + from vertica_python.vertica.messages.message import BackendMessage
 + 
++@@ -7,4 +7,4 @@ class BindComplete(BackendMessage):
++     pass
++ 
++ 
++-BindComplete._message_id('2')
+++BindComplete._message_id(b'2')
 +diff --git a/vertica_python/vertica/messages/backend_messages/close_complete.py b/vertica_python/vertica/messages/backend_messages/close_complete.py
- index fea59dd..bf138c1 100644
++index fea59dd..4ff7ddf 100644
 +--- a/vertica_python/vertica/messages/backend_messages/close_complete.py
 ++++ b/vertica_python/vertica/messages/backend_messages/close_complete.py
 +@@ -1,4 +1,4 @@
 +-from __future__ import absolute_import
 ++
 + 
 + from vertica_python.vertica.messages.message import BackendMessage
 + 
++@@ -7,4 +7,4 @@ class CloseComplete(BackendMessage):
++     pass
++ 
++ 
++-CloseComplete._message_id('3')
+++CloseComplete._message_id(b'3')
 +diff --git a/vertica_python/vertica/messages/backend_messages/command_complete.py b/vertica_python/vertica/messages/backend_messages/command_complete.py
- index 92873f2..ab0be2c 100644
++index 92873f2..802577c 100644
 +--- a/vertica_python/vertica/messages/backend_messages/command_complete.py
 ++++ b/vertica_python/vertica/messages/backend_messages/command_complete.py
 +@@ -1,4 +1,4 @@
 +-from __future__ import absolute_import
 ++
 + 
 + import re
 + 
++@@ -13,15 +13,15 @@ class CommandComplete(BackendMessage):
++ 
++         data = unpack('{0}sx'.format(len(data) - 1), data)[0]
++ 
++-        if re.match("INSERT", data) is not None:
++-            splitstr = data.split(' ', 3)
+++        if re.match(b"INSERT", data) is not None:
+++            splitstr = data.split(b' ', 3)
++             self.tag = splitstr[0]
++             if len(splitstr) >= 2:
++                 self.oid = int(splitstr[1])
++             if len(splitstr) >= 3:
++                 self.rows = int(splitstr[2])
++-        elif re.match("(DELETE|UPDATE|MOVE|FETCH|COPY)", data) is not None:
++-            splitstr = data.split(' ', 2)
+++        elif re.match(b"(DELETE|UPDATE|MOVE|FETCH|COPY)", data) is not None:
+++            splitstr = data.split(b' ', 2)
++             self.tag = splitstr[0]
++             if len(splitstr) >= 2:
++                 self.rows = int(splitstr[1])
++@@ -29,4 +29,4 @@ class CommandComplete(BackendMessage):
++             self.tag = data
++ 
++ 
++-CommandComplete._message_id('C')
+++CommandComplete._message_id(b'C')
 +diff --git a/vertica_python/vertica/messages/backend_messages/copy_in_response.py b/vertica_python/vertica/messages/backend_messages/copy_in_response.py
- index 1566035..78ea2ca 100644
++index 1566035..71c2bc2 100644
 +--- a/vertica_python/vertica/messages/backend_messages/copy_in_response.py
 ++++ b/vertica_python/vertica/messages/backend_messages/copy_in_response.py
 +@@ -1,4 +1,4 @@
 +-from __future__ import absolute_import
 ++
 + 
 + from struct import unpack
 + 
++@@ -8,9 +8,9 @@ from vertica_python.vertica.messages.message import BackendMessage
++ class CopyInResponse(BackendMessage):
++ 
++     def __init__(self, data):
++-        values = unpack('!B{0}H'.format((len(data) - 1)/2), data)
+++        values = unpack('!B{0}H'.format((len(data) - 1)//2), data)
++         self.format = values[0]
++         self.column_formats = values[2::]
++ 
++ 
++-CopyInResponse._message_id('G')
+++CopyInResponse._message_id(b'G')
 +diff --git a/vertica_python/vertica/messages/backend_messages/data_row.py b/vertica_python/vertica/messages/backend_messages/data_row.py
- index 52eec1a..163b19d 100644
++index 52eec1a..8c7fbc5 100644
 +--- a/vertica_python/vertica/messages/backend_messages/data_row.py
 ++++ b/vertica_python/vertica/messages/backend_messages/data_row.py
- @@ -1,4 +1,4 @@
++@@ -1,5 +1,6 @@
 +-from __future__ import absolute_import
- +
 + 
+++
+++from builtins import range
 + from struct import unpack, unpack_from
 + 
- @@ -12,7 +12,7 @@ class DataRow(BackendMessage):
++ from vertica_python.vertica.messages.message import BackendMessage
++@@ -12,7 +13,7 @@ class DataRow(BackendMessage):
 +         field_count = unpack('!H', data[0:2])[0]
 +         pos = 2
 + 
 +-        for i in xrange(field_count):
 ++        for i in range(field_count):
 +             size = unpack_from('!I', data, pos)[0]
 + 
 +             if size == 4294967295:
++@@ -25,4 +26,4 @@ class DataRow(BackendMessage):
++             pos += (4 + max(size, 0))
++ 
++ 
++-DataRow._message_id('D')
+++DataRow._message_id(b'D')
 +diff --git a/vertica_python/vertica/messages/backend_messages/empty_query_response.py b/vertica_python/vertica/messages/backend_messages/empty_query_response.py
- index fbe68aa..3ba6a7d 100644
++index fbe68aa..9b3eb20 100644
 +--- a/vertica_python/vertica/messages/backend_messages/empty_query_response.py
 ++++ b/vertica_python/vertica/messages/backend_messages/empty_query_response.py
 +@@ -1,4 +1,4 @@
 +-from __future__ import absolute_import
 ++
 + 
 + from vertica_python.vertica.messages.message import BackendMessage
 + 
++@@ -7,4 +7,4 @@ class EmptyQueryResponse(BackendMessage):
++     pass
++ 
++ 
++-EmptyQueryResponse._message_id('I')
+++EmptyQueryResponse._message_id(b'I')
 +diff --git a/vertica_python/vertica/messages/backend_messages/error_response.py b/vertica_python/vertica/messages/backend_messages/error_response.py
- index 471c16e..5ad1065 100644
++index 471c16e..cf03e2a 100644
 +--- a/vertica_python/vertica/messages/backend_messages/error_response.py
 ++++ b/vertica_python/vertica/messages/backend_messages/error_response.py
 +@@ -1,4 +1,4 @@
 +-from __future__ import absolute_import
 ++
 + 
 + from vertica_python.vertica.messages.message import BackendMessage
 + from vertica_python.vertica.messages.backend_messages.notice_response import NoticeResponse
++@@ -8,4 +8,4 @@ class ErrorResponse(NoticeResponse, BackendMessage):
++     pass
++ 
++ 
++-ErrorResponse._message_id('E')
+++ErrorResponse._message_id(b'E')
 +diff --git a/vertica_python/vertica/messages/backend_messages/no_data.py b/vertica_python/vertica/messages/backend_messages/no_data.py
- index b9c3c7c..cb4030d 100644
++index b9c3c7c..78086ff 100644
 +--- a/vertica_python/vertica/messages/backend_messages/no_data.py
 ++++ b/vertica_python/vertica/messages/backend_messages/no_data.py
 +@@ -1,4 +1,4 @@
 +-from __future__ import absolute_import
 ++
 + 
 + from vertica_python.vertica.messages.message import BackendMessage
 + 
++@@ -7,4 +7,4 @@ class NoData(BackendMessage):
++     pass
++ 
++ 
++-NoData._message_id('n')
+++NoData._message_id(b'n')
 +diff --git a/vertica_python/vertica/messages/backend_messages/notice_response.py b/vertica_python/vertica/messages/backend_messages/notice_response.py
- index e0dc35c..4916fef 100644
++index e0dc35c..fadf7ff 100644
 +--- a/vertica_python/vertica/messages/backend_messages/notice_response.py
 ++++ b/vertica_python/vertica/messages/backend_messages/notice_response.py
- @@ -1,4 +1,4 @@
++@@ -1,6 +1,4 @@
 +-from __future__ import absolute_import
- +
-  
-  import string
 + 
++-import string
++ 
++ from struct import unpack_from
++ 
++@@ -10,18 +8,18 @@ from vertica_python.vertica.messages.message import BackendMessage
++ class NoticeResponse(BackendMessage):
++ 
++     FIELDS_DEFINITIONS = [
++-        {'type': 'q', 'name': "Internal Query", 'method': 'internal_query'},
++-        {'type': 'S', 'name': "Severity", 'method': 'severity'},
++-        {'type': 'M', 'name': "Message", 'method': 'message'},
++-        {'type': 'C', 'name': "Sqlstate", 'method': 'sqlstate'},
++-        {'type': 'D', 'name': "Detail", 'method': 'detail'},
++-        {'type': 'H', 'name': "Hint", 'method': 'hint'},
++-        {'type': 'P', 'name': "Position", 'method': 'position'},
++-        {'type': 'W', 'name': "Where", 'method': 'where'},
++-        {'type': 'p', 'name': "Internal Position", 'method': 'internal_position'},
++-        {'type': 'R', 'name': "Routine", 'method': 'routine'},
++-        {'type': 'F', 'name': "File", 'method': 'file'},
++-        {'type': 'L', 'name': "Line", 'method': 'line'}
+++        {'type': b'q', 'name': "Internal Query", 'method': 'internal_query'},
+++        {'type': b'S', 'name': "Severity", 'method': 'severity'},
+++        {'type': b'M', 'name': "Message", 'method': 'message'},
+++        {'type': b'C', 'name': "Sqlstate", 'method': 'sqlstate'},
+++        {'type': b'D', 'name': "Detail", 'method': 'detail'},
+++        {'type': b'H', 'name': "Hint", 'method': 'hint'},
+++        {'type': b'P', 'name': "Position", 'method': 'position'},
+++        {'type': b'W', 'name': "Where", 'method': 'where'},
+++        {'type': b'p', 'name': "Internal Position", 'method': 'internal_position'},
+++        {'type': b'R', 'name': "Routine", 'method': 'routine'},
+++        {'type': b'F', 'name': "File", 'method': 'file'},
+++        {'type': b'L', 'name': "Line", 'method': 'line'}
++     ]
++ 
++     def FIELDS(self):
++@@ -35,7 +33,7 @@ class NoticeResponse(BackendMessage):
++ 
++         pos = 0
++         while pos < len(data) - 1:
++-            null_byte = string.find(data, '\x00', pos)
+++            null_byte = data.find(b'\x00', pos)
++ 
++             # This will probably work
++             unpacked = unpack_from('c{0}sx'.format(null_byte - 1 - pos), data, pos)
++@@ -58,4 +56,4 @@ class NoticeResponse(BackendMessage):
++         return ', '.join(ordered)
++ 
++ 
++-NoticeResponse._message_id('N')
+++NoticeResponse._message_id(b'N')
 +diff --git a/vertica_python/vertica/messages/backend_messages/parameter_description.py b/vertica_python/vertica/messages/backend_messages/parameter_description.py
- index 0c0b9fb..d5ddac9 100644
++index 0c0b9fb..91113f1 100644
 +--- a/vertica_python/vertica/messages/backend_messages/parameter_description.py
 ++++ b/vertica_python/vertica/messages/backend_messages/parameter_description.py
 +@@ -1,4 +1,4 @@
 +-from __future__ import absolute_import
 ++
 + 
 + from struct import unpack, unpack_from
 + 
++@@ -14,4 +14,4 @@ class ParameterDescription(BackendMessage):
++         self.parameter_types = [Column.data_types[dtid] for dtid in parameter_type_ids]
++ 
++ 
++-ParameterDescription._message_id('t')
+++ParameterDescription._message_id(b't')
 +diff --git a/vertica_python/vertica/messages/backend_messages/parameter_status.py b/vertica_python/vertica/messages/backend_messages/parameter_status.py
- index 06c952a..7c32b24 100644
++index 06c952a..c96b4b2 100644
 +--- a/vertica_python/vertica/messages/backend_messages/parameter_status.py
 ++++ b/vertica_python/vertica/messages/backend_messages/parameter_status.py
- @@ -1,4 +1,4 @@
++@@ -1,6 +1,4 @@
 +-from __future__ import absolute_import
- +
 + 
-  import string
++-import string
 + 
++ from struct import unpack
++ 
++@@ -10,10 +8,10 @@ from vertica_python.vertica.messages.message import BackendMessage
++ class ParameterStatus(BackendMessage):
++ 
++     def __init__(self, data):
++-        null_byte = string.find(data, '\x00')
+++        null_byte = data.find(b'\x00')
++         unpacked = unpack('{0}sx{1}sx'.format(null_byte - 1, len(data) - null_byte - 1), data)
++         self.name = unpacked[0]
++         self.value = unpacked[1]
++ 
++ 
++-ParameterStatus._message_id('S')
+++ParameterStatus._message_id(b'S')
 +diff --git a/vertica_python/vertica/messages/backend_messages/parse_complete.py b/vertica_python/vertica/messages/backend_messages/parse_complete.py
- index ea3c1ab..d286714 100644
++index ea3c1ab..9e3664e 100644
 +--- a/vertica_python/vertica/messages/backend_messages/parse_complete.py
 ++++ b/vertica_python/vertica/messages/backend_messages/parse_complete.py
 +@@ -1,4 +1,4 @@
 +-from __future__ import absolute_import
 ++
 + 
 + from vertica_python.vertica.messages.message import BackendMessage
 + 
++@@ -7,4 +7,4 @@ class ParseComplete(BackendMessage):
++     pass
++ 
++ 
++-ParseComplete._message_id('1')
+++ParseComplete._message_id(b'1')
 +diff --git a/vertica_python/vertica/messages/backend_messages/portal_suspended.py b/vertica_python/vertica/messages/backend_messages/portal_suspended.py
- index 773f078..3b94325 100644
++index 773f078..52c2f8b 100644
 +--- a/vertica_python/vertica/messages/backend_messages/portal_suspended.py
 ++++ b/vertica_python/vertica/messages/backend_messages/portal_suspended.py
 +@@ -1,4 +1,4 @@
 +-from __future__ import absolute_import
 ++
 + 
 + from vertica_python.vertica.messages.message import BackendMessage
 + 
++@@ -7,4 +7,4 @@ class PortalSuspended(BackendMessage):
++     pass
++ 
++ 
++-PortalSuspended._message_id('s')
+++PortalSuspended._message_id(b's')
 +diff --git a/vertica_python/vertica/messages/backend_messages/ready_for_query.py b/vertica_python/vertica/messages/backend_messages/ready_for_query.py
- index 1c38a5a..c6640e7 100644
++index 1c38a5a..6d6fec2 100644
 +--- a/vertica_python/vertica/messages/backend_messages/ready_for_query.py
 ++++ b/vertica_python/vertica/messages/backend_messages/ready_for_query.py
 +@@ -1,4 +1,4 @@
 +-from __future__ import absolute_import
 ++
 + 
 + from struct import unpack
 + 
++@@ -8,13 +8,13 @@ from vertica_python.vertica.messages.message import BackendMessage
++ class ReadyForQuery(BackendMessage):
++ 
++     STATUSES = {
... 431 lines suppressed ...

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/python-vertica.git



More information about the Python-modules-commits mailing list