Fix from_dict for PyPy
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# capnp.pyx
|
||||
# distutils: language = c++
|
||||
# distutils: extra_compile_args = --std=c++11 -fpermissive
|
||||
# distutils: libraries = capnpc
|
||||
# distutils: libraries = capnpc capnp
|
||||
# cython: c_string_type = str
|
||||
# cython: c_string_encoding = default
|
||||
# cython: embedsignature = True
|
||||
@@ -447,12 +447,13 @@ cdef _to_dict(msg):
|
||||
|
||||
import collections as _collections
|
||||
cdef _from_dict_helper(msg, field, d):
|
||||
if isinstance(d, dict):
|
||||
d_type = type(d)
|
||||
if d_type is dict:
|
||||
sub_msg = getattr(msg, field)
|
||||
for key, val in d.iteritems():
|
||||
if key != 'which':
|
||||
_from_dict_helper(sub_msg, key, val)
|
||||
elif isinstance(d, _collections.Iterable) and not isinstance(d, basestring):
|
||||
elif d_type is list and not isinstance(d, basestring):
|
||||
l = msg.init(field, len(d))
|
||||
for i in range(len(d)):
|
||||
if isinstance(d[i], dict):
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
# schema.capnp.cpp.pyx
|
||||
# distutils: language = c++
|
||||
# distutils: extra_compile_args = --std=c++11
|
||||
# distutils: libraries = capnpc
|
||||
from schema_cpp cimport Node, Data, StructNode, EnumNode
|
||||
|
||||
from libc.stdint cimport *
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# schema.capnp.cpp.pyx
|
||||
# distutils: language = c++
|
||||
# distutils: extra_compile_args = --std=c++11
|
||||
# distutils: libraries = capnp
|
||||
# distutils: libraries = capnpc capnp
|
||||
|
||||
from libc.stdint cimport *
|
||||
from capnp_cpp cimport DynamicOrphan
|
||||
|
||||
@@ -38,7 +38,6 @@ def test_roundtrip_bytes(all_types):
|
||||
msg = all_types.TestAllTypes.from_bytes(message_bytes)
|
||||
test_regression.check_all_types(msg)
|
||||
|
||||
@pytest.mark.skipif("platform.python_implementation() == 'PyPy'")
|
||||
def test_roundtrip_dict(all_types):
|
||||
msg = all_types.TestAllTypes.new_message()
|
||||
test_regression.init_all_types(msg)
|
||||
|
||||
Reference in New Issue
Block a user