52
52
class Serializer(object):
53
53
"""Abstract object serialize/deserialize"""
54
55
def write_inventory(self, inv, f):
55
56
"""Write inventory to a file"""
56
elt = self._pack_inventory(inv)
57
self._write_element(elt, f)
57
raise NotImplementedError(self.write_inventory)
59
59
def write_inventory_to_string(self, inv):
60
return tostring(self._pack_inventory(inv)) + '\n'
62
def read_inventory_from_string(self, xml_string):
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
64
return self._unpack_inventory(fromstring(xml_string))
71
return self._unpack_inventory(fromstring(xml_string), revision_id)
65
72
except ParseError, e:
66
73
raise errors.UnexpectedInventoryFormat(e)
68
def read_inventory(self, f):
75
def read_inventory(self, f, revision_id=None):
70
return self._unpack_inventory(self._read_element(f))
77
return self._unpack_inventory(self._read_element(f),
71
79
except ParseError, e:
72
80
raise errors.UnexpectedInventoryFormat(e)