Runnable with both Python3 and Python2, with PyQt4 #2249

Open
kashikoibumi wants to merge 60 commits from kashikoibumi/py3 into v0.6
2 changed files with 22 additions and 5 deletions
Showing only changes of commit c3d083d142 - Show all commits

View File

@ -31,6 +31,7 @@ from helper_sql import sqlExecute, sqlQuery
from network import knownnodes, StoppableThread from network import knownnodes, StoppableThread
from six.moves import configparser, queue from six.moves import configparser, queue
from six.moves.reprlib import repr from six.moves.reprlib import repr
import six
from dbcompat import dbstr from dbcompat import dbstr
@ -518,9 +519,15 @@ class singleWorker(StoppableThread):
payload, TTL, log_prefix='(For onionpeer object)') payload, TTL, log_prefix='(For onionpeer object)')
inventoryHash = highlevelcrypto.calculateInventoryHash(payload) inventoryHash = highlevelcrypto.calculateInventoryHash(payload)
if six.PY2:
payload_buffer = buffer(payload)
tag_buffer = buffer(tag)
else: # assume six.PY3
payload_buffer = memoryview(payload)
tag_buffer = memoryview(tag)
state.Inventory[inventoryHash] = ( state.Inventory[inventoryHash] = (
objectType, streamNumber, buffer(payload), # noqa: F821 objectType, streamNumber, payload_buffer, # noqa: F821
embeddedTime, buffer(tag) # noqa: F821 embeddedTime, tag_buffer # noqa: F821
) )
self.logger.info( self.logger.info(
'sending inv (within sendOnionPeerObj function) for object: %s', 'sending inv (within sendOnionPeerObj function) for object: %s',

View File

@ -422,8 +422,12 @@ class BMProto(AdvancedDispatcher, ObjectTracker):
try: try:
self.object.checkObjectByType() self.object.checkObjectByType()
if six.PY2:
data_buffer = buffer(self.object.data)
else: # assume six.PY3
data_buffer = memoryview(self.object.data)
objectProcessorQueue.put(( objectProcessorQueue.put((
self.object.objectType, buffer(self.object.data))) # noqa: F821 self.object.objectType, data_buffer)) # noqa: F821
except BMObjectInvalidError: except BMObjectInvalidError:
BMProto.stopDownloadingObject(self.object.inventoryHash, True) BMProto.stopDownloadingObject(self.object.inventoryHash, True)
else: else:
@ -437,10 +441,16 @@ class BMProto(AdvancedDispatcher, ObjectTracker):
state.Dandelion.removeHash( state.Dandelion.removeHash(
self.object.inventoryHash, "cycle detection") self.object.inventoryHash, "cycle detection")
if six.PY2:
object_buffer = buffer(self.payload[objectOffset:])
tag_buffer = buffer(self.object.tag)
else: # assume six.PY3
object_buffer = memoryview(self.payload[objectOffset:])
tag_buffer = memoryview(self.object.tag)
state.Inventory[self.object.inventoryHash] = ( state.Inventory[self.object.inventoryHash] = (
self.object.objectType, self.object.streamNumber, self.object.objectType, self.object.streamNumber,
buffer(self.payload[objectOffset:]), self.object.expiresTime, # noqa: F821 object_buffer, self.object.expiresTime, # noqa: F821
buffer(self.object.tag) # noqa: F821 tag_buffer # noqa: F821
) )
self.handleReceivedObject( self.handleReceivedObject(
self.object.streamNumber, self.object.inventoryHash) self.object.streamNumber, self.object.inventoryHash)