• Fred Drake's avatar
    Reduce the visibility of imported modules for cleaner "from ... import *" · 4ccf4a1e
    Fred Drake yazdı
    behavior.
    
    Added support for the Attr.ownerElement attribute.
    
    Everywhere:  Define constant object attributes in the classes rather than
    on the instances during object construction.  This reduces the amount of
    work needed for object construction and destruction; these need to be
    lightweight operations on a DOM.
    
    Node._get_firstChild(),
    Node._get_lastChild():  Return None if there are no children (required for
            compliance with DOM level 1).
    
    Node.insertBefore():  If refChild is None, append the new node instead of
            failing (required for compliance).  Also, update the sibling
            relationships.  Return the inserted node (required for compliance).
    
    Node.appendChild():  Update the parent of the appended node.
    
    Node.replaceChild():  Actually replace the old child!  Update the parent
            and sibling relationships of both the old and new children.  Return
            the replaced child (required for compliance).
    
    Node.normalize():  Implemented the normalize() method.  Required for
            compliance, but missing from the release.  Useful for joining
            adjacent Text nodes into a single node for easier processing.
    
    Node.cloneNode():  Actually make this work.  Don't let the new node share
            the instance __dict__ with the original.  Do proper recursion if
            doing a "deep" clone.  Move the attribute cloning out of the base
            class, since only Element is supposed to have attributes.
    
    Node.unlink():  Simplify handling of child nodes for efficiency, and
            remove the attribute handling since only Element nodes support
            attributes.
    
    Attr.cloneNode():  Extend this to clear the ownerElement attribute in
            the clone.
    
    AttributeList.items(),
    AttributeList.itemsNS():  Slight performance improvement (avoid lambda).
    
    Element.cloneNode():  Extend Node.cloneNode() with support for the
            attributes.  Clone the Attr objects after creating the underlying
            clone.
    
    Element.unlink():  Clean out the attributes here instead of in the base
            class, since this is the only class that will have them.
    
    Element.toxml():  Adjust to create only one AttributeList instance; minor
            efficiency improvement.
    
    _nssplit():  No need to re-import string.
    
    Document.__init__():  No longer needed once constant attributes are
            initialized in the class itself.
    
    Document.createElementNS(),
    Document.createAttributeNS():  Use the defined constructors rather than
            directly access the classes.
    
    _get_StringIO():  New function.  Create an output StringIO using the most
            efficient available flavor.
    
    parse(),
    parseString():  Import pulldom here instead of in the public namespace of
            the module.
    4ccf4a1e
minidom.py 17.6 KB