Skip to content

Commit ac04ead

Browse files
committed
Merge pull request #95 from tvincentNuoDB/master
More compliance for Python 3
2 parents 979c80d + 0228b88 commit ac04ead

File tree

9 files changed

+55
-32
lines changed

9 files changed

+55
-32
lines changed

pynuodb/connection.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class Connection(object):
5959
auto_commit (setter) -- Sets the value of auto_commit on the database.
6060
"""
6161

62-
from .exception import Warning, Error, InterfaceError, DatabaseError, DataError, \
62+
from .exception import Warning, Error, InterfaceError, DatabaseError, \
6363
OperationalError, IntegrityError, InternalError, \
6464
ProgrammingError, NotSupportedError
6565

pynuodb/crypt.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ def fromByteString(byteStr):
103103
return result
104104

105105

106-
class RemoteGroup:
106+
class RemoteGroup(object):
107107

108108
defaultPrime = "EEAF0AB9ADB38DD69C33F80AFA8FC5E86072618775FF3C0B9EA2314C" + \
109109
"9C256576D674DF7496EA81D3383B4813D692C6E0E0D5D8E250B98BE4" + \
@@ -144,7 +144,7 @@ def getGenerator(self):
144144
def getK(self):
145145
return self.__k
146146

147-
class RemotePassword:
147+
class RemotePassword(object):
148148

149149
def __init__(self):
150150
self.__group = RemoteGroup()
@@ -258,7 +258,7 @@ def computeSessionKey(self, clientKey, verifier):
258258

259259
return md.digest()
260260

261-
class RC4Cipher:
261+
class RC4Cipher(object):
262262

263263
def __init__(self, key):
264264
if systemVersion == '3':
@@ -285,15 +285,16 @@ def transform(self, data):
285285
if type(data) is bytes:
286286
data.decode("latin-1")
287287
for char in data:
288-
288+
if type(char) is int:
289+
char = chr(char)
289290
self.__idx1 = (self.__idx1 + 1) % 256
290291
self.__idx2 = (self.__idx2 + state[self.__idx1]) % 256
291292
state[self.__idx1], state[self.__idx2] = state[self.__idx2], state[self.__idx1]
292293
cipherByte = ord(char) ^ state[(state[self.__idx1] + state[self.__idx2]) % 256]
293294
transformed.append(chr(cipherByte))
294295
return ''.join(transformed)
295296

296-
class NoCipher:
297+
class NoCipher(object):
297298

298299
def __init__(self):
299300
pass

pynuodb/encodedsession.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import uuid
1010
import struct
1111
import decimal
12+
import sys
1213

1314
from .crypt import toByteString, fromByteString, toSignedByteString, fromSignedByteString, NoCipher
1415
from .session import Session, SessionException
@@ -19,6 +20,8 @@
1920
from .statement import Statement, PreparedStatement, ExecutionResult
2021
from .result_set import ResultSet
2122

23+
systemVersion = sys.version[0]
24+
2225
class EncodedSession(Session):
2326
"""Class for representing an encoded session with the database.
2427
@@ -437,13 +440,17 @@ def putOpaque(self, value):
437440
packed = chr(protocol.OPAQUELEN0 + length) + data
438441
else:
439442
lengthStr = toByteString(length)
443+
if systemVersion is '3':
444+
data = data.decode('latin-1')
440445
packed = chr(protocol.OPAQUECOUNT1 - 1 + len(lengthStr)) + lengthStr + data
441446
self.__output += packed
442447
return self
443448

444449
def putDouble(self, value):
445450
"""Appends a Double to the message."""
446451
valueStr = struct.pack('!d', value)
452+
if systemVersion is '3':
453+
valueStr = valueStr.decode('latin-1')
447454
packed = chr(protocol.DOUBLELEN0 + len(valueStr)) + valueStr
448455
self.__output += packed
449456
return self
@@ -614,6 +621,8 @@ def getDouble(self):
614621
if typeCode < protocol.DOUBLELEN8:
615622
for i in range(0, protocol.DOUBLELEN8 - typeCode):
616623
test = test + chr(0)
624+
if systemVersion is '3':
625+
return struct.unpack('!d', bytes(test, 'latin-1'))
617626
return struct.unpack('!d', test)[0]
618627

619628
raise DataError('Not a double')

pynuodb/entity.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ def shutdown(self, graceful=True):
260260
graceful -- (default True) means that the database will first
261261
be quiesced and then shutdown.
262262
"""
263-
for database in self.__databases.itervalues():
263+
for database in list(self.__databases.values()):
264264
database.shutdown(graceful)
265265

266266
def message_received(self, root):
@@ -441,7 +441,7 @@ def _send_management_message(self, message, peer, process):
441441
self.__session.send(ElementTree.tostring(root))
442442

443443

444-
class Peer:
444+
class Peer(object):
445445
"""Represents a peer (or host) in the domain."""
446446

447447
def __init__(self, domain, address, agent_id, broker=False, port=48004, hostname=None, version=None):
@@ -760,7 +760,7 @@ def _get_normalized_addr(self):
760760
self.__inet_sock_addr = inet_sock_addr
761761
return self.__inet_sock_addr
762762

763-
class Database:
763+
class Database(object):
764764

765765
"""Represents a NuoDB database."""
766766

@@ -861,7 +861,7 @@ def shutdown(self, graceful=True):
861861
failure_count = 0
862862
failure_text = ""
863863

864-
for process in self.__processes.values():
864+
for process in list(self.__processes.values()):
865865
if process.is_transactional:
866866
try:
867867
if graceful:
@@ -873,7 +873,7 @@ def shutdown(self, graceful=True):
873873
failure_count = failure_count + 1
874874
failure_text = failure_text + str(e) + "\n"
875875

876-
for process in self.__processes.values():
876+
for process in list(self.__processes.values()):
877877
if not process.is_transactional:
878878
try:
879879
if graceful:
@@ -950,7 +950,7 @@ def __wait_for_status(self, status, wait_seconds):
950950

951951
return False
952952

953-
class Process:
953+
class Process(object):
954954

955955
"""Represents a NuoDB process (TE or SM)"""
956956

@@ -1138,7 +1138,7 @@ def query(self, query_type, msg_body=None):
11381138
return queryEngine(self.address, self.port, query_type, pwd, msg_body)
11391139

11401140

1141-
class Template:
1141+
class Template(object):
11421142
success_message = "Success"
11431143

11441144
@staticmethod

pynuodb/protocol.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,10 @@
225225
INVALID_FIELD = -54
226226
INVALID_INDEX_NULL = -55
227227
INVALID_OPERATION = -56
228+
INVALID_STATISTICS = -57
229+
INVALID_GENERATOR = -58
230+
FINAL_ENUM_MEMBER_IS_UNUSED = -59
231+
228232

229233
DATA_ERRORS = {COMPILE_ERROR,
230234
RUNTIME_ERROR,

pynuodb/session.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def __str__(self):
6363
return repr(self.__value)
6464

6565

66-
class Session:
66+
class Session(object):
6767

6868
__AUTH_REQ = "<Authorize TargetService=\"%s\" Type=\"SRP\"/>"
6969
__SRP_REQ = "<SRPRequest ClientKey=\"%s\" Cipher=\"RC4\" Username=\"%s\"/>" #Why is this hard coded...
@@ -246,6 +246,7 @@ def __readFully(self, msgLength):
246246
else:
247247
msg = msg + received
248248
msgLength = msgLength - len(received)
249+
249250
return msg
250251

251252
def close(self, force=False):
@@ -312,7 +313,7 @@ def close(self):
312313
self.__session.close(force=True)
313314

314315

315-
class BaseListener:
316+
class BaseListener(object):
316317

317318
def message_received(self, root):
318319
pass

pynuodb/util.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def message_received(self, root):
5252
print(ElementTree.tostring(root))
5353

5454

55-
class EngineMonitor:
55+
class EngineMonitor(object):
5656

5757
def __init__(self, monitor, session):
5858
self.__monitor = monitor

tests/nuodb_basic_test.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def test_numeric_types(self):
4545
cursor.execute("select * from typetest order by id desc limit 1")
4646
row = cursor.fetchone()
4747

48-
for i in xrange(1, len(row)):
48+
for i in range(1, len(row)):
4949
self.assertEqual(row[i], 0)
5050

5151
finally:
@@ -71,7 +71,7 @@ def test_double_precision(self):
7171
cursor.execute("select * from typetest order by id desc limit 1")
7272
row = cursor.fetchone()
7373

74-
for i in xrange(1, len(row)):
74+
for i in range(1, len(row)):
7575
self.assertEqual(row[i], test_vals[i - 1])
7676

7777
finally:
@@ -95,7 +95,7 @@ def test_param_numeric_types(self):
9595
cursor.execute("select * from typetest order by id desc limit 1")
9696
row = cursor.fetchone()
9797

98-
for i in xrange(1, len(row)):
98+
for i in range(1, len(row)):
9999
self.assertEqual(row[i], test_vals[i - 1])
100100

101101
finally:
@@ -119,7 +119,7 @@ def test_param_numeric_types_pos(self):
119119
cursor.execute("select * from typetest order by id desc limit 1")
120120
row = cursor.fetchone()
121121

122-
for i in xrange(1, len(row)):
122+
for i in range(1, len(row)):
123123
self.assertEqual(row[i], test_vals[i - 1])
124124

125125
finally:
@@ -202,7 +202,7 @@ def test_param_numeric_types_neg(self):
202202
cursor.execute("select * from typetest order by id desc limit 1")
203203
row = cursor.fetchone()
204204

205-
for i in xrange(1, len(row)):
205+
for i in range(1, len(row)):
206206
self.assertEqual(row[i], test_vals[i - 1])
207207

208208
finally:
@@ -353,7 +353,7 @@ def test_string_types(self):
353353
cursor.execute("select * from typetest order by id desc limit 1")
354354
row = cursor.fetchone()
355355

356-
for i in xrange(1, len(row)):
356+
for i in range(1, len(row)):
357357
self.assertEqual(row[i], '')
358358

359359
finally:
@@ -379,7 +379,7 @@ def test_param_string_types(self):
379379
cursor.execute("select * from typetest order by id desc limit 1")
380380
row = cursor.fetchone()
381381

382-
for i in xrange(1, len(row)):
382+
for i in range(1, len(row)):
383383
self.assertEqual(row[i], test_vals[i-1])
384384

385385
finally:
@@ -407,7 +407,7 @@ def test_long_string_types(self):
407407
cursor.execute("select * from typetest order by id desc limit 1")
408408
row = cursor.fetchone()
409409

410-
for i in xrange(1, len(row)):
410+
for i in range(1, len(row)):
411411
self.assertEqual(row[i], test_vals[i-1])
412412

413413
finally:
@@ -432,7 +432,7 @@ def test_utf8_string_types(self):
432432
cursor.execute("select * from typetest order by id desc limit 1")
433433
row = cursor.fetchone()
434434

435-
for i in xrange(1, len(row)):
435+
for i in range(1, len(row)):
436436
self.assertEqual(row[i], test_vals[i-1])
437437

438438

@@ -638,7 +638,7 @@ def test_other_types(self):
638638
cursor.execute("select * from typetest order by id desc limit 1")
639639
row = cursor.fetchone()
640640

641-
for i in xrange(1, len(row)):
641+
for i in range(1, len(row)):
642642
self.assertEqual(row[i], test_vals[i-1])
643643
finally:
644644
try:
@@ -661,7 +661,7 @@ def test_param_other_types(self):
661661
cursor.execute("select * from typetest order by id desc limit 1")
662662
row = cursor.fetchone()
663663

664-
for i in xrange(1, len(row)):
664+
for i in range(1, len(row)):
665665
self.assertEqual(row[i], test_vals[i-1])
666666
finally:
667667
try:
@@ -825,7 +825,7 @@ def test_all_types(self):
825825
cursor.execute("select * from typetest order by id desc limit 1")
826826
row = cursor.fetchone()
827827

828-
for i in xrange(1, 3):
828+
for i in range(1, 3):
829829
self.assertEqual(row[i], vals[i - 1])
830830

831831
self.assertIsInstance(row[3], pynuodb.Timestamp)
@@ -849,7 +849,7 @@ def test_all_types(self):
849849
self.assertEqual(row[5].month, vals[4].month)
850850
self.assertEqual(row[5].day, vals[4].day)
851851

852-
for i in xrange(6, len(row)):
852+
for i in range(6, len(row)):
853853
self.assertEqual(row[i], vals[i - 1])
854854

855855
finally:

tests/nuodb_blob_test.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
from struct import *
55

66
import pynuodb
7+
import sys
78
from .nuodb_base import NuoBase
89

10+
systemVersion = sys.version[0]
911

1012
class NuoDBBlobTest(NuoBase):
1113
def test_blob_prepared(self):
@@ -16,15 +18,21 @@ def test_blob_prepared(self):
1618

1719
cursor.execute("SELECT ? FROM DUAL", [binary_data])
1820
row = cursor.fetchone()
19-
20-
array1 = unpack('hhl', row[0])
21+
22+
currentRow = row[0]
23+
if systemVersion is '3':
24+
currentRow = bytes(currentRow, 'latin-1')
25+
array1 = unpack('hhl', currentRow)
2126
self.assertEquals(len(array1), 3)
2227
self.assertEquals(array1[2], 3)
2328

2429
cursor.execute("SELECT ? FROM DUAL", [pynuodb.Binary(binary_data)])
2530
row = cursor.fetchone()
2631

27-
array2 = unpack('hhl', str(row[0]))
32+
currentRow = str(row[0])
33+
if systemVersion is '3':
34+
currentRow = bytes(currentRow, 'latin-1')
35+
array2 = unpack('hhl', currentRow)
2836
self.assertEquals(len(array2), 3)
2937
self.assertEquals(array2[2], 3)
3038

0 commit comments

Comments
 (0)