Ë
    Dü´jL  ã                   ó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       úM/root/workspace/ytshorts/venv/lib/python3.12/site-packages/defusedxml/lxml.pyÚ_filterzRestrictedElement._filter(   s0   è ø€ Ø—N‘Nˆ	Øò 	ˆ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Ñ>À3ÐQYÐ>Ó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ÀÐF¸3ÑFˆØ�|‰|˜HÓ%Ð%r   c                 óL   •— t        t        | �
  |d|iŽ}| j                  |«      S r%   )r   r   Úiterdescendantsr   r'   s       €r   r*   z!RestrictedElement.iterdescendants;   s)   ø€ ÜÔ*¨DÑAÈDÐQÀcÑ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Ñ>À3ÐR[Ð>Ó\ˆØ�|‰|˜HÓ%Ð%r   c                 ó\   •— t         t        | �  «       }t        | j	                  |«      «      S r   )r   r   r   Úlistr   r   s     €r   ÚgetchildrenzRestrictedElement.getchildrenC   s'   ø€ ÜÔ*¨DÑ:Ó<ˆÜ�D—L‘L Ó*Ó+Ð+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   € Ü×!Ñ!Ñ7 D×$6Ñ$6Ñ7ˆØ×*Ñ*ˆØ×ÑÐ)Ü×5Ñ5¸mÔLˆFØ×+Ñ+¨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)zµCheck 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Ÿ™°×0BÑ0BÀG×DUÑDUÓVÐVÙ¥5ä#Ð$\Ó]Ð]áØ×&Ñ&¨×(;Ñ(;Ð;ò 	]ˆCØˆ{ØØ×*Ñ*Ó,ò ]�Ü'¨¯©°V·^±^ÀTÈ4ÐQUÐW[Ó\Ð\ñ]ñ	]ð r   c                 óh   — |€
t        «       }t        j                  | ||¬«      }t        |||«       |S ©N)Úbase_url)rN   r8   Úparser_   )ÚsourcerE   rb   r[   r\   rZ   s         r   rc   rc   „   s3   € Ø€~Ü!Ó#ˆÜ—,‘,˜v v¸ÔA€KÜ�+˜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ÔD€KØ×)Ñ)Ó+€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�i—o‘oô ñ< Ó€Ø×/Ñ/Ð ó]ó,óð €óJr   