)EjL4dZddlmZmZddlZddlZddlmZddl m Z m Z m Z ej ddkZdZejZejd ed Gd d ejZGddejZeZejZddZddZddZeZdZdS)zkDEPRECATED Example code for lxml.etree protection The code has NO protection against decompression bombs. )print_functionabsolute_importN)etree) DTDForbiddenEntitiesForbiddenNotSupportedErrorz lxml.etreezOdefusedxml.lxml is no longer supported and will be removed in a future release.)category stacklevelceZdZdZdZejZdZfdZ d fd Z dfd Z dfd Z d fd Z fd Zdfd ZxZS)RestrictedElementzEA restricted Element class that filters out instances of some classesc#LK|j}|D]}t||r|VdSN) blacklist isinstance)selfiteratorrchilds AC:\PYTHON\MyICR_Suite\python\Lib\site-packages\defusedxml/lxml.py_filterzRestrictedElement._filter(sFN   E%++ KKKK  c|tt|}||Sr)superr__iter__rrr __class__s rrzRestrictedElement.__iter__/s1*D11::<<||H%%%rNFctt|||}||S)N)tagreversed)rr iterchildrenr)rr!r"rrs rr#zRestrictedElement.iterchildren3s9*D11>>3QY>ZZ||H%%%rcntt|j|d|i}||SNr!)rriterrrr!tagsrrs rr&zRestrictedElement.iter7s765*D116F3FF||H%%%rcntt|j|d|i}||Sr%)rriterdescendantsrr's rr*z!RestrictedElement.iterdescendants;s7A5*D11ADQcQQ||H%%%rctt|||}||S)N)r! preceding)rr itersiblingsr)rr!r,rrs rr-zRestrictedElement.itersiblings?s9*D11>>3R[>\\||H%%%rctt|}t||Sr)rrrlistrrs r getchildrenzRestrictedElement.getchildrenCs9*D11::<<DLL**+++rc~tt||}||Sr)rr getiteratorr)rr!rrs rr2zRestrictedElement.getiteratorGs3*D11==cBB||H%%%r)NFr)__name__ __module__ __qualname____doc__ __slots___etree_Entityrrrr#r&r*r-r0r2 __classcell__)rs@rrr!sOOII&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,,,,,&&&&&&&&&&rrc0eZdZdZddiZeZdZdZdZ dS)GlobalParserTLSz0Thread local context for custom parser instancesresolve_entitiesFctjdi|j}|j}|j*tj|}|||S)N)elementr)r8 XMLParser parser_config element_classElementDefaultClassLookupset_element_class_lookup)rparserrBlookups rcreateDefaultParserz#GlobalParserTLS.createDefaultParserWsX!77D$677*   )5mLLLF  + +F 3 3 3 rc||_dSr)_default_parserrrEs rsetDefaultParserz GlobalParserTLS.setDefaultParser_s%rc~t|dd}|)|}|||S)NrI)getattrrGrKrJs rgetDefaultParserz GlobalParserTLS.getDefaultParserbsC0$77 >--//F  ! !& ) ) ) rN) r3r4r5r6rArrBrGrKrNrrrr<r<Ls\:: EM &M&&&rr<FTc .|j}|jr:|r t|j|j|j|rt st d|rH|j|jfD];}|| D]}t|j |j dddd:dSdS)zCheck docinfo of an element tree for DTD and entity declarations The check for entity declarations needs lxml 3 or newer. lxml 2.x does not support dtd.iterentities(). z3Unable to check for entity declarations in lxml 2.xN) docinfodoctyper system_url public_idLXML3r internalDTD externalDTD iterentitiesrnamecontent) elementtree forbid_dtdforbid_entitiesrPdtdentitys r check_docinfor_ns !G^  Ww0BGDUVV V  ^5 ^#$\]] ]]&(;; ] ]C{**,, ] ]' V^T4QUW[\\\ ] ]] ] ]rcv|t}tj|||}t||||SN)base_url)rNr8parser_)sourcerErbr[r\rZs rrcrcs@ ~!##,vvAAAK+z?;;; rc|t}tj|||}|}t ||||Sra)rNr8 fromstring getroottreer_)textrErbr[r\ rootelementrZs rrfrfsR ~!###D&8DDDK))++K+z?;;; rc td)Nz*defused lxml.etree.iterparse not available)r )argskwargss r iterparserms H I IIr)FT)NNFT)r6 __future__rr threadingwarningslxmlrr8commonrrr LXML_VERSIONrT __origin__tostringwarnDeprecationWarning ElementBaserlocalr< _parser_tlsrNr_rcrfXMLrmrrrr|s 76666666 FFFFFFFFFFA!#  ? U (&(&(&(&(&*(&(&(&Vio<o /]]]],JJJJJr