Fixing more python 3 unicode errors

This commit is contained in:
freemansw1 2016-04-18 22:43:57 -06:00
parent 91f230b45a
commit aae0d15bc0
6 changed files with 40 additions and 27 deletions

View file

@ -69,14 +69,13 @@ class ThriftClient:
def sendRequest(self, request, uri="/thrift"):
message = self.__dsm.serializeObject(request)
#message = message.decode('cp437')
self.__httpConn.connect()
self.__httpConn.request("POST", self.__uri + uri, message)
response = self.__httpConn.getresponse()
if (response.status != 200):
raise ThriftRequestException("Unable to post request to server")
rval = self.__dsm.deserializeBytes(response.read())
self.__httpConn.close()

View file

@ -75,6 +75,7 @@ pythonToThriftMap = {
#types.FloatType: TType.DOUBLE,
bool: TType.BOOL,
object: TType.STRUCT,
str: TType.STRING,
type(None): TType.VOID,
numpy.float32: SelfDescribingBinaryProtocol.FLOAT,
numpy.int32: TType.I32,
@ -151,13 +152,15 @@ class ThriftSerializationContext(object):
def deserializeMessage(self):
name = self.protocol.readStructBegin()
name = name.replace('_', '.')
#print(name)
name = name.replace(b'_', b'.')
bytes(name)
if name.isdigit():
obj = self._deserializeType(int(name))
return obj
elif name in adapters.classAdapterRegistry:
return adapters.classAdapterRegistry[name].deserialize(self)
elif name.find('$') > -1:
elif name.find(b'$') > -1:
# it's an inner class, we're going to hope it's an enum, treat it special
fieldName, fieldType, fieldId = self.protocol.readFieldBegin()
if fieldName != '__enumValue__':
@ -166,7 +169,7 @@ class ThriftSerializationContext(object):
self.protocol.readFieldEnd()
return obj
else:
clz = dsObjTypes[name]
clz = dsObjTypes[bytes.decode(name)]
obj = clz()
while self._deserializeField(name, obj):
@ -191,7 +194,8 @@ class ThriftSerializationContext(object):
# result = adapters.fieldAdapterRegistry[structname][fieldName].deserialize(self)
# else:
result = self._deserializeType(fieldType)
lookingFor = "set" + fieldName[0].upper() + fieldName[1:]
fn_str = bytes.decode(fieldName)
lookingFor = "set" + fn_str[0].upper() + fn_str[1:]
try:
setMethod = getattr(obj, lookingFor)
@ -244,13 +248,13 @@ class ThriftSerializationContext(object):
if pyt in pythonToThriftMap:
return pythonToThriftMap[pyt]
elif pyt.__module__.startswith('dynamicserialize.dstypes'):
return pythonToThriftMap[types.InstanceType]
return pythonToThriftMap[object]
else:
raise dynamicserialize.SerializationException("Don't know how to serialize object of type: " + str(pyt))
def serializeMessage(self, obj):
tt = self._lookupType(obj)
tt = self._lookupType(obj)
if tt == TType.STRUCT:
fqn = obj.__module__.replace('dynamicserialize.dstypes.', '')
if fqn in adapters.classAdapterRegistry:
@ -288,9 +292,11 @@ class ThriftSerializationContext(object):
self.protocol.writeStructEnd()
def _serializeField(self, fieldName, fieldType, fieldId, fieldValue):
#print("SERFIELD", fieldName, fieldType, fieldId, fieldValue)
self.protocol.writeFieldBegin(fieldName, fieldType, fieldId)
self._serializeType(fieldValue, fieldType)
self.protocol.writeFieldEnd()
#print(self.protocol)
def _serializeType(self, fieldValue, fieldType):
if fieldType in self.typeSerializationMethod:

View file

@ -55,7 +55,7 @@ class Level(object):
matcher = LEVEL_NAMING_REGEX.match(str(levelString))
if matcher is not None:
self.levelonevalue = numpy.float64(matcher.group(1))
self.masterLevel = MasterLevel.MasterLevel(matcher.group(3))
self.masterLevel = MasterLevel(matcher.group(3))
levelTwo = matcher.group(2)
if levelTwo:
self.leveltwovalue = numpy.float64(levelTwo)

View file

@ -40,7 +40,7 @@ import calendar
import datetime
import numpy
import time
import io
from six.moves import cStringIO as StringIO
from dynamicserialize.dstypes.java.util import Date
from dynamicserialize.dstypes.java.util import EnumSet
@ -114,7 +114,7 @@ class DataTime(object):
self.levelValue = numpy.float64(levelValue)
def __str__(self):
buffer = io.StringIO()
buffer = StringIO()
if self.refTime is not None:
refTimeInSecs = self.refTime.getTime() / 1000

View file

@ -204,7 +204,11 @@ class TBinaryProtocol(TProtocolBase):
def readI32(self):
buff = self.trans.readAll(4)
val, = unpack('!i', buff)
try:
val, = unpack('!i', buff)
except TypeError:
#str does not support the buffer interface
val, = unpack('!i', buff)
return val
def readI64(self):

View file

@ -17,7 +17,7 @@
# under the License.
#
from io import StringIO
from six import BytesIO
from struct import pack, unpack
from thrift.Thrift import TException
@ -52,9 +52,10 @@ class TTransportBase:
pass
def readAll(self, sz):
buff = ''
buff = b''
have = 0
while (have < sz):
#print(self)
chunk = self.read(sz - have)
have += len(chunk)
buff += chunk
@ -138,8 +139,8 @@ class TBufferedTransport(TTransportBase, CReadableTransport):
def __init__(self, trans, rbuf_size=DEFAULT_BUFFER):
self.__trans = trans
self.__wbuf = StringIO()
self.__rbuf = StringIO("")
self.__wbuf = BytesIO()
self.__rbuf = BytesIO("")
self.__rbuf_size = rbuf_size
def isOpen(self):
@ -156,7 +157,7 @@ class TBufferedTransport(TTransportBase, CReadableTransport):
if len(ret) != 0:
return ret
self.__rbuf = StringIO(self.__trans.read(max(sz, self.__rbuf_size)))
self.__rbuf = BytesIO(self.__trans.read(max(sz, self.__rbuf_size)))
return self.__rbuf.read(sz)
def write(self, buf):
@ -165,7 +166,7 @@ class TBufferedTransport(TTransportBase, CReadableTransport):
def flush(self):
out = self.__wbuf.getvalue()
# reset wbuf before write/flush to preserve state on underlying failure
self.__wbuf = StringIO()
self.__wbuf = BytesIO()
self.__trans.write(out)
self.__trans.flush()
@ -184,7 +185,7 @@ class TBufferedTransport(TTransportBase, CReadableTransport):
if len(retstring) < reqlen:
retstring += self.__trans.readAll(reqlen - len(retstring))
self.__rbuf = StringIO(retstring)
self.__rbuf = BytesIO(retstring)
return self.__rbuf
@ -203,9 +204,9 @@ class TMemoryBuffer(TTransportBase, CReadableTransport):
If value is set, this will be a transport for reading,
otherwise, it is for writing"""
if value is not None:
self._buffer = StringIO(value)
self._buffer = BytesIO(value)
else:
self._buffer = StringIO()
self._buffer = BytesIO()
def isOpen(self):
return not self._buffer.closed
@ -220,7 +221,10 @@ class TMemoryBuffer(TTransportBase, CReadableTransport):
return self._buffer.read(sz)
def write(self, buf):
self._buffer.write(buf)
try:
self._buffer.write(buf)
except TypeError:
self._buffer.write(buf.encode('cp437'))
def flush(self):
pass
@ -251,8 +255,8 @@ class TFramedTransport(TTransportBase, CReadableTransport):
def __init__(self, trans,):
self.__trans = trans
self.__rbuf = StringIO()
self.__wbuf = StringIO()
self.__rbuf = BytesIO()
self.__wbuf = BytesIO()
def isOpen(self):
return self.__trans.isOpen()
@ -274,7 +278,7 @@ class TFramedTransport(TTransportBase, CReadableTransport):
def readFrame(self):
buff = self.__trans.readAll(4)
sz, = unpack('!i', buff)
self.__rbuf = StringIO(self.__trans.readAll(sz))
self.__rbuf = BytesIO(self.__trans.readAll(sz))
def write(self, buf):
self.__wbuf.write(buf)
@ -283,7 +287,7 @@ class TFramedTransport(TTransportBase, CReadableTransport):
wout = self.__wbuf.getvalue()
wsz = len(wout)
# reset wbuf before write/flush to preserve state on underlying failure
self.__wbuf = StringIO()
self.__wbuf = BytesIO()
# N.B.: Doing this string concatenation is WAY cheaper than making
# two separate calls to the underlying socket object. Socket writes in
# Python turn out to be REALLY expensive, but it seems to do a pretty
@ -304,7 +308,7 @@ class TFramedTransport(TTransportBase, CReadableTransport):
while len(prefix) < reqlen:
self.readFrame()
prefix += self.__rbuf.getvalue()
self.__rbuf = StringIO(prefix)
self.__rbuf = BytesIO(prefix)
return self.__rbuf