MINI MINI MANI MO

Path : /usr/lib64/python3.6/xml/dom/__pycache__/
File Upload :
Current File : //usr/lib64/python3.6/xml/dom/__pycache__/minidom.cpython-36.pyc

3


 \@sdZddlZddlZddlmZmZmZmZddlTddl	m
Z
mZejj
jejj
jfZGdddejj
Z
ee
dd	d
ee
ddd
ee
d
dd
ddZddZddZddZddZGddde
ZGddde
Zeeddd
eed
dd
eed d!d
Gd"d#d#eZeed$d%d
eZGd&d'd'eZeddZGd(d)d)e
Zeed*d+d
eed
d,d
d-d.ZGd/d0d0Z Gd1d2d2e e
Z!Gd3d4d4e e
Z"ee"d$d5d
Gd6d7d7e"Z#ee#d8d9d
ee#d:d;d
d<d=Z$d>d?Z%Gd@dAdAe"Z&GdBdCdCe#Z'GdDdEdEeZ(ee(d$dFd
GdGdHdHZ)GdIdJdJe)e e
Z*GdKdLdLe)e
Z+GdMdNdNe)e e
Z,GdOdPdPe
Z-GdQdRdReZ.dSdTZ/GdUdVdVe
eZ0ee0dWdXd
dYdZZ1d[d\Z2d]d^Z3ded_d`Z4dfdadbZ5dgdcddZ6dS)hacSimple implementation of the Level 1 DOM.

Namespaces and other minor Level 2 features are also supported.

parse("foo.xml")

parseString("<foo><bar/></foo>")

Todo:
=====
 * convenience methods for getting elements and text.
 * more testing
 * bring some of the writer and linearizer code into conformance with this
        interface
 * SAX 2 namespaces
N)EMPTY_NAMESPACEEMPTY_PREFIXXMLNS_NAMESPACEdomreg)*)DOMImplementationLS
DocumentLSc@seZdZdZdZdZdZdZeZ	ddZ
d2ddZd3dd	Zd
dZ
dd
ZddZddZddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Z dS)4NodeNcCsdS)NT)selfr
r
'/usr/lib64/python3.6/xml/dom/minidom.py__bool__+sz
Node.__bool__cCs|jdd|S)N)toprettyxml)rencodingr
r
rtoxml.sz
Node.toxml	
cCsx|dkrtj}ntjtj|ddd}|jtjkrH|j|d|||n|j|d|||dkrh|jS|j	jSdS)Nxmlcharrefreplacer)rerrorsnewliner)
ioStringIO
TextIOWrapperBytesIOnodeTyper	
DOCUMENT_NODEwritexmlgetvaluedetach)rindentnewlrwriterr
r
rr1s

zNode.toprettyxmlcCs
t|jS)N)bool
childNodes)rr
r
r
hasChildNodesCszNode.hasChildNodescCs|jS)N)r$)rr
r
r_get_childNodesFszNode._get_childNodescCs|jr|jdSdS)Nr)r$)rr
r
r_get_firstChildIszNode._get_firstChildcCs|jr|jdSdS)N)r$)rr
r
r_get_lastChildMszNode._get_lastChildcCs|j|jkr0xt|jD]}|j||qW|S|j|jkrXtjjdt	|t	|f|j
dk	rn|j
j||dkr|j|ny|jj
|}Wntk
rtjjYnX|jtkrt||jj||||_||_|r|j|d}||_||_nd|_||_
|S)Nz%s cannot be child of %sr()rDOCUMENT_FRAGMENT_NODEtupler$insertBefore_child_node_typesxmldomHierarchyRequestErrrepr
parentNoderemoveChildappendChildindex
ValueErrorNotFoundErr_nodeTypes_with_children_clear_id_cacheinsertnextSiblingpreviousSibling)rnewChildrefChildcr6noder
r
rr-Qs6

zNode.insertBeforecCs|j|jkr.xt|jD]}|j|qW|S|j|jkrXtjjdt	|t	|fn|jt
krjt||jdk	r|jj
|t||d|_|S)Nz%s cannot be child of %s)rr+r,r$r5r.r/r0r1r2r9r:r3r4
_append_childr<)rrAr@r
r
rr5qs


zNode.appendChildcCs|j|jkr(|j}|j||j||S|j|jkrPtjjdt	|t	|f||kr\dS|j
dk	rr|j
j|y|jj|}Wnt
k
rtjjYnX||j|<||_
d|_
|jtks|jtkrt||j|_|j|_d|_d|_|jr||j_|jr||j_|S)Nz%s cannot be child of %s)rr+r<r4r-r.r/r0r1r2r3r$r6r7r8r9r:r=)rr>oldChildr?r6r
r
rreplaceChilds<




zNode.replaceChildcCsy|jj|Wntk
r.tjjYnX|jdk	rD|j|j_|jdk	rX|j|j_d|_|_|jt	krvt
|d|_|S)N)r$remover7r/r0r8r<r=rr9r:r3)rrCr
r
rr4s




zNode.removeChildcCsg}x|jD]}|jtjkr|jsL|r2|j|d_|jrB|j|j_|jq|r|dj|jkr|d}|j|j|_|j|_|jr||j_|jq|j|q|j||jtj	kr|j
qW||jdd<dS)Nr(r)r)r))r$rr		TEXT_NODEdatar<r=unlinkappendELEMENT_NODE	normalize)rLchildrAr
r
rrKs*



zNode.normalizecCst|||jp|S)N)_clone_node
ownerDocument)rdeepr
r
r	cloneNodeszNode.cloneNodecCs|jjj||S)N)rOimplementation
hasFeature)rfeatureversionr
r
risSupportedszNode.isSupportedcCsdS)Nr
)rr
r
r_get_localNameszNode._get_localNamecCs||kS)Nr
)rotherr
r
r
isSameNodeszNode.isSameNodecCs|j|dr|SdSdS)N)rV)rrTr
r
rgetInterfaceszNode.getInterfacecCs,y|j|dSttfk
r&dSXdS)Nr)
_user_dataAttributeErrorKeyError)rkeyr
r
rgetUserDataszNode.getUserDatacCsnd}y
|j}Wntk
r,i}||_YnX||krB||d}|dkr^d}|dk	rj||=n||f||<|S)Nr)r[r\)rr^rGhandlerolddr
r
rsetUserDatas
zNode.setUserDatacCsHt|drDx8t|jjD]&\}\}}|dk	r|j|||||qWdS)Nr[)hasattrlistr[itemsZhandle)r	operationsrcdstr^rGr`r
r
r_call_user_data_handlers
zNode._call_user_data_handlercCsBd|_|_|jr2x|jD]}|jqWt|_d|_d|_dS)N)r3rOr$rHNodeListr=r<)rrMr
r
rrHszNode.unlinkcCs|S)Nr
)rr
r
r	__enter__szNode.__enter__cCs|jdS)N)rH)rZetZevtbr
r
r__exit__sz
Node.__exit__)N)rrN)!__name__
__module____qualname__namespaceURIr3rOr<r=rprefixr
rrr%r&r'r*r-r5rDr4rKrQrVrWrYrZr_rcrjrHrlrnr
r
r
rr	"s:

  
r	
firstChildzFirst child node, or None.)doc	lastChildzLast child node, or None.	localNamez"Namespace-local name of this node.cCs2|j}|r|d}||_||_|j|||_dS)Nr(r))r$r=r<rIr3)rrAr$Zlastr
r
rrBs
rBcCs(x"|dk	r"|jtjkrdS|j}qWdS)NTF)rr	rr3)rAr
r
r_in_document&s


rxcCs6|r2|jddjddjddjdd}|j|d	S)
zWrites datachars to writer.&z&amp;<z&lt;"z&quot;>z&gt;N)replacewrite)r"rGr
r
r_write_data.srcCsHxB|jD]8}|jtjkr4|dks*|j|kr4|j|t|||qW|S)Nr)r$rr	rJtagNamerI_get_elements_by_tagName_helper)parentnamercrAr
r
rr5s
rcCs\xV|jD]L}|jtjkr|dks*|j|krF|dks<|j|krF|j|t||||qW|S)Nr)r$rr	rJrwrrrI"_get_elements_by_tagName_ns_helper)rZnsURIrwrrAr
r
rr=s
rc@sJeZdZejZdZdZdZdZ	ej
ejejej
ejejejfZddZdS)DocumentFragmentz#document-fragmentNcCst|_dS)N)rkr$)rr
r
r__init__TszDocumentFragment.__init__)rorprqr	r+rnodeName	nodeValue
attributesr3rJrFCDATA_SECTION_NODEENTITY_REFERENCE_NODEPROCESSING_INSTRUCTION_NODECOMMENT_NODE
NOTATION_NODEr.rr
r
r
rrFsrc@seZdZd#ZejZd	Zd
Zd
Z	ej
ejfZe
d	d	fddZd
dZddZddZddZeeeZZddZddZeeeZZddZddZeeeZddZdd Zd!d"Zd	S)$Attr_name_valuerr_prefixr$
_localNamerOownerElementNFcCs2d|_||_||_||_t|_|jjtdS)N)rrrrrrkr$rIText)rqNamerrrwrsr
r
rrbsz
Attr.__init__cCs.y|jStk
r(|jjdddSXdS)N:r(r))rr\rsplit)rr
r
rrWoszAttr._get_localNamecCs|jS)N)	specified)rr
r
r_get_specifieduszAttr._get_specifiedcCs|jS)N)r)rr
r
r	_get_namexszAttr._get_namecCs||_|jdk	rt|jdS)N)rrr:)rvaluer
r
r	_set_name{s
zAttr._set_namecCs|jS)N)r)rr
r
r
_get_valueszAttr._get_valuecCs6||_||jd_|jdk	r&t|j||jd_dS)Nr)rr$rGrr:)rrr
r
r
_set_values


zAttr._set_valuecCs|jS)N)r)rr
r
r_get_prefixszAttr._get_prefixcCsd|j}|dkr&|r&|tkr&tjjd||_|dkr<|j}nd||jf}|jrZt|j||_	dS)Nxmlnsz5illegal use of 'xmlns' prefix for the wrong namespacez%s:%s)
rrrr/r0NamespaceErrrrwrr:r)rrsZnsuriZnewNamer
r
r_set_prefixs
zAttr._set_prefixcCsz|j}|dk	rR|j|j=|j|j|jf=|jrRd|_|jd8_|jj	d8_	x|j
D]}|jqZW|j
dd=dS)NFr()r_attrsr_attrsNSrrrw_is_id_magic_id_nodesrO_magic_id_countr$rH)relemrMr
r
rrHs
zAttr.unlinkcCsf|jr
dS|j}|j}|dks&|dkr*dS|j|}|dkr@dS|jrV|j|j|jS|j|jSdS)NTF)	rrOr_get_elem_inforrisIdNSrwisIdr)rrurinfor
r
r	_get_isIds
zAttr._get_isIdcCs\|j}|j}|dks|dkr tS|j|}|dkr6tS|jrL|j|j|jS|j|jSdS)N)	rOr_no_typerrrgetAttributeTypeNSrwgetAttributeTyper)rrurrr
r
r_get_schemaTypes
zAttr._get_schemaType)rrrrrr$rrOr) rorprq	__slots__r	ATTRIBUTE_NODErrrrrFrr.rrrWrrrpropertyrrrrrrrrrsrHrrr
r
r
rrXs.
rrz True if this attribute is an ID.z'Namespace-local name of this attribute.
schemaTypezSchema type for this attribute.c@seZdZdZd<ZddZddZd	d
ZddZd
dZ	ddZ
ddZddZddZ
d=ddZeZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Z dS)>NamedNodeMapaThe attribute list is a transient interface to the underlying
    dictionaries.  Mutations here will change the underlying element's
    dictionary.

    Ordering is imposed artificially and does not reflect the order of
    attributes as found in an input document.
    rr
_ownerElementcCs||_||_||_dS)N)rrr)rattrsZattrsNSrr
r
rrszNamedNodeMap.__init__cCs
t|jS)N)lenr)rr
r
r_get_lengthszNamedNodeMap._get_lengthcCs0y|t|jj|Stk
r*dSXdS)N)rerkeys
IndexError)rr6r
r
ritemszNamedNodeMap.itemcCs.g}x$|jjD]}|j|j|jfqW|S)N)rvaluesrIrr)rrLrAr
r
rrfszNamedNodeMap.itemscCs4g}x*|jjD]}|j|j|jf|jfqW|S)N)rrrIrrrwr)rrLrAr
r
ritemsNSszNamedNodeMap.itemsNScCs"t|tr||jkS||jkSdS)N)
isinstancestrrr)rr^r
r
r__contains__s

zNamedNodeMap.__contains__cCs
|jjS)N)rr)rr
r
rrszNamedNodeMap.keyscCs
|jjS)N)rr)rr
r
rkeysNSszNamedNodeMap.keysNScCs
|jjS)N)rr)rr
r
rrszNamedNodeMap.valuesNcCs|jj||S)N)rget)rrrr
r
rr
szNamedNodeMap.getcCs:|jt|ddkrdSt|t|kt|t|kSdS)Nrr)rgetattrid)rrXr
r
r_cmpszNamedNodeMap._cmpcCs|j|dkS)Nr)r)rrXr
r
r__eq__szNamedNodeMap.__eq__cCs|j|dkS)Nr)r)rrXr
r
r__ge__szNamedNodeMap.__ge__cCs|j|dkS)Nr)r)rrXr
r
r__gt__szNamedNodeMap.__gt__cCs|j|dkS)Nr)r)rrXr
r
r__le__szNamedNodeMap.__le__cCs|j|dkS)Nr)r)rrXr
r
r__lt__!szNamedNodeMap.__lt__cCs"t|tr|j|S|j|SdS)N)rr,rr)rattname_or_tupler
r
r__getitem__$s

zNamedNodeMap.__getitem__cCsvt|trRy|j|}Wn0tk
rHt|}|jj|_|j|YnX||_n t|tsdt	d|}|j|dS)Nz%value must be a string or Attr object)
rrrr]rrrOsetNamedItemr	TypeError)rattnamerrAr
r
r__setitem__+s


zNamedNodeMap.__setitem__cCs$y
|j|Stk
rdSXdS)N)rr])rrr
r
rgetNamedItem:s
zNamedNodeMap.getNamedItemcCs(y|j||fStk
r"dSXdS)N)rr])rrrrwr
r
rgetNamedItemNS@szNamedNodeMap.getNamedItemNScCsX|j|}|dk	rJt|j|j|j=|j|j|jf=t|drFd|_	|St
jjdS)Nr)
rr:rrrrrrrwrdrr/r0r8)rrnr
r
rremoveNamedItemFs



zNamedNodeMap.removeNamedItemcCsZ|j||}|dk	rLt|j|j|j|jf=|j|j=t|drHd|_	|St
jjdS)Nr)
rr:rrrrrwrrrdrr/r0r8)rrrrwrr
r
rremoveNamedItemNSRs


zNamedNodeMap.removeNamedItemNScCstt|ts&tjjdt|t|f|jj|j}|r@|j	||j|j<||j
|j|jf<|j
|_t|j|S)Nz%s cannot be child of %s)rrr/r0r1r2rrrrHrrrrwrrr:)rrArar
r
rr^s

zNamedNodeMap.setNamedItemcCs
|j|S)N)r)rrAr
r
rsetNamedItemNSkszNamedNodeMap.setNamedItemNScCs||}t|j|jdS)N)r:rrH)rrrAr
r
r__delitem__ns
zNamedNodeMap.__delitem__cCs|j|j|jfS)N)rrr)rr
r
r__getstate__sszNamedNodeMap.__getstate__cCs|\|_|_|_dS)N)rrr)rstater
r
r__setstate__vszNamedNodeMap.__setstate__)rrr)N)!rorprq__doc__rrrrrfrrrrrr__len__rrrrrrrrrrrrrrrrrr
r
r
rrs<

rZlengthz$Number of nodes in the NamedNodeMap.c@s0eZdZdZddZddZddZd	d
ZdS)
TypeInfo	namespacercCs||_||_dS)N)rr)rrrr
r
rrszTypeInfo.__init__cCs2|jrd|jj|j|jfSd|jj|jfSdS)Nz<%s %r (from %r)>z<%s %r>)r	__class__ror)rr
r
r__repr__s
zTypeInfo.__repr__cCs|jS)N)r)rr
r
rrszTypeInfo._get_namecCs|jS)N)r)rr
r
r_get_namespaceszTypeInfo._get_namespaceN)rr)rorprqrrrrrr
r
r
rrs
rc@s eZdZdDZejZd
ZeZ	dZ
ejejejej
ejejfZed
d
fddZddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&ZeZd'd(Zd)d*Z d+d,Z!e!Z"d-d.Z#d/d0Z$d1d2Z%d3d4Z&d5d6Z'dEd8d9Z(d:d;Z)d<d=Z*d>d?Z+d@dAZ,dBdCZ-d
S)FElementrOr3rrrsrrrr$rrr<r=NrcCsBd|_||_|_||_||_t|_d|_|_d|_	d|_
dS)N)r3rrrsrrrkr$r<r=rr)rrrrrsrwr
r
rrs
zElement.__init__cCs|jdkri|_i|_dS)N)rr)rr
r
r_ensure_attributess
zElement._ensure_attributescCs.y|jStk
r(|jjdddSXdS)Nrr(r))rr\rr)rr
r
rrWszElement._get_localNamecCs|jS)N)r)rr
r
r_get_tagNameszElement._get_tagNamecCsD|jdk	r*xt|jjD]}|jqWd|_d|_tj|dS)N)rrerrHrr	)rattrr
r
rrHs
zElement.unlinkcCs4|jdkrdSy|j|jStk
r.dSXdS)Nr)rrr])rrr
r
rgetAttributes
zElement.getAttributecCs8|jdkrdSy|j||fjStk
r2dSXdS)Nr)rrr])rrrrwr
r
rgetAttributeNSs
zElement.getAttributeNScCsV|j|}|dkr4t|}||_|j|_|j|n||jkrR||_|jrRt|dS)N)getAttributeNoderrrOsetAttributeNoderr:)rrrrr
r
rsetAttributes

zElement.setAttributecCst|\}}|j||}|dkrHt||||}||_|j|_|j|n4||jkrf||_|jrft||j|kr|||_||_	dS)N)
_nssplitgetAttributeNodeNSrrrOrrr:rsr)rrr
qualifiedNamerrs	localnamerr
r
rsetAttributeNSs

zElement.setAttributeNScCs|jdkrdS|jj|S)N)rr)rZattrnamer
r
rrs
zElement.getAttributeNodecCs|jdkrdS|jj||fS)N)rr)rrrrwr
r
rrs
zElement.getAttributeNodeNScCs|jd|fkrtjjd|j|jj|jd}|dk	rD|j||j	j|j
|jfd}|dk	rt||k	rt|j|t||||k	r|S||k	r|SdS)Nzattribute node already owned)
rr/r0ZInuseAttributeErrrrrrremoveAttributeNoderrrrw_set_attribute_node)rrZold1Zold2r
r
rrs


zElement.setAttributeNodecCsP|jdkrtjjy|j|}Wntk
r@tjjYnX|j|dS)N)rr/r0r8rr]r)rrrr
r
rremoveAttributes

zElement.removeAttributecCsT|jdkrtjjy|j||f}Wntk
rDtjjYnX|j|dS)N)rr/r0r8r]r)rrrrwrr
r
rremoveAttributeNS%s

zElement.removeAttributeNScCs^|dkrtjjy|j|jWntk
r@tjjYnXt||j|j|_dS)N)	r/r0r8rrr]r:rHrO)rrAr
r
rr.s
zElement.removeAttributeNodecCs|jdkrdS||jkS)NF)r)rrr
r
rhasAttribute=s
zElement.hasAttributecCs|jdkrdS||f|jkS)NF)r)rrrrwr
r
rhasAttributeNSBs
zElement.hasAttributeNScCst||tS)N)rrk)rrr
r
rgetElementsByTagNameGszElement.getElementsByTagNamecCst|||tS)N)rrk)rrrrwr
r
rgetElementsByTagNameNSJszElement.getElementsByTagNameNScCsd|jt|fS)Nz<DOM Element: %s at %#x>)rr)rr
r
rrNszElement.__repr__rc	Cs|j|d|j|j}t|j}x4|D],}|jd|t|||j|jdq.W|jr|jdt|jdkr|jdj	t
jkr|jdj|dddn8|j|x"|jD]}|j|||||qW|j||jd|j|fn|jd	|dS)
Nrzz %s="r{r|r(rrz</%s>%sz/>%s)
r~r_get_attributessortedrrrr$rrr	rFr)	rr"r 	addindentr!rZa_namesZa_namerAr
r
rrQs$



zElement.writexmlcCs|jt|j|j|S)N)rrrr)rr
r
rrlszElement._get_attributescCs|jr
dSdSdS)NTF)r)rr
r
r
hasAttributespszElement.hasAttributescCs|j|}|j|dS)N)rsetIdAttributeNode)rridAttrr
r
rsetIdAttributexs
zElement.setIdAttributecCs|j||}|j|dS)N)rr)rrrrwrr
r
rsetIdAttributeNS|szElement.setIdAttributeNScCsl|dks|j|jr tjjt|dk	r6tjj|jshd|_|jd7_|j	j
d7_
t|dS)NTr()rYrr/r0r8_get_containing_entrefNoModificationAllowedErrrrrOrr:)rrr
r
rrs

zElement.setIdAttributeNode)rOr3rrrsrrrr$rrr<r=)rrr).rorprqrr	rJrrrrrrrrFrrr.rrrrWrrHrrrrrrrZsetAttributeNodeNSrrrZremoveAttributeNodeNSrrrrrrrrrrrr
r
r
rrsT		

rrz*NamedNodeMap of attributes on the element.z%Namespace-local name of this element.cCs8t||j||j|j<||j|j|jf<||_dS)N)r:rrrrrrrwr)elementrr
r
rrs
rc@sfeZdZdZfZdZeZdZdZ	ddZ
ddZddZd	d
Z
ddZd
dZddZddZdS)	ChildlesszMixin that makes childless-ness easy to implement and avoids
    the complexity of the Node methods that deal with children.
    NcCsdS)Nr
)rr
r
rr'szChildless._get_firstChildcCsdS)Nr
)rr
r
rr*szChildless._get_lastChildcCstjj|jddS)Nz nodes cannot have children)r/r0r1r)rrAr
r
rr5szChildless.appendChildcCsdS)NFr
)rr
r
rr%szChildless.hasChildNodescCstjj|jddS)Nz nodes do not have children)r/r0r1r)rr>r?r
r
rr-szChildless.insertBeforecCstjj|jddS)Nz nodes do not have children)r/r0r8r)rrCr
r
rr4szChildless.removeChildcCsdS)Nr
)rr
r
rrKszChildless.normalizecCstjj|jddS)Nz nodes do not have children)r/r0r1r)rr>rCr
r
rrDszChildless.replaceChild)rorprqrrrZ
EmptyNodeListr$rtrvr'r*r5r%r-r4rKrDr
r
r
rrsrc@s\eZdZejZdZddZddZddZ	e
ee	Zd	d
ZddZ
e
ee
ZdddZdS)ProcessingInstructiontargetrGcCs||_||_dS)N)r	rG)rr	rGr
r
rrszProcessingInstruction.__init__cCs|jS)N)rG)rr
r
r_get_nodeValuesz$ProcessingInstruction._get_nodeValuecCs
||_dS)N)rG)rrr
r
r_set_nodeValuesz$ProcessingInstruction._set_nodeValuecCs|jS)N)r	)rr
r
r
_get_nodeNamesz#ProcessingInstruction._get_nodeNamecCs
||_dS)N)r	)rrr
r
r
_set_nodeNamesz#ProcessingInstruction._set_nodeNamercCs|jd||j|j|fdS)Nz
%s<?%s %s?>%s)r~r	rG)rr"r rr!r
r
rrszProcessingInstruction.writexmlN)r	rG)rrr)rorprqr	rrrrr
rrrrr
rrr
r
r
rrs

rc@sreZdZdZddZdd	ZeZd
dZdd
Ze	eeZ
ZddZddZ
ddZddZddZddZdS)
CharacterData_datarOr3r=r<cCs,d|_|_d|_|_d|_tj|dS)Nr)rOr3r=r<rr	r)rr
r
rrszCharacterData.__init__cCs
t|jS)N)rrG)rr
r
rrszCharacterData._get_lengthcCs|jS)N)r)rr
r
r	_get_dataszCharacterData._get_datacCs
||_dS)N)r)rrGr
r
r	_set_dataszCharacterData._set_datacCs6|j}t|dkrd}nd}d|jj|dd|fS)N
z...rz<DOM %s node "%r%s">r)rGrrro)rrGZ	dotdotdotr
r
rrszCharacterData.__repr__cCsT|dkrtjjd|t|jkr.tjjd|dkrBtjjd|j|||S)Nrzoffset cannot be negativez#offset cannot be beyond end of datazcount cannot be negative)r/r0IndexSizeErrrrG)roffsetcountr
r
r
substringDataszCharacterData.substringDatacCs|j||_dS)N)rG)rargr
r
r
appendDataszCharacterData.appendDatacCsZ|dkrtjjd|t|jkr.tjjd|rVd|jd|||j|df|_dS)Nrzoffset cannot be negativez#offset cannot be beyond end of dataz%s%s%s)r/r0rrrG)rrrr
r
r
insertDataszCharacterData.insertDatacCsl|dkrtjjd|t|jkr.tjjd|dkrBtjjd|rh|jd||j||d|_dS)Nrzoffset cannot be negativez#offset cannot be beyond end of datazcount cannot be negative)r/r0rrrG)rrrr
r
r
deleteDataszCharacterData.deleteDatacCsr|dkrtjjd|t|jkr.tjjd|dkrBtjjd|rnd|jd|||j||df|_dS)Nrzoffset cannot be negativez#offset cannot be beyond end of datazcount cannot be negativez%s%s%s)r/r0rrrG)rrrrr
r
rreplaceDataszCharacterData.replaceDataN)rrOr3r=r<)rorprqrrrrrrrrGrrrrrrrr
r
r
rrs			
rzLength of the string data.c@sHeZdZfZejZdZdZddZ	dddZ
dd	Zd
dZdd
Z
dS)rz#textNcCs|dks|t|jkr"tjjd|j}|j|d|_|j|_|j}|jr~||jj	kr~|dkrp|jj
|n|jj|||jd||_|S)Nrzillegal offset value)rrGr/r0rrrOr<r3r$r5r-)rrZnewTextnextr
r
r	splitText0szText.splitTextrcCst|d||j|fdS)Nz%s%s%s)rrG)rr"r rr!r
r
rr?sz
Text.writexmlcCs|jg}|j}x6|dk	rD|jtjtjfkr@|jd|j|j}qPqW|j}x4|dk	r|jtjtjfkr||j|j|j}qNPqNWdj	|S)Nrr)
rGr=rr	rFrr;r<rIjoin)rrLrr
r
r_get_wholeTextDs

zText._get_wholeTextcCs|j}|j}x6|dk	rB|jtjtjfkr>|j}|j||}qPqW|j}|sX|j|x6|dk	r|jtjtjfkr|j}|j||}qZPqZW|r||_|SdSdS)N)	r3r=rr	rFrr4r<rG)rZcontentrrrr
r
rreplaceWholeTextVs*




zText.replaceWholeTextcCsF|jjrdSt|}|dkr"dS|jj|}|dkr:dS|jSdS)NF)rGstrip_get_containing_elementrOrisElementContent)rrrr
r
r!_get_isWhitespaceInElementContentrs
z&Text._get_isWhitespaceInElementContent)rrr)rorprqrr	rFrrrrrrr r$r
r
r
rr)s
rZisWhitespaceInElementContentzKTrue iff this text node contains only whitespace and is in element content.Z	wholeTextz.The text of all logically-adjacent text nodes.cCs.|j}x"|dk	r(|jtjkr |S|j}qWdS)N)r3rr	rJ)rAr@r
r
rr"s

r"cCs.|j}x"|dk	r(|jtjkr |S|j}qWdS)N)r3rr	r)rAr@r
r
rrs

rc@s(eZdZejZdZddZdddZdS)	Commentz#commentcCstj|||_dS)N)rrr)rrGr
r
rrs
zComment.__init__rcCs,d|jkrtd|jd||j|fdS)Nz--z%'--' is not allowed in a comment nodez
%s<!--%s-->%s)rGr7r~)rr"r rr!r
r
rrs
zComment.writexmlN)rrr)	rorprqr	rrrrrr
r
r
rr%sr%c@s$eZdZfZejZdZdddZdS)CDATASectionz#cdata-sectionrcCs,|jjddkrtd|jd|jdS)Nz]]>rz$']]>' not allowed in a CDATA sectionz<![CDATA[%s]]>)rGfindr7r~)rr"r rr!r
r
rrszCDATASection.writexmlN)rrr)	rorprqrr	rrrrr
r
r
rr&sr&c@s|eZdZdZffddZddZddZdd	Zd
dZdd
Z	ddZ
ddZddZddZ
ddZddZddZdS)ReadOnlySequentialNamedNodeMap_seqcCs
||_dS)N)r))rseqr
r
rrsz'ReadOnlySequentialNamedNodeMap.__init__cCs
t|jS)N)rr))rr
r
rrsz&ReadOnlySequentialNamedNodeMap.__len__cCs
t|jS)N)rr))rr
r
rrsz*ReadOnlySequentialNamedNodeMap._get_lengthcCs"x|jD]}|j|kr|SqWdS)N)r)r)rrrr
r
rrs
z+ReadOnlySequentialNamedNodeMap.getNamedItemcCs,x&|jD]}|j|kr|j|kr|SqWdS)N)r)rrrw)rrrrwrr
r
rrsz-ReadOnlySequentialNamedNodeMap.getNamedItemNScCs4t|tr|j|}n
|j|}|dkr0t||S)N)rr,rrr])rZ
name_or_tuplerAr
r
rrs

z*ReadOnlySequentialNamedNodeMap.__getitem__cCs0|dkrdSy
|j|Stk
r*dSXdS)Nr)r)r)rr6r
r
rrs
z#ReadOnlySequentialNamedNodeMap.itemcCstjjddS)Nz"NamedNodeMap instance is read-only)r/r0r)rrr
r
rrsz.ReadOnlySequentialNamedNodeMap.removeNamedItemcCstjjddS)Nz"NamedNodeMap instance is read-only)r/r0r)rrrrwr
r
rrsz0ReadOnlySequentialNamedNodeMap.removeNamedItemNScCstjjddS)Nz"NamedNodeMap instance is read-only)r/r0r)rrAr
r
rrsz+ReadOnlySequentialNamedNodeMap.setNamedItemcCstjjddS)Nz"NamedNodeMap instance is read-only)r/r0r)rrAr
r
rrsz-ReadOnlySequentialNamedNodeMap.setNamedItemNScCs|jgS)N)r))rr
r
rrsz+ReadOnlySequentialNamedNodeMap.__getstate__cCs|d|_dS)Nr)r))rrr
r
rrsz+ReadOnlySequentialNamedNodeMap.__setstate__N)r))rorprqrrrrrrrrrrrrrrr
r
r
rr(s	r(z&Number of entries in the NamedNodeMap.c@s,eZdZdZdZddZddZdd	Zd
S)
Identifiedz@Mix-in class that supports the publicId and systemId attributes.publicIdsystemIdcCs||_||_dS)N)r,r-)rr,r-r
r
r_identified_mixin_initsz!Identified._identified_mixin_initcCs|jS)N)r,)rr
r
r
_get_publicIdszIdentified._get_publicIdcCs|jS)N)r-)rr
r
r
_get_systemIdszIdentified._get_systemIdN)r,r-)rorprqrrr.r/r0r
r
r
rr+s
r+c@sHeZdZejZdZdZdZdZ	dZ
ddZddZddZ
dd	d
ZdS)DocumentTypeNcCs2t|_t|_|r&t|\}}||_|j|_dS)N)r(entities	notationsrrr)rrrsrr
r
rr	szDocumentType.__init__cCs|jS)N)internalSubset)rr
r
r_get_internalSubsetsz DocumentType._get_internalSubsetcCs|jdkrtd}|j|_|j|_tjjj}|rg|j_	g|j
_	x>|j
j	D]2}t|j|j|j
}|j
j	j||j|||qJWxZ|jj	D]N}t|j|j|j
|j}|j|_|j|_|j|_|jj	j||j|||qW|j||||SdSdS)N)rOr1rrr/r0UserDataHandlerNODE_CLONEDr2r)r3Notationr,r-rIrjEntitynotationNameactualEncodingrrU)rrPclonergrnotationeentityr
r
rrQs.

zDocumentType.cloneNodercCs|jd|j|j|jr8|jd||j||jfn|jrR|jd||jf|jdk	r||jd|j|j|jd|jd|dS)Nz
<!DOCTYPE z%s  PUBLIC '%s'%s  '%s'z%s  SYSTEM '%s'z []r|)r~rr,r-r4)rr"r rr!r
r
rr/s



zDocumentType.writexml)rrr)rorprqr	DOCUMENT_TYPE_NODErrrr,r-r4rr5rQrr
r
r
rr1sr1c@sfeZdZdZejZdZdZdZ	dZ
ddZddZddZ
dd	Zd
dZdd
ZddZddZdS)r9NcCs$||_||_t|_|j||dS)N)rr:rkr$r.)rrr,r-r=r
r
rrFszEntity.__init__cCs|jS)N)r;)rr
r
r_get_actualEncodingLszEntity._get_actualEncodingcCs|jS)N)r)rr
r
r
_get_encodingOszEntity._get_encodingcCs|jS)N)rU)rr
r
r_get_versionRszEntity._get_versioncCstjjddS)Nz(cannot append children to an entity node)r/r0r1)rr>r
r
rr5UszEntity.appendChildcCstjjddS)Nz+cannot insert children below an entity node)r/r0r1)rr>r?r
r
rr-YszEntity.insertBeforecCstjjddS)Nz*cannot remove children from an entity node)r/r0r1)rrCr
r
rr4]szEntity.removeChildcCstjjddS)Nz)cannot replace children of an entity node)r/r0r1)rr>rCr
r
rrDaszEntity.replaceChild)rorprqrr	ZENTITY_NODErrr;rrUrrBrCrDr5r-r4rDr
r
r
rr9=sr9c@seZdZejZdZddZdS)r8NcCs||_|j||dS)N)rr.)rrr,r-r
r
rriszNotation.__init__)rorprqr	rrrrr
r
r
rr8esr8c	@sHeZdZddddddddgZdd	Zd
dZdd
ZddZddZdS)DOMImplementationcore1.02.0Nr/ls-load3.0cCs|dkrd}|j|f|jkS)Nr)lower	_features)rrTrUr
r
rrSyszDOMImplementation.hasFeaturec	Cs|r|jdk	rtjjd|j}|dko8|dko8|dk}|rR|rRtjjd|rt|\}}|dkr~|dkr~tjjd|r|rtjjd|j||}|r|j	||j	||r||_|_
||_||_|S)Nz(doctype object owned by another DOM treezElement with no namer/z$http://www.w3.org/XML/1998/namespacezillegal use of 'xml' prefixz(illegal use of prefix without namespaces)
r3r/r0WrongDocumentErr_create_documentZInvalidCharacterErrrrcreateElementNSr5rOdoctyperR)	rrrrrPruZadd_root_elementrsrrr
r
rcreateDocument~s4





z DOMImplementation.createDocumentcCst|}||_||_|S)N)r1r,r-)rrr,r-rPr
r
rcreateDocumentTypesz$DOMImplementation.createDocumentTypecCs|j|dr|SdSdS)N)rS)rrTr
r
rrZszDOMImplementation.getInterfacecCstS)N)Document)rr
r
rrNsz"DOMImplementation._create_document)rFrG)rFrH)rFN)r/rG)r/rH)r/N)rIrJ)rIN)	rorprqrLrSrQrRrZrNr
r
r
rrEns-rEc@s\eZdZdZdZddZddZddZd	d
ZddZ	d
dZ
ddZddZddZ
dS)ElementInfozObject that represents content-model information for an element.

    This implementation is not expected to be used in practice; DOM
    builders should provide implementations which do the right thing
    using information available to it.

    rcCs
||_dS)N)r)rrr
r
rrszElementInfo.__init__cCstS)N)r)ranamer
r
rrszElementInfo.getAttributeTypecCstS)N)r)rrrrwr
r
rrszElementInfo.getAttributeTypeNScCsdS)NFr
)rr
r
rr#szElementInfo.isElementContentcCsdS)zQReturns true iff this element is declared to have an EMPTY
        content model.Fr
)rr
r
risEmptyszElementInfo.isEmptycCsdS)z7Returns true iff the named attribute is a DTD-style ID.Fr
)rrUr
r
rrszElementInfo.isIdcCsdS)z<Returns true iff the identified attribute is a DTD-style ID.Fr
)rrrrwr
r
rrszElementInfo.isIdNScCs|jS)N)r)rr
r
rrszElementInfo.__getstate__cCs
||_dS)N)r)rrr
r
rrszElementInfo.__setstate__N)r)rorprqrrrrrr#rVrrrrr
r
r
rrTsrTcCs>|jtjkr|jjd|_nt|r:|jjjd|j_dS)N)rr	r	_id_cacheclear_id_search_stackrxrO)rAr
r
rr:s
r:c@sreZdZdMZejejejejfZ	e
ZejZ
dZdZdZdZdZZdZdZdZdZdZdZdZd	Zd
dZdd
ZddZddZddZ ddZ!ddZ"ddZ#ddZ$ddZ%ddZ&d d!Z'd"d#Z(d$d%Z)d&d'Z*d(d)Z+d*d+Z,d,d-Z-d.d/Z.d0d1Z/d2d3Z0d4d5Z1d6d7Z2d8d9Z3d:d;Z4d<d=Z5d>d?Z6d@dAZ7dBdCZ8dDdEZ9dFdGZ:dNdIdJZ;dKdLZ<dS)OrS
_elem_inforPrYr$rWz	#documentNFrcCs$d|_t|_i|_i|_d|_dS)N)rPrkr$rZrWrY)rr
r
rr
s
zDocument.__init__cCs&|jr|j|jf}n|j}|jj|S)N)rrrwrrZr)rrr^r
r
rrszDocument._get_elem_infocCs|jS)N)r;)rr
r
rrBszDocument._get_actualEncodingcCs|jS)N)rP)rr
r
r_get_doctypeszDocument._get_doctypecCs|jS)N)documentURI)rr
r
r_get_documentURI szDocument._get_documentURIcCs|jS)N)r)rr
r
rrC#szDocument._get_encodingcCs|jS)N)errorHandler)rr
r
r_get_errorHandler&szDocument._get_errorHandlercCs|jS)N)
standalone)rr
r
r_get_standalone)szDocument._get_standalonecCs|jS)N)strictErrorChecking)rr
r
r_get_strictErrorChecking,sz!Document._get_strictErrorCheckingcCs|jS)N)rU)rr
r
rrD/szDocument._get_versioncCsj|j|jkr(tjjdt|t|f|jdk	r>|jj||jtj	kr^|j
r^tjjdtj||S)Nz%s cannot be child of %sz two document elements disallowed)rr.r/r0r1r2r3r4r	rJ_get_documentElementr5)rrAr
r
rr52s
zDocument.appendChildcCsVy|jj|Wntk
r.tjjYnXd|_|_d|_|j	|krRd|_	|S)N)
r$rEr7r/r0r8r<r=r3documentElement)rrCr
r
rr4Bs
zDocument.removeChildcCs$x|jD]}|jtjkr|SqWdS)N)r$rr	rJ)rrAr
r
rrdNszDocument._get_documentElementcCs(|jdk	r|jjd|_tj|dS)N)rPrHr	)rr
r
rrHSs

zDocument.unlinkcCs|sdS|jjddd}|j|_|j|_|j|_xx|jD]n}t|||}|jj|sXt	|jj
||jtj
kr|jdkst	n |jtjkr|jdkst	||_||_q8W|jtjjj|||S)N)rRrQrr`rUr$rNrOrYAssertionErrorrIrr	rrerArPr3rjr/r0r6r7)rrPr<rZ
childcloner
r
rrQYs&
zDocument.cloneNodecCst}||_|S)N)rrO)rrbr
r
rcreateDocumentFragmentnszDocument.createDocumentFragmentcCst|}||_|S)N)rrO)rrr>r
r
r
createElementsszDocument.createElementcCs(t|tstdt}||_||_|S)Nznode contents must be a string)rrrrrGrO)rrGtr
r
rcreateTextNodexs
zDocument.createTextNodecCs(t|tstdt}||_||_|S)Nznode contents must be a string)rrrr&rGrO)rrGr@r
r
rcreateCDATASections
zDocument.createCDATASectioncCst|}||_|S)N)r%rO)rrGr@r
r
r
createCommentszDocument.createCommentcCst||}||_|S)N)rrO)rr	rGpr
r
rcreateProcessingInstructions
z$Document.createProcessingInstructioncCst|}||_d|_|S)Nr)rrOr)rrar
r
rcreateAttributeszDocument.createAttributecCs"t|\}}t|||}||_|S)N)rrrO)rrrrrsrwr>r
r
rrOszDocument.createElementNScCs*t|\}}t||||}||_d|_|S)Nr)rrrOr)rrrrrsrwror
r
rcreateAttributeNSs
zDocument.createAttributeNScCst||||}||_|S)N)r9rO)rrr,r-r:r>r
r
r_create_entityszDocument._create_entitycCst|||}||_|S)N)r8rO)rrr,r-rr
r
r_create_notationszDocument._create_notationcCs||jkr|j|S|jp|js$dS|j}|dkrB|jg}||_n|sJdSd}x>|r|j}|jdd|jD|j|}|r@x|j	j
D]}|jr|j|j|j
r||j|j<|j|kr|}n|jsPq|j|jr
||j|j<|j|kr|}n
|js:Pq|jr||j|j<|j|kr.|}q|jdkrPqWnB|jrx8|j	j
D]*}|jrT||j|j<|j|krT|}qTW|dk	rRPqRW|S)NcSsg|]}|jtkr|qSr
)rr9).0rMr
r
r
<listcomp>sz+Document.getElementById.<locals>.<listcomp>r()rWrZrrYrepopextendr$rrrrrrrwrrrrr)rrstackresultrArrr
r
rgetElementByIdsZ






zDocument.getElementByIdcCst||tS)N)rrk)rrr
r
rrszDocument.getElementsByTagNamecCst|||tS)N)rrk)rrrrwr
r
rrszDocument.getElementsByTagNameNScCs|jj||S)N)rRrS)rrTrUr
r
rrVszDocument.isSupportedcCs>|jtjkrtjjdn|jtjkr2tjjdt|||S)Nzcannot import document nodesz!cannot import document type nodes)rr	rr/r0NotSupportedErrrArN)rrArPr
r
r
importNodes
zDocument.importNodercCsN|dkr|jd|n|jd||fx|jD]}|j||||q2WdS)Nz<?xml version="1.0" ?>z%<?xml version="1.0" encoding="%s"?>%s)r~r$r)rr"r rr!rrAr
r
rrszDocument.writexmlcCsJ|j|k	r tjjd||jf|jtjtjfkr>tjjd|t	krd|kr|j
dd\}}|dkr|tjjkrtjjdq|dkr|tjjkr|jtjkrtjjdd}|}nd}d}|jtjkr|j
}|dk	r|j}|j|nd}||_||_||_||_|jtjkr||_n*||_|dk	rF|j||rF|j||S)Nz?cannot rename nodes from other documents;
expected %s,
found %sz8renameNode() only applies to element and attribute nodesrr(rzillegal use of 'xmlns' prefixz$illegal use of the 'xmlns' attribute)rOr/r0rMrr	rJrr{rrrrrrrrsrrrrrrrr)rrrrrrsrwrZis_idr
r
r
renameNodesR



zDocument.renameNode)rZrPrYr$rW)rrrN)=rorprqrr	rJrrrAr.rErRrrrrrr3r=r<r;rr`rUrbr^r\rrrrBr[r]rCr_rarcrDr5r4rdrHrQrgrhrjrkrlrnrprOrqrrrsrzrrrVr|rr}r
r
r
rrSsh	
:
rSrez#Top-level element of this document.c
Cs|jj|rtjjj}n
tjjj}|jtj	kr|j
|j|j}x>|j
jD]0}|j|j|j|j|j|j|j}|j|_qJW|rx$|jD]}t|||}|j|qWn"|jtjkr|j}|rx$|jD]}t|||}|j|qWn|jtjkr|j|j}n|jtjkr*|j|j}n|jtjkrL|j|j |j}n|jtj!krj|j"|j}nd|jtj#kr|j$|j|j}d|_|j|_n4|jtj%kr|j|k	st&tjjj}|j'j(|j)|j*|j+}||_|rg|j,_-g|j._-xR|j.j-D]F}	t/|	j|	j*|	j+}
||
_|j.j-j0|
t1|	dr|	j2||	|
qWx|j,j-D]b}t3|j|j*|j+|j4}|j5|_5|j6|_6|j7|_7||_|j,j-j0|t1|drR|j2|||qRWntjj8dt9|t1|dr|j2||||S)zo
    Clone a node and give it the new owner document.
    Called by Node.cloneNode and Document.importNode
    TrjzCannot clone node %s):rOrYr/r0r6r7Z
NODE_IMPORTEDrr	rJrOrrrrrrrrrwrr$rNr5r+rgrFrjrGrrkrrnr	rrlrrqrArfrRrRrr,r-r2r)r3r8rIrdrjr9r:r;rrUr{r2)
rArPZnewOwnerDocumentrgr<rrorMr@rr=r>r?r
r
rrNAs~

rNcCs,|jdd}t|dkr|Sd|dfSdS)Nrr(r)rr)rZfieldsr
r
rrsrcCs,|||}|j\}}|j||j|S)N)ZgetEventZ
expandNoderX)funcargskwargsZeventsZtoktypeZrootNoder
r
r_do_pulldom_parses


rcCsJ|dkr$|r$ddlm}|j|Sddlm}t|j|f||dSdS)z3Parse a file into a DOM by filename or file object.Nr)expatbuilder)pulldom)parserbufsize)xml.domrparserr)filerrrrr
r
rrs

rcCsB|dkrddlm}|j|Sddlm}t|j|fd|iSdS)z&Parse a file into a DOM from a string.Nr)r)rr)rrparseStringrr)stringrrrr
r
rrs

rcCsB|r<t|trtj|}x"|D]\}}tjj||sdSqWtjS)N)rrrZ_parse_feature_stringrSrRrS)Zfeaturesfvr
r
rgetDOMImplementations

r)NN)N)N)7rrrr/rrrrZxml.dom.minicompatZxml.dom.xmlbuilderrrr0r	rJrr9ZdefpropertyrBrxrrrrrobjectrZ
AttributeListrrrrrrrrr"rr%r&r(r+r1r9r8rErTr:rSrNrrrrrr
r
r
r<module>sv
	y$
w)GU	><(	O*PR




OHA YOOOO