@@ -679,7 +679,7 @@ cdef _setBytes(_DynamicSetterClasses thisptr, field, value):
|
|||||||
thisptr.set(field, temp)
|
thisptr.set(field, temp)
|
||||||
|
|
||||||
cdef _setBaseString(_DynamicSetterClasses thisptr, field, value):
|
cdef _setBaseString(_DynamicSetterClasses thisptr, field, value):
|
||||||
encoded_value = value.encode()
|
encoded_value = value.encode('utf-8')
|
||||||
cdef capnp.StringPtr temp_string = capnp.StringPtr(<char*>encoded_value, len(encoded_value))
|
cdef capnp.StringPtr temp_string = capnp.StringPtr(<char*>encoded_value, len(encoded_value))
|
||||||
cdef C_DynamicValue.Reader temp = C_DynamicValue.Reader(temp_string)
|
cdef C_DynamicValue.Reader temp = C_DynamicValue.Reader(temp_string)
|
||||||
thisptr.set(field, temp)
|
thisptr.set(field, temp)
|
||||||
@@ -690,7 +690,7 @@ cdef _setBytesField(DynamicStruct_Builder thisptr, _StructSchemaField field, val
|
|||||||
thisptr.setByField(field.thisptr, temp)
|
thisptr.setByField(field.thisptr, temp)
|
||||||
|
|
||||||
cdef _setBaseStringField(DynamicStruct_Builder thisptr, _StructSchemaField field, value):
|
cdef _setBaseStringField(DynamicStruct_Builder thisptr, _StructSchemaField field, value):
|
||||||
encoded_value = value.encode()
|
encoded_value = value.encode('utf-8')
|
||||||
cdef capnp.StringPtr temp_string = capnp.StringPtr(<char*>encoded_value, len(encoded_value))
|
cdef capnp.StringPtr temp_string = capnp.StringPtr(<char*>encoded_value, len(encoded_value))
|
||||||
cdef C_DynamicValue.Reader temp = C_DynamicValue.Reader(temp_string)
|
cdef C_DynamicValue.Reader temp = C_DynamicValue.Reader(temp_string)
|
||||||
thisptr.setByField(field.thisptr, temp)
|
thisptr.setByField(field.thisptr, temp)
|
||||||
@@ -1025,7 +1025,7 @@ cdef class _DynamicStructReader:
|
|||||||
try:
|
try:
|
||||||
return self._get(field)
|
return self._get(field)
|
||||||
except KjException as e:
|
except KjException as e:
|
||||||
raise e._to_python()
|
raise e._to_python(), None, _sys.exc_info()[2]
|
||||||
|
|
||||||
cpdef _get_by_field(self, _StructSchemaField field):
|
cpdef _get_by_field(self, _StructSchemaField field):
|
||||||
return to_python_reader(self.thisptr.getByField(field.thisptr), self._parent)
|
return to_python_reader(self.thisptr.getByField(field.thisptr), self._parent)
|
||||||
@@ -1225,7 +1225,7 @@ cdef class _DynamicStructBuilder:
|
|||||||
try:
|
try:
|
||||||
return self._get(field)
|
return self._get(field)
|
||||||
except KjException as e:
|
except KjException as e:
|
||||||
raise e._to_python()
|
raise e._to_python(), None, _sys.exc_info()[2]
|
||||||
|
|
||||||
cpdef _set(self, field, value):
|
cpdef _set(self, field, value):
|
||||||
_setDynamicField(self.thisptr, field, value, self._parent)
|
_setDynamicField(self.thisptr, field, value, self._parent)
|
||||||
@@ -1237,7 +1237,7 @@ cdef class _DynamicStructBuilder:
|
|||||||
try:
|
try:
|
||||||
self._set(field, value)
|
self._set(field, value)
|
||||||
except KjException as e:
|
except KjException as e:
|
||||||
raise e._to_python()
|
raise e._to_python(), None, _sys.exc_info()[2]
|
||||||
|
|
||||||
cpdef _has(self, field):
|
cpdef _has(self, field):
|
||||||
return self.thisptr.has(field)
|
return self.thisptr.has(field)
|
||||||
@@ -1456,7 +1456,7 @@ cdef class _DynamicStructPipeline:
|
|||||||
try:
|
try:
|
||||||
return self._get(field)
|
return self._get(field)
|
||||||
except KjException as e:
|
except KjException as e:
|
||||||
raise e._to_python()
|
raise e._to_python(), None, _sys.exc_info()[2]
|
||||||
|
|
||||||
property schema:
|
property schema:
|
||||||
"""A property that returns the _StructSchema object matching this reader"""
|
"""A property that returns the _StructSchema object matching this reader"""
|
||||||
@@ -1936,7 +1936,7 @@ cdef class _RemotePromise:
|
|||||||
try:
|
try:
|
||||||
return self._get(field)
|
return self._get(field)
|
||||||
except KjException as e:
|
except KjException as e:
|
||||||
raise e._to_python()
|
raise e._to_python(), None, _sys.exc_info()[2]
|
||||||
|
|
||||||
property schema:
|
property schema:
|
||||||
"""A property that returns the _StructSchema object matching this reader"""
|
"""A property that returns the _StructSchema object matching this reader"""
|
||||||
@@ -2039,7 +2039,7 @@ cdef class _DynamicCapabilityServer:
|
|||||||
try:
|
try:
|
||||||
return getattr(self.server, field)
|
return getattr(self.server, field)
|
||||||
except KjException as e:
|
except KjException as e:
|
||||||
raise e._to_python()
|
raise e._to_python(), None, _sys.exc_info()[2]
|
||||||
|
|
||||||
cdef class _DynamicCapabilityClient:
|
cdef class _DynamicCapabilityClient:
|
||||||
cdef C_DynamicCapability.Client thisptr
|
cdef C_DynamicCapability.Client thisptr
|
||||||
@@ -2121,7 +2121,7 @@ cdef class _DynamicCapabilityClient:
|
|||||||
raise AttributeError('Method named %s not found' % name)
|
raise AttributeError('Method named %s not found' % name)
|
||||||
return _partial(self._send, name)
|
return _partial(self._send, name)
|
||||||
except KjException as e:
|
except KjException as e:
|
||||||
raise e._to_python()
|
raise e._to_python(), None, _sys.exc_info()[2]
|
||||||
|
|
||||||
cpdef upcast(self, schema) except +reraise_kj_exception:
|
cpdef upcast(self, schema) except +reraise_kj_exception:
|
||||||
cdef _InterfaceSchema s
|
cdef _InterfaceSchema s
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ cpdef _set_{{field.name}}(self, value):
|
|||||||
if type(value) is bytes:
|
if type(value) is bytes:
|
||||||
temp_string = StringPtr(<char*>value, len(value))
|
temp_string = StringPtr(<char*>value, len(value))
|
||||||
else:
|
else:
|
||||||
encoded_value = value.encode()
|
encoded_value = value.encode('utf-8')
|
||||||
temp_string = StringPtr(<char*>encoded_value, len(encoded_value))
|
temp_string = StringPtr(<char*>encoded_value, len(encoded_value))
|
||||||
self.thisptr_child.set{{field.c_name}}(temp_string)
|
self.thisptr_child.set{{field.c_name}}(temp_string)
|
||||||
{% elif 'data' == field['type'] -%}
|
{% elif 'data' == field['type'] -%}
|
||||||
@@ -99,7 +99,7 @@ cpdef _set_{{field.name}}(self, value):
|
|||||||
if type(value) is bytes:
|
if type(value) is bytes:
|
||||||
temp_string = StringPtr(<char*>value, len(value))
|
temp_string = StringPtr(<char*>value, len(value))
|
||||||
else:
|
else:
|
||||||
encoded_value = value.encode()
|
encoded_value = value.encode('utf-8')
|
||||||
temp_string = StringPtr(<char*>encoded_value, len(encoded_value))
|
temp_string = StringPtr(<char*>encoded_value, len(encoded_value))
|
||||||
self.thisptr_child.set{{field.c_name}}(ArrayPtr[byte](<byte *>temp_string.begin(), temp_string.size()))
|
self.thisptr_child.set{{field.c_name}}(ArrayPtr[byte](<byte *>temp_string.begin(), temp_string.size()))
|
||||||
{% else -%}
|
{% else -%}
|
||||||
@@ -133,40 +133,6 @@ cdef _from_list(_DynamicListBuilder msg, list d):
|
|||||||
msg._set(count, val)
|
msg._set(count, val)
|
||||||
count += 1
|
count += 1
|
||||||
|
|
||||||
cdef DynamicValue.Reader to_dynamic_value(value):
|
|
||||||
cdef DynamicValue.Reader temp
|
|
||||||
cdef StringPtr temp_string
|
|
||||||
value_type = type(value)
|
|
||||||
|
|
||||||
if value_type is int or value_type is long:
|
|
||||||
if value < 0:
|
|
||||||
temp = DynamicValue.Reader(<long long>value)
|
|
||||||
else:
|
|
||||||
temp = DynamicValue.Reader(<unsigned long long>value)
|
|
||||||
elif value_type is float:
|
|
||||||
temp = DynamicValue.Reader(<double>value)
|
|
||||||
elif value_type is bool:
|
|
||||||
temp = DynamicValue.Reader(<cbool>value)
|
|
||||||
elif value_type is bytes:
|
|
||||||
temp_string = StringPtr(<char*>value, len(value))
|
|
||||||
temp = DynamicValue.Reader(temp_string)
|
|
||||||
elif isinstance(value, basestring):
|
|
||||||
encoded_value = value.encode()
|
|
||||||
temp_string = StringPtr(<char*>encoded_value, len(encoded_value))
|
|
||||||
temp = DynamicValue.Reader(temp_string)
|
|
||||||
elif value is None:
|
|
||||||
temp = DynamicValue.Reader(VOID)
|
|
||||||
elif value_type is _DynamicStructBuilder:
|
|
||||||
temp = _extract_dynamic_struct_builder(value)
|
|
||||||
elif value_type is _DynamicStructReader:
|
|
||||||
temp = _extract_dynamic_struct_reader(value)
|
|
||||||
elif value_type is _DynamicEnum:
|
|
||||||
temp = _extract_dynamic_enum(value)
|
|
||||||
else:
|
|
||||||
raise ValueError("Tried to convert value of: '{}' which is an unsupported type: '{}'".format(str(value), str(type(value))))
|
|
||||||
|
|
||||||
return temp
|
|
||||||
|
|
||||||
|
|
||||||
cdef extern from "{{file.filename}}.h":
|
cdef extern from "{{file.filename}}.h":
|
||||||
{%- for node in code.nodes %}
|
{%- for node in code.nodes %}
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -25,7 +25,7 @@
|
|||||||
uInt64Field = 345678901234567890,
|
uInt64Field = 345678901234567890,
|
||||||
float32Field = -1.25e-10,
|
float32Field = -1.25e-10,
|
||||||
float64Field = 345,
|
float64Field = 345,
|
||||||
textField = "baz",
|
textField = "\xe2\x98\x83",
|
||||||
dataField = "qux",
|
dataField = "qux",
|
||||||
structField = (
|
structField = (
|
||||||
voidField = void,
|
voidField = void,
|
||||||
|
|||||||
@@ -1,10 +1,19 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
import capnp
|
import capnp
|
||||||
import os
|
import os
|
||||||
import math
|
import math
|
||||||
|
import sys
|
||||||
|
|
||||||
this_dir = os.path.dirname(__file__)
|
this_dir = os.path.dirname(__file__)
|
||||||
|
|
||||||
|
if sys.version_info[0] < 3:
|
||||||
|
EXPECT_BYTES = True
|
||||||
|
else:
|
||||||
|
EXPECT_BYTES = False
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def addressbook():
|
def addressbook():
|
||||||
return capnp.load(os.path.join(this_dir, 'addressbook.capnp'))
|
return capnp.load(os.path.join(this_dir, 'addressbook.capnp'))
|
||||||
@@ -300,7 +309,7 @@ def init_all_types(builder):
|
|||||||
subBuilder.uInt64Field = 345678901234567890
|
subBuilder.uInt64Field = 345678901234567890
|
||||||
subBuilder.float32Field = -1.25e-10
|
subBuilder.float32Field = -1.25e-10
|
||||||
subBuilder.float64Field = 345
|
subBuilder.float64Field = 345
|
||||||
subBuilder.textField = "baz"
|
subBuilder.textField = b"\xe2\x98\x83".decode('utf-8') # This is u"☃", but py3.2 doesn't support u
|
||||||
subBuilder.dataField = b"qux"
|
subBuilder.dataField = b"qux"
|
||||||
subSubBuilder = subBuilder.structField
|
subSubBuilder = subBuilder.structField
|
||||||
subSubBuilder.textField = "nested"
|
subSubBuilder.textField = "nested"
|
||||||
@@ -390,7 +399,15 @@ def check_all_types(reader):
|
|||||||
assert subReader.uInt64Field == 345678901234567890
|
assert subReader.uInt64Field == 345678901234567890
|
||||||
assert_almost(subReader.float32Field, -1.25e-10)
|
assert_almost(subReader.float32Field, -1.25e-10)
|
||||||
assert subReader.float64Field == 345
|
assert subReader.float64Field == 345
|
||||||
assert subReader.textField == "baz"
|
|
||||||
|
assert subReader.textField == "☃"
|
||||||
|
# This assertion highlights the encoding we expect to see here, since
|
||||||
|
# otherwise this appears a bit magical...
|
||||||
|
if EXPECT_BYTES:
|
||||||
|
assert len(subReader.textField) == 3
|
||||||
|
else:
|
||||||
|
assert len(subReader.textField) == 1
|
||||||
|
|
||||||
assert subReader.dataField == b"qux"
|
assert subReader.dataField == b"qux"
|
||||||
|
|
||||||
subSubReader = subReader.structField
|
subSubReader = subReader.structField
|
||||||
|
|||||||
Reference in New Issue
Block a user