ó
    |ch˜  ã            	       óè  • % S r SrSSKrSSKJr  SSKJr  SSKrSSKJrJ	r	  SSK
Jr  SSKJrJrJrJrJrJr  \(       a  SS	KJr  SSKrSSKrSSKrSSKrSSKrSSKrS!S jrS"S
SS\S\SS4S jjr " S S\5      rS
\SS4S jr Sr!\\"S'   Sr#\\"S'   S#S\$S\4S jjr%S$S\$S\4S jjr&S%S\$S\4S jjr'S&S\$SS4S jjr(S'S\$S\SS4S jjr)\*S :X  a!  \" \RV                  RY                  5       5        gg)(z=Diagnostic functions, mainly for use when doing tech support.ÚMITé    N)ÚBytesIO)Ú
HTMLParser)ÚBeautifulSoupÚ__version__)Úbuilder_registry)ÚAnyÚIOÚListÚOptionalÚTupleÚTYPE_CHECKING)Ú_IncomingMarkupÚdatar   Úreturnc           	      óÆ  • [        S[        -  5        [        S[        R                  -  5        / SQnU HK  n[        R
                   H  nX#R                  ;   d  M    M*     UR                  U5        [        SU-  5        MM     SU;   aM  UR                  S5         SSK	J
n  [        S	S
R                  [        [        UR                  5      5      -  5        SU;   a   SSKn[        SUR                  -  5        [#        U S5      (       a  U R%                  5       n U HX  n[        SU-  5        Sn ['        XS9nSnU(       a'  [        SU-  5        [        WR/                  5       5        [        S5        MZ     g! [         a    [        S5         Nºf = f! [         a    [        S5         N²f = f! [(         a&    [        SU-  5        [*        R,                  " 5          N£f = f)z¡Diagnostic suite for isolating common problems.

:param data: Some markup that needs to be explained.
:return: None; diagnostics are printed to standard output.
z'Diagnostic running on Beautiful Soup %szPython version %s)úhtml.parserÚhtml5libÚlxmlz;I noticed that %s is not installed. Installing it may help.r   zlxml-xmlr   ©ÚetreezFound lxml version %sÚ.z.lxml is not installed or couldn't be imported.r   NzFound html5lib version %sz2html5lib is not installed or couldn't be imported.Úreadz#Trying to parse your markup with %sF)ÚfeaturesTú%s could not parse the markup.z#Here's what %s did with the markup:zP--------------------------------------------------------------------------------)Úprintr   ÚsysÚversionr   Úbuildersr   ÚremoveÚappendr   r   ÚjoinÚmapÚstrÚLXML_VERSIONÚImportErrorr   Úhasattrr   r   Ú	ExceptionÚ	tracebackÚ	print_excÚprettify)	r   Úbasic_parsersÚnameÚbuilderr   r   ÚparserÚsuccessÚsoups	            ÚU/var/www/djangovue.mamus.xyz/django/venv/lib/python3.13/site-packages/bs4/diagnose.pyÚdiagnoser3       s´  € ô 
Ð4´{ÑBÔDÜ	Ð¤§¡Ñ,Ô.â7€MÛˆÜ'×0Ô0ˆGØ×'Ñ'Õ'Úñ 1ð × Ñ  Ô&ÜØNÐQUÑUöñ ð �ÓØ×Ñ˜ZÔ(ð	DÝ"äÐ*¨S¯X©X´c¼#¸u×?QÑ?QÓ6RÓ-SÑSÔUð �]Ó"ð	HÛäÐ.°×1EÑ1EÑEÔGô ˆt�V×ÑØ�y‰y‹{ˆãˆÜÐ4°vÑ=Ô?Øˆð	"Ü  Ñ7ˆDØˆGö ÜÐ8¸6ÑAÔCÜ�4—=‘=“?Ô$äˆxÖò  øô ó 	DÜÐBÖCð	Dûô ó 	HÜÐFÖGð	Hûô ó 	"ÜÐ3°fÑ<Ô>Ü×ÒÖ!ð	"ús6   Â;E: ÃF Ä1F0Å:FÆFÆF-Æ,F-Æ0-G ÇG ÚhtmlÚkwargsc                 óR  • SSK Jn  UR                  SS5      n[        U [        5      (       a  U R                  S5      n [        U [        5      (       d  [        U 5      nUR                  " W4XS.UD6 H0  u  pg[        U< SUR                  <S SUR                  < 35        M2     g	)
a”  Print out the lxml events that occur during parsing.

This lets you see how lxml parses a document when no Beautiful
Soup code is running. You can use this to determine whether
an lxml-specific problem is in Beautiful Soup's lxml tree builders
or in lxml itself.

:param data: Some markup.
:param html: If True, markup will be parsed with lxml's HTML parser.
   if False, lxml's XML parser will be used.
r   r   ÚrecoverTÚutf8)r4   r7   z, z>4N)r   r   ÚpopÚ
isinstancer$   Úencoder
   r   Ú	iterparser   ÚtagÚtext)r   r4   r5   r   r7   ÚreaderÚeventÚelements           r2   Ú
lxml_tracerB   X   s€   € õ à�j‰j˜ DÓ)€GÜ�$œ×ÑØ�{‰{˜6Ó"ˆÜ�dœB×ÑÜ˜“ˆØŸ/š/¨&ÐW°tÑWÐPVÔW‰ˆÜ£ w§{¥{°G·L³LÐAÖCò Xó    c            	       óø   • \ rS rSrSrS\SS4S jr SS\S\\\\	\   4      S	\
SS4S
 jjrSS\S\
SS4S jjrS\SS4S jrS\SS4S jrS\SS4S jrS\SS4S jrS\SS4S jrS\SS4S jrS\SS4S jrSrg)ÚAnnouncingParseréo   zØSubclass of HTMLParser that announces parse events, without doing
anything else.

You can use this to get a picture of how html.parser sees a given
document. The easiest way to do this is to call `htmlparser_trace`.
Úsr   Nc                 ó   • [        U5        g )N)r   )ÚselfrG   s     r2   Ú_pÚAnnouncingParser._pw   s	   € Üˆa�rC   r-   ÚattrsÚhandle_empty_elementc                 ó2   • U R                  U SU S35        g )NÚ z START©rJ   )rI   r-   rL   rM   s       r2   Úhandle_starttagÚ AnnouncingParser.handle_starttagz   s   € ð 	�‰�4�&˜˜%˜ Ð'Õ(rC   Úcheck_already_closedc                 ó,   • U R                  SU-  5        g )Nz%s ENDrP   )rI   r-   rS   s      r2   Úhandle_endtagÚAnnouncingParser.handle_endtag‚   s   € Ø�‰�˜4‘Õ rC   r   c                 ó,   • U R                  SU-  5        g )Nz%s DATArP   ©rI   r   s     r2   Úhandle_dataÚAnnouncingParser.handle_data…   ó   € Ø�‰�	˜DÑ Õ!rC   c                 ó,   • U R                  SU-  5        g )Nz
%s CHARREFrP   ©rI   r-   s     r2   Úhandle_charrefÚAnnouncingParser.handle_charrefˆ   ó   € Ø�‰�˜tÑ#Õ$rC   c                 ó,   • U R                  SU-  5        g )Nz%s ENTITYREFrP   r]   s     r2   Úhandle_entityrefÚ!AnnouncingParser.handle_entityref‹   s   € Ø�‰� Ñ%Õ&rC   c                 ó,   • U R                  SU-  5        g )Nz
%s COMMENTrP   rX   s     r2   Úhandle_commentÚAnnouncingParser.handle_commentŽ   r`   rC   c                 ó,   • U R                  SU-  5        g )Nz%s DECLrP   rX   s     r2   Úhandle_declÚAnnouncingParser.handle_decl‘   r[   rC   c                 ó,   • U R                  SU-  5        g )Nz%s UNKNOWN-DECLrP   rX   s     r2   Úunknown_declÚAnnouncingParser.unknown_decl”   s   € Ø�‰Ð! DÑ(Õ)rC   c                 ó,   • U R                  SU-  5        g )Nz%s PIrP   rX   s     r2   Ú	handle_piÚAnnouncingParser.handle_pi—   s   € Ø�‰�˜$‘ÕrC   © ©T)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r$   rJ   r   r   r   ÚboolrQ   rU   rY   r^   rb   re   rh   rk   rn   Ú__static_attributes__rp   rC   r2   rE   rE   o   sü   † ñð�Cð ˜Dô ð &*ñ	)àð)ð �E˜#˜x¨™}Ð,Ñ-Ñ.ð)ð #ð	)ð
 
õ)ñ! #ð !¸Tð !ÈTõ !ð" ð "¨ô "ð% 3ð %¨4ô %ð' Sð '¨Tô 'ð% 3ð %¨4ô %ð" ð "¨ô "ð* ð *¨ô *ð ˜cð   d÷  rC   rE   c                 ó:   • [        5       nUR                  U 5        g)z²Print out the HTMLParser events that occur during parsing.

This lets you see how HTMLParser parses a document when no
Beautiful Soup code is running.

:param data: Some markup.
N)rE   Úfeed)r   r/   s     r2   Úhtmlparser_tracer{   ›   s   € ô Ó€FØ
‡K�K�ÕrC   ÚaeiouÚ_vowelsÚbcdfghjklmnpqrstvwxyzÚ_consonantsÚlengthc                 óŒ   • Sn[        U 5       H2  nUS-  S:X  a  [        nO[        nU[        R                  " U5      -  nM4     U$ )z4Generate a random word-like string.

:meta private:
Ú é   r   )Úranger   r}   ÚrandomÚchoice)r€   rG   ÚiÚts       r2   Úrwordr‰   «   sF   € ð
 	€AÜ�6Ž]ˆØˆq‰5�A‹:Ü‰AäˆAØ	ŒV�]Š]˜1ÓÑŠñ ð €HrC   c                 óD   • SR                  S [        U 5       5       5      $ )z8Generate a random sentence-like string.

:meta private:
rO   c              3   ób   #   • U  H%  n[        [        R                  " S S5      5      v •  M'     g7f)é   é	   N)r‰   r…   Úrandint)Ú.0r‡   s     r2   Ú	<genexpr>Úrsentence.<locals>.<genexpr>¿   s#   é € ÐGº°A”Eœ&Ÿ.š.¨¨AÓ.×/Ð/ºùs   ‚-/)r"   r„   )r€   s    r2   Ú	rsentencer’   º   s   € ð
 �8‰8ÑG¼¸v¼ÓGÓGÐGrC   Únum_elementsc           	      óÄ  • / SQn/ n[        U 5       Hµ  n[        R                  " SS5      nUS:X  a,  [        R                  " U5      nUR	                  SU-  5        ML  US:X  a1  UR	                  [        [        R                  " SS5      5      5        Mƒ  US:X  d  M‹  [        R                  " U5      nUR	                  SU-  5        M·     S	S
R                  U5      -   S-   $ )z<Randomly generate an invalid HTML document.

:meta private:
)ÚpÚdivÚspanr‡   ÚbÚscriptÚtabler   é   z<%s>é   rŒ   rƒ   z</%s>z<html>Ú
z</html>)r„   r…   rŽ   r†   r!   r’   r"   )r“   Ú	tag_namesÚelementsr‡   r†   Útag_names         r2   Úrdocr¡   Â   s¸   € ò
 B€IØ€HÜ�<Ö ˆÜ—’  1Ó%ˆØ�Q‹;ä—}’} YÓ/ˆHØ�O‰O˜F XÑ-Ö.Ø�q‹[Ø�O‰OœI¤f§n¢n°Q¸Ó&:Ó;Ö<Ø�q�[ä—}’} YÓ/ˆHØ�O‰O˜G hÑ.Ö/ñ !ð �d—i‘i Ó)Ñ)¨IÑ5Ð5rC   c                 óþ  • [        S[        -  5        [        U 5      n[        S[        U5      -  5        SSS/SS4 HY  nSn [        R                  " 5       n[        X5        [        R                  " 5       nSnU(       d  MF  [        S
UWW-
  4-  5        M[     SSK	J
n  [        R                  " 5       nUR                  U5        [        R                  " 5       n[        SXT-
  -  5        SSKnUR                  5       n[        R                  " 5       nUR                  U5        [        R                  " 5       n[        SXT-
  -  5        g! [         a'    [        S	U-  5        [        R                  " 5          GNf = f)z.Very basic head-to-head performance benchmark.z1Comparative parser benchmark on Beautiful Soup %sz3Generated a large invalid HTML document (%d bytes).r   r4   r   r   FTr   z"BS4+%s parsed the markup in %.2fs.r   r   z$Raw lxml parsed the markup in %.2fs.Nz(Raw html5lib parsed the markup in %.2fs.)r   r   r¡   ÚlenÚtimer   r(   r)   r*   r   r   ÚHTMLr   r   Úparse)	r“   r   Úparser_namer0   Úar˜   r   r   r/   s	            r2   Úbenchmark_parsersr©   Ø   s5  € ä	Ð>ÄÑLÔNÜ�Ó€DÜ	Ð@Ä3ÀtÃ9ÑLÔNà ¨Ð 0°*¸mÓLˆØˆð	"Ü—	’	“ˆAÜ˜$Ô,Ü—	’	“ˆAØˆG÷ ˆ7ÜÐ7¸;ÈÈAÉÐ:NÑNÖPñ Mõ ä�	Š	‹€AØ	‡J�JˆtÔÜ�	Š	‹€AÜ	Ð1°Q±UÑ;Ô=ãà× Ñ Ó"€FÜ�	Š	‹€AØ
‡L�L�ÔÜ�	Š	‹€AÜ	Ð5¸¹Ñ?ÕAøô' ó 	"ÜÐ3°kÑAÔCÜ×Ò×!ð	"ús   Á7EÅ-E<Å;E<r/   c                 ó  • [         R                  " 5       nUR                  n[        U 5      n[	        [
        XAS9n[        R                  " SXUU5        [        R                  " U5      nUR                  S5        UR                  SS5        g)z7Use Python's profiler on a randomly generated document.)Úbs4r   r/   zbs4.BeautifulSoup(data, parser)Ú
cumulativez_html5lib|bs4é2   N)ÚtempfileÚNamedTemporaryFiler-   r¡   Údictr«   ÚcProfileÚrunctxÚpstatsÚStatsÚ
sort_statsÚprint_stats)r“   r/   Ú
filehandleÚfilenamer   ÚvarsÚstatss          r2   Úprofiler»   û   sl   € ä×,Ò,Ó.€JØ�‰€Hä�Ó€DÜ”C˜dÑ2€DÜ‡O‚OÐ5°tÀ8ÔLä�LŠL˜Ó"€Eà	×Ñ�\Ô"Ø	×Ñ�o rÕ*rC   Ú__main__)r   r   r   Nrq   )é   )rŒ   )iè  )é † )r¾   r   )-rv   Ú__license__r±   Úior   Úhtml.parserr   r«   r   r   Úbs4.builderr   Útypingr	   r
   r   r   r   r   Úbs4._typingr   r³   r…   r®   r¤   r)   r   r3   rw   rB   rE   r$   r{   r}   Ú__annotations__r   Úintr‰   r’   r¡   r©   r»   rr   Ústdinr   rp   rC   r2   Ú<module>rÈ      s7  ðÚ Cð €ã Ý Ý "Û 
ß *Ý (÷÷ ö Ý+ã Û Û Û Û Û 
ô5ñpDÐ&ð D¨dð DÀSð DÈTõ Dô.) �zô ) ðX	˜3ð 	 4ô 	ð €ˆÓ Ø*€ˆSÓ *ñ�#ð ˜cõ ñH�cð H #õ Hñ6�sð 6 cõ 6ñ, B Cð  B°Tõ  BñF+˜#ð +°ð +Àõ +ð  ˆzÓÙˆS�Y‰Y�^‰^ÓÕð rC   