52
51
class Serializer(object):
53
52
"""Abstract object serialize/deserialize"""
55
53
def write_inventory(self, inv, f):
56
54
"""Write inventory to a file"""
57
raise NotImplementedError(self.write_inventory)
55
elt = self._pack_inventory(inv)
56
self._write_element(elt, f)
59
58
def write_inventory_to_string(self, inv):
60
raise NotImplementedError(self.write_inventory_to_string)
62
def read_inventory_from_string(self, xml_string, revision_id=None):
63
"""Read xml_string into an inventory object.
65
:param xml_string: The xml to read.
66
:param revision_id: If not-None, the expected revision id of the
67
inventory. Some serialisers use this to set the results' root
59
return tostring(self._pack_inventory(inv)) + '\n'
61
def read_inventory_from_string(self, xml_string):
71
return self._unpack_inventory(fromstring(xml_string), revision_id)
63
return self._unpack_inventory(fromstring(xml_string))
72
64
except ParseError, e:
73
65
raise errors.UnexpectedInventoryFormat(e)
75
def read_inventory(self, f, revision_id=None):
67
def read_inventory(self, f):
77
return self._unpack_inventory(self._read_element(f),
69
return self._unpack_inventory(self._read_element(f))
79
70
except ParseError, e:
80
71
raise errors.UnexpectedInventoryFormat(e)
164
155
elementtree.ElementTree._raise_serialization_error(text)
166
157
elementtree.ElementTree._escape_cdata = _escape_cdata
169
class SerializerRegistry(registry.Registry):
170
"""Registry for serializer objects"""
173
format_registry = SerializerRegistry()
174
format_registry.register_lazy('4', 'bzrlib.xml4', 'serializer_v4')
175
format_registry.register_lazy('5', 'bzrlib.xml5', 'serializer_v5')
176
format_registry.register_lazy('6', 'bzrlib.xml6', 'serializer_v6')
177
format_registry.register_lazy('7', 'bzrlib.xml7', 'serializer_v7')