3 \@sDdddddddddd d d d d dddddddddgZdZddlZddlZddlZddlZddlZddlZddlm Z Gdd d e Z ddZ GdddZ ifdd Zd]d dZd^d!d ZeZGd"d d ZGd#ddZejd$d%Zd_d&d'Zd(d)Zd`Zy eeZWnek rYnXd7d8Zd9d:Zeeed;Zdd?d@dAdBdCdDZee_dEdFZ dGdHZ!dIdJZ"dKdLZ#dadMdNdOdZ$GdPdQdQej%Z&dbdMdNdRdZ'dSdZ(dcdTdZ)dddUdZ*GdVddZ+dedWdZ,dfdXdZ-e,Z.dgdYdZ/GdZddZ0Gd[ddZ1ye Z2dd\l3TWne4k r>YnXdS)hCommentdumpElement ElementTree fromstringfromstringlist iselement iterparseparse ParseErrorPIProcessingInstructionQName SubElementtostring tostringlist TreeBuilderVERSIONXMLXMLID XMLParser XMLPullParserregister_namespacez1.3.0N) ElementPathc@s eZdZdS)r N)__name__ __module__ __qualname__rr-/usr/lib64/python3.6/xml/etree/ElementTree.pyr hs cCs t|dS)Ntag)hasattr)elementrrrrvsc@seZdZdZdZdZdZifddZddZddZ dd Z d d Z d d Z ddZ ddZddZddZddZddZddZddZddZd8d d!Zd9d"d#Zd:d$d%Zd;d&d'Zd(d)Zdd4d5Z d6d7Z!dS)?rNcKsDt|tstd|jjf|j}|j|||_||_g|_ dS)Nzattrib must be dict, not %s) isinstancedict TypeError __class__rcopyupdater attrib _children)selfr r)extrarrr__init__s  zElement.__init__cCsd|jj|jt|fS)Nz<%s %r at %#x>)r&rr id)r+rrr__repr__szElement.__repr__cCs |j||S)N)r&)r+r r)rrr makeelements zElement.makeelementcCs0|j|j|j}|j|_|j|_||dd<|S)N)r0r r)texttail)r+elemrrrr's  z Element.copycCs t|jS)N)lenr*)r+rrr__len__szElement.__len__cCstjdtddt|jdkS)NzyThe behavior of this method will change in future versions. Use specific 'len(elem)' or 'elem is not None' test instead.) stacklevelr)warningswarn FutureWarningr4r*)r+rrr__bool__s zElement.__bool__cCs |j|S)N)r*)r+indexrrr __getitem__szElement.__getitem__cCs||j|<dS)N)r*)r+r<r"rrr __setitem__szElement.__setitem__cCs |j|=dS)N)r*)r+r<rrr __delitem__szElement.__delitem__cCs|j||jj|dS)N)_assert_is_elementr*append)r+ subelementrrrrAs zElement.appendcCs(x|D]}|j|qW|jj|dS)N)r@r*extend)r+elementsr"rrrrCs zElement.extendcCs|j||jj||dS)N)r@r*insert)r+r<rBrrrrEs zElement.insertcCs t|tstdt|jdS)Nzexpected an Element, not %s)r# _Element_Pyr%typer)r+errrr@s zElement._assert_is_elementcCs|jj|dS)N)r*remove)r+rBrrrrIs zElement.removecCstjdtdd|jS)NzaThis method will be removed in future versions. Use 'list(elem)' or iteration over elem instead.r6)r7)r8r9DeprecationWarningr*)r+rrr getchildrens zElement.getchildrencCstj|||S)N)rfind)r+path namespacesrrrrL!s z Element.findcCstj||||S)N)rfindtext)r+rMdefaultrNrrrrO,s zElement.findtextcCstj|||S)N)rfindall)r+rMrNrrrrQ:s zElement.findallcCstj|||S)N)riterfind)r+rMrNrrrrREs zElement.iterfindcCs |jjg|_d|_|_dS)N)r)clearr*r1r2)r+rrrrSPs z Element.clearcCs|jj||S)N)r)get)r+keyrPrrrrT[s z Element.getcCs||j|<dS)N)r))r+rUvaluerrrsethsz Element.setcCs |jjS)N)r)keys)r+rrrrXrsz Element.keyscCs |jjS)N)r)items)r+rrrrY{s z Element.itemsccsH|dkr d}|dks|j|kr$|Vx|jD]}|j|EdHq,WdS)N*)r r*iter)r+r rHrrrr[s  z Element.itercCstjdtddt|j|S)NzbThis method will be removed in future versions. Use 'elem.iter()' or 'list(elem.iter())' instead.r6)r7)r8r9PendingDeprecationWarninglistr[)r+r rrr getiterators zElement.getiteratorccs^|j}t|t r|dk rdS|j}|r.|Vx*|D]"}|jEdH|j}|r4|Vq4WdS)N)r r#strr1itertextr2)r+r trHrrrr`s zElement.itertext)N)NN)N)N)N)N)N)"rrrr r)r1r2r-r/r0r'r5r;r=r>r?rArCrEr@rIrKrLrOrQrRrSrTrWrXrYr[r^r`rrrrr{s>            cKs,|j}|j||j||}|j||S)N)r'r(r0rA)parentr r)r,r"rrrrs    cCstt}||_|S)N)rrr1)r1r"rrrrs cCs&tt}||_|r"|jd||_|S)N )rr r1)targetr1r"rrrr s c@sVeZdZdddZddZddZdd Zd d Zd d ZddZ ddZ ddZ dS)r NcCs|rd||f}||_dS)Nz{%s}%s)r1)r+Z text_or_urir rrrr-s zQName.__init__cCs|jS)N)r1)r+rrr__str__sz QName.__str__cCsd|jj|jfS)Nz<%s %r>)r&rr1)r+rrrr/szQName.__repr__cCs t|jS)N)hashr1)r+rrr__hash__szQName.__hash__cCs t|tr|j|jkS|j|kS)N)r#r r1)r+otherrrr__le__s  z QName.__le__cCs t|tr|j|jkS|j|kS)N)r#r r1)r+rhrrr__lt__ s  z QName.__lt__cCs t|tr|j|jkS|j|kS)N)r#r r1)r+rhrrr__ge__s  z QName.__ge__cCs t|tr|j|jkS|j|kS)N)r#r r1)r+rhrrr__gt__s  z QName.__gt__cCs t|tr|j|jkS|j|kS)N)r#r r1)r+rhrrr__eq__s  z QName.__eq__)N) rrrr-rer/rgrirjrkrlrmrrrrr s c@seZdZdddZddZddZddd Zdd d Zdd d Zd ddZ d!ddZ d"ddZ d#ddZ d$ddddZ ddZdS)%rNcCs||_|r|j|dS)N)_rootr )r+r"filerrrr-)szElementTree.__init__cCs|jS)N)rn)r+rrrgetroot/szElementTree.getrootcCs ||_dS)N)rn)r+r"rrr_setroot3szElementTree._setrootc Csd}t|dst|d}d}zZ|dkrHt}t|drH|j||_|jSx|jd}|sZP|j|qJW|j|_|jS|r|jXdS)NFreadrbT _parse_wholei)r!openrrtrnrrfeedclose)r+sourceparser close_sourcedatarrrr =s&       zElementTree.parsecCs |jj|S)N)rnr[)r+r rrrr[bs zElementTree.itercCstjdtddt|j|S)NzbThis method will be removed in future versions. Use 'tree.iter()' or 'list(tree.iter())' instead.r6)r7)r8r9r\r]r[)r+r rrrr^os zElementTree.getiteratorcCs:|dddkr,d|}tjd|tdd|jj||S)Nr/.zThis search is broken in 1.3 and earlier, and will be fixed in a future version. If you rely on the current behaviour, change it to %rr6)r7)r8r9r:rnrL)r+rMrNrrrrLxs  zElementTree.findcCs<|dddkr,d|}tjd|tdd|jj|||S)Nrr|r}zThis search is broken in 1.3 and earlier, and will be fixed in a future version. If you rely on the current behaviour, change it to %rr6)r7)r8r9r:rnrO)r+rMrPrNrrrrOs  zElementTree.findtextcCs:|dddkr,d|}tjd|tdd|jj||S)Nrr|r}zThis search is broken in 1.3 and earlier, and will be fixed in a future version. If you rely on the current behaviour, change it to %rr6)r7)r8r9r:rnrQ)r+rMrNrrrrQs  zElementTree.findallcCs:|dddkr,d|}tjd|tdd|jj||S)Nrr|r}zThis search is broken in 1.3 and earlier, and will be fixed in a future version. If you rely on the current behaviour, change it to %rr6)r7)r8r9r:rnrR)r+rMrNrrrrRs  zElementTree.iterfindT)short_empty_elementscCs|s d}n|tkrtd||s4|dkr0d}nd}|j}t||}|dkr|sd|dkr|d kr|} |dkrddl} | j} |d| f|d krt||jn,t|j|\} } t|} | ||j| | |d WdQRXdS) Nxmlzunknown method %rc14nutf-8us-asciiunicoderz$ r1)r~)rrr) _serialize ValueErrorlower _get_writerlocalegetpreferredencoding_serialize_textrn _namespaces)r+file_or_filenameencodingZxml_declarationdefault_namespacemethodr~Z enc_lowerwriteZdeclared_encodingrqnamesrNZ serializerrrrs2     zElementTree.writecCs|j|ddS)Nr)r)r)r+rorrr write_c14n szElementTree.write_c14n)NN)N)N)N)N)NN)N)N)NNNN)rrrr-rprqr r[r^rLrOrQrRrrrrrrrs   %    5ccs"y |j}WnPtk rZ|dkr.t|d}nt|d|dd}||jVWdQRXYnX|dkrl|Vntj}t|tjr|}nft|tjrtj |}|j |j nBtj}dd|_ ||_y|j |_ |j|_Wntk rYnXtj||ddd}|j |j |jVWdQRXdS) Nrwxmlcharrefreplace)rerrorscSsdS)NTrrrrr3sz_get_writer.. )rrnewline)rAttributeErrorru contextlib ExitStackr#ioBufferedIOBase RawIOBaseBufferedWritercallbackdetachwritableseekabletell TextIOWrapper)rrrrostackrrrrs>         rcsddiird<fdd}x|jD]}|j}t|tr\|jkr||jn.add_qname) r[r r#r r1r_rr rrY)r3rrr rUrVr1r)rrNrrrEs4      rc Ks|j}|j}|tkr$|d|n|tkr<|d|nv||}|dkr|r\|t|x|D]}t|||d|dqbWn2|d|t|j} | s|rD|rx@t|jdddD](\} } | rd| } |d | t | fqWxZt| D]N\} } t | t r | j} t | t r$|| j} nt | } |d || | fqW|s\t |s\| r|d |rv|t|x |D]}t|||d|dq|W|d |d n|d |j r|t|j dS)Nz z)r~.)rU:z xmlns%s="%s"z %s="%s">z)r r1rr _escape_cdata_serialize_xmlr]rYsorted_escape_attribr#r r4r2) rr3rrNr~kwargsr r1rHrYvkrrrrsT             rareabasebasefontbrcolframehrimginputisindexlinkmetaparamc Ks|j}|j}|tkr(|dt|n|tkrD|dt|n|||}|dkr|rd|t|x|D]}t|||dqjWn<|d|t|j}|s|rH|rx@t|jdddD](\} } | rd| } |d| t | fqWxZt|D]N\} } t | t r| j} t | t r(|| j} nt | } |d || | fqW|d |j } |r| d ksr| d kr|||n |t|x|D]}t|||dqW| tkr|d |d |jr|t|jdS)Nz zrcSs|dS)Nrr)rrrrrsz!_serialize_html..)rUrz xmlns%s="%s"z %s="%s"rZscriptZstylez|jdd}|Sttfk r`t|YnXdS)N&z&rz<rz>)replacer%rr)r1rrrr$s   rc Csyd|kr|jdd}d|kr*|jdd}d|kr>|jdd}d|krR|jdd}d |krf|jd d }d |krz|jd d }d |kr|jd d }d |kr|jd d}|Sttfk rt|YnXdS)Nrz&rz<rz>"z"z r z  z )rr%rr)r1rrrr4s(        rc Csfy@d|kr|jdd}d|kr*|jdd}d|kr>|jdd}|Sttfk r`t|YnXdS)Nrz&rz>rz")rr%rr)r1rrrrPs   rT)r~cCs6|dkrtjntj}t|j||||d|jS)Nr)rr~)rStringIOBytesIOrrgetvalue)r"rrr~streamrrrr_sc@s4eZdZddZddZddZddZd d Zd S) _ListDataStreamcCs ||_dS)N)lst)r+rrrrr-tsz_ListDataStream.__init__cCsdS)NTr)r+rrrrwsz_ListDataStream.writablecCsdS)NTr)r+rrrrzsz_ListDataStream.seekablecCs|jj|dS)N)rrA)r+brrrr}sz_ListDataStream.writecCs t|jS)N)r4r)r+rrrrsz_ListDataStream.tellN)rrrr-rrrrrrrrrrs rcCs&g}t|}t|j||||d|S)N)rr~)rrr)r"rrr~rrrrrrs cCsNt|tst|}|jtjdd|jj}| s>|ddkrJtjjddS)Nr)rrr)r#rrsysstdoutrpr2)r3r2rrrrs  cCst}|j|||S)N)rr )rxrytreerrrr s  csdt||dfddGfdddtj}|d_~dtds`tdd S) N)events_parserc 3sbzNx,jEdHjd}|s"Pj|qWj}jEdH|_Wdr\jXdS)Nii@) read_eventsrrrv_close_and_return_rootrootrw)r{r)rzit pullparserrxrriterators  ziterparse..iteratorcseZdZjZdS)z$iterparse..IterParseIteratorN)rrr__next__r)rrrIterParseIteratorsrFrrrsT)r collectionsIteratorrr!ru)rxrryrr)rzrrrrxrrs   c@s<eZdZd ddddZddZddZd d Zd d ZdS)rN)rcCs<tj|_|pttd|_|dkr(d}|jj|j|dS)N)rdend)r)rdeque _events_queuerrr _setevents)r+rrrrrr-s  zXMLPullParser.__init__cCsZ|jdkrtd|rVy|jj|Wn.tk rT}z|jj|WYdd}~XnXdS)Nz!feed() called after end of stream)rrrv SyntaxErrorrrA)r+r{excrrrrvs zXMLPullParser.feedcCs|jj}d|_|S)N)rrw)r+rrrrrs z$XMLPullParser._close_and_return_rootcCs |jdS)N)r)r+rrrrwszXMLPullParser.closeccs2|j}x&|r,|j}t|tr$|q|VqWdS)N)rpopleftr# Exception)r+reventrrrrs  zXMLPullParser.read_events)N)rrrr-rvrrwrrrrrrs   cCs"|sttd}|j||jS)N)rd)rrrvrw)r1ryrrrrs   cCsV|sttd}|j||j}i}x&|jD]}|jd}|r0|||<q0W||fS)N)rdr.)rrrvrwr[rT)r1ryrZidsr3r.rrrr&s     cCs0|sttd}x|D]}|j|qW|jS)N)rd)rrrvrw)Zsequenceryr1rrrr>s   c@s>eZdZdddZddZddZdd Zd d Zd d ZdS)rNcCs.g|_g|_d|_d|_|dkr$t}||_dS)N)_data_elem_last_tailr_factory)r+Zelement_factoryrrrr-]szTreeBuilder.__init__cCs|jS)N)r)r+rrrrwfszTreeBuilder.closecCs>|jr:|jdk r4dj|j}|jr,||j_n||j_g|_dS)Nr)rrjoinrr2r1)r+r1rrr_flushls   zTreeBuilder._flushcCs|jj|dS)N)rrA)r+r{rrrr{xszTreeBuilder.datacCsF|j|j|||_}|jr0|jdj||jj|d|_|S)Nrrr)rrrrrAr)r+r Zattrsr3rrrstart|s zTreeBuilder.startcCs |j|jj|_d|_|jS)Nr)rrpoprr)r+r rrrrs zTreeBuilder.end)N) rrrr-rwrr{rrrrrrrPs   c@sbeZdZdddZddZddZd d Zd d Zd dZddZ ddZ e Z ddZ ddZ dS)rrNcCs<yddlm}Wn>tk rNy ddl}Wntk rHtdYnXYnX|j|d}|dkrjt}||_|_||_|_ |j |_ i|_ |j |_t|dr|j|_t|dr|j|_t|dr|j|_t|dr|j|_t|d r|j|_d |_d |_d |_d|_i|_yd |j|_ Wnt!k r6YnXdS) Nr)expatz7No module named expat; use SimpleXMLTreeBuilder insteadrrrr{commentpirzExpat %d.%d.%d)" xml.parsersr ImportErrorZpyexpatZ ParserCreaterryrrd_targeterror_error_names_defaultZDefaultHandlerExpandr!_startStartElementHandler_endEndElementHandlerr{ZCharacterDataHandlerrZCommentHandlerrZProcessingInstructionHandlerZ buffer_textordered_attributesspecified_attributes_doctypeentity version_infoversionr)r+rrdrrryrrrr-sF         zXMLParser.__init__cCs|j}|j}x|D]}|dkrDd|_d|_|||jfdd}||_q|dkrf|||jfdd}||_q|dkr||fdd}||_q|d kr||fd d}||_ qt d |qWdS) NrrcSs|||||fdS)Nr)r Z attrib_inrrArrrrhandlersz%XMLParser._setevents..handlerrcSs||||fdS)Nr)r rrArrrrrszstart-nscSs|||p d|pdffdS)Nrr)rrrrArrrrszend-nscSs||dfdS)Nr)rrrArrrrszunknown event %r) rrAr r rr r r ZStartNamespaceDeclHandlerZEndNamespaceDeclHandlerr)r+Z events_queueZevents_to_reportryrAZ event_namerrrrrs( zXMLParser._seteventscCs&t|}|j|_|j|jf|_|dS)N)r codelinenooffsetZposition)r+rVerrrrr _raiseerrorszXMLParser._raiseerrorc CsFy|j|}Wn2tk r@|}d|kr2d|}||j|<YnX|S)Nrr)rKeyError)r+rUnamerrr_fixnameszXMLParser._fixnamecCsV|j}||}i}|rHx0tdt|dD]}||d||||<q(W|jj||S)Nrr6r)rranger4rdr)r+r Z attr_listZfixnamer)irrrrszXMLParser._startcCs|jj|j|S)N)rdrr)r+r rrrr szXMLParser._endc Cs|dd}|dkry |jj}Wntk r4dSXy||j|ddWnZtk rddlm}|jd||jj |jj f}d|_ |jj |_ |jj |_ |YnXnD|dkr|ddd krg|_n"|jdk r|d krd|_dS|j}|sdS|jj|t|j}|d kr|jd}|d krb|d krb|j\}}} } | r| dd} n*|dkr|dkr|j\}}} d} ndSt|jdr|jj|| | ddn:|j|jkr|j|| | dd|j|| | ddd|_dS)Nrrr)rz'undefined entity %s: line %d, column %d r z Ks A   0t4 =2 2  05   KU