Fixed issue where pickle helpers didnt use new from_bytes with context
- Added with context to benchmarks that use with_bytes
This commit is contained in:
@@ -35,13 +35,12 @@ def writeAddressBook():
|
|||||||
|
|
||||||
|
|
||||||
def printAddressBook(msg_bytes):
|
def printAddressBook(msg_bytes):
|
||||||
addressBook = addressbook.AddressBook.from_bytes(msg_bytes)
|
with addressbook.AddressBook.from_bytes(msg_bytes) as addressBook:
|
||||||
|
for person in addressBook.people:
|
||||||
for person in addressBook.people:
|
print(person.name, ":", person.email)
|
||||||
print(person.name, ":", person.email)
|
for phone in person.phones:
|
||||||
for phone in person.phones:
|
print(phone.type, ":", phone.number)
|
||||||
print(phone.type, ":", phone.number)
|
print()
|
||||||
print()
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
@@ -40,12 +40,11 @@ def writeAddressBook():
|
|||||||
|
|
||||||
@profile
|
@profile
|
||||||
def printAddressBook(msg_bytes):
|
def printAddressBook(msg_bytes):
|
||||||
addressBook = addressbook.AddressBook.from_bytes(msg_bytes)
|
with addressbook.AddressBook.from_bytes(msg_bytes) as addressBook:
|
||||||
|
for person in addressBook.people:
|
||||||
for person in addressBook.people:
|
person.name, person.email
|
||||||
person.name, person.email
|
for phone in person.phones:
|
||||||
for phone in person.phones:
|
phone.type, phone.number
|
||||||
phone.type, phone.number
|
|
||||||
|
|
||||||
|
|
||||||
@profile
|
@profile
|
||||||
|
|||||||
@@ -1099,7 +1099,8 @@ if getattr(_sys, 'subversion', [''])[0] == 'PyPy':
|
|||||||
from pickle_helper import _struct_reducer
|
from pickle_helper import _struct_reducer
|
||||||
else:
|
else:
|
||||||
def _struct_reducer(schema_id, data):
|
def _struct_reducer(schema_id, data):
|
||||||
return _global_schema_parser.modules_by_id[schema_id].from_bytes(data)
|
with _global_schema_parser.modules_by_id[schema_id].from_bytes(data) as msg:
|
||||||
|
return msg
|
||||||
|
|
||||||
|
|
||||||
cdef class _DynamicStructReader:
|
cdef class _DynamicStructReader:
|
||||||
|
|||||||
@@ -3,4 +3,5 @@ import capnp
|
|||||||
|
|
||||||
def _struct_reducer(schema_id, data):
|
def _struct_reducer(schema_id, data):
|
||||||
'Hack to deal with pypy not allowing reduce functions to be "built-in" methods (ie. compiled from a .pyx)'
|
'Hack to deal with pypy not allowing reduce functions to be "built-in" methods (ie. compiled from a .pyx)'
|
||||||
return capnp._global_schema_parser.modules_by_id[schema_id].from_bytes(data)
|
with capnp._global_schema_parser.modules_by_id[schema_id].from_bytes(data) as msg:
|
||||||
|
return msg
|
||||||
|
|||||||
@@ -13,7 +13,8 @@ import test_capnp # noqa: E402
|
|||||||
|
|
||||||
def decode(name):
|
def decode(name):
|
||||||
class_name = name[0].upper() + name[1:]
|
class_name = name[0].upper() + name[1:]
|
||||||
print(getattr(test_capnp, class_name).from_bytes(sys.stdin.read())._short_str())
|
with getattr(test_capnp, class_name).from_bytes(sys.stdin.read()) as msg:
|
||||||
|
print(msg._short_str())
|
||||||
|
|
||||||
|
|
||||||
def encode(name):
|
def encode(name):
|
||||||
|
|||||||
Reference in New Issue
Block a user