Remove dead helpers

This commit is contained in:
Adeeb Shihadeh
2026-09-21 19:36:27 -07:00
parent 899416423f
commit 384040e094
11 changed files with 17 additions and 192 deletions

View File

@@ -24,7 +24,8 @@ tests, docs, dependencies, and unsupported-platform CI were removed too.
Also removed are generated per-schema `Reader`/`Builder` classes, synthetic Also removed are generated per-schema `Reader`/`Builder` classes, synthetic
`.Union` enums, `_has_by_field`/`_init_by_field`, allocation-size overrides, `.Union` enums, `_has_by_field`/`_init_by_field`, allocation-size overrides,
`from_bytes(builder=True)`, and `to_dict` ordering/base64 options. Incoming base64 `from_bytes(builder=True)`, and `to_dict` ordering/base64 options. Incoming base64
Data values in `from_dict` remain supported. Data values in `from_dict` remain supported. Unused schema reset/metadata helpers,
schema equality, `_which_str`, and legacy exception arguments were removed too.
`remove_import_hook()` remains a no-op for cereal/opendbc compatibility. `remove_import_hook()` remains a no-op for cereal/opendbc compatibility.
This is intentionally not a full upstream API replacement. The import and This is intentionally not a full upstream API replacement. The import and

View File

@@ -10,7 +10,6 @@
# Adapted for use in pycapnp from pyzmq. See https://github.com/zeromq/pyzmq # Adapted for use in pycapnp from pyzmq. See https://github.com/zeromq/pyzmq
# for original project. # for original project.
import fileinput # noqa
import os import os
import shutil import shutil
import tarfile import tarfile
@@ -29,27 +28,8 @@ bundled_version = (1, 4, 0)
libcapnp_name = "capnproto-c++-%i.%i.%i.tar.gz" % (bundled_version) libcapnp_name = "capnproto-c++-%i.%i.%i.tar.gz" % (bundled_version)
libcapnp_url = "https://capnproto.org/" + libcapnp_name libcapnp_url = "https://capnproto.org/" + libcapnp_name
HERE = os.path.dirname(__file__)
ROOT = os.path.dirname(HERE)
def fetch_archive(savedir, url):
#
# Utilities
#
def untgz(archive):
"""Remove .tar.gz"""
return archive.replace(".tar.gz", "")
def localpath(*args):
"""construct an absolute path from a list relative to the root pycapnp directory"""
plist = [ROOT] + list(args)
return os.path.abspath(pjoin(*plist))
def fetch_archive(savedir, url, force=False):
"""download an archive to a specific location""" """download an archive to a specific location"""
req = urlopen(url) req = urlopen(url)
# Lookup filename # Lookup filename
@@ -57,7 +37,7 @@ def fetch_archive(savedir, url, force=False):
if not fname: if not fname:
fname = os.path.basename(url) fname = os.path.basename(url)
dest = pjoin(savedir, fname) dest = pjoin(savedir, fname)
if os.path.exists(dest) and not force: if os.path.exists(dest):
print("already have %s" % fname) print("already have %s" % fname)
return dest return dest
print("fetching %s into %s" % (url, savedir)) print("fetching %s into %s" % (url, savedir))

View File

@@ -7,7 +7,7 @@ from capnp.helpers.non_circular cimport (
c_reraise_kj_exception as reraise_kj_exception, c_reraise_kj_exception as reraise_kj_exception,
) )
from capnp.includes.schema_cpp cimport ( from capnp.includes.schema_cpp cimport (
Node, Data, Field as SchemaField, Enumerant as SchemaEnumerant, MessageBuilder, MessageReader, ReaderOptions, Node, Data, Field as SchemaField, Enumerant as SchemaEnumerant,
) )
from capnp.includes.types cimport * from capnp.includes.types cimport *
@@ -27,15 +27,12 @@ cdef extern from "capnp/common.h":
cdef extern from "kj/string.h" namespace " ::kj": cdef extern from "kj/string.h" namespace " ::kj":
cdef cppclass StringPtr nogil: cdef cppclass StringPtr nogil:
StringPtr() StringPtr()
StringPtr(char *)
StringPtr(char *, size_t) StringPtr(char *, size_t)
char* cStr() char* cStr()
size_t size() size_t size()
char* begin() char* begin()
cdef cppclass String nogil: cdef cppclass String nogil:
char* cStr() char* cStr()
size_t size()
char* begin()
cdef extern from "kj/exception.h" namespace " ::kj": cdef extern from "kj/exception.h" namespace " ::kj":
cdef cppclass Exception nogil: cdef cppclass Exception nogil:
@@ -51,13 +48,10 @@ cdef extern from "kj/string-tree.h" namespace " ::kj":
cdef extern from "kj/common.h" namespace " ::kj": cdef extern from "kj/common.h" namespace " ::kj":
cdef cppclass Maybe[T] nogil: cdef cppclass Maybe[T] nogil:
T& orDefault(T&) pass
cdef cppclass ArrayPtr[T] nogil: cdef cppclass ArrayPtr[T] nogil:
ArrayPtr() ArrayPtr()
ArrayPtr(T *, size_t size) ArrayPtr(T *, size_t size)
T* begin()
size_t size()
T& operator[](size_t index)
cdef extern from "capnp/schema.h" namespace " ::capnp": cdef extern from "capnp/schema.h" namespace " ::capnp":
cdef cppclass SchemaType" ::capnp::Type" nogil: cdef cppclass SchemaType" ::capnp::Type" nogil:
@@ -75,13 +69,10 @@ cdef extern from "capnp/schema.h" namespace " ::capnp":
StructSchema asStruct() except +reraise_kj_exception StructSchema asStruct() except +reraise_kj_exception
EnumSchema asEnum() except +reraise_kj_exception EnumSchema asEnum() except +reraise_kj_exception
ConstSchema asConst() except +reraise_kj_exception ConstSchema asConst() except +reraise_kj_exception
Schema getDependency(uint64_t id) except +reraise_kj_exception
cdef cppclass StructSchema(Schema) nogil: cdef cppclass StructSchema(Schema) nogil:
cppclass Field nogil: cppclass Field nogil:
SchemaField.Reader getProto() SchemaField.Reader getProto()
StructSchema getContainingStruct()
uint getIndex()
SchemaType getType() SchemaType getType()
cppclass FieldList nogil: cppclass FieldList nogil:
@@ -98,12 +89,10 @@ cdef extern from "capnp/schema.h" namespace " ::capnp":
Field getFieldByName(char * name) except +reraise_kj_exception Field getFieldByName(char * name) except +reraise_kj_exception
cbool operator == (StructSchema)
cdef cppclass EnumSchema nogil: cdef cppclass EnumSchema nogil:
cppclass Enumerant nogil: cppclass Enumerant nogil:
SchemaEnumerant.Reader getProto() SchemaEnumerant.Reader getProto()
EnumSchema getContainingEnum()
uint16_t getOrdinal() uint16_t getOrdinal()
cppclass EnumerantList nogil: cppclass EnumerantList nogil:
@@ -111,7 +100,6 @@ cdef extern from "capnp/schema.h" namespace " ::capnp":
Enumerant operator[](uint index) Enumerant operator[](uint index)
EnumerantList getEnumerants() EnumerantList getEnumerants()
Enumerant getEnumerantByName(char * name)
Node.Reader getProto() Node.Reader getProto()
cdef cppclass ListSchema nogil: cdef cppclass ListSchema nogil:
@@ -182,7 +170,6 @@ cdef extern from "capnp/dynamic.h" namespace " ::capnp":
uint size() uint size()
void set(uint index, DynamicValueForward.Reader value) except +reraise_kj_exception void set(uint index, DynamicValueForward.Reader value) except +reraise_kj_exception
DynamicValueForward.Builder init(uint index, uint size) except +reraise_kj_exception DynamicValueForward.Builder init(uint index, uint size) except +reraise_kj_exception
StructSchema getStructElementType'getSchema().getStructElementType'()
DynamicList.Reader asReader() except +reraise_kj_exception DynamicList.Reader asReader() except +reraise_kj_exception
cdef extern from "capnp/dynamic.h" namespace " ::capnp": cdef extern from "capnp/dynamic.h" namespace " ::capnp":
@@ -191,19 +178,9 @@ cdef extern from "capnp/dynamic.h" namespace " ::capnp":
Reader() Reader()
Reader(Void value) Reader(Void value)
Reader(cbool value) Reader(cbool value)
Reader(char value)
Reader(short value)
Reader(int value)
Reader(long value)
Reader(long long value) Reader(long long value)
Reader(unsigned char value)
Reader(unsigned short value)
Reader(unsigned int value)
Reader(unsigned long value)
Reader(unsigned long long value) Reader(unsigned long long value)
Reader(float value)
Reader(double value) Reader(double value)
Reader(char* value)
Reader(StringPtr value) Reader(StringPtr value)
Reader(DynamicList.Reader& value) Reader(DynamicList.Reader& value)
Reader(DynamicEnum value) Reader(DynamicEnum value)

View File

@@ -31,10 +31,7 @@ cdef extern from "capnp/schema.capnp.h" namespace " ::capnp::schema":
cppclass NestedNode nogil: cppclass NestedNode nogil:
cppclass Reader nogil: cppclass Reader nogil:
Text.Reader getName() Text.Reader getName()
uint64_t getId()
cppclass Reader nogil: cppclass Reader nogil:
Text.Reader getDisplayName()
uint64_t getScopeId()
uint64_t getId() uint64_t getId()
ListNestedNodeReader getNestedNodes() ListNestedNodeReader getNestedNodes()
bint isStruct() bint isStruct()

View File

@@ -45,7 +45,6 @@ cdef class _DynamicStructReader:
cpdef _get(self, field) cpdef _get(self, field)
cpdef _has(self, field) cpdef _has(self, field)
cpdef _DynamicEnumField _which(self) cpdef _DynamicEnumField _which(self)
cpdef _which_str(self)
cpdef _get_by_field(self, _StructSchemaField field) cpdef _get_by_field(self, _StructSchemaField field)
cpdef as_builder(self) cpdef as_builder(self)
@@ -68,7 +67,6 @@ cdef class _DynamicStructBuilder:
cpdef _get_by_field(self, _StructSchemaField field) cpdef _get_by_field(self, _StructSchemaField field)
cpdef _set_by_field(self, _StructSchemaField field, value) cpdef _set_by_field(self, _StructSchemaField field, value)
cpdef _DynamicEnumField _which(self) cpdef _DynamicEnumField _which(self)
cpdef _which_str(self)
cpdef as_reader(self) cpdef as_reader(self)
cpdef copy(self) cpdef copy(self)

View File

@@ -34,8 +34,6 @@ _CAPNP_VERSION_MINOR = capnp.CAPNP_VERSION_MINOR
_CAPNP_VERSION_MICRO = capnp.CAPNP_VERSION_MICRO _CAPNP_VERSION_MICRO = capnp.CAPNP_VERSION_MICRO
_CAPNP_VERSION = capnp.CAPNP_VERSION _CAPNP_VERSION = capnp.CAPNP_VERSION
cdef char _EMPTY_DATA_VIEW_SENTINEL = 0
cdef extern from "<kj/string.h>" namespace " ::kj": cdef extern from "<kj/string.h>" namespace " ::kj":
String strStructReader" ::kj::str"(C_DynamicStruct.Reader) String strStructReader" ::kj::str"(C_DynamicStruct.Reader)
String strStructBuilder" ::kj::str"(DynamicStruct_Builder) String strStructBuilder" ::kj::str"(DynamicStruct_Builder)
@@ -99,15 +97,13 @@ class KjException(Exception):
Type = _make_enum("Type", **{x: x for x in _Type.reverse_mapping.values()}) Type = _make_enum("Type", **{x: x for x in _Type.reverse_mapping.values()})
def __init__(self, message=None, nature=None, durability=None, wrapper=None, type=None): def __init__(self, message=None, wrapper=None, type=None):
if wrapper is not None: if wrapper is not None:
self.wrapper = wrapper self.wrapper = wrapper
self.message = str(wrapper) self.message = str(wrapper)
else: else:
self.wrapper = None self.wrapper = None
self.message = message self.message = message
self.nature = nature
self.durability = durability
self._type = type self._type = type
@property @property
@@ -172,17 +168,6 @@ cdef extern from "Python.h":
cdef int PyObject_GetBuffer(object, Py_buffer *view, int flags) cdef int PyObject_GetBuffer(object, Py_buffer *view, int flags)
cdef void PyBuffer_Release(Py_buffer *view) cdef void PyBuffer_Release(Py_buffer *view)
# Templated classes are weird in cython. I couldn't put it in a pxd header for some reason
cdef extern from "capnp/list.h" namespace " ::capnp":
cdef cppclass List[T]:
cppclass Reader:
T operator[](uint) except +reraise_kj_exception
uint size()
cppclass Builder:
T operator[](uint) except +reraise_kj_exception
uint size()
cdef extern from "<capnp/pretty-print.h>" namespace " ::capnp": cdef extern from "<capnp/pretty-print.h>" namespace " ::capnp":
StringTree printStructReader" ::capnp::prettyPrint"(C_DynamicStruct.Reader) except +reraise_kj_exception StringTree printStructReader" ::capnp::prettyPrint"(C_DynamicStruct.Reader) except +reraise_kj_exception
StringTree printStructBuilder" ::capnp::prettyPrint"(DynamicStruct_Builder) except +reraise_kj_exception StringTree printStructBuilder" ::capnp::prettyPrint"(DynamicStruct_Builder) except +reraise_kj_exception
@@ -196,14 +181,6 @@ cdef class _NodeReader:
self.thisptr = other self.thisptr = other
return self return self
property displayName:
def __get__(self):
return <char*>self.thisptr.getDisplayName().cStr()
property scopeId:
def __get__(self):
return self.thisptr.getScopeId()
property id: property id:
def __get__(self): def __get__(self):
return self.thisptr.getId() return self.thisptr.getId()
@@ -228,12 +205,6 @@ cdef class _NodeReader:
def __get__(self): def __get__(self):
return self.thisptr.isEnum() return self.thisptr.isEnum()
property node:
"""A property that returns the NodeReader as a DynamicStructReader."""
def __get__(self):
return _DynamicStructReader()._init(self.thisptr, self)
cdef class _NestedNodeReader: cdef class _NestedNodeReader:
cdef C_Node.NestedNode.Reader thisptr cdef C_Node.NestedNode.Reader thisptr
cdef init(self, C_Node.NestedNode.Reader other): cdef init(self, C_Node.NestedNode.Reader other):
@@ -243,9 +214,6 @@ cdef class _NestedNodeReader:
property name: property name:
def __get__(self): def __get__(self):
return <char*>self.thisptr.getName().cStr() return <char*>self.thisptr.getName().cStr()
property id:
def __get__(self):
return self.thisptr.getId()
cdef class _DynamicListReader: cdef class _DynamicListReader:
@@ -570,7 +538,6 @@ cdef _setDynamicField(_DynamicSetterClasses thisptr, field, value, parent):
.format(field, str(value), str(type(value)))) .format(field, str(value), str(type(value))))
# TODO: Is this function used by anyone? Can it be removed?
cdef _setDynamicFieldWithField(DynamicStruct_Builder thisptr, _StructSchemaField field, value, parent): cdef _setDynamicFieldWithField(DynamicStruct_Builder thisptr, _StructSchemaField field, value, parent):
cdef C_DynamicValue.Reader temp cdef C_DynamicValue.Reader temp
value_type = type(value) value_type = type(value)
@@ -620,13 +587,6 @@ cdef _setDynamicFieldWithField(DynamicStruct_Builder thisptr, _StructSchemaField
.format(field, str(value), str(type(value)))) .format(field, str(value), str(type(value))))
# TODO: Is this function used by anyone? Can it be removed?
cdef _DynamicListBuilder temp_list_b
cdef _DynamicListReader temp_list_r
cdef _DynamicStructBuilder temp_msg_b
cdef _DynamicStructReader temp_msg_r
cdef _to_dict(msg, bint verbose): cdef _to_dict(msg, bint verbose):
msg_type = type(msg) msg_type = type(msg)
if msg_type is _DynamicListBuilder: if msg_type is _DynamicListBuilder:
@@ -821,14 +781,6 @@ cdef class _DynamicStructReader:
cpdef _has(self, field): cpdef _has(self, field):
return self.thisptr.has(field) return self.thisptr.has(field)
cpdef _which_str(self):
try:
return <char *>helpers.fixMaybe(self.thisptr.which()).getProto().getName().cStr()
except RuntimeError as e:
if str(e) == "Member was null.":
raise KjException("Attempted to call which on a non-union type")
raise
cpdef _DynamicEnumField _which(self): cpdef _DynamicEnumField _which(self):
"""Returns the enum corresponding to the union in this struct """Returns the enum corresponding to the union in this struct
@@ -1004,14 +956,6 @@ cdef class _DynamicStructBuilder:
ptr = self.thisptr.init(field, size) ptr = self.thisptr.init(field, size)
return to_python_builder(ptr, self._parent) return to_python_builder(ptr, self._parent)
cpdef _which_str(self):
try:
return <char *>helpers.fixMaybe(self.thisptr.which()).getProto().getName().cStr()
except RuntimeError as e:
if str(e) == "Member was null.":
raise KjException("Attempted to call which on a non-union type")
raise
cpdef _DynamicEnumField _which(self): cpdef _DynamicEnumField _which(self):
"""Returns the enum corresponding to the union in this struct """Returns the enum corresponding to the union in this struct
@@ -1144,8 +1088,7 @@ cdef class _Schema:
cdef class _StructSchema(_Schema): cdef class _StructSchema(_Schema):
cdef C_StructSchema thisptr_child cdef C_StructSchema thisptr_child
cdef object __fieldnames, __union_fields, __non_union_fields, __fields, __getters cdef object __fieldnames, __union_fields, __non_union_fields, __fields
cdef list __fields_list
cdef _init_child(self, C_StructSchema other): cdef _init_child(self, C_StructSchema other):
self.thisptr_child = other self.thisptr_child = other
self._init(other) self._init(other)
@@ -1153,8 +1096,6 @@ cdef class _StructSchema(_Schema):
self.__union_fields = None self.__union_fields = None
self.__non_union_fields = None self.__non_union_fields = None
self.__fields = None self.__fields = None
self.__fields_list = None
self.__getters = None
return self return self
cdef C_StructSchema _thisptr(self): cdef C_StructSchema _thisptr(self):
@@ -1205,29 +1146,11 @@ cdef class _StructSchema(_Schema):
} }
return self.__fields return self.__fields
property fields_list:
"""All of the _StructSchemaField in this schema as a list"""
def __get__(self):
if self.__fields_list is not None:
return self.__fields_list
fieldlist = self._thisptr().getFields()
nfields = fieldlist.size()
self.__fields_list = [_StructSchemaField()._init(fieldlist[i], self) for i in xrange(nfields)]
return self.__fields_list
property node: property node:
"""The raw schema node""" """The raw schema node"""
def __get__(self): def __get__(self):
return _DynamicStructReader()._init(self._thisptr().getProto(), self) return _DynamicStructReader()._init(self._thisptr().getProto(), self)
def __richcmp__(_StructSchema self, _StructSchema other, mode):
if mode == 2:
return self._thisptr() == other._thisptr()
elif mode == 3:
return not (self._thisptr() == other._thisptr())
else:
raise NotImplementedError()
def __repr__(self): def __repr__(self):
return '<schema for %s>' % self.node.displayName return '<schema for %s>' % self.node.displayName
@@ -1330,18 +1253,18 @@ class _StructModuleWhich(_enum.Enum):
class _StructModule(object): class _StructModule(object):
def __init__(self, schema, name): def __init__(self, schema):
self.schema = schema self.schema = schema
# Add enums for union fields # Add enums for union fields
for field, raw_field in zip(schema.node.struct.fields, schema.fields_list): for field, raw_field in zip(schema.node.struct.fields, schema.fields.values()):
if field.which() == 'group': if field.which() == 'group':
name = field.name[0].upper() + field.name[1:] name = field.name[0].upper() + field.name[1:]
raw_schema = raw_field.schema raw_schema = raw_field.schema
field_schema = raw_schema.node.struct field_schema = raw_schema.node.struct
if field_schema.discriminantCount == 0: if field_schema.discriminantCount == 0:
sub_module = _StructModule(raw_schema, name) sub_module = _StructModule(raw_schema)
else: else:
mapping = [] mapping = []
for union_field in field_schema.fields: for union_field in field_schema.fields:
@@ -1409,7 +1332,7 @@ class _StructModule(object):
class _EnumModule(object): class _EnumModule(object):
def __init__(self, schema, name): def __init__(self, schema):
self.schema = schema self.schema = schema
for name, val in schema.enumerants.items(): for name, val in schema.enumerants.items():
setattr(self, name, val) setattr(self, name, val)
@@ -1510,7 +1433,7 @@ cdef class SchemaParser:
schema = nodeSchema.get_nested(node.name) schema = nodeSchema.get_nested(node.name)
proto = schema.get_proto() proto = schema.get_proto()
if proto.isStruct: if proto.isStruct:
local_module = _StructModule(schema.as_struct(), node.name) local_module = _StructModule(schema.as_struct())
module.__dict__[node.name] = local_module module.__dict__[node.name] = local_module
elif proto.isConst: elif proto.isConst:
@@ -1518,7 +1441,7 @@ cdef class SchemaParser:
elif proto.isInterface: elif proto.isInterface:
continue continue
elif proto.isEnum: elif proto.isEnum:
local_module = _EnumModule(schema.as_enum(), node.name) local_module = _EnumModule(schema.as_enum())
module.__dict__[node.name] = local_module module.__dict__[node.name] = local_module
@@ -1856,14 +1779,6 @@ cdef class _FlatArrayMessageReader(_MessageReader):
_global_schema_parser = None _global_schema_parser = None
def cleanup_global_schema_parser():
"""Unloads all of the schema from the current context"""
global _global_schema_parser
if _global_schema_parser:
del _global_schema_parser
_global_schema_parser = None
def load(file_name, display_name=None, imports=[]): def load(file_name, display_name=None, imports=[]):
"""Load a Cap'n Proto schema from a file """Load a Cap'n Proto schema from a file

View File

@@ -103,13 +103,6 @@ class build_libcapnp_ext(build_ext_c):
self.force_system_libcapnp = None self.force_system_libcapnp = None
self.libcapnp_url = None self.libcapnp_url = None
def finalize_options(self):
# print('The custom option for install is ', self.custom_option)
build_ext_c.finalize_options(self)
def build_extension(self, ext):
build_ext_c.build_extension(self, ext)
def run(self): # noqa: C901 def run(self): # noqa: C901
if self.force_bundled_libcapnp: if self.force_bundled_libcapnp:
need_build = True need_build = True

View File

@@ -1,5 +1,4 @@
import os import os
import platform
import tempfile import tempfile
import pytest import pytest
@@ -59,10 +58,6 @@ def test_large_read_multiple_bytes(test_capnp):
pass pass
@pytest.mark.skipif(
platform.python_implementation() == "PyPy",
reason="PyPy memoryview support is limited",
)
def test_large_read_mutltiple_bytes_memoryview(test_capnp): def test_large_read_mutltiple_bytes_memoryview(test_capnp):
data = get_two_adjacent_messages(test_capnp) data = get_two_adjacent_messages(test_capnp)
for m in test_capnp.Msg.read_multiple_bytes(memoryview(data)): for m in test_capnp.Msg.read_multiple_bytes(memoryview(data)):

View File

@@ -4,15 +4,9 @@ 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():
@@ -351,10 +345,7 @@ def check_all_types(reader):
assert subReader.textField == "" assert subReader.textField == ""
# This assertion highlights the encoding we expect to see here, since # This assertion highlights the encoding we expect to see here, since
# otherwise this appears a bit magical... # otherwise this appears a bit magical...
if EXPECT_BYTES: assert len(subReader.textField) == 1
assert len(subReader.textField) == 3
else:
assert len(subReader.textField) == 1
assert subReader.dataField == b"qux" assert subReader.dataField == b"qux"

View File

@@ -8,7 +8,6 @@ import test_regression
import tempfile import tempfile
import pickle import pickle
import mmap import mmap
import sys
this_dir = os.path.dirname(__file__) this_dir = os.path.dirname(__file__)
@@ -27,10 +26,6 @@ def test_roundtrip_bytes(all_types):
test_regression.check_all_types(msg) test_regression.check_all_types(msg)
@pytest.mark.skipif(
sys.version_info[0] < 3,
reason="mmap doesn't implement the buffer interface under python 2.",
)
def test_roundtrip_bytes_mmap(all_types): def test_roundtrip_bytes_mmap(all_types):
msg = all_types.TestAllTypes.new_message() msg = all_types.TestAllTypes.new_message()
test_regression.init_all_types(msg) test_regression.init_all_types(msg)

View File

@@ -2,7 +2,6 @@ import pytest
import capnp import capnp
import os import os
import tempfile import tempfile
import sys
from capnp.lib.capnp import KjException from capnp.lib.capnp import KjException
@@ -42,9 +41,6 @@ def test_which_builder(addressbook):
with pytest.raises(KjException): with pytest.raises(KjException):
addresses._which() addresses._which()
with pytest.raises(KjException):
addresses._which_str()
with pytest.raises(KjException): with pytest.raises(KjException):
addresses.which addresses.which
@@ -78,9 +74,6 @@ def test_which_reader(addressbook):
bob = people[1] bob = people[1]
assert bob.employment.which == "unemployed" assert bob.employment.which == "unemployed"
with pytest.raises(KjException):
addresses._which_str()
with pytest.raises(KjException): with pytest.raises(KjException):
addresses._which() addresses._which()
@@ -88,10 +81,6 @@ def test_which_reader(addressbook):
addresses.which addresses.which
@pytest.mark.skipif(
capnp.version.LIBCAPNP_VERSION < 5000,
reason="Using ints as enums requires v0.5.0+ of the C++ capnp library",
)
def test_enum(addressbook): def test_enum(addressbook):
addresses = addressbook.AddressBook.new_message() addresses = addressbook.AddressBook.new_message()
people = addresses.init("people", 2) people = addresses.init("people", 2)
@@ -150,14 +139,8 @@ def test_null_str(all_types):
def test_unicode_str(all_types): def test_unicode_str(all_types):
msg = all_types.TestAllTypes.new_message() msg = all_types.TestAllTypes.new_message()
if sys.version_info[0] == 2: msg.textField = "fæoo"
msg.textField = "f\u00e6oo".encode("utf-8") assert msg.textField == "fæoo"
assert msg.textField.decode("utf-8") == "f\u00e6oo"
else:
msg.textField = "f\u00e6oo"
assert msg.textField == "f\u00e6oo"
def test_new_message(all_types): def test_new_message(all_types):