~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/util/elementtree/ElementTree.py

  • Committer: Aaron Bentley
  • Date: 2007-06-22 22:19:13 UTC
  • mto: (2520.5.2 bzr.mpbundle)
  • mto: This revision was merged to the branch mainline in revision 2631.
  • Revision ID: abentley@panoramicfeedback.com-20070622221913-mcjioqruw8rhgnd8
Improve locking in _BaseMergeDirective.from_object

Show diffs side-by-side

added added

removed removed

Lines of Context:
572
572
    # @defreturn Element
573
573
 
574
574
    def parse(self, source, parser=None):
575
 
        if not hasattr(source, "read"):
 
575
        if getattr(source, "read", None) is None:
576
576
            source = open(source, "rb")
577
577
        if not parser:
578
578
            parser = XMLTreeBuilder()
651
651
 
652
652
    def write(self, file, encoding="us-ascii"):
653
653
        assert self._root is not None
654
 
        if not hasattr(file, "write"):
 
654
        if getattr(file, "write", None) is None:
655
655
            file = open(file, "wb")
656
656
        if not encoding:
657
657
            encoding = "us-ascii"
723
723
def iselement(element):
724
724
    # FIXME: not sure about this; might be a better idea to look
725
725
    # for tag/attrib/text attributes
726
 
    return isinstance(element, _ElementInterface) or hasattr(element, "tag")
 
726
    return isinstance(element, _ElementInterface) or (getattr(element, "tag", None) is not None)
727
727
 
728
728
##
729
729
# Writes an element tree or element structure to sys.stdout.  This
871
871
class iterparse:
872
872
 
873
873
    def __init__(self, source, events=None):
874
 
        if not hasattr(source, "read"):
 
874
        if getattr(source, "read", None) is None:
875
875
            source = open(source, "rb")
876
876
        self._file = source
877
877
        self._events = []
1037
1037
 
1038
1038
    def close(self):
1039
1039
        assert len(self._elem) == 0, "missing end tags"
1040
 
        assert self._last != None, "missing toplevel element"
 
1040
        assert self._last is not None, "missing toplevel element"
1041
1041
        return self._last
1042
1042
 
1043
1043
    def _flush(self):