/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/xml_serializer.py

Merge bzr.dev, update to use new hooks.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
"""XML externalization support."""
18
18
 
19
 
from __future__ import absolute_import
20
 
 
21
19
# "XML is like violence: if it doesn't solve your problem, you aren't
22
20
# using enough of it." -- various
23
21
 
26
24
 
27
25
import re
28
26
 
 
27
from bzrlib.serializer import Serializer
 
28
from bzrlib.trace import mutter
 
29
 
29
30
try:
30
 
    import xml.etree.cElementTree as elementtree
31
 
    ParseError = getattr(elementtree, "ParseError", SyntaxError)
 
31
    try:
 
32
        # it's in this package in python2.5
 
33
        from xml.etree.cElementTree import (ElementTree, SubElement, Element,
 
34
            XMLTreeBuilder, fromstring, tostring)
 
35
        import xml.etree as elementtree
 
36
        # Also import ElementTree module so monkey-patching below always works
 
37
        import xml.etree.ElementTree
 
38
    except ImportError:
 
39
        from cElementTree import (ElementTree, SubElement, Element,
 
40
                                  XMLTreeBuilder, fromstring, tostring)
 
41
        import elementtree.ElementTree
 
42
    ParseError = SyntaxError
32
43
except ImportError:
33
 
    # Fall back to pure python implementation if C extension is unavailable
34
 
    import xml.etree.ElementTree as elementtree
35
 
    try:
36
 
        from xml.etree.ElementTree import ParseError
37
 
    except ImportError:
38
 
        from xml.parsers.expat import ExpatError as ParseError
39
 
 
40
 
(ElementTree, SubElement, Element, XMLTreeBuilder, fromstring, tostring) = (
41
 
    elementtree.ElementTree, elementtree.SubElement, elementtree.Element,
42
 
    elementtree.XMLTreeBuilder, elementtree.fromstring, elementtree.tostring)
43
 
 
 
44
    mutter('WARNING: using slower ElementTree; consider installing cElementTree'
 
45
           " and make sure it's on your PYTHONPATH")
 
46
    # this copy is shipped with bzr
 
47
    from util.elementtree.ElementTree import (ElementTree, SubElement,
 
48
                                              Element, XMLTreeBuilder,
 
49
                                              fromstring, tostring)
 
50
    import util.elementtree as elementtree
 
51
    from xml.parsers.expat import ExpatError as ParseError
44
52
 
45
53
from bzrlib import (
46
54
    cache_utf8,
47
 
    errors,
48
55
    inventory,
49
56
    lazy_regex,
50
 
    serializer,
 
57
    errors,
51
58
    )
52
59
 
53
60
 
54
 
class XMLSerializer(serializer.Serializer):
 
61
class XMLSerializer(Serializer):
55
62
    """Abstract XML object serialize/deserialize"""
56
63
 
57
64
    squashes_xml_invalid_characters = True
309
316
                                     elt_get('name'),
310
317
                                     parent_id)
311
318
        ie.symlink_target = elt_get('symlink_target')
312
 
    elif kind == 'tree-reference':
313
 
        file_id = elt.attrib['file_id']
314
 
        name = elt.attrib['name']
315
 
        parent_id = elt.attrib['parent_id']
316
 
        revision = elt.get('revision')
317
 
        reference_revision = elt.get('reference_revision')
318
 
        ie = inventory.TreeReference(file_id, name, parent_id, revision,
319
 
                                       reference_revision)
320
319
    else:
321
320
        raise errors.UnsupportedInventoryKind(kind)
322
321
    ie.revision = revision