Viewing File: /opt/alt/python35/lib64/python3.5/xml/dom/__pycache__/minidom.cpython-35.pyc



Yf@s1dZddlZddlZddlmZmZmZmZddlTddl	m
Z
mZejj
jejj
jfZGdddejj
Z
ee
dd	d
ee
dd	dee
d
d	dddZddZddZddZddZGddde
ZGddde
Zeedd	deed
d	deed 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$d	d5Gd6d7d7e"Z#ee#d8d	d9ee#d:d	d;d<d=Z$d>d?Z%Gd@dAdAe"Z&GdBdCdCe#Z'GdDdEdEeZ(ee(d$d	dFGdGdHdHZ)GdIdJdJe)e e
Z*GdKdLdLe)e
Z+GdMdNdNe)e e
Z,GdOdPdPe
Z-GdQdRdReZ.dSdTZ/GdUdVdVe
eZ0ee0dWd	dXdYdZZ1d[d\Z2d]d^Z3ddd_d`Z4ddadbZ5ddcddZ6dS)eacSimple 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@sTeZdZdZdZdZdZdZeZ	ddZ
dddZddddd	Zd
dZ
dd
ZddZddZddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Z dS)2NodeNcCsdS)NT)selfr
r
4/opt/alt/python35/lib64/python3.5/xml/dom/minidom.py__bool__+sz
Node.__bool__cCs|jdd|S)N)toprettyxml)rencodingr
r
rtoxml.sz
Node.toxml	
cCs|dkrtj}n'tjtjd|dddd}|jtjkrp|j|d|||n|j|d|||dkr|jS|j	jSdS)Nrerrorsxmlcharrefreplacenewlinerr)
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_firstChildIs	zNode._get_firstChildcCs|jr|jdSdS)N)r$)rr
r
r_get_lastChildMs	zNode._get_lastChildcCso|j|jkr@x't|jD]}|j||q"W|S|j|jkrztjjdt	|t	|f|j
dk	r|j
j||dkr|j|ny|jj
|}Wn!tk
rtjjYnX|jtkrt||jj||||_||_|rY|j|d}||_||_n	d|_||_
|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=x$t|jD]}|j|q"W|S|j|jkrztjjdt	|t	|fn|jt
krt||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.appendChildcCsz|j|jkr8|j}|j||j||S|j|jkrrtjjdt	|t	|f||krdS|j
dk	r|j
j|y|jj|}Wn!t
k
rtjjYnX||j|<||_
d|_
|jtks|jtkr"t||j|_|j|_d|_d|_|jra||j_|jrv||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|Wn!tk
r7tjjYnX|jdk	rV|j|j_|jdk	rt|j|j_d|_|_|jt	krt
|d|_|S)N)r$remover7r/r0r8r<r=rr9r:r3)rrCr
r
rr4s

	zNode.removeChildcCs'g}x|jD]}|jtjkr|jsl|rG|j|d_|jr_|j|j_|jq|r|dj|jkr|d}|j|j|_|j|_|jr||j_|jq|j|q|j||jtj	kr|j
qW||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getInterfaceszNode.getInterfacecCs6y|j|dSWnttfk
r1dSYnXdS)Nr)
_user_dataAttributeErrorKeyError)rkeyr
r
rgetUserDataszNode.getUserDatacCsd}y
|j}Wn!tk
r6i}||_YnX||krQ||d}|dkryd}|dk	r||=n||f||<|S)Nr)r[r\)rr^rGhandlerolddr
r
rsetUserDatas


zNode.setUserDatacCsdt|dr`xNt|jjD]7\}\}}|dk	r%|j|||||q%WdS)Nr[)hasattrlistr[itemsZhandle)r	operationsrcZdstr^rGr`r
r
r_call_user_data_handlers(zNode._call_user_data_handlercCsYd|_|_|jrCx|jD]}|jq#Wt|_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__)!__name__
__module____qualname__namespaceURIr3rOr<r=rprefixr
rrr%r&r'r*r-r5rDr4rKrQrVrWrYrZr_rcrirHrkrmr
r
r
rr	"s:  
r	
firstChilddoczFirst child node, or None.	lastChildzLast child node, or None.	localNamez"Namespace-local name of this node.cCsE|j}|r+|d}||_||_|j|||_dS)Nr(r))r$r=r<rIr3)rrAr$Zlastr
r
rrBs	
		
rBcCs6x/|dk	r1|jtjkr%dS|j}qWdS)NTF)rr	rr3)rAr
r
r_in_document&s

rwcCsM|rI|jddjddjddjdd}|j|d	S)
zWrites datachars to writer.&z&amp;<z&lt;"z&quot;>z&gt;N)replacewrite)r"rGr
r
r_write_data.sr~cCsbx[|jD]P}|jtjkrJ|dks=|j|krJ|j|t|||q
W|S)Nr)r$rr	rJtagNamerI_get_elements_by_tagName_helper)parentnamercrAr
r
rr5s
rcCsxy|jD]n}|jtjkr
|dks=|j|kre|dksX|j|kre|j|t||||q
W|S)Nr)r$rr	rJrvrqrI"_get_elements_by_tagName_ns_helper)rZnsURIrvrrAr
r
rr=s
rc@smeZdZejZdZdZdZdZ	ej
ejejej
ejejejfZddZdS)DocumentFragmentz#document-fragmentNcCst|_dS)N)rjr$)rr
r
r__init__TszDocumentFragment.__init__)rnrorpr	r+rnodeName	nodeValue
attributesr3rJrFCDATA_SECTION_NODEENTITY_REFERENCE_NODEPROCESSING_INSTRUCTION_NODECOMMENT_NODE
NOTATION_NODEr.rr
r
r
rrFs	rc@seZdZd#ZejZd	Zd
Zd
Z	ej
ejfZe
d	d	ddZd
dZddZddZddZeeeZZddZddZeeeZZddZddZeeeZddZdd Zd!d"Zd	S)$Attr_name_valuerq_prefixr$
_localNamerOownerElementNFcCsGd|_||_||_||_t|_|jjtdS)N)rrrqrrjr$rIText)rqNamerqrvrrr
r
rrbs				z
Attr.__init__cCs;y|jSWn)tk
r6|jjdddSYnXdS)N:r(r))rr\rsplit)rr
r
rrWos
zAttr._get_localNamecCs|jS)N)	specified)rr
r
r_get_specifieduszAttr._get_specifiedcCs|jS)N)r)rr
r
r	_get_namexszAttr._get_namecCs)||_|jdk	r%t|jdS)N)rrr:)rvaluer
r
r	_set_name{s	zAttr._set_namecCs|jS)N)r)rr
r
r
_get_valueszAttr._get_valuecCsI||_||jd_|jdk	r5t|j||jd_dS)Nr)rr$rGrr:)rrr
r
r
_set_values
	
zAttr._set_valuecCs|jS)N)r)rr
r
r_get_prefixszAttr._get_prefixcCs|j}|dkr9|r9|tkr9tjjd||_|dkrZ|j}nd||jf}|jrt|j||_	dS)Nxmlnsz5illegal use of 'xmlns' prefix for the wrong namespacez%s:%s)
rqrr/r0NamespaceErrrrvrr:r)rrrZnsuriZnewNamer
r
r_set_prefixs					
zAttr._set_prefixcCs|j}|dk	rk|j|j=|j|j|jf=|jrkd|_|jd8_|jj	d8_	x|j
D]}|jquW|j
dd=dS)NFr()r_attrsr_attrsNSrqrv_is_id_magic_id_nodesrO_magic_id_countr$rH)relemrMr
r
rrHs	
		zAttr.unlinkcCs|jr
dS|j}|j}|dks7|dkr;dS|j|}|dkrZdS|jry|j|j|jS|j|jSdS)NTF)	rrOr_get_elem_inforqisIdNSrvisIdr)rrtrinfor
r
r	_get_isIds				zAttr._get_isIdcCs|j}|j}|dks*|dkr.tS|j|}|dkrMtS|jrl|j|j|jS|j|jSdS)N)	rOr_no_typerrqgetAttributeTypeNSrvgetAttributeTyper)rrtrrr
r
r_get_schemaTypes			zAttr._get_schemaType)rrrqrr$rrOr) rnrorp	__slots__r	ATTRIBUTE_NODErrrrrFrr.rrrWrrrpropertyrrrrrrrrrrrHrrr
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@sieZdZdZd<ZddZddZd	d
ZddZd
dZ	ddZ
ddZddZddZ
dddZeZddZddZddZd 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rs		zNamedNodeMap.__init__cCs
t|jS)N)lenr)rr
r
r_get_lengthszNamedNodeMap._get_lengthcCs<y|t|jj|SWntk
r7dSYnXdS)N)rerkeys
IndexError)rr6r
r
ritems
zNamedNodeMap.itemcCs=g}x0|jjD]}|j|j|jfqW|S)N)rvaluesrIrr)rrLrAr
r
rrfszNamedNodeMap.itemscCsFg}x9|jjD](}|j|j|jf|jfqW|S)N)rrrIrqrvr)rrLrAr
r
ritemsNSs&zNamedNodeMap.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.getcCsO|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__$szNamedNodeMap.__getitem__cCst|triy|j|}Wn:tk
r\t|}|jj|_|j|YnX||_n.t|tst	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|SWntk
r'dSYnXdS)N)rr])rrr
r
rgetNamedItem:s
zNamedNodeMap.getNamedItemcCs2y|j||fSWntk
r-dSYnXdS)N)rr])rrqrvr
r
rgetNamedItemNS@s
zNamedNodeMap.getNamedItemNScCsz|j|}|dk	rgt|j|j|j=|j|j|jf=t|drcd|_	|St
jjdS)Nr)
rr:rrrrrqrvrdrr/r0r8)rrnr
r
rremoveNamedItemFs

	zNamedNodeMap.removeNamedItemcCs}|j||}|dk	rjt|j|j|j|jf=|j|j=t|drfd|_	|St
jjdS)Nr)
rr:rrrqrvrrrdrr/r0r8)rrqrvrr
r
rremoveNamedItemNSRs

	zNamedNodeMap.removeNamedItemNScCst|ts7tjjdt|t|f|jj|j}|r\|j	||j|j<||j
|j|jf<|j
|_t|j|S)Nz%s cannot be child of %s)rrr/r0r1r2rrrrHrrqrvrrr:)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)!rnrorp__doc__rrrrrfrrrrrr__len__rrrrrrrrrrrrrrrrrr
r
r
rrs<
rZlengthz$Number of nodes in the NamedNodeMap.c@sFeZdZdZddZddZddZd	d
ZdS)
TypeInfo	namespacercCs||_||_dS)N)rr)rrrr
r
rrs	zTypeInfo.__init__cCsA|jr&d|jj|j|jfSd|jj|jfSdS)Nz<%s %r (from %r)>z<%s %r>)r	__class__rnr)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)rnrorprrrrrr
r
r
rrs
rc@seZdZdDZejZd
ZeZ	dZ
ejejejej
ejejfZed
d
ddZddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&ZeZd'd(Zd)d*Z d+d,Z!e!Z"d-d.Z#d/d0Z$d1d2Z%d3d4Z&d5d6Z'd7d7d7d8d9Z(d:d;Z)d<d=Z*d>d?Z+d@dAZ,dBdCZ-d
S)EElementrOr3rrrrrqrr$rrr<r=NrcCs]d|_||_|_||_||_t|_d|_|_d|_	d|_
dS)N)r3rrrrrqrjr$r<r=rr)rrrqrrrvr
r
rrs			
	zElement.__init__cCs%|jdkr!i|_i|_dS)N)rr)rr
r
r_ensure_attributess	zElement._ensure_attributescCs;y|jSWn)tk
r6|jjdddSYnXdS)Nrr(r))rr\rr)rr
r
rrWs
zElement._get_localNamecCs|jS)N)r)rr
r
r_get_tagNameszElement._get_tagNamecCs\|jdk	r9x't|jjD]}|jq%Wd|_d|_tj|dS)N)rrerrHrr	)rattrr
r
rrHs		zElement.unlinkcCsB|jdkrdSy|j|jSWntk
r=dSYnXdS)Nr)rrr])rrr
r
rgetAttributes
zElement.getAttributecCsH|jdkrdSy|j||fjSWntk
rCdSYnXdS)Nr)rrr])rrqrvr
r
rgetAttributeNSs
zElement.getAttributeNScCs{|j|}|dkrLt|}||_|j|_|j|n+||jkrw||_|jrwt|dS)N)getAttributeNoderrrOsetAttributeNoderr:)rrrrr
r
rsetAttributes			zElement.setAttributecCst|\}}|j||}|dkrjt||||}||_|j|_|j|nL||jkr||_|jrt||j|kr||_||_	dS)N)
_nssplitgetAttributeNodeNSrrrOrrr:rrr)rrq
qualifiedNamerrr	localnamerr
r
rsetAttributeNSs			
	zElement.setAttributeNScCs#|jdkrdS|jj|S)N)rr)rZattrnamer
r
rrszElement.getAttributeNodecCs)|jdkrdS|jj||fS)N)rr)rrqrvr
r
rrszElement.getAttributeNodeNScCs|jd|fkr'tjjd|j|jj|jd}|dk	rb|j||j	j|j
|jfd}|dk	r||k	r|j|t||||k	r|S||k	r|SdS)Nzattribute node already owned)
rr/r0ZInuseAttributeErrrrrrremoveAttributeNoderrqrv_set_attribute_node)rrZold1Zold2r
r
rrs

!

zElement.setAttributeNodecCsd|jdkrtjjy|j|}Wn!tk
rRtjjYnX|j|dS)N)rr/r0r8rr]r)rrrr
r
rremoveAttributes
zElement.removeAttributecCsj|jdkrtjjy|j||f}Wn!tk
rXtjjYnX|j|dS)N)rr/r0r8r]r)rrqrvrr
r
rremoveAttributeNS%s
zElement.removeAttributeNScCsu|dkrtjjy|j|jWn!tk
rPtjjYnXt||j|j|_dS)N)	r/r0r8rrr]r:rHrO)rrAr
r
rr.s


zElement.removeAttributeNodecCs |jdkrdS||jkS)NF)r)rrr
r
rhasAttribute=szElement.hasAttributecCs&|jdkrdS||f|jkS)NF)r)rrqrvr
r
rhasAttributeNSBszElement.hasAttributeNScCst||tS)N)rrj)rrr
r
rgetElementsByTagNameGszElement.getElementsByTagNamecCst|||tS)N)rrj)rrqrvr
r
rgetElementsByTagNameNSJszElement.getElementsByTagNameNScCsd|jt|fS)Nz<DOM Element: %s at %#x>)rr)rr
r
rrNszElement.__repr__rc	CsW|j|d|j|j}t|j}x@|D]8}|jd|t|||j|jdq=W|jrB|jdt|jdkr|jdj	t
jkr|jdj|dddnH|j|x+|jD] }|j|||||qW|j||jd|j|fn|jd	|dS)
Nryz %s="rzr{r(rrz</%s>%sz/>%s)
r}r_get_attributessortedrr~rr$rrr	rFr)	rr"r 	addindentr!rZa_namesZa_namerAr
r
rrQs$
	
 

zElement.writexmlcCs |jt|j|j|S)N)rrrr)rr
r
rrls
zElement._get_attributescCs|jr
dSdSdS)NTF)r)rr
r
r
hasAttributesps	zElement.hasAttributescCs |j|}|j|dS)N)rsetIdAttributeNode)rridAttrr
r
rsetIdAttributexszElement.setIdAttributecCs#|j||}|j|dS)N)rr)rrqrvrr
r
rsetIdAttributeNS|szElement.setIdAttributeNScCs|dks|j|jr.tjjt|dk	rOtjj|jsd|_|jd7_|j	j
d7_
t|dS)NTr()rYrr/r0r8_get_containing_entrefNoModificationAllowedErrrrrOrr:)rrr
r
rrs		zElement.setIdAttributeNode)rOr3rrrrrqrr$rrr<r=).rnrorprr	rJrrrrrrrrFrrr.rrrrWrrHrrrrrrrZsetAttributeNodeNSrrrZremoveAttributeNodeNSrrrrrrrrrrrr
r
r
rrsT			
rrz*NamedNodeMap of attributes on the element.z%Namespace-local name of this element.cCsJt||j||j|j<||j|j|jf<||_dS)N)r:rrrrrqrvr)elementrr
r
rrs


rc@seZdZdZfZdZeZdZdZ	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r5s	zChildless.appendChildcCsdS)NFr
)rr
r
rr%szChildless.hasChildNodescCstjj|jddS)Nz nodes do not have children)r/r0r1r)rr>r?r
r
rr-s	zChildless.insertBeforecCstjj|jddS)Nz nodes do not have children)r/r0r8r)rrCr
r
rr4s	zChildless.removeChildcCsdS)Nr
)rr
r
rrKszChildless.normalizecCstjj|jddS)Nz nodes do not have children)r/r0r1r)rr>rCr
r
rrDs	zChildless.replaceChild)rnrorprrrZ
EmptyNodeListr$rsrur'r*r5r%r-r4rKrDr
r
r
rrs	rc@seZdZejZdZddZddZddZ	e
ee	Zd	d
ZddZ
e
ee
Zd
d
d
ddZdS)ProcessingInstructiontargetrGcCs||_||_dS)N)rrG)rrrGr
r
rrs	zProcessingInstruction.__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}rrG)rr"r rr!r
r
rrszProcessingInstruction.writexmlN)rrG)rnrorpr	rrrrr	r
rrrrrrr
r
r
rrs	rc@seZdZdZddZdd	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_datacCsK|j}t|dkr$d}nd}d|jj|dd|fS)N
z...rz<DOM %s node "%r%s">r)rGrrrn)rrGZ	dotdotdotr
r
rrs		zCharacterData.__repr__cCsx|dkrtjjd|t|jkrEtjjd|dkrctjjd|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.appendDatacCs|dkrtjjd|t|jkrEtjjd|r{d|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.insertDatacCs|dkrtjjd|t|jkrEtjjd|dkrctjjd|r|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.deleteDatacCs|dkrtjjd|t|jkrEtjjd|dkrctjjd|rd|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<)rnrorprrrrrrrrGrrrrrrrr
r
r
rr
s			
r
zLength of the string data.c@speZdZfZejZdZdZddZ	dddddZ
dd	Zd
dZdd
Z
dS)rz#textNcCs|dks!|t|jkr3tjjd|j}|j|d|_|j|_|j}|jr||jj	kr|dkr|jj
|n|jj|||jd||_|S)Nrzillegal offset value)rrGr/r0rrrOr<r3r$r5r-)rrZnewTextnextr
r
r	splitText0s!	zText.splitTextrcCs!t|d||j|fdS)Nz%s%s%s)r~rG)rr"r rr!r
r
rr?sz
Text.writexmlcCs|jg}|j}xK|dk	rb|jtjtjfkr^|jd|j|j}qPqW|j}xH|dk	r|jtjtjfkr|j|j|j}qoPqoWdj	|S)Nrr)
rGr=rr	rFrr;r<rIjoin)rrLrr
r
r_get_wholeTextDs		zText._get_wholeTextcCs|j}|j}xK|dk	r_|jtjtjfkr[|j}|j||}qPqW|j}|s||j|xK|dk	r|jtjtjfkr|j}|j||}qPqW|r||_|SdSdS)N)	r3r=rr	rFrr4r<rG)rZcontentrrrr
r
rreplaceWholeTextVs*			
		
	
		zText.replaceWholeTextcCs_|jjrdSt|}|dkr/dS|jj|}|dkrQdS|jSdS)NF)rGstrip_get_containing_elementrOrisElementContent)rrrr
r
r!_get_isWhitespaceInElementContentrsz&Text._get_isWhitespaceInElementContent)rnrorprr	rFrrrrrrrr#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}qWdS)N)r3rr	rJ)rAr@r
r
rr!s	
r!cCs?|j}x/|dk	r:|jtjkr.|S|j}qWdS)N)r3rr	r)rAr@r
r
rrs	
rc@s@eZdZejZdZddZdddddZdS)Commentz#commentcCstj|||_dS)N)r
rr)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)	rnrorpr	rrrrrr
r
r
rr$s	r$c@s:eZdZfZejZdZdddddZdS)CDATASectionz#cdata-sectionrcCs<|jjddkr$td|jd|jdS)Nz]]>rz$']]>' not allowed in a CDATA sectionz<![CDATA[%s]]>)rGfindr7r})rr"r rr!r
r
rrszCDATASection.writexmlN)	rnrorprr	rrrrr
r
r
rr%s	r%c@seZdZdZfddZddZddZdd	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
|Sq
WdS)N)r(r)rrrr
r
rrsz+ReadOnlySequentialNamedNodeMap.getNamedItemcCs:x3|jD](}|j|kr
|j|kr
|Sq
WdS)N)r(rqrv)rrqrvrr
r
rrsz-ReadOnlySequentialNamedNodeMap.getNamedItemNScCsLt|tr!|j|}n|j|}|dkrHt||S)N)rr,rrr])rZ
name_or_tuplerAr
r
rrsz*ReadOnlySequentialNamedNodeMap.__getitem__cCs<|dkrdSy|j|SWntk
r7dSYnXdS)Nr)r(r)rr6r
r
rrs
z#ReadOnlySequentialNamedNodeMap.itemcCstjjddS)Nz"NamedNodeMap instance is read-only)r/r0r)rrr
r
rrs	z.ReadOnlySequentialNamedNodeMap.removeNamedItemcCstjjddS)Nz"NamedNodeMap instance is read-only)r/r0r)rrqrvr
r
rrs	z0ReadOnlySequentialNamedNodeMap.removeNamedItemNScCstjjddS)Nz"NamedNodeMap instance is read-only)r/r0r)rrAr
r
rrs	z+ReadOnlySequentialNamedNodeMap.setNamedItemcCstjjddS)Nz"NamedNodeMap instance is read-only)r/r0r)rrAr
r
rrs	z-ReadOnlySequentialNamedNodeMap.setNamedItemNScCs
|jgS)N)r()rr
r
rrsz+ReadOnlySequentialNamedNodeMap.__getstate__cCs|d|_dS)Nr)r()rrr
r
rrsz+ReadOnlySequentialNamedNodeMap.__setstate__N)r()rnrorprrrrrrrrrrrrrrr
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_inits	z!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,)rnrorprrr-r.r/r
r
r
rr*s
r*c@speZdZejZdZdZdZdZ	dZ
ddZddZddZ
dddd	d
ZdS)DocumentTypeNcCsIt|_t|_|r9t|\}}||_|j|_dS)N)r'entities	notationsrrr)rrrrrr
r
rr	s	zDocumentType.__init__cCs|jS)N)internalSubset)rr
r
r_get_internalSubsetsz DocumentType._get_internalSubsetcCsY|jdkrQtd}|j|_|j|_tjjj}|r:g|j_	g|j
_	xU|j
j	D]G}t|j|j|j
}|j
j	j||j|||qmWx|jj	D]q}t|j|j|j
|j}|j|_|j|_|j|_|jj	j||j|||qW|j||||SdSdS)N)rOr0rrr/r0UserDataHandlerNODE_CLONEDr1r(r2Notationr+r,rIriEntitynotationNameactualEncodingrrU)rrPclonergrnotationeentityr
r
rrQs.zDocumentType.cloneNodercCs|jd|j|j|jrL|jd||j||jfn#|jro|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,r3)rr"r rr!r
r
rr/s
			

zDocumentType.writexml)rnrorpr	DOCUMENT_TYPE_NODErrrr+r,r3rr4rQrr
r
r
rr0s	r0c@seZdZdZejZdZdZdZ	dZ
ddZddZddZ
dd	Zd
dZdd
ZddZddZdS)r8NcCs2||_||_t|_|j||dS)N)rr9rjr$r-)rrr+r,r<r
r
rrFs		zEntity.__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r5Us	zEntity.appendChildcCstjjddS)Nz+cannot insert children below an entity node)r/r0r1)rr>r?r
r
rr-Ys	zEntity.insertBeforecCstjjddS)Nz*cannot remove children from an entity node)r/r0r1)rrCr
r
rr4]s	zEntity.removeChildcCstjjddS)Nz)cannot replace children of an entity node)r/r0r1)rr>rCr
r
rrDas	zEntity.replaceChild)rnrorprr	ZENTITY_NODErrr:rrUrrArBrCr5r-r4rDr
r
r
rr8=s	r8c@s+eZdZejZdZddZdS)r7NcCs||_|j||dS)N)rr-)rrr+r,r
r
rris	zNotation.__init__)rnrorpr	rrrrr
r
r
rr7es	r7c	@sjeZdZddddddddgZdd	Zd
dZdd
ZddZddZdS)DOMImplementationcore1.02.0Nr/ls-load3.0cCs+|dkrd}|j|f|jkS)Nr)lower	_features)rrTrUr
r
rrSyszDOMImplementation.hasFeaturec	Cs6|r'|jdk	r'tjjd|j}|dkoT|dkoT|dk}|rw|rwtjjd|r
t|\}}|dkr|dkrtjjd|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)	rrqrrOrtZadd_root_elementrrrrr
r
rcreateDocument~s4		



		

		z DOMImplementation.createDocumentcCs"t|}||_||_|S)N)r0r+r,)rrr+r,rOr
r
rcreateDocumentTypes		z$DOMImplementation.createDocumentTypecCs|j|dr|SdSdS)N)rS)rrTr
r
rrZszDOMImplementation.getInterfacecCstS)N)Document)rr
r
rrMsz"DOMImplementation._create_document)rErF)rErG)rEN)r/rF)r/rG)r/N)rHrI)rHN)	rnrorprKrSrPrQrZrMr
r
r
rrDns	-rDc@seZdZdZdZddZddZddZd	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)rrqrvr
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
)rrTr
r
rrszElementInfo.isIdcCsdS)z<Returns true iff the identified attribute is a DTD-style ID.Fr
)rrqrvr
r
rrszElementInfo.isIdNScCs|jS)N)r)rr
r
rrszElementInfo.__getstate__cCs
||_dS)N)r)rrr
r
rrszElementInfo.__setstate__N)r)rnrorprrrrrr"rUrrrrr
r
r
rrSsrScCsW|jtjkr+|jjd|_n(t|rS|jjjd|j_dS)N)rr	r	_id_cacheclear_id_search_stackrwrO)rAr
r
rr:s
r:c@s0eZdZdMZejejejejfZ	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:dHdHdHddIdJZ;dKdLZ<dS)NrR
_elem_inforOrXr$rVz	#documentNFrcCs4d|_t|_i|_i|_d|_dS)N)rOrjr$rYrVrX)rr
r
rr
s
			zDocument.__init__cCs7|jr|j|jf}n	|j}|jj|S)N)rqrvrrYr)rrr^r
r
rrs		zDocument._get_elem_infocCs|jS)N)r:)rr
r
rrAszDocument._get_actualEncodingcCs|jS)N)rO)rr
r
r_get_doctypeszDocument._get_doctypecCs|jS)N)documentURI)rr
r
r_get_documentURI szDocument._get_documentURIcCs|jS)N)r)rr
r
rrB#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rC/szDocument._get_versioncCs|j|jkr:tjjdt|t|f|jdk	rY|jj||jtj	kr|j
rtjjdtj||S)Nz%s cannot be child of %sz two document elements disallowed)rr.r/r0r1r2r3r4r	rJ_get_documentElementr5)rrAr
r
rr52s			zDocument.appendChildcCsmy|jj|Wn!tk
r7tjjYnXd|_|_d|_|j	|krid|_	|S)N)
r$rEr7r/r0r8r<r=r3documentElement)rrCr
r
rr4Bs
		zDocument.removeChildcCs.x'|jD]}|jtjkr
|Sq
WdS)N)r$rr	rJ)rrAr
r
rrcNszDocument._get_documentElementcCs6|jdk	r%|jjd|_tj|dS)N)rOrHr	)rr
r
rrHSs
	zDocument.unlinkcCs|s
dS|jjddd}|j|_|j|_|j|_x|jD]}t|||}|jj|st	|jj
||jtj
kr|jdkst	n0|jtjkr|jdkst	||_||_qPW|jtjjj|||S)N)rRrPrr_rUr$rNrOrYAssertionErrorrIrr	rrdr@rOr3rir/r0r5r6)rrPr;rZ
childcloner
r
rrQYs&	

zDocument.cloneNodecCst}||_|S)N)rrO)rrbr
r
rcreateDocumentFragmentns		zDocument.createDocumentFragmentcCst|}||_|S)N)rrO)rrr=r
r
r
createElementss	zDocument.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
createComments	zDocument.createCommentcCst||}||_|S)N)rrO)rrrGpr
r
rcreateProcessingInstructions	z$Document.createProcessingInstructioncCs"t|}||_d|_|S)Nr)rrOr)rrar
r
rcreateAttributes		zDocument.createAttributecCs1t|\}}t|||}||_|S)N)rrrO)rrqrrrrvr=r
r
rrNs	zDocument.createElementNScCs=t|\}}t||||}||_d|_|S)Nr)rrrOr)rrqrrrrvrnr
r
rcreateAttributeNSs
		zDocument.createAttributeNScCs"t||||}||_|S)N)r8rO)rrr+r,r9r=r
r
r_create_entitys	zDocument._create_entitycCst|||}||_|S)N)r7rO)rrr+r,rr
r
r_create_notations	zDocument._create_notationcCs||jkr|j|S|jp)|js0dS|j}|dkr]|jg}||_n
|sgdSd}x|r|j}|jdd|jD|j|}|rxI|j	j
D]}|jr |j|j|j
r||j|j<|j|kr|}q|jsPq|j|jrg||j|j<|j|krZ|}q|jsPq|jr||j|j<|j|kr|}q|jdkrPqWnQ|jrxE|j	j
D]4}|jr||j|j<|j|kr|}qW|dk	rpPqpW|S)NcSs%g|]}|jtkr|qSr
)rr9).0rMr
r
r
<listcomp>s	z+Document.getElementById.<locals>.<listcomp>r()rVrYrrXrdpopextendr$rrrrqrrvrrrrr)rrstackresultrArrr
r
rgetElementByIdsZ											
zDocument.getElementByIdcCst||tS)N)rrj)rrr
r
rrszDocument.getElementsByTagNamecCst|||tS)N)rrj)rrqrvr
r
rrszDocument.getElementsByTagNameNScCs|jj||S)N)rRrS)rrTrUr
r
rrVszDocument.isSupportedcCs[|jtjkr'tjjdn$|jtjkrKtjjdt|||S)Nzcannot import document nodesz!cannot import document type nodes)rr	rr/r0NotSupportedErrr@rN)rrArPr
r
r
importNodes
zDocument.importNodercCse|dkr |jd|n|jd||fx'|jD]}|j||||qAWdS)Nz<?xml version="1.0" ?>z%<?xml version="1.0" encoding="%s"?>%s)r}r$r)rr"r rr!rrAr
r
rrs	zDocument.writexmlcCs|j|k	r.tjjd||jf|jtjtjfkr[tjjd|t	krd|kr|j
dd\}}|dkr|tjjkrtjjdq|dkr|tjjkr|jtjkrtjjdd}|}nd}d}|jtjkr[|j
}|dk	ra|j}|j|nd}||_||_||_||_|jtjkr||_n5||_|dk	r|j||r|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/r0rLrr	rJrrzrrrrrrrrrrrqrrrrr)rrrqrrrrvrZis_idr
r
r
renameNodesR														

zDocument.renameNode)rYrOrXr$rV)=rnrorprr	rJrrr@r.rDrRrrrrrr3r=r<r:rr_rUrar]r[rrrrArZr\rBr^r`rbrCr5r4rcrHrQrfrgrirjrkrmrorNrprqrrryrrrVr{rr|r
r
r
rrRsh		
	
:rRrdz#Top-level element of this document.c
Cs|jj|r$tjjj}ntjjj}|jtj	kr|j
|j|j}xW|j
jD]F}|j|j|j|j|j|j|j}|j|_qmW|rx|jD]%}t|||}|j|qWn|jtjkrM|j}|rx|jD]%}t|||}|j|q!Wn|jtjkrt|j|j}nd|jtjkr|j|j}n=|jtjkr|j|j |j}n|jtj!kr|j"|j}n|jtj#kr1|j$|j|j}d|_|j|_n|jtj%kr|j|k	sXt&tjjj}|j'j(|j)|j*|j+}||_|rg|j,_-g|j._-xm|j.j-D]_}	t/|	j|	j*|	j+}
||
_|j.j-j0|
t1|	dr|	j2||	|
qWx|j,j-D]}t3|j|j*|j+|j4}|j5|_5|j6|_6|j7|_7||_|j,j-j0|t1|dr,|j2||	|q,Wntjj8dt9|t1|dr|j2||||S)zo
    Clone a node and give it the new owner document.
    Called by Node.cloneNode and Document.importNode
    TrizCannot clone node %s):rOrYr/r0r5r6Z
NODE_IMPORTEDrr	rJrNrqrrrrrrrvrr$rNr5r+rfrFrirGrrjrrmrrrkrrpr@rerRrQrr+r,r1r(r2r7rIrdrir8r9r:rrUrzr2)
rArPZnewOwnerDocumentrgr;rrnrMr@rr<r=r>r
r
rrNAs~					rNcCs:|jdd}t|dkr(|Sd|dfSdS)Nrr(r)rr)rZfieldsr
r
rrsrcCs<|||}|j\}}|j||j|S)N)ZgetEventZ
expandNoderW)funcargskwargsZeventsZtoktypeZrootNoder
r
r_do_pulldom_parses


rcCsf|dkr0|r0ddlm}|j|Sddlm}t|j|fd|d|iSdS)z3Parse a file into a DOM by filename or file object.Nr)expatbuilder)pulldomparserbufsize)xml.domrparserr)filerrrrr
r
rrs
rcCsY|dkr)ddlm}|j|Sddlm}t|j|fd|iSdS)z&Parse a file into a DOM from a string.Nr)r)rr)rrparseStringrr)stringrrrr
r
rrs
rcCs[|rTt|tr$tj|}x-|D]%\}}tjj||s+dSq+WtjS)N)rrrZ_parse_feature_stringrRrRrS)Zfeaturesfvr
r
rgetDOMImplementationsr)7rrrr/rrrrZxml.dom.minicompatZxml.dom.xmlbuilderrrr0r	rJrr9ZdefpropertyrBrwr~rrrrobjectrZ
AttributeListrrrrrrr
rr!rr$r%r'r*r0r8r7rDrSr:rRrNrrrrrr
r
r
r<module>s"

	y)GU	><(	O*OR

Back to Directory File Manager