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

3

sje@sdZddlZddlZddlmZmZmZmZddlTddl	m
Z
mZejj
jejj
jfZGdddejj
Z
ee
dd	d
ee
ddd
ee
d
dd
ddZddZddZddZGddde
ZGddde
Zeeddd
eed
dd
eeddd
Gd d!d!eZeed"d#d
eZGd$d%d%eZeddZGd&d'd'e
Zeed(d)d
eed
d*d
d+d,ZGd-d.d.ZGd/d0d0ee
Z Gd1d2d2ee
Z!ee!d"d3d
Gd4d5d5e!Z"ee"d6d7d
ee"d8d9d
d:d;Z#d<d=Z$Gd>d?d?e!Z%Gd@dAdAe"Z&GdBdCdCeZ'ee'd"dDd
GdEdFdFZ(GdGdHdHe(ee
Z)GdIdJdJe(e
Z*GdKdLdLe(ee
Z+GdMdNdNe
Z,GdOdPdPeZ-dQdRZ.GdSdTdTe
eZ/ee/dUdVd
dWdXZ0dYdZZ1d[d\Z2dcd]d^Z3ddd_d`Z4dedadbZ5dS)facSimple 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/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
rBcCs6|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'sr~cCsHxB|jD]8}|jtjkr4|dks*|j|kr4|j|t|||qW|S)Nr)r$rr	rJtagNamerI_get_elements_by_tagName_helper)parentnamercrAr
r
rr.s
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r6s
rc@sJeZdZejZdZdZdZdZ	ej
ejejej
ejejejfZddZdS)DocumentFragmentz#document-fragmentNcCst|_dS)N)rkr$)rr
r
r__init__MszDocumentFragment.__init__)rorprqr	r+rnodeName	nodeValue
attributesr3rJrFCDATA_SECTION_NODEENTITY_REFERENCE_NODEPROCESSING_INSTRUCTION_NODECOMMENT_NODE
NOTATION_NODEr.rr
r
r
rr?src@seZdZd#ZejZd	Zd
Zd
Z	ej
ejfZe
d	d	fddZd
dZddZddZddZeeeZZddZddZeeeZZddZddZeeeZddZdd Zd!d"Zd	S)$Attr_name_valuerr_prefixr$
_localNamerOownerElementNFcCs8d|_d|_||_||_||_t|_|jjtdS)N)	rrOrrrrrkr$rIText)rqNamerrrwrsr
r
rr[sz
Attr.__init__cCs.y|jStk
r(|jjdddSXdS)N:r(r))rr\rsplit)rr
r
rrWiszAttr._get_localNamecCs|jS)N)	specified)rr
r
r_get_specifiedoszAttr._get_specifiedcCs|jS)N)r)rr
r
r	_get_namerszAttr._get_namecCs||_|jdk	rt|jdS)N)rrr:)rvaluer
r
r	_set_nameus
zAttr._set_namecCs|jS)N)r)rr
r
r
_get_value|szAttr._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rQs.

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rszNamedNodeMap.getcCs:|jt|ddkrdSt|t|kt|t|kSdS)Nrr)rgetattrid)rrXr
r
r_cmp	szNamedNodeMap._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getNamedItem4s
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removeNamedItem@s



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


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rXs

zNamedNodeMap.setNamedItemcCs
|j|S)N)r)rrAr
r
rsetNamedItemNSeszNamedNodeMap.setNamedItemNScCs||}t|j|jdS)N)r:rrH)rrrAr
r
r__delitem__hs
zNamedNodeMap.__delitem__cCs|j|j|jfS)N)rrr)rr
r
r__getstate__mszNamedNodeMap.__getstate__cCs|\|_|_|_dS)N)rrr)rstater
r
r__setstate__pszNamedNodeMap.__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r|szTypeInfo.__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rys
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=NrcCsHd|_d|_||_|_||_||_t|_d|_|_	d|_
d|_dS)N)rOr3rrrsrrrkr$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hasAttribute8s
zElement.hasAttributecCs|jdkrdS||f|jkS)NF)r)rrrrwr
r
rhasAttributeNS=s
zElement.hasAttributeNScCst||tS)N)rrk)rrr
r
rgetElementsByTagNameBszElement.getElementsByTagNamecCst|||tS)N)rrk)rrrrwr
r
rgetElementsByTagNameNSEszElement.getElementsByTagNameNScCsd|jt|fS)Nz<DOM Element: %s at %#x>)rr)rr
r
rrIszElement.__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)
Nryz %s="rzr{r(rrz</%s>%sz/>%s)
r}r_get_attributessortedrr~rr$rrr	rFr)	rr"r 	addindentr!rZa_namesZa_namerAr
r
rrLs$



zElement.writexmlcCs|jt|j|j|S)N)rrrr)rr
r
rrgszElement._get_attributescCs|jr
dSdSdS)NTF)r)rr
r
r
hasAttributeskszElement.hasAttributescCs|j|}|j|dS)N)rsetIdAttributeNode)rridAttrr
r
rsetIdAttributess
zElement.setIdAttributecCs|j||}|j|dS)N)rr)rrrrwrr
r
rsetIdAttributeNSws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r{s

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)rrG)rrrGr
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}rrG)rr"r rr!r
r
rrszProcessingInstruction.writexmlN)rrG)rrr)rorprqr	rrrrr	r
rrrr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
deleteDatas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r
s			
r
zLength 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	splitText+szText.splitTextrcCst|d||j|fdS)Nz%s%s%s)r~rG)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_wholeText?s

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replaceWholeTextQs*




zText.replaceWholeTextcCsF|jjrdSt|}|dkr"dS|jj|}|dkr:dS|jSdS)NF)rGstrip_get_containing_elementrOrisElementContent)rrrr
r
r!_get_isWhitespaceInElementContentms
z&Text._get_isWhitespaceInElementContent)rrr)rorprqrr	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}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)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)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.r/r
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rszDocumentType.__init__cCs|jS)N)internalSubset)rr
r
r_get_internalSubsetsz 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)rOr0rrr/r0UserDataHandlerNODE_CLONEDr1r(r2Notationr+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,r3)rr"r rr!r
r
rr*s



zDocumentType.writexml)rrr)rorprqr	DOCUMENT_TYPE_NODErrrr+r,r3rr4rQrr
r
r
rr0sr0c@sfeZdZdZejZdZdZdZ	dZ
ddZddZddZ
dd	Zd
dZdd
ZddZddZdS)r8NcCs$||_||_t|_|j||dS)N)rr9rkr$r-)rrr+r,r<r
r
rrAszEntity.__init__cCs|jS)N)r:)rr
r
r_get_actualEncodingGszEntity._get_actualEncodingcCs|jS)N)r)rr
r
r
_get_encodingJszEntity._get_encodingcCs|jS)N)rU)rr
r
r_get_versionMszEntity._get_versioncCstjjddS)Nz(cannot append children to an entity node)r/r0r1)rr>r
r
rr5PszEntity.appendChildcCstjjddS)Nz+cannot insert children below an entity node)r/r0r1)rr>r?r
r
rr-TszEntity.insertBeforecCstjjddS)Nz*cannot remove children from an entity node)r/r0r1)rrCr
r
rr4XszEntity.removeChildcCstjjddS)Nz)cannot replace children of an entity node)r/r0r1)rr>rCr
r
rrD\szEntity.replaceChild)rorprqrr	ZENTITY_NODErrr:rrUrrArBrCr5r-r4rDr
r
r
rr88sr8c@seZdZejZdZddZdS)r7NcCs||_|j||dS)N)rr-)rrr+r,r
r
rrdszNotation.__init__)rorprqr	rrrrr
r
r
rr7`sr7c	@sHeZdZddddddddgZdd	Zd
dZdd
ZddZddZdS)DOMImplementationcore1.02.0Nr/ls-load3.0cCs|dkrd}|j|f|jkS)Nr)lower	_features)rrTrUr
r
rrStszDOMImplementation.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)	rrrrrOruZadd_root_elementrsrrr
r
rcreateDocumentys4





z DOMImplementation.createDocumentcCst|}||_||_|S)N)r0r+r,)rrr+r,rOr
r
rcreateDocumentTypesz$DOMImplementation.createDocumentTypecCs|j|dr|SdSdS)N)rS)rrTr
r
rrZszDOMImplementation.getInterfacecCstS)N)Document)rr
r
rrMsz"DOMImplementation._create_document)rErF)rErG)rEN)r/rF)r/rG)r/N)rHrI)rHN)	rorprqrKrSrPrQrZrMr
r
r
rrDis-rDc@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
)rrTr
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"rUrrrrr
r
r
rrSsrScCs<|jtjkr|jjd|_n|jr8|jjjd|j_dS)N)rr	r	_id_cacheclear_id_search_stackrO)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)OrR
_elem_inforOrXr$rVz	#documentNFrcCs$d|_t|_i|_i|_d|_dS)N)rOrkr$rYrVrX)rr
r
rrs
zDocument.__init__cCs&|jr|j|jf}n|j}|jj|S)N)rrrwrrYr)rrr^r
r
rrszDocument._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_documentURIszDocument._get_documentURIcCs|jS)N)r)rr
r
rrBszDocument._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_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r5-s
zDocument.appendChildcCsVy|jj|Wntk
r.tjjYnXd|_|_d|_|j	|krRd|_	|S)N)
r$rEr7r/r0r8r<r=r3documentElement)rrCr
r
rr4=s
zDocument.removeChildcCs$x|jD]}|jtjkr|SqWdS)N)r$rr	rJ)rrAr
r
rrcIszDocument._get_documentElementcCs(|jdk	r|jjd|_tj|dS)N)rOrHr	)rr
r
rrHNs

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)rRrPrr_rUr$rNrOrYAssertionErrorrIrr	rrdr@rOr3rjr/r0r5r6)rrPr;rZ
childcloner
r
rrQTs&
zDocument.cloneNodecCst}||_|S)N)rrO)rrbr
r
rcreateDocumentFragmentiszDocument.createDocumentFragmentcCst|}||_|S)N)rrO)rrr=r
r
r
createElementnszDocument.createElementcCs(t|tstdt}||_||_|S)Nznode contents must be a string)rrrrrGrO)rrGtr
r
rcreateTextNodess
zDocument.createTextNodecCs(t|tstdt}||_||_|S)Nznode contents must be a string)rrrr%rGrO)rrGr@r
r
rcreateCDATASection{s
zDocument.createCDATASectioncCst|}||_|S)N)r$rO)rrGr@r
r
r
createCommentszDocument.createCommentcCst||}||_|S)N)rrO)rrrGpr
r
rcreateProcessingInstructions
z$Document.createProcessingInstructioncCst|}||_d|_|S)Nr)rrOr)rrar
r
rcreateAttributeszDocument.createAttributecCs"t|\}}t|||}||_|S)N)rrrO)rrrrrsrwr=r
r
rrNszDocument.createElementNScCs*t|\}}t||||}||_d|_|S)Nr)rrrOr)rrrrrsrwrnr
r
rcreateAttributeNSs
zDocument.createAttributeNScCst||||}||_|S)N)r8rO)rrr+r,r9r=r
r
r_create_entityszDocument._create_entitycCst|||}||_|S)N)r7rO)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()rVrYrrXrdpopextendr$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/r0NotSupportedErrr@rN)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/r0rLrr	rJrrzrrrrrrrrsrrrrrrrr)rrrrrrsrwrZis_idr
r
r
renameNodesR



zDocument.renameNode)rYrOrXr$rV)rrrN)=rorprqrr	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|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/r0r5r6Z
NODE_IMPORTEDrr	rJrNrrrrrrrrrwrr$rNr5r+rfrFrirGrrjrrmrrrkrrpr@rerRrQrr+r,r1r(r2r7rIrdrjr8r9r:rrUrzr2)
rArPZnewOwnerDocumentrgr;rrnrMr@rr<r=r>r
r
rrN<s~

rNcCs,|jdd}t|dkr|Sd|dfSdS)Nrr(r)rr)rZfieldsr
r
rrsrcCs,|||}|j\}}|j||j|S)N)ZgetEventZ
expandNoderW)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_stringrRrRrS)Zfeaturesfvr
r
rgetDOMImplementations

r)NN)N)N)6rrrr/rrrrZxml.dom.minicompatZxml.dom.xmlbuilderrrr0r	rJrr9ZdefpropertyrBr~rrrrobjectrZ
AttributeListrrrrrrr
rr!rr$r%r'r*r0r8r7rDrSr:rRrNrrrrrr
r
r
r<module>sv	z$
x)GU	><(	O*PR



Back to Directory File Manager