~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/xml8.py

Cleanup asserts

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 Canonical Ltd
 
1
# Copyright (C) 2005, 2006, 2007, 2008 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
24
24
    revision as _mod_revision,
25
25
    trace,
26
26
    )
27
 
from bzrlib.xml_serializer import (
28
 
    Element,
29
 
    SubElement,
30
 
    XMLSerializer,
31
 
    escape_invalid_chars,
32
 
    )
33
 
from bzrlib.inventory import InventoryEntry
 
27
from bzrlib.xml_serializer import SubElement, Element, Serializer
 
28
from bzrlib.inventory import ROOT_ID, Inventory, InventoryEntry
34
29
from bzrlib.revision import Revision
35
30
from bzrlib.errors import BzrError
36
31
 
144
139
    _to_escaped_map.clear()
145
140
 
146
141
 
147
 
class Serializer_v8(XMLSerializer):
 
142
class Serializer_v8(Serializer):
148
143
    """This serialiser adds rich roots.
149
144
 
150
145
    Its revision format number matches its inventory number.
165
160
        """Extension point for subclasses to check during serialisation.
166
161
 
167
162
        :param inv: An inventory about to be serialised, to be checked.
168
 
        :raises: AssertionError if an error has occurred.
 
163
        :raises: AssertionError if an error has occured.
169
164
        """
170
165
        if inv.revision_id is None:
171
 
            raise AssertionError("inv.revision_id is None")
 
166
            raise AssertionError()
172
167
        if inv.root.revision is None:
173
 
            raise AssertionError("inv.root.revision is None")
 
168
            raise AssertionError()
174
169
 
175
170
    def _check_cache_size(self, inv_size, entry_cache):
176
171
        """Check that the entry_cache is large enough.
346
341
            root.set('timezone', str(rev.timezone))
347
342
        root.text = '\n'
348
343
        msg = SubElement(root, 'message')
349
 
        msg.text = escape_invalid_chars(rev.message)[0]
 
344
        msg.text = rev.message
350
345
        msg.tail = '\n'
351
346
        if rev.parent_ids:
352
347
            pelts = SubElement(root, 'parents')
371
366
            prop_elt.tail = '\n'
372
367
        top_elt.tail = '\n'
373
368
 
374
 
    def _unpack_inventory(self, elt, revision_id=None, entry_cache=None,
375
 
                          return_from_cache=False):
 
369
    def _unpack_inventory(self, elt, revision_id=None, entry_cache=None):
376
370
        """Construct from XML Element"""
377
371
        if elt.tag != 'inventory':
378
372
            raise errors.UnexpectedInventoryFormat('Root tag is %r' % elt.tag)
385
379
            revision_id = cache_utf8.encode(revision_id)
386
380
        inv = inventory.Inventory(root_id=None, revision_id=revision_id)
387
381
        for e in elt:
388
 
            ie = self._unpack_entry(e, entry_cache=entry_cache,
389
 
                                    return_from_cache=return_from_cache)
 
382
            ie = self._unpack_entry(e, entry_cache=entry_cache)
390
383
            inv.add(ie)
391
384
        self._check_cache_size(len(inv), entry_cache)
392
385
        return inv
393
386
 
394
 
    def _unpack_entry(self, elt, entry_cache=None, return_from_cache=False):
 
387
    def _unpack_entry(self, elt, entry_cache=None):
395
388
        elt_get = elt.get
396
389
        file_id = elt_get('file_id')
397
390
        revision = elt_get('revision')
429
422
        if entry_cache is not None and revision is not None:
430
423
            key = (file_id, revision)
431
424
            try:
432
 
                # We copy it, because some operations may mutate it
 
425
                # We copy it, because some operatations may mutate it
433
426
                cached_ie = entry_cache[key]
434
427
            except KeyError:
435
428
                pass
436
429
            else:
437
430
                # Only copying directory entries drops us 2.85s => 2.35s
438
 
                if return_from_cache:
439
 
                    if cached_ie.kind == 'directory':
440
 
                        return cached_ie.copy()
441
 
                    return cached_ie
 
431
                # if cached_ie.kind == 'directory':
 
432
                #     return cached_ie.copy()
 
433
                # return cached_ie
442
434
                return cached_ie.copy()
443
435
 
444
436
        kind = elt.tag