
    qhL                     N   S r SSKJrJr  SSKrSSKrSSKJr  SSK	J
r
JrJr  \R                  S   S:  rSr\R                   r\R"                  " S	\S
S9   " S S\R&                  5      r " S S\R*                  5      r\" 5       r\R0                  rSS jrSS jrSS jr\rS rg)zkDEPRECATED Example code for lxml.etree protection

The code has NO protection against decompression bombs.
    )print_functionabsolute_importN)etree   )DTDForbiddenEntitiesForbiddenNotSupportedError   z
lxml.etreezOdefusedxml.lxml is no longer supported and will be removed in a future release.   )category
stacklevelc                      ^  \ rS rSrSrSr\R                  rS r	U 4S jr
SU 4S jjrSU 4S jjrSU 4S jjrSU 4S	 jjrU 4S
 jrSU 4S jjrSrU =r$ )RestrictedElement!   zEA restricted Element class that filters out instances of some classes c              #   b   #    U R                   nU H  n[        X25      (       a  M  Uv   M     g 7fN)	blacklist
isinstance)selfiteratorr   childs       A/var/www/html/env/lib/python3.13/site-packages/defusedxml/lxml.py_filterRestrictedElement._filter(   s+     NN	E%++K s   -/c                 J   > [         [        U ]  5       nU R                  U5      $ r   )superr   __iter__r   r   r   	__class__s     r   r   RestrictedElement.__iter__/   s"    *D:<||H%%    c                 H   > [         [        U ]  XS9nU R                  U5      $ )N)tagreversed)r   r   iterchildrenr   )r   r$   r%   r   r    s       r   r&   RestrictedElement.iterchildren3   s'    *D>3>Z||H%%r"   c                 N   > [         [        U ]
  " USU06nU R                  U5      $ Nr$   )r   r   iterr   r   r$   tagsr   r    s       r   r*   RestrictedElement.iter7   s)    *D6F3F||H%%r"   c                 N   > [         [        U ]
  " USU06nU R                  U5      $ r)   )r   r   iterdescendantsr   r+   s       r   r/   !RestrictedElement.iterdescendants;   s)    *DADQcQ||H%%r"   c                 H   > [         [        U ]  XS9nU R                  U5      $ )N)r$   	preceding)r   r   itersiblingsr   )r   r$   r2   r   r    s       r   r3   RestrictedElement.itersiblings?   s'    *D>3>\||H%%r"   c                 \   > [         [        U ]  5       n[        U R	                  U5      5      $ r   )r   r   r   listr   r   s     r   getchildrenRestrictedElement.getchildrenC   s'    *D:<DLL*++r"   c                 L   > [         [        U ]  U5      nU R                  U5      $ r   )r   r   getiteratorr   )r   r$   r   r    s      r   r:   RestrictedElement.getiteratorG   s$    *D=cB||H%%r"   )NFr   )__name__
__module____qualname____firstlineno____doc__	__slots___etree_Entityr   r   r   r&   r*   r/   r3   r7   r:   __static_attributes____classcell__)r    s   @r   r   r   !   sA    OII&&&&&,& &r"   r   c                   6    \ rS rSrSrSS0r\rS rS r	S r
Srg	)
GlobalParserTLSL   z0Thread local context for custom parser instancesresolve_entitiesFc                     [         R                  " S0 U R                  D6nU R                  nU R                  b%  [         R                  " US9nUR                  U5        U$ )N)elementr   )rB   	XMLParserparser_configelement_classElementDefaultClassLookupset_element_class_lookup)r   parserrN   lookups       r   createDefaultParser#GlobalParserTLS.createDefaultParserW   sU    !!7D$6$67**)55mLF++F3r"   c                     Xl         g r   _default_parserr   rQ   s     r   setDefaultParser GlobalParserTLS.setDefaultParser_   s    %r"   c                 h    [        U SS 5      nUc!  U R                  5       nU R                  U5        U$ )NrW   )getattrrS   rY   rX   s     r   getDefaultParser GlobalParserTLS.getDefaultParserb   s7    0$7>--/F!!&)r"   rV   N)r<   r=   r>   r?   r@   rM   r   rN   rS   rY   r]   rD   r   r"   r   rG   rG   L   s)    : 	EM &M&r"   rG   c           
         U R                   nUR                  (       aO  U(       a+  [        UR                  UR                  UR                  5      eU(       a  [
        (       d  [        S5      eU(       a^  UR                  UR                  4 HA  nUc  M  UR                  5        H%  n[        UR                  UR                  SSSS5      e   MC     gg)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)docinfodoctyper   
system_url	public_idLXML3r	   internalDTDexternalDTDiterentitiesr   namecontent)elementtree
forbid_dtdforbid_entitiesr`   dtdentitys         r   check_docinforo   n   s     !!Gw0B0BGDUDUVV55#$\]]&&(;(;;C{**,'V^^T4QUW[\\ - < r"   c                 b    Uc
  [        5       n[        R                  " XUS9n[        XSU5        U$ N)base_url)r]   rB   parsero   )sourcerQ   rr   rk   rl   rj   s         r   rs   rs      s/    ~!#,,vAK+?;r"   c                     Uc
  [        5       n[        R                  " XUS9nUR                  5       n[	        XcU5        U$ rq   )r]   rB   
fromstringgetroottreero   )textrQ   rr   rk   rl   rootelementrj   s          r   rv   rv      s?    ~!###D8DK))+K+?;r"   c                      [        S5      e)Nz*defused lxml.etree.iterparse not available)r	   )argskwargss     r   	iterparser}      s    
H
IIr"   )FT)NNFT)r@   
__future__r   r   	threadingwarningslxmlr   rB   commonr   r   r	   LXML_VERSIONrd   
__origin__tostringwarnDeprecationWarningElementBaser   localrG   _parser_tlsr]   ro   rs   rv   XMLr}   r   r"   r   <module>r      s    7     F FA!#
?? 	U(&** (&Vioo < // ], Jr"   