
    MhL                     4   d Z ddlmZmZ ddlZddlZddlmZ ddl	m
Z
mZmZ ej        d         dk    ZdZej        Z ej        d	ed
            G d dej                  Z G d dej                  Z e            Zej        ZddZddZddZeZd ZdS )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                        e Zd ZdZdZej        Zd Z fdZ	d fd	Z
d fd	Zd fd		Zd fd
	Z fdZd fd	Z xZS )RestrictedElementzEA restricted Element class that filters out instances of some classes c              #   L   K   | j         }|D ]}t          ||          r|V  d S N)	blacklist
isinstance)selfiteratorr   childs       O/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/defusedxml/lxml.py_filterzRestrictedElement._filter(   sF      N	 	 	E%++ KKKK	 	    c                 |    t          t          |                                           }|                     |          S r   )superr   __iter__r   r   r   	__class__s     r   r   zRestrictedElement.__iter__/   s1    *D11::<<||H%%%r   NFc                     t          t          |                               ||          }|                     |          S )N)tagreversed)r   r   iterchildrenr   )r   r!   r"   r   r   s       r   r#   zRestrictedElement.iterchildren3   s9    *D11>>3QY>ZZ||H%%%r   c                 n     t          t          |           j        |d|i}|                     |          S Nr!   )r   r   iterr   r   r!   tagsr   r   s       r   r&   zRestrictedElement.iter7   s7    65*D116F3FF||H%%%r   c                 n     t          t          |           j        |d|i}|                     |          S r%   )r   r   iterdescendantsr   r'   s       r   r*   z!RestrictedElement.iterdescendants;   s7    A5*D11ADQcQQ||H%%%r   c                     t          t          |                               ||          }|                     |          S )N)r!   	preceding)r   r   itersiblingsr   )r   r!   r,   r   r   s       r   r-   zRestrictedElement.itersiblings?   s9    *D11>>3R[>\\||H%%%r   c                     t          t          |                                           }t          |                     |                    S r   )r   r   r   listr   r   s     r   getchildrenzRestrictedElement.getchildrenC   s9    *D11::<<DLL**+++r   c                 ~    t          t          |                               |          }|                     |          S r   )r   r   getiteratorr   )r   r!   r   r   s      r   r2   zRestrictedElement.getiteratorG   s3    *D11==cBB||H%%%r   )NFr   )__name__
__module____qualname____doc__	__slots___etree_Entityr   r   r   r#   r&   r*   r-   r0   r2   __classcell__)r   s   @r   r   r   !   s       OOII  & & & & && & & & & && & & & & && & & & & && & & & & &, , , , ,& & & & & & & & & &r   r   c                   0    e Zd ZdZddiZeZd Zd Zd Z	dS )GlobalParserTLSz0Thread local context for custom parser instancesresolve_entitiesFc                     t          j        di | j        }| j        }| j        *t          j        |          }|                    |           |S )N)elementr   )r8   	XMLParserparser_configelement_classElementDefaultClassLookupset_element_class_lookup)r   parserrB   lookups       r   createDefaultParserz#GlobalParserTLS.createDefaultParserW   sX    !77D$677*)5mLLLF++F333r   c                     || _         d S r   )_default_parserr   rE   s     r   setDefaultParserz GlobalParserTLS.setDefaultParser_   s    %r   c                 ~    t          | dd           }|)|                                 }|                     |           |S )NrI   )getattrrG   rK   rJ   s     r   getDefaultParserz GlobalParserTLS.getDefaultParserb   sC    0$77>--//F!!&)))r   N)
r3   r4   r5   r6   rA   r   rB   rG   rK   rN   r   r   r   r<   r<   L   s\        :: 	EM &M  & & &    r   r<   FTc           
      .   | j         }|j        r:|r t          |j        |j        |j                  |rt
          st          d          |rH|j        |j        fD ];}||	                                D ]}t          |j        |j        dddd          :dS dS )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_entitiesrP   dtdentitys         r   check_docinfor_   n   s     !G ^ 	Ww0BGDUVVV 	^5 	^#$\]]] ]&(;; 	] 	]C{**,, ] ]'V^T4QUW[\\\]	] ]	] 	]r   c                 v    |t                      }t          j        | ||          }t          |||           |S N)base_url)rN   r8   parser_   )sourcerE   rb   r[   r\   rZ   s         r   rc   rc      s@    ~!##,vvAAAK+z?;;;r   c                     |t                      }t          j        | ||          }|                                }t	          |||           |S ra   )rN   r8   
fromstringgetroottreer_   )textrE   rb   r[   r\   rootelementrZ   s          r   rf   rf      sR    ~!###D&8DDDK))++K+z?;;;r   c                       t          d          )Nz*defused lxml.etree.iterparse not available)r	   )argskwargss     r   	iterparserm      s    
H
I
IIr   )FT)NNFT)r6   
__future__r   r   	threadingwarningslxmlr   r8   commonr   r   r	   LXML_VERSIONrT   
__origin__tostringwarnDeprecationWarningElementBaser   localr<   _parser_tlsrN   r_   rc   rf   XMLrm   r   r   r   <module>r|      s    7 6 6 6 6 6 6 6                  F F F F F F F F F FA!#
? U   (& (& (& (& (&* (& (& (&V    io   < o/ ] ] ] ],       J J J J Jr   