8 TaggedObject = collections.namedtuple(
16 def _make_tag_only_serializer(tag, expected_value):
20 assert to.instance == expected_value
25 _TAGS_TO_SERIALIZERS = {
26 TAG_NULL: _make_tag_only_serializer(TAG_NULL, None),
27 TAG_TRUE: _make_tag_only_serializer(TAG_TRUE, True),
28 TAG_FALSE: _make_tag_only_serializer(TAG_FALSE, False),
32 return _TAGS_TO_SERIALIZERS[to.tag](to)
34 def _make_tag_only_parser(tag, value):
36 return TaggedObject(tag = tag, instance = value)
41 TAG_NULL: _make_tag_only_parser(TAG_NULL, None),
42 TAG_TRUE: _make_tag_only_parser(TAG_TRUE, True),
43 TAG_FALSE: _make_tag_only_parser(TAG_FALSE, False),
47 if isinstance(b, bytes):
52 result = _TAGS_TO_PARSERS[tag](b)
56 if len(remainder) == 0:
59 raise Exception('Unable to parse remainder: {}'.format(remainder))