ó
    …~iJ  ã                  óð  • % S SK Jr  SrSS/rS SKJrJrJrJrJ	r	J
r
JrJrJrJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJrJrJrJrJrJrJr  S SKJrJ r J!r!J"r"J#r#J$r$J%r%  S SK&J'r'  S SK(J)r)  \(       a  S SK*J+r+J,r,J-r-J.r.J/r/J0r0J1r1  S SK2J3r3  Sr4S\5S'   SS jr6\\Rn                  \Rp                  4   r9S\5S'   \\9\\Rn                     \\Rp                     4   r:S\5S'    " S S\$5      r; " S S\"\;5      r<g)é    )ÚannotationsÚMITÚLXMLTreeBuilderForXMLÚLXMLTreeBuilder)
ÚAnyÚDictÚIterableÚListÚOptionalÚSetÚTupleÚTypeÚTYPE_CHECKINGÚUnion)ÚBytesIO)ÚStringIO)Ú	TypeAlias)Úetree)ÚAttributeDictÚXMLAttributeDictÚCommentÚDoctypeÚNamespacedAttributeÚProcessingInstructionÚXMLProcessingInstruction)ÚDetectsXMLParsedAsHTMLÚFASTÚHTMLÚHTMLTreeBuilderÚ
PERMISSIVEÚTreeBuilderÚXML)ÚEncodingDetector)ÚParserRejectedMarkup)Ú	_EncodingÚ
_EncodingsÚ_NamespacePrefixÚ_NamespaceURLÚ_NamespaceMappingÚ_InvertedNamespaceMappingÚ
_RawMarkup)ÚBeautifulSoupÚlxmlÚstrÚLXMLc                óT   • [        S [        U R                  5       5       5       5      $ )zInvert a dictionary.c              3  ó,   #   • U  H
  u  pX!4v •  M     g 7f©N© )Ú.0ÚkÚvs      ÚN/home/mande/repo/quber/.venv/lib/python3.13/site-packages/bs4/builder/_lxml.pyÚ	<genexpr>Ú_invert.<locals>.<genexpr>F   s   é € Ð3¢?™4˜1�•¢?ùs   ‚)ÚdictÚlistÚitems)Úds    r7   Ú_invertr>   D   s   € äÑ3¤4¨¯©«	¤?Ó3Ó3Ð3ó    r   Ú_LXMLParserÚ_ParserOrParserClassc                  ó  ^ • \ rS rSr% \R
                  rS\S'   SrS\S'   S\S'   S\S	'   S
r	S\S'   S/r
S\S'   \	\\\\/rS\S'   SrS\S'   \" SS9rS\S'   \" \5      rS\S'   S\S'   S\S'   S\S'   S \S!'   S4U 4S" jjrS5S# jrS6S$ jrS7S% jr   S8       S9U 4S& jjjrS:S' jr   S;         S<S( jjrS=S) jrS>S* jr0 4       S?S+ jjr    S@S, jrSAS- jr SBS. jr!SCS/ jr"SDS0 jr#SES1 jr$SFS2 jr%S3r&U =r'$ )Gr   éO   zType[etree.XMLParser]ÚDEFAULT_PARSER_CLASSTÚboolÚis_xmlÚ	huge_treezType[ProcessingInstruction]Úprocessing_instruction_classzlxml-xmlr.   ÚNAMEÚxmlúIterable[str]ÚALTERNATE_NAMESÚfeaturesi   ÚintÚ
CHUNK_SIZEz$http://www.w3.org/XML/1998/namespace)rJ   r)   ÚDEFAULT_NSMAPSr*   ÚDEFAULT_NSMAPS_INVERTEDz)List[Optional[_InvertedNamespaceMapping]]ÚnsmapsúOptional[Set[str]]Úempty_element_tagsr   ÚparserúOptional[etree.XMLParser]Ú_default_parserc                ób   >• [         [        U ]  U5        U R                  U R                  5        g)ziLet the BeautifulSoup object know about the standard namespace
mapping.

:param soup: A `BeautifulSoup`.
N)Úsuperr   Úinitialize_soupÚ_register_namespacesrP   )ÚselfÚsoupÚ	__class__s     €r7   rZ   Ú%LXMLTreeBuilderForXML.initialize_soupv   s)   ø€ ô 	Ô# TÑ:¸4Ô@Ø×!Ñ! $×"5Ñ"5Õ6r?   c                óÞ   • U R                   c   e[        UR                  5       5       HA  u  p#U(       d  M  X R                   R                  ;  d  M)  X0R                   R                  U'   MC     g)a¿  Let the BeautifulSoup object know about namespaces encountered
while parsing the document.

This might be useful later on when creating CSS selectors.

This will track (almost) all namespaces, even ones that were
only in scope for part of the document. If two namespaces have
the same prefix, only the first one encountered will be
tracked. Un-prefixed namespaces are not tracked.

:param mapping: A dictionary mapping namespace prefixes to URIs.
N)r]   r;   r<   Ú_namespaces)r\   ÚmappingÚkeyÚvalues       r7   r[   Ú*LXMLTreeBuilderForXML._register_namespaces�   sU   € ð �y‰yÑ$Ð$Ð$Ü˜wŸ}™}›Ö/‰JˆC÷
 ˆs�s§)¡)×"7Ñ"7Õ7ð .3—	‘	×%Ñ% cÓ*ò 0r?   c                ól   • U R                   b  U R                   $ U R                  U SU R                  US9$ )z’Find the default parser for the given encoding.

:return: Either a parser object or a class, which
  will be instantiated with default arguments.
T©ÚtargetÚrecoverrG   Úencoding)rW   rD   rG   ©r\   rj   s     r7   Údefault_parserÚ$LXMLTreeBuilderForXML.default_parserš   s;   € ð ×ÑÑ+Ø×'Ñ'Ð'Ø×(Ñ(°¸dÈdÏnÉnÐgoÐ(ÐpÐpr?   c                ón   • U R                  U5      n[        U5      (       a  U" U SU R                  US9nU$ )z�Instantiate an appropriate parser for the given encoding.

:param encoding: A string.
:return: A parser object such as an `etree.XMLParser`.
Trg   )rl   ÚcallablerG   )r\   rj   rU   s      r7   Ú
parser_forÚ LXMLTreeBuilderForXML.parser_for¤   s9   € ð ×$Ñ$ XÓ.ˆä�F×Ñá 4°ÀÇÁÐZbÑcˆFØˆr?   c                ó  >• Xl         S U l        U R                  /U l        [	        U R
                  5      /U l        U R                  (       a  [        U l	        O[        U l	        SU;  a	  [        US'   X0l        [        [        U ]>  " S0 UD6  g )NÚattribute_dict_classr3   )rW   r]   rQ   rR   r:   rP   Úactive_namespace_prefixesrF   r   rH   r   r   rG   rY   r   Ú__init__)r\   rU   rT   rG   Úkwargsr^   s        €r7   ru   ÚLXMLTreeBuilderForXML.__init__²   sz   ø€ ð  &ÔØˆŒ	Ø×3Ñ3Ð4ˆŒÜ*.¨t×/BÑ/BÓ*CÐ)DˆÔ&Ø�;�;Ü0HˆDÕ-ä0EˆDÔ-à!¨Ó/Ü-=ˆFÐ)Ñ*Ø"ŒäÔ# TÒ3Ñ=°fÓ=r?   c                ó\   • US   S:X  a   SU;   a  USS  R                  SS5      u  p#X#4$ S U4$ )Nr   Ú{Ú}é   )Úsplit)r\   ÚtagÚ	namespaceÚnames       r7   Ú	_getNsTagÚLXMLTreeBuilderForXML._getNsTagË   s@   € ð ˆq‰6�S‹=˜S C›ZØ! ! "˜gŸm™m¨C°Ó3‰OˆIØÐ$Ð$Ø�cˆ{Ðr?   c              #  ó  #   • U R                   (       d  [        R                  " USS9  [        U[        5      (       a%  [        U5      S:”  a  US   S:X  a  USS nUSUS4v •  [        U[        5      (       a  UR                  S5      SUS4v •  g/ nU(       a  UR                  U5        / nU(       a  UR                  U5        [        UUUU R                   (       + US	9nUR                   H  nUR                  XƒS4v •  M     g7f)
aª  Run any preliminary steps necessary to make incoming markup
acceptable to the parser.

lxml really wants to get a bytestring and convert it to
Unicode itself. So instead of using UnicodeDammit to convert
the bytestring to Unicode using different encodings, this
implementation uses EncodingDetector to iterate over the
encodings, and tell lxml to try to parse the document as each
one in turn.

:param markup: Some markup -- hopefully a bytestring.
:param user_specified_encoding: The user asked to try this encoding.
:param document_declared_encoding: The markup itself claims to be
    in this encoding.
:param exclude_encodings: The user asked _not_ to try any of
    these encodings.

:yield: A series of 4-tuples: (markup, encoding, declared encoding,
    has undergone character replacement)

    Each 4-tuple represents a strategy for converting the
    document to Unicode and parsing it. Each strategy will be tried
    in turn.
é   )Ú
stacklevelr   u   ï»¿r{   NFÚutf8)Úknown_definite_encodingsÚuser_encodingsÚis_htmlÚexclude_encodings)rF   r   Úwarn_if_markup_looks_like_xmlÚ
isinstancer.   ÚlenÚencodeÚappendr#   Ú	encodingsÚmarkup)	r\   r�   Úuser_specified_encodingÚdocument_declared_encodingr‰   r†   r‡   Údetectorrj   s	            r7   Úprepare_markupÚ$LXMLTreeBuilderForXML.prepare_markupÓ   s  é € ðB �{�{ô #×@Ò@ÀÐTUÒVä�fœc×"Ñ"ô �6‹{˜Q‹ 6¨!¡9Ð0EÓ#EØ  ˜�Ø˜$Ð :¸EÐAÒAä�fœc×"Ñ"ð —=‘= Ó(¨&Ð2LÈeÐTÒTð
 à46Ð Þ"ð
 %×+Ñ+Ð,CÔDà*,ˆÞ%ð ×!Ñ!Ð"<Ô=ä#ØØ%=Ø)ØŸ™”OØ/ñ
ˆð !×*Ô*ˆHØ—?‘? HÈ%ÐPÔPò +ùs   ‚DDc                óÈ  • [        U[        5      (       a  [        U5      nO [        U[        5      (       a  [	        U5      nU R
                  c   eWR                  U R                  5      n U R                  U R
                  R                  5      U l
        U R                  R                  U5        [        U5      S:w  aV  UR                  U R                  5      n[        U5      S:w  a  U R                  R                  U5        [        U5      S:w  a  MV  U R                  R                  5         g ! [        [        [         R"                  4 a  n[%        U5      eS nAff = f)Nr   )r‹   Úbytesr   r.   r   r]   ÚreadrO   rp   Úoriginal_encodingrU   ÚfeedrŒ   ÚcloseÚUnicodeDecodeErrorÚLookupErrorr   ÚParserErrorr$   )r\   r�   ÚioÚdataÚes        r7   rš   ÚLXMLTreeBuilderForXML.feed&  s  € ä�fœe×$Ñ$Ü˜“‰BÜ˜¤×$Ñ$Ü˜&Ó!ˆBð �y‰yÑ$Ð$Ð$ð �w‰w�t—‘Ó'ˆð
	*ØŸ/™/¨$¯)©)×*EÑ*EÓFˆDŒKØ�K‰K×Ñ˜TÔ"Ü�d“)˜q“.à—w‘w˜tŸ™Ó/�Ü�t“9 “>Ø—K‘K×$Ñ$ TÔ*ô	 �d“)˜q•.ð
 �K‰K×ÑÕøÜ"¤K´×1BÑ1BÐCó 	*Ü& qÓ)Ð)ûð	*ús   Á-B(D2 ÄD2 Ä2E!ÅEÅE!c                ó(   • U R                   /U l        g r2   )rQ   rR   )r\   s    r7   r›   ÚLXMLTreeBuilderForXML.close@  s   € Ø×3Ñ3Ð4ˆ�r?   c                ó˜  • U R                   c   e[        U[        5      (       d   eU R                  5       nUR	                  5        H7  u  pV[        U[        5      (       d   e[        U[        5      (       d   eXdU'   M9     S nS n[        U5      S:X  a5  [        U R                  5      S:”  a  U R                  R                  S 5        OÄ[        U5      S:”  aµ  U R                  U5        U R                  R                  [        U5      5        [        U R                  S   5      n	U	R                  U5        SU	;   a  U	S	 U R                  R                  U	5        [        UR	                  5       5       H  u  p¨[        SU
S5      nX„U'   M     U R                  5       n[        UR	                  5       5       HB  u  pÞU R                  U5      u  p�Uc  XìU'   M!  U R!                  U5      n[        X}U5      nXìU'   MD     U R                  U5      u  p�U R!                  U5      nU R                   R#                  UUUUU R                  S   S9  g )Nr   r{   éÿÿÿÿÚ Úxmlnszhttp://www.w3.org/2000/xmlns/)Ú
namespaces)r]   r‹   r.   rs   r<   rŒ   rR   rŽ   r[   r>   r:   rt   Úupdater;   r   r€   Ú_prefix_for_namespaceÚhandle_starttag)r\   r}   ÚattribÚnsmapÚ
new_attribr5   r6   Únsprefixr~   Úcurrent_mappingÚprefixÚ	attributeÚfinal_attribÚattrrd   s                  r7   ÚstartÚLXMLTreeBuilderForXML.startC  s)  € ð �y‰yÑ$Ð$Ð$Ü˜#œs×#Ñ#Ð#Ð#ð ×%Ñ%Ó'ð 	ð —L‘L–N‰DˆAÜ˜a¤×%Ñ%Ð%Ð%Ü˜a¤×%Ñ%Ð%Ð%Ø�q‹Mñ #ð
 04ˆØ-1ˆ	äˆu‹:˜‹?œs 4§;¡;Ó/°!Ó3ð �K‰K×Ñ˜tÕ$Ü�‹Z˜!‹^ð ×%Ñ% eÔ,ð �K‰K×Ñœw u›~Ô.ô # 4×#AÑ#AÀ"Ñ#EÓFˆOØ×"Ñ" 5Ô)ð
 �_Ó$Ø# BÐ'Ø×*Ñ*×1Ñ1°/ÔBô &*¨%¯+©+«-Ö%8Ñ!�Ü/Ø˜VÐ%Dó�	ð )2˜9Ó%ñ	 &9ð '+×&?Ñ&?Ó&AˆÜ 
× 0Ñ 0Ó 2Ö3‰KˆDØ"Ÿn™n¨TÓ2‰OˆIØÑ Ø%*˜TÓ"à×5Ñ5°iÓ@�Ü*¨8¸9ÓE�Ø%*˜TÓ"ñ 4ð Ÿ™¨Ó,‰ˆ	Ø×-Ñ-¨iÓ8ˆØ�	‰	×!Ñ!ØØØØØ×5Ñ5°bÑ9ð 	"ò 	
r?   c                ód   • Uc  g[        U R                  5       H  nUc  M  X;   d  M  X!   s  $    g)z9Find the currently active prefix for the given namespace.N)ÚreversedrR   )r\   r~   Úinverted_nsmaps      r7   r«   Ú+LXMLTreeBuilderForXML._prefix_for_namespaceœ  s9   € ð ÑØÜ& t§{¡{Ö3ˆNØÓ)¨iÕ.IØ%Ñ0Ò0ñ 4ð r?   c                óæ  • U R                   c   e[        U[        5      (       d   eU R                   R                  5         U R	                  U5      u  p!S nUb,  [        U R                  5       H  nUc  M  X$;   d  M  XB   n  O   U R                   R                  X5        [        U R                  5      S:”  a9  U R                  R                  5       nUb  U R                  R                  5         g g g )Nr{   )r]   r‹   r.   ÚendDatar€   r¹   rR   Úhandle_endtagrŒ   Úpoprt   )r\   r}   r~   r°   rº   Úout_of_scope_nsmaps         r7   ÚendÚLXMLTreeBuilderForXML.end§  sÕ   € Ø�y‰yÑ$Ð$Ð$Ü˜#œs×#Ñ#Ð#Ð#Ø�	‰	×ÑÔØŸ™¨Ó,‰ˆ	ØˆØÑ Ü"*¨4¯;©;Ö"7�Ø!Ó-°)Õ2MØ-Ñ8�HÙñ #8ð 	�	‰	×Ñ Ô.Üˆt�{‰{Ó˜aÓð "&§¡§¡Ó!2Ðà!Ñ-ð ×.Ñ.×2Ñ2Õ4ð	 .ð  r?   c                óæ   • U R                   c   eU R                   R                  5         US-   U-   nU R                   R                  U5        U R                   R                  U R                  5        g )NÚ )r]   r½   Úhandle_datarH   )r\   rh   r    s      r7   ÚpiÚLXMLTreeBuilderForXML.pi¾  sZ   € Ø�y‰yÑ$Ð$Ð$Ø�	‰	×ÑÔØ˜‰|˜dÑ"ˆØ�	‰	×Ñ˜dÔ#Ø�	‰	×Ñ˜$×;Ñ;Õ<r?   c                ó†   • U R                   c   e[        U[        5      (       d   eU R                   R                  U5        g r2   )r]   r‹   r.   rÅ   )r\   r    s     r7   r    ÚLXMLTreeBuilderForXML.dataÅ  s7   € Ø�y‰yÑ$Ð$Ð$Ü˜$¤×$Ñ$Ð$Ð$Ø�	‰	×Ñ˜dÕ#r?   c                óô   • U R                   c   eU R                   R                  5         [        R                  " XU5      nU R                   R	                  U5        U R                   R                  [        S9  g )N)ÚcontainerClass)r]   r½   r   Ú_string_for_name_and_idsrÅ   )r\   r   ÚpubidÚsystemÚdoctype_strings        r7   ÚdoctypeÚLXMLTreeBuilderForXML.doctypeÊ  s[   € Ø�y‰yÑ$Ð$Ð$Ø�	‰	×ÑÔÜ ×9Ò9¸$ÀvÓNˆØ�	‰	×Ñ˜nÔ-Ø�	‰	×Ñ¬ÐÒ1r?   c                óø   • U R                   c   e[        U[        5      (       d   eU R                   R                  5         U R                   R	                  U5        U R                   R                  [
        5        g)z#Handle comments as Comment objects.N)r]   r‹   r.   r½   rÅ   r   )r\   Útexts     r7   ÚcommentÚLXMLTreeBuilderForXML.commentÑ  sY   € à�y‰yÑ$Ð$Ð$Ü˜$¤×$Ñ$Ð$Ð$Ø�	‰	×ÑÔØ�	‰	×Ñ˜dÔ#Ø�	‰	×Ñœ'Õ"r?   c                ó   • SU-  $ )úSee `TreeBuilder`.z)<?xml version="1.0" encoding="utf-8"?>
%sr3   ©r\   Úfragments     r7   Útest_fragment_to_documentÚ/LXMLTreeBuilderForXML.test_fragment_to_documentÙ  s   € à;¸hÑFÐFr?   )rW   rt   rG   rR   rU   rH   r]   )r]   r,   ÚreturnÚNone)rb   zDict[str, str]rÜ   rÝ   ©rj   úOptional[_Encoding]rÜ   rA   )rj   rß   rÜ   r@   )NNF)rU   rV   rT   rS   rG   rE   rv   r   )r}   r.   rÜ   zTuple[Optional[str], str])NNN)
r�   r+   r‘   rß   r’   rß   r‰   zOptional[_Encodings]rÜ   zRIterable[Tuple[Union[str, bytes], Optional[_Encoding], Optional[_Encoding], bool]]©r�   r+   rÜ   rÝ   )rÜ   rÝ   )r}   ústr | bytesr­   zDict[str | bytes, str | bytes]r®   r)   rÜ   rÝ   )r~   zOptional[_NamespaceURL]rÜ   zOptional[_NamespacePrefix])r}   rá   rÜ   rÝ   )rh   r.   r    r.   rÜ   rÝ   )r    rá   rÜ   rÝ   )r   r.   rÍ   r.   rÎ   r.   rÜ   rÝ   )rÓ   rá   rÜ   rÝ   ©rÙ   r.   rÜ   r.   )(Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú	XMLParserrD   Ú__annotations__rF   rI   rL   r/   r"   r   r    rM   rO   r:   rP   r>   rQ   rZ   r[   rl   rp   ru   r€   r”   rš   r›   r¶   r«   rÁ   rÆ   r    rÐ   rÔ   rÚ   Ú__static_attributes__Ú__classcell__)r^   s   @r7   r   r   O   s¸  ø‡ Ø27·/±/ÐÐ/ÓAà€FˆDÓð ƒOà"=Ó=à€Dˆ#ÓØ&+ W€O�]Ó,ð  $ T¨3°°jÐA€HˆmÓAà€J�Óñ )-Ð1WÑ(X€NÐ%ÓXá9@ÀÓ9PÐÐ6ÓPà5Ó5Ø*Ó*ØƒKØ.Ó.÷	7ô3ô2qôð  15Ø59Ø#ð	>à-ð>ð !3ð>ð ð	>ð
 ÷>ð >ô2ð 8<Ø:>Ø26ðQQàðQQð "5ðQQð %8ð	QQð
 0ðQQð
õQQôf*ô45ð $&ð	W
àðW
ð /ðW
ð !ð	W
ð
 
õW
ðr	Ø0ð	à	#ô	ô5ô.=ô$ô
2ô#÷Gò Gr?   c                  óˆ   • \ rS rSr% \rS\S'   S/rS\S'   \" \5      \\	\
\/-   rS\S'   SrS	\S
'   SS jrSS jrSS jrSrg)r   iÞ  r.   rI   z	lxml-htmlrK   rL   rM   FrE   rF   c                ó"   • [         R                  $ r2   )r   Ú
HTMLParserrk   s     r7   rl   ÚLXMLTreeBuilder.default_parserå  s   € Ü×ÑÐr?   c                óJ  • U R                   c   eU R                   R                  n U R                  U5      U l        U R                  R	                  U5        U R                  R                  5         g ! [        [        [        R                  4 a  n[        U5      eS nAff = fr2   )r]   r™   rp   rU   rš   r›   rœ   r�   r   rž   r$   )r\   r�   rj   r¡   s       r7   rš   ÚLXMLTreeBuilder.feedè  s€   € à�y‰yÑ$Ð$Ð$Ø—9‘9×.Ñ.ˆð	*ØŸ/™/¨(Ó3ˆDŒKØ�K‰K×Ñ˜VÔ$Ø�K‰K×ÑÕøÜ"¤K´×1BÑ1BÐCó 	*Ü& qÓ)Ð)ûð	*ús   §AA3 Á3B"ÂBÂB"c                ó   • SU-  $ )r×   z<html><body>%s</body></html>r3   rØ   s     r7   rÚ   Ú)LXMLTreeBuilder.test_fragment_to_documentó  s   € à-°Ñ8Ð8r?   )rU   NrÞ   rà   râ   )rã   rä   rå   ræ   r/   rI   rè   rL   r;   r   r   r    rM   rF   rl   rš   rÚ   ré   r3   r?   r7   r   r   Þ  sN   ‡ Ø€Dˆ#ÓØ&1 ]€O�]Ó2á" ?Ó3°t¸TÀ4ÈÐ6TÑT€HˆmÓTØ€FˆDÓô ô	*÷9r?   N)r=   údict[Any, Any]rÜ   ró   )=Ú
__future__r   Ú__license__Ú__all__Útypingr   r   r	   r
   r   r   r   r   r   r   rŸ   r   r   Útyping_extensionsr   r-   r   Úbs4.elementr   r   r   r   r   r   r   Úbs4.builderr   r   r   r   r    r!   r"   Ú
bs4.dammitr#   Úbs4.exceptionsr$   Úbs4._typingr%   r&   r'   r(   r)   r*   r+   Úbs4r,   r/   rè   r>   rç   rí   r@   rA   r   r   r3   r?   r7   Ú<module>rÿ      s÷   ðæ "ð €ð Øð€÷÷ ÷ õ Ý å 'å ÷÷ ñ ÷÷ ñ õ (Ý /æ÷÷ ñ õ "à€€cÓ ô4ð
 ˜uŸ™°×0@Ñ0@Ð@ÑA€ˆYÓ AØ"'Ø��e—o‘oÑ&¨¨U×-=Ñ-=Ñ(>Ð>ñ#Ð �ió ô
LG˜Kô LGô^9�oÐ'<õ 9r?   