Ë
    rPêjÕ'  ã                   ó¬   — d dl mZ d dlmZ dZdZdZdZ G d„ de«      Z G d	„ d
«      Z	 G d„ d«      Z
 G d„ de
«      Z G d„ de«      Z G d„ de
«      Zy)é    )Ú
HTMLParser)Úzip_longest)ÚcodeÚa)ÚspanÚir   r   )r   Úb)ÚpÚnoteÚulÚlic                   óN   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ fd„Zˆ fd„Zd„ Zd„ Z	d„ Z
ˆ xZS )	ÚDocStringParserz§
    A simple HTML parser.  Focused on converting the subset of HTML
    that appears in the documentation strings of the JSON models into
    simple ReST format.
    c                 ó>   •— d | _         || _        t        ‰| �  «        y ©N)ÚtreeÚdocÚsuperÚ__init__)Úselfr   Ú	__class__s     €úh/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/botocore/docs/bcdoc/docstringparser.pyr   zDocStringParser.__init__   s   ø€ ØˆŒ	ØˆŒÜ‰ÑÕó    c                 ób   — t        j                  | «       t        | j                  «      | _        y r   )r   ÚresetÚHTMLTreer   r   ©r   s    r   r   zDocStringParser.reset"   s    € Ü×Ñ˜ÔÜ˜TŸX™XÓ&ˆ�	r   c                 óŒ   •— t         ‰| �  |«       | j                  j                  «        t	        | j
                  «      | _        y r   )r   Úfeedr   Úwriter   r   )r   Údatar   s     €r   r   zDocStringParser.feed&   s-   ø€ Ü‰‰�TÔØ�	‰	�‰ÔÜ˜TŸX™XÓ&ˆ�	r   c                 óŠ   •— t         ‰| �  «        | j                  j                  «        t	        | j
                  «      | _        y r   )r   Úcloser   r    r   r   )r   r   s    €r   r#   zDocStringParser.close+   s*   ø€ Ü‰‰Œà�	‰	�‰ÔÜ˜TŸX™XÓ&ˆ�	r   c                 ó>   — | j                   j                  ||¬«       y )N)Úattrs©r   Úadd_tag)r   Útagr%   s      r   Úhandle_starttagzDocStringParser.handle_starttag1   s   € Ø�	‰	×Ñ˜# UÐÕ+r   c                 ó>   — | j                   j                  |d¬«       y )NF)Úis_startr&   )r   r(   s     r   Úhandle_endtagzDocStringParser.handle_endtag4   s   € Ø�	‰	×Ñ˜#¨ÐÕ.r   c                 ó:   — | j                   j                  |«       y r   )r   Úadd_data©r   r!   s     r   Úhandle_datazDocStringParser.handle_data7   s   € Ø�	‰	×Ñ˜4Õ r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r#   r)   r,   r0   Ú__classcell__©r   s   @r   r   r      s+   ø„ ñôò
'ô'ô
'ò,ò/ö!r   r   c                   ó0   — e Zd ZdZd„ Zdd„Zd„ Zd„ Zd„ Zy)	r   zæ
    A tree which handles HTML nodes. Designed to work with a python HTML parser,
    meaning that the current_node will be the most recently opened tag. When
    a tag is closed, the current_node moves up to the parent node.
    c                 ó`   — || _         t        «       | _        | j                  | _        g | _        y r   )r   ÚStemNodeÚheadÚcurrent_nodeÚunhandled_tags©r   r   s     r   r   zHTMLTree.__init__B   s&   € ØˆŒÜ“JˆŒ	Ø ŸI™IˆÔØ ˆÕr   Nc                 óø   — | j                  ||«      s| j                  j                  |«       y |r/t        ||«      }| j                  j                  |«       || _        y | j                  j                  | _        y r   )Ú_doc_has_handlerr<   ÚappendÚTagNoder;   Ú	add_childÚparent)r   r(   r%   r+   Únodes        r   r'   zHTMLTree.add_tagH   sh   € Ø×$Ñ$ S¨(Ô3Ø×Ñ×&Ñ& sÔ+ØáÜ˜3 Ó&ˆDØ×Ñ×'Ñ'¨Ô-Ø $ˆDÕà $× 1Ñ 1× 8Ñ 8ˆDÕr   c                 ó\   — |rd|› �}nd|› �}t        | j                  j                  |«      S )NÚstart_Úend_)Úhasattrr   Ústyle)r   r(   r+   Úhandler_names       r   r?   zHTMLTree._doc_has_handlerT   s0   € ÙØ# C 5˜>‰Là! # ˜<ˆLä�t—x‘x—~‘~ |Ó4Ð4r   c                 óL   — | j                   j                  t        |«      «       y r   )r;   rB   ÚDataNoder/   s     r   r.   zHTMLTree.add_data\   s   € Ø×Ñ×#Ñ#¤H¨T£NÕ3r   c                 óN   — | j                   j                  | j                  «       y r   )r:   r    r   r   s    r   r    zHTMLTree.write_   s   € Ø�	‰	�‰˜Ÿ™Õ!r   )NT)	r1   r2   r3   r4   r   r'   r?   r.   r    © r   r   r   r   ;   s    „ ñò!ó
9ò5ò4ó"r   r   c                   ó   — e Zd Zdd„Zd„ Zy)ÚNodeNc                 ó   — || _         y r   )rC   )r   rC   s     r   r   zNode.__init__d   s	   € Øˆ�r   c                 ó   — t         ‚r   )ÚNotImplementedErrorr=   s     r   r    z
Node.writeg   s   € Ü!Ð!r   r   )r1   r2   r3   r   r    rN   r   r   rP   rP   c   s   „ óó"r   rP   c                   óV   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zˆ xZS )r9   c                 ó2   •— t         ‰| �  |«       g | _        y r   )r   r   Úchildren)r   rC   r   s     €r   r   zStemNode.__init__l   s   ø€ Ü‰Ñ˜Ô Øˆ�r   c                 óH   — | |_         | j                  j                  |«       y r   )rC   rV   r@   ©r   Úchilds     r   rB   zStemNode.add_childp   s   € ØˆŒØ�‰×Ñ˜UÕ#r   c                 óF   — | j                  «        | j                  |«       y r   )Úcollapse_whitespaceÚ_write_childrenr=   s     r   r    zStemNode.writet   s   € Ø× Ñ Ô"Ø×Ñ˜SÕ!r   c                 óÆ   — t        | j                  | j                  dd  «      D ];  \  }}t        |t        «      r|�|j	                  ||«       Œ+|j	                  |«       Œ= y )Né   )r   rV   Ú
isinstancerA   r    )r   r   rY   Ú
next_childs       r   r\   zStemNode._write_childrenx   sU   € Ü!,¨T¯]©]¸D¿M¹MÈ!È"Ð<MÓ!Nò 	!ÑˆE�:Ü˜%¤Ô)¨jÐ.DØ—‘˜C Õ,à—‘˜CÕ ñ		!r   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr   )Úis_whitespace©Ú.0rY   s     r   ú	<genexpr>z)StemNode.is_whitespace.<locals>.<genexpr>€   s   è ø€ ÒD¨U�5×&Ñ&×(ÑDùó   ‚)ÚallrV   r   s    r   rc   zStemNode.is_whitespace   s   € ÜÑD°d·m±mÔDÓDÐDr   c                 óX   — | j                   xr | j                   d   j                  «       S )Nr   )rV   Ústartswith_whitespacer   s    r   rj   zStemNode.startswith_whitespace‚   s#   € Ø�}‰}ÒI §¡¨qÑ!1×!GÑ!GÓ!IÐIr   c                 óX   — | j                   xr | j                   d   j                  «       S ©Néÿÿÿÿ)rV   Úendswith_whitespacer   s    r   rn   zStemNode.endswith_whitespace…   s#   € Ø�}‰}ÒH §¡¨rÑ!2×!FÑ!FÓ!HÐHr   c                 ó&  — | j                   r[| j                   d   j                  «       r>| j                   dd  | _         | j                   r| j                   d   j                  «       rŒ>| j                   r| j                   d   j                  «        y y )Nr   r^   )rV   rc   Úlstripr   s    r   rp   zStemNode.lstripˆ   sm   € Ø�mŠm §¡¨aÑ 0× >Ñ >Ô @Ø ŸM™M¨!¨"Ð-ˆDŒMð �mŠm §¡¨aÑ 0× >Ñ >Õ @à�=Š=Ø�M‰M˜!Ñ×#Ñ#Õ%ð r   c                 ó&  — | j                   r[| j                   d   j                  «       r>| j                   d d | _         | j                   r| j                   d   j                  «       rŒ>| j                   r| j                   d   j                  «        y y rl   )rV   rc   Úrstripr   s    r   rr   zStemNode.rstripŽ   sm   € Ø�mŠm §¡¨bÑ 1× ?Ñ ?Ô AØ ŸM™M¨#¨2Ð.ˆDŒMð �mŠm §¡¨bÑ 1× ?Ñ ?Õ Aà�=Š=Ø�M‰M˜"Ñ×$Ñ$Õ&ð r   c                 ó†   — | j                  «        | j                  «        | j                  D ]  }|j                  «        Œ y)a~  Remove collapsible white-space from HTML.

        HTML in docstrings often contains extraneous white-space around tags,
        for readability. Browsers would collapse this white-space before
        rendering. If not removed before conversion to RST where white-space is
        part of the syntax, for example for indentation, it can result in
        incorrect output.
        N)rp   rr   rV   r[   rX   s     r   r[   zStemNode.collapse_whitespace”   s5   € ð 	�‰ŒØ�‰ŒØ—]‘]ò 	(ˆEØ×%Ñ%Õ'ñ	(r   r   )r1   r2   r3   r   rB   r    r\   rc   rj   rn   rp   rr   r[   r5   r6   s   @r   r9   r9   k   s8   ø„ õò$ò"ò!òEòJòIò&ò'ö(r   r9   c                   óD   ‡ — e Zd ZdZdˆ fd„	Zd„ Zd	d„Zd„ Zd„ Zd„ Z	ˆ xZ
S )
rA   zP
    A generic Tag node. It will verify that handlers exist before writing.
    c                 ó@   •— t         ‰| �  |«       || _        || _        y r   )r   r   r%   r(   )r   r(   r%   rC   r   s       €r   r   zTagNode.__init__¨   s   ø€ Ü‰Ñ˜Ô ØˆŒ
Øˆ�r   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr   )r_   rA   rd   s     r   rf   z+TagNode._has_nested_tags.<locals>.<genexpr>¯   s   è ø€ ÒI°%”:˜e¤W×-ÑIùrg   )ÚanyrV   r   s    r   Ú_has_nested_tagszTagNode._has_nested_tags­   s   € äÑI¸4¿=¹=ÔIÓIÐIr   c                 óx  — | j                   t        v xr | j                  «       }t        | j                  t
        «      xr0 | j                  j                   t        v xr | j                   t        v }|s|r| j                  |«       y | j                  |«       | j                  |«       | j                  ||«       y r   )r(   ÚOMIT_SELF_TAGSry   r_   rC   rA   ÚPRIORITY_PARENT_TAGSÚOMIT_NESTED_TAGSr\   Ú_write_startÚ
_write_end)r   r   r`   Úprioritize_nested_tagsÚprioritize_parent_tags        r   r    zTagNode.write±   s¡   € à�H‰HœÐ&ÒB¨4×+@Ñ+@Ó+Bð 	ô �t—{‘{¤GÓ,ò -Ø—‘—‘Ô#7Ð7ò-à—‘Ô,Ð,ð 	ñ
 "Ñ%:Ø× Ñ  Ô%Øà×Ñ˜#ÔØ×Ñ˜SÔ!Ø�‰˜˜ZÕ(r   c                 ón  — | j                   t        v r | j                  «        | j                  «        t	        | j
                  dd | j
                  dd «      D ]H  \  }}t        |t        «      sŒ|j                  «       sŒ(|j                  «       sŒ9|j                  «        ŒJ t	        | j
                  dd | j
                  dd «      D ]H  \  }}t        |t        «      sŒ|j                  «       sŒ(|j                  «       sŒ9|j                  «        ŒJ | j
                  D ]  }|j                  «        Œ y)a�  Remove collapsible white-space.

        All tags collapse internal whitespace. Block-display HTML tags also
        strip all leading and trailing whitespace.

        Approximately follows the specification used in browsers:
        https://www.w3.org/TR/css-text-3/#white-space-rules
        https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Whitespace
        Nrm   r^   )r(   ÚHTML_BLOCK_DISPLAY_TAGSrp   rr   ÚziprV   r_   rL   rn   rj   r[   )r   ÚprevÚcurÚnxtrY   s        r   r[   zTagNode.collapse_whitespaceÂ   sþ   € ð �8‰8Ô.Ñ.Ø�K‰KŒMØ�K‰KŒMô ˜TŸ]™]¨3¨BÐ/°·±¸q¸rÐ1BÓCò 	‰IˆD�#ä˜4¤Õ*Ø×,Ñ,Õ.Ø×-Ñ-Õ/à—
‘
•ð	ô ˜DŸM™M¨#¨2Ð.°·±¸a¸bÐ0AÓBò 	‰HˆC�ä˜3¤Õ)Ø×+Ñ+Õ-Ø×-Ñ-Õ/à—
‘
•ð	ð —]‘]ò 	(ˆEØ×%Ñ%Õ'ñ	(r   c                 óœ   — d| j                   › �}t        |j                  |«      r' t        |j                  |«      | j                  «       y y )NrF   )r(   rH   rI   Úgetattrr%   )r   r   rJ   s      r   r~   zTagNode._write_startä   s>   € Ø §¡˜zÐ*ˆÜ�3—9‘9˜lÔ+Ø,ŒG�C—I‘I˜|Ó,¨T¯Z©ZÕ8ð ,r   c                 óÊ   — d| j                   › �}t        |j                  |«      r>|dk(  r t        |j                  |«      |«       y  t        |j                  |«      «        y y )NrG   Úend_a)r(   rH   rI   r‰   )r   r   r`   rJ   s       r   r   zTagNode._write_endé   sU   € Ø˜dŸh™h˜ZÐ(ˆÜ�3—9‘9˜lÔ+Ø˜wÒ&à0”˜Ÿ	™	 <Ó0°Õ<à0”˜Ÿ	™	 <Ó0Õ2ð ,r   )NNr   )r1   r2   r3   r4   r   ry   r    r[   r~   r   r5   r6   s   @r   rA   rA   £   s(   ø„ ñõò
Jó)ò" (òD9ö
3r   rA   c                   ó^   ‡ — e Zd ZdZdˆ fd„	Zed„ «       Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zˆ xZS )rL   z0
    A Node that contains only string data.
    c           	      ó¬  •— t         ‰| �  |«       t        |t        «      st	        dt        |«      › d�«      ‚d| _        d| _        d| _        |dk(  ry |j                  «       r|| _        y t        d„ t        |«      D «       «      }t        |«      t        d„ t        t        |«      «      D «       «      z
  }|d | | _        ||d  | _        ||| | _        y )NzExpecting string type, z given.Ú c              3   óH   K  — | ]  \  }}|j                  «       rŒ|–— Œ y ­wr   ©Úisspace©re   ÚidxÚchs      r   rf   z$DataNode.__init__.<locals>.<genexpr>  s!   è ø€ ò 
Ù�C˜°b·j±jµlŒCñ
ùó   ‚"›"c              3   óH   K  — | ]  \  }}|j                  «       rŒ|–— Œ y ­wr   r�   r’   s      r   rf   z$DataNode.__init__.<locals>.<genexpr>  s!   è ø€ ò *
Ù�C˜ÀÇ
Á
ÅŒCñ*
ùr•   )r   r   r_   ÚstrÚ
ValueErrorÚtypeÚ_leading_whitespaceÚ_trailing_whitespaceÚ_stripped_datar‘   ÚnextÚ	enumerateÚlenÚreversed)r   r!   rC   Úfirst_non_spaceÚlast_non_spacer   s        €r   r   zDataNode.__init__ø   sá   ø€ Ü‰Ñ˜Ô Ü˜$¤Ô$ÜÐ6´t¸D³z°lÀ'ÐJÓKÐKØ#%ˆÔ Ø$&ˆÔ!Ø ˆÔØ�2Š:ØØ�<‰<Œ>Ø(,ˆDÔ%ØÜñ 
Ü(¨›ô
ó 
ˆô ˜T›¤Tñ *
Ü(¬°$«Ó8ô*
ó &
ñ 
ˆð $(Ð(8¨Ð#9ˆÔ Ø$(¨¨Ð$9ˆÔ!Ø" ?°>ÐBˆÕr   c                 óN   — | j                   › | j                  › | j                  › �S r   ©rš   rœ   r›   r   s    r   r!   zDataNode.data  s1   € ð ×'Ñ'Ð(¨×)<Ñ)<Ð(=Ø×(Ñ(Ð)ð+ð	
r   c                 ód   — | j                   dk(  xr  | j                  dk7  xs | j                  dk7  S ©NrŽ   )rœ   rš   r›   r   s    r   rc   zDataNode.is_whitespace  s8   € Ø×"Ñ" bÑ(ò 
Ø×$Ñ$¨Ñ*ÒM¨d×.GÑ.GÈ2Ñ.Mð	
r   c                 ód   — | j                   dk7  xs  | j                  dk(  xr | j                  dk7  S r¦   r¤   r   s    r   rj   zDataNode.startswith_whitespace  s8   € Ø×'Ñ'¨2Ñ-ò 
Ø×Ñ 2Ñ%ÒI¨$×*CÑ*CÀrÑ*Ið	
r   c                 ód   — | j                   dk7  xs  | j                  dk(  xr | j                  dk7  S r¦   )r›   rœ   rš   r   s    r   rn   zDataNode.endswith_whitespace  s8   € Ø×(Ñ(¨BÑ.ò 
Ø×Ñ 2Ñ%ÒH¨$×*BÑ*BÀbÑ*Hð	
r   c                 ór   — | j                   dk7  rd| _         y | j                  dk(  r| j                  «        y y r¦   )rš   rœ   rr   r   s    r   rp   zDataNode.lstrip$  s4   € Ø×#Ñ# rÒ)Ø')ˆDÕ$Ø× Ñ  BÒ&Ø�K‰K�Mð 'r   c                 ór   — | j                   dk7  rd| _         y | j                  dk(  r| j                  «        y y r¦   )r›   rœ   rp   r   s    r   rr   zDataNode.rstrip*  s4   € Ø×$Ñ$¨Ò*Ø(*ˆDÕ%Ø× Ñ  BÒ&Ø�K‰K�Mð 'r   c                  ó   — y)z4Noop, ``DataNode.write`` always collapses whitespaceNrN   r   s    r   r[   zDataNode.collapse_whitespace0  s   € àr   c                 óÚ   — |j                  | j                  j                  «       «      }| j                  › dj	                  |«      › | j
                  › �}|dk7  r|j                  |«       y y )Nú rŽ   )Útranslate_wordsrœ   Úsplitrš   Újoinr›   r0   )r   r   ÚwordsÚstr_datas       r   r    zDataNode.write4  sj   € Ø×#Ñ# D×$7Ñ$7×$=Ñ$=Ó$?Ó@ˆà×'Ñ'Ð(¨¯©°%«Ð(9Ø×(Ñ(Ð)ð+ð 	ð �rŠ>Ø�O‰O˜HÕ%ð r   r   )r1   r2   r3   r4   r   Úpropertyr!   rc   rj   rn   rp   rr   r[   r    r5   r6   s   @r   rL   rL   ó   sE   ø„ ñõCð, ñ
ó ð
ò
ò

ò

ò
òòö&r   rL   N)Úhtml.parserr   Ú	itertoolsr   r|   r}   r{   rƒ   r   r   rP   r9   rA   rL   rN   r   r   ú<module>r¶      sp   ðõ #Ý !à$Ð Ø-Ð Ø€Ø3Ð ô"!�jô "!÷J%"ñ %"÷P"ñ "ô5(ˆtô 5(ôpM3ˆhô M3ô`H&ˆtõ H&r   