
    fL                     N   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j0                  ZddZddZddZeZd Zy)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              #   T   K   | j                   }|D ]  }t        ||      r|  y wN)	blacklist
isinstance)selfiteratorr   childs       J/var/www/cvtools/html/venv/lib/python3.12/site-packages/defusedxml/lxml.py_filterzRestrictedElement._filter(   s0     NN	 	E%+K	s   &(c                 J    t         t        |          }| j                  |      S r   )superr   __iter__r   r   r   	__class__s     r   r   zRestrictedElement.__iter__/   s"    *D:<||H%%    c                 P    t         t        |   ||      }| j                  |      S )N)tagreversed)r   r   iterchildrenr   )r   r!   r"   r   r   s       r   r#   zRestrictedElement.iterchildren3   s*    *D>3QY>Z||H%%r   c                 L    t        t        | 
  |d|i}| j                  |      S Nr!   )r   r   iterr   r   r!   tagsr   r   s       r   r&   zRestrictedElement.iter7   s)    *D6F3F||H%%r   c                 L    t        t        | 
  |d|i}| j                  |      S r%   )r   r   iterdescendantsr   r'   s       r   r*   z!RestrictedElement.iterdescendants;   s)    *DADQcQ||H%%r   c                 P    t         t        |   ||      }| j                  |      S )N)r!   	preceding)r   r   itersiblingsr   )r   r!   r,   r   r   s       r   r-   zRestrictedElement.itersiblings?   s*    *D>3R[>\||H%%r   c                 \    t         t        |          }t        | j	                  |            S r   )r   r   r   listr   r   s     r   getchildrenzRestrictedElement.getchildrenC   s'    *D:<DLL*++r   c                 L    t         t        |   |      }| j                  |      S r   )r   r   getiteratorr   )r   r!   r   r   s      r   r2   zRestrictedElement.getiteratorG   s$    *D=c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   !   sA    OII&&&&&,& &r   r   c                   .    e Zd ZdZddiZeZd Zd Zd Z	y)GlobalParserTLSz0Thread local context for custom parser instancesresolve_entitiesFc                     t        j                  di | j                  }| j                  }| j                  't        j                  |      }|j                  |       |S )N)elementr   )r8   	XMLParserparser_configelement_classElementDefaultClassLookupset_element_class_lookup)r   parserrB   lookups       r   createDefaultParserz#GlobalParserTLS.createDefaultParserW   sU    !!7D$6$67**)55mLF++F3r   c                     || _         y r   )_default_parserr   rE   s     r   setDefaultParserz GlobalParserTLS.setDefaultParser_   s
    %r   c                 f    t        | dd       }|!| j                         }| j                  |       |S )NrI   )getattrrG   rK   rJ   s     r   getDefaultParserz GlobalParserTLS.getDefaultParserb   s7    0$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<   c           
      j   | j                   }|j                  r@|r+t        |j                  |j                  |j                        |rt
        st        d      |rY|j                  |j                  fD ]=  }||j                         D ]%  }t        |j                  |j                  dddd       ? yy)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0B0BGDUDUVV5#$\]]&&(;(;; 	]C{**, ]'V^^T4QUW[\\]	] r   c                 h    |
t               }t        j                  | ||      }t        |||       |S N)base_url)rN   r8   parser_   )sourcerE   rb   r[   r\   rZ   s         r   rc   rc      s3    ~!#,,vvAK+z?;r   c                     |
t               }t        j                  | ||      }|j                         }t	        |||       |S ra   )rN   r8   
fromstringgetroottreer_   )textrE   rb   r[   r\   rootelementrZ   s          r   rf   rf      sC    ~!###D&8DK))+K+z?;r   c                      t        d      )Nz*defused lxml.etree.iterparse not available)r	   )argskwargss     r   	iterparserm      s    
H
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     F FA!#
?? U(&** (&Vioo < // ], Jr   