§
    ¢”jCE  ã                   óò  — d Z ddlmZ ddlZddlZddlZ	 ddlmZ n# e	$ r	 ddl
mZ Y nw xY wg d¢Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Zej        Zd	„ Zd
„ Z ej        dd¬¦  «        Zd„ Z ej        d¦  «        Z ej        d¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zdd„Zdd„Z G d„ d¦  «        Zd„ ZddiZe dk    rddlZ ej!        ¦   «          dS dS )aÑ  
lxml-based doctest output comparison.

Note: normally, you should just import the `lxml.usedoctest` and
`lxml.html.usedoctest` modules from within a doctest, instead of this
one::

    >>> import lxml.usedoctest # for XML output

    >>> import lxml.html.usedoctest # for HTML output

To use this module directly, you must call ``lxmldoctest.install()``,
which will cause doctest to use this in all subsequent calls.

This changes the way output is checked and comparisons are made for
XML or HTML-like content.

XML or HTML content is noticed because the example starts with ``<``
(it's HTML if it starts with ``<html``).  You can also use the
``PARSE_HTML`` and ``PARSE_XML`` flags to force parsing.

Some rough wildcard-like things are allowed.  Whitespace is generally
ignored (except in attributes).  In text (attributes and text in the
body) you can use ``...`` as a wildcard.  In an example it also
matches any trailing tags in the element, though it does not match
leading tags.  You may create a tag ``<any>`` or include an ``any``
attribute in the tag.  An ``any`` tag matches any tag, while the
attribute matches any and all attributes.

When a match fails, the reformatted example and gotten text is
displayed (indented), and a rough diff-like output is given.  Anything
marked with ``+`` is in the output but wasn't supposed to be, and
similarly ``-`` means its in the example but wasn't in the output.

You can disable parsing on one line with ``# doctest:+NOPARSE_MARKUP``
é    )ÚetreeN)Úescape)Ú
PARSE_HTMLÚ	PARSE_XMLÚNOPARSE_MARKUPÚLXMLOutputCheckerÚLHTMLOutputCheckerÚinstallÚtemp_installr   r   r   c                 ó2   — | €d S |                       ¦   «         S ©N)Ústrip©Úvs    úb/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/lxml/doctestcompare.pyr   r   8   s   € Ø€yØˆtà�wŠw‰yŒyÐó    c                 ó8   — t                                d| ¦  «        S )Nú )Ú_norm_whitespace_reÚsubr   s    r   Únorm_whitespacer   >   s   € Ý×"Ò" 3¨Ñ*Ô*Ð*r   FT)ÚrecoverÚremove_blank_textc                 ó6   — t          j        | t          ¦  «        S r   )r   Ú
fromstringÚ_html_parser©Úhtmls    r   Úhtml_fromstringr   C   s   € ÝÔ˜D¥,Ñ/Ô/Ð/r   z^<[^>]+ (at|object) z[ \t\n][ \t\n]+c                   ó€   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zdd„Zdd„Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„ZdS )r   )
ÚparamÚimgÚareaÚbrÚbasefontÚinputÚbaseÚmetaÚlinkÚcolc                 ó   — t           j        S r   )r   ÚXML©Úselfs    r   Úget_default_parserz$LXMLOutputChecker.get_default_parserP   s
   € ÝŒyÐr   c                 óZ  — t          | dd ¦  «        }|�
| j        }|} nt          j        }|                      |||¦  «        }|s || |||¦  «        S 	  ||¦  «        }n# t
          j        $ r Y dS w xY w	  ||¦  «        }n# t
          j        $ r Y dS w xY w|                      ||¦  «        S )NÚ_temp_override_selfF)ÚgetattrÚ_temp_call_super_check_outputÚOutputCheckerÚcheck_outputÚ
get_parserr   ÚXMLSyntaxErrorÚcompare_docs)	r.   ÚwantÚgotÚoptionflagsÚalt_selfÚsuper_methodÚparserÚwant_docÚgot_docs	            r   r5   zLXMLOutputChecker.check_outputS   só   € Ý˜4Ð!6¸Ñ=Ô=ˆØÐØÔ=ˆLØˆDˆDå(Ô5ˆLØ—’  s¨KÑ8Ô8ˆØð 	.Ø�<Ø�d˜C ñ.ô .ð .ð	Ø�v˜d‘|”|ˆHˆHøÝÔ#ð 	ð 	ð 	Ø�5�5ð	øøøð	Ø�f˜S‘k”kˆGˆGøÝÔ#ð 	ð 	ð 	Ø�5�5ð	øøøà× Ò  ¨7Ñ3Ô3Ð3s$   ÁA ÁA1Á0A1Á5B ÂBÂBc                 óÀ  — d }t           |z  rd S t          |z  rt          }n½t          |z  rt          j        }n¦|                     ¦   «                              ¦   «                              d¦  «        r/|                     ¦   «                              d¦  «        rt          }n>|  	                    |¦  «        r)|  	                    |¦  «        r|  
                    ¦   «         }|S )Nz<html)r   r   r   r   r   r,   r   ÚlowerÚ
startswithÚ_looks_like_markupr/   )r.   r9   r:   r;   r>   s        r   r6   zLXMLOutputChecker.get_parserh   sÔ   € ØˆÝ˜KÑ'ð 	Ø�4Ý˜Ñ#ð 		/Ý$ˆFˆFÝ˜Ñ$ð 	/Ý”YˆFˆFØ�jŠj‰lŒl× Ò Ñ"Ô"×-Ò-¨gÑ6Ô6ð 	/Ø—)’)‘+”+×(Ò(¨Ñ1Ô1ð	/å$ˆFˆFØ×%Ò% dÑ+Ô+ð 	/Ø×)Ò)¨#Ñ.Ô.ð	/à×,Ò,Ñ.Ô.ˆFØˆr   c                 óŠ   — |                      ¦   «         }|                     d¦  «        ot                               |¦  «         S )Nú<)r   rC   Ú_repr_reÚsearch)r.   Úss     r   rD   z$LXMLOutputChecker._looks_like_markupx   s:   € Ø�GŠG‰IŒIˆØ—’˜SÑ!Ô!ð +Ý Ÿš¨Ñ*Ô*Ð*ð	,r   c                 ó&  — |                       |j        |j        ¦  «        sdS |                      |j        |j        d¦  «        sdS |                      |j        |j        d¦  «        sdS d|j        vr‰t          |j                             ¦   «         ¦  «        }t          |j                             ¦   «         ¦  «        }||k    rdS |D ]2}|                      |j        |         |j        |         d¦  «        s dS Œ3|j        dk    st          |¦  «        r|t          |¦  «        }t          |¦  «        }|s|rZ|r|sdS | 
                    d¦  «        }| 
                    d¦  «        }	|                      ||	¦  «        sdS |s|j        dk    rn|°X|°ZdS )NFTÚanyz...r   )Útag_compareÚtagÚtext_compareÚtextÚtailÚattribÚsortedÚkeysÚlenÚlistÚpopr8   )
r.   r9   r:   Ú	want_keysÚgot_keysÚkeyÚwant_childrenÚgot_childrenÚ
want_firstÚ	got_firsts
             r   r8   zLXMLOutputChecker.compare_docs}   s¿  € Ø×Ò ¤¨#¬'Ñ2Ô2ð 	Ø�5Ø× Ò  ¤¨C¬H°dÑ;Ô;ð 	Ø�5Ø× Ò  ¤¨C¬H°dÑ;Ô;ð 	Ø�5Ø˜œÐ#Ð#Ý˜tœ{×/Ò/Ñ1Ô1Ñ2Ô2ˆIÝ˜cœjŸošoÑ/Ô/Ñ0Ô0ˆHØ˜HÒ$Ð$Ø�uØ ð !ð !�Ø×(Ò(¨¬°SÔ)9¸3¼:Àc¼?ÈEÑRÔRð !Ø ˜5˜5ð!àŒ9˜ÒÐ¥ T¡¤ÐÝ  ™JœJˆMÝ ™9œ9ˆLØð  <ð Ø$ð !¨Lð !Ø ˜5Ø*×.Ò.¨qÑ1Ô1�
Ø(×,Ò,¨QÑ/Ô/�	Ø×(Ò(¨°YÑ?Ô?ð !Ø ˜5Ø#ð ¨
¬¸5Ò(@Ð(@Øð  ð  <ð ð ˆtr   c                 ó&  — |pd}|pd}|rBt          |¦  «                             ¦   «         }t          |¦  «                             ¦   «         }dt          j        |¦  «        z  }|                     dd¦  «        }t          j        ||¦  «        rdS dS )NÚ z^%s$z\.\.\.z.*TF)r   r   Úrer   ÚreplacerH   )r.   r9   r:   r   s       r   rN   zLXMLOutputChecker.text_compareš   s‘   € Øˆz�rˆØˆi�RˆØð 	/Ý" 4Ñ(Ô(×.Ò.Ñ0Ô0ˆDÝ! #Ñ&Ô&×,Ò,Ñ.Ô.ˆCØ�œ	 $™œÑ'ˆØ�|Š|˜I tÑ,Ô,ˆÝŒ9�T˜3ÑÔð 	Ø�4à�5r   c                 óD  — |dk    rdS t          |t          t          f¦  «        rt          |t          t          f¦  «        s||k    S |pd}|pd}|                     d¦  «        r8|                     d¦  «        d         |                     d¦  «        d         k    S ||k    S )NrK   Tr_   z{...}Ú}éÿÿÿÿ)Ú
isinstanceÚstrÚbytesrC   Úsplit)r.   r9   r:   s      r   rL   zLXMLOutputChecker.tag_compare§   sŸ   € Ø�5Š=ˆ=Ø�4Ý˜4¥#¥u Ñ.Ô.ð 	Ý! #­­U |Ñ4Ô4ð	à˜3’;ÐØˆz�rˆØˆi�RˆØ�?Š?˜7Ñ#Ô#ð 	à—:’:˜c‘?”? 2Ô&¨#¯)ª)°C©.¬.¸Ô*<Ò<Ð<à˜3’;Ðr   c                 óü  — |j         }|                      |||¦  «        }g }|�¦	  ||¦  «        }nF# t          j        $ r4 t	          j        ¦   «         d         }|                     d|z  ¦  «         Y nw xY w	  ||¦  «        }	nF# t          j        $ r4 t	          j        ¦   «         d         }|                     d|z  ¦  «         Y nw xY w|�|rKt                               | |||¦  «        }
|r*|                     |
¦  «         d 	                    |¦  «        S |
S |t          u }d|                      ||d¦  «        d|                      |	|d¦  «        d|                      ||	|d¦  «        g}d 	                    |¦  «        S )	Né   zIn example: %szIn actual output: %sú
z	Expected:é   zGot:zDiff:)r9   r6   r   r7   ÚsysÚexc_infoÚappendr4   Úoutput_differenceÚjoinr   Ú
format_docÚcollect_diff)r.   Úexampler:   r;   r9   r>   Úerrorsr?   Úer@   Úvaluer   Ú
diff_partss                r   rp   z#LXMLOutputChecker.output_differenceµ   s¯  € ØŒ|ˆØ—’  s¨KÑ8Ô8ˆØˆØÐð4Ø!˜6 $™<œ<��øÝÔ'ð 4ð 4ð 4Ý”L‘N”N 1Ô%�Ø—’Ð.°Ñ2Ñ3Ô3Ð3Ð3Ð3ð4øøøð:Ø ˜& ™+œ+��øÝÔ'ð :ð :ð :Ý”L‘N”N 1Ô%�Ø—’Ð4°qÑ8Ñ9Ô9Ð9Ð9Ð9ð:øøøð ˆ>˜Vˆ>Ý!×3Ò3Ø�g˜s Kñ1ô 1ˆEàð Ø—’˜eÑ$Ô$Ð$Ø—y’y Ñ(Ô(Ð(à�Ø�Ð(ˆØ!Ø—o’o h°°aÑ8Ô8ØØ—o’o g¨t°QÑ7Ô7ØØ×'Ò'¨°'¸4ÀÑCÔCðEˆ
ð �yŠy˜Ñ$Ô$Ð$s#   ¤0 °A A3Á2A3Á7B ÂA CÃCTc                 ó^   — |sdS |j         | j        vrdS |j        st          |¦  «        rdS dS )NFT)rM   Ú
empty_tagsrO   rT   )r.   Úelr   s      r   Úhtml_empty_tagz LXMLOutputChecker.html_empty_tagÕ   sD   € Øð 	Ø�5ØŒ6˜œÐ(Ð(Ø�5ØŒ7ð 	•c˜"‘g”gð 	à�5Øˆtr   r_   c           	      ó–  — g }t          |¦  «        �s?|                     d|z  ¦  «         |                     |¦  «         |                     |                      |¦  «        ¦  «         |                      ||¦  «        sit	          |j        ¦  «        r-|                     |                      |j        ¦  «        ¦  «         |                     |                      |¦  «        ¦  «         t	          |j        ¦  «        r-|                     |                      |j        ¦  «        ¦  «         |                     d¦  «         d 	                    |¦  «        S |                     d|z  ¦  «         |                     |¦  «         |                     |                      |¦  «        ¦  «         |                      ||¦  «        �s
|                     d¦  «         t	          |j        ¦  «        rZ|                     d|z  ¦  «         |                     |                      |j        ¦  «        ¦  «         |                     d¦  «         |D ]/}|                     |  
                    |||dz   ¦  «        ¦  «         Œ0|                     d|z  ¦  «         |                     |                      |¦  «        ¦  «         |                     d¦  «         t	          |j        ¦  «        rZ|                     d|z  ¦  «         |                     |                      |j        ¦  «        ¦  «         |                     d¦  «         d 	                    |¦  «        S )Nr   rk   r_   rl   )rT   ro   Ú
format_tagr|   r   rO   Úformat_textÚformat_end_tagrP   rq   rr   )r.   Údocr   ÚindentÚprefixÚpartsr{   s          r   rr   zLXMLOutputChecker.format_docß   sÏ  € ØˆÝ�3‰xŒxñ 	"à�LŠL˜˜V™Ñ$Ô$Ð$Ø�LŠL˜Ñ Ô Ð Ø�LŠL˜Ÿš¨Ñ-Ô-Ñ.Ô.Ð.Ø×&Ò& s¨DÑ1Ô1ð 7Ý˜œ‘?”?ð =Ø—L’L ×!1Ò!1°#´(Ñ!;Ô!;Ñ<Ô<Ð<Ø—’˜T×0Ò0°Ñ5Ô5Ñ6Ô6Ð6Ý�S”X‰Œð 9Ø—’˜T×-Ò-¨c¬hÑ7Ô7Ñ8Ô8Ð8Ø�LŠL˜ÑÔÐØ—7’7˜5‘>”>Ð!Ø�Š�S˜‘ZÑ Ô Ð Ø�Š�VÑÔÐØ�Š�T—_’_ SÑ)Ô)Ñ*Ô*Ð*Ø×"Ò" 3¨Ñ-Ô-ñ 
	Ø�LŠL˜ÑÔÐÝ�S”X‰Œð #Ø—’˜S ™ZÑ(Ô(Ð(Ø—’˜T×-Ò-¨c¬hÑ7Ô7Ñ8Ô8Ð8Ø—’˜TÑ"Ô"Ð"Øð Bð B�Ø—’˜TŸ_š_¨R°°v¸a±xÑ@Ô@ÑAÔAÐAÐAØ�LŠL˜˜V™Ñ$Ô$Ð$Ø�LŠL˜×,Ò,¨SÑ1Ô1Ñ2Ô2Ð2Ø�LŠL˜ÑÔÐÝ�”‰?Œ?ð 	Ø�LŠL˜˜V™Ñ$Ô$Ð$Ø�LŠL˜×)Ò)¨#¬(Ñ3Ô3Ñ4Ô4Ð4Ø�LŠL˜ÑÔÐØ�wŠw�u‰~Œ~Ðr   c                 óV   — |€dS |r|                      ¦   «         }t          |d¦  «        S )Nr_   rj   )r   Úhtml_escape)r.   rO   r   s      r   r   zLXMLOutputChecker.format_text  s1   € Øˆ<Ø�2Øð 	 Ø—:’:‘<”<ˆDÝ˜4 Ñ#Ô#Ð#r   c           	      óN  — g }t          |t          j        ¦  «        rdS t          |j                             ¦   «         ¦  «        D ]4\  }}|                     |›d|                      |d¦  «        ›d�¦  «         Œ5|s
d|j        z  S d|j        ›dd 	                    |¦  «        ›d�S )	Nz<!--ú="Fú"ú<%s>rF   r   ú>)
re   r   ÚCommentBaserR   rQ   Úitemsro   r   rM   rq   )r.   r{   ÚattrsÚnamerw   s        r   r~   zLXMLOutputChecker.format_tag	  s¶   € ØˆÝ�b�%Ô+Ñ,Ô,ð 	à�6Ý! "¤)§/¢/Ñ"3Ô"3Ñ4Ô4ð 	Mð 	M‰KˆD�%Ø�LŠL d d d¨D×,<Ò,<¸UÀEÑ,JÔ,JÐ,JÐ,JÐKÑLÔLÐLÐLØð 	#Ø˜BœF‘?Ð"ð	#àœF˜F˜F C§H¢H¨U¡O¤O O OÐ4Ð4r   c                 óN   — t          |t          j        ¦  «        rdS d|j        z  S )Nz-->ú</%s>)re   r   rŒ   rM   )r.   r{   s     r   r€   z LXMLOutputChecker.format_end_tag  s)   € Ý�b�%Ô+Ñ,Ô,ð 	à�5Ø˜œÑÐr   c           	      ó  — g }t          |¦  «        �s t          |¦  «        �s|                     d|z  ¦  «         |                     |                      ||¦  «        ¦  «         |                      ||¦  «        s\|                     |                      |j        |j        ¦  «        ¦  «         |                     |                      ||¦  «        ¦  «         |                     |                      |j        |j        ¦  «        ¦  «         |                     d¦  «         d                     |¦  «        S |                     d|z  ¦  «         |                     |                      ||¦  «        ¦  «         |                     d¦  «         t          |j        ¦  «        st          |j        ¦  «        r`|                     d|z  ¦  «         |                     |                      |j        |j        ¦  «        ¦  «         |                     d¦  «         t          |¦  «        }t          |¦  «        }|s|rà|sB|                     |                      |                     d¦  «        ||dz   d¦  «        ¦  «         ŒH|sB|                     |                      |                     d¦  «        ||dz   d¦  «        ¦  «         ŒŒ|                     |                      |                     d¦  «        |                     d¦  «        ||dz   ¦  «        ¦  «         |°Þ|°à|                     d|z  ¦  «         |                     |                      ||¦  «        ¦  «         |                     d¦  «         t          |j        ¦  «        st          |j        ¦  «        r`|                     d|z  ¦  «         |                     |                      |j        |j        ¦  «        ¦  «         |                     d¦  «         d                     |¦  «        S )Nr   rk   r_   r   rl   ú+ú-)rT   ro   Úcollect_diff_tagr|   Úcollect_diff_textrO   Úcollect_diff_end_tagrP   rq   r   rU   rr   rV   rs   )r.   r9   r:   r   r‚   r„   rZ   r[   s           r   rs   zLXMLOutputChecker.collect_diff  sœ  € ØˆÝ�4‰yŒyñ 	"¥ S¡¤ñ 	"Ø�LŠL˜˜V™Ñ$Ô$Ð$Ø�LŠL˜×.Ò.¨t°SÑ9Ô9Ñ:Ô:Ð:Ø×&Ò& s¨DÑ1Ô1ð CØ—’˜T×3Ò3°D´I¸s¼xÑHÔHÑIÔIÐIØ—’˜T×6Ò6°t¸SÑAÔAÑBÔBÐBØ�LŠL˜×/Ò/°´	¸3¼8ÑDÔDÑEÔEÐEØ�LŠL˜ÑÔÐØ—7’7˜5‘>”>Ð!Ø�Š�S˜‘ZÑ Ô Ð Ø�Š�T×*Ò*¨4°Ñ5Ô5Ñ6Ô6Ð6Ø�Š�TÑÔÐÝ�”ÑÔð 	�u S¤X™œð 	Ø�LŠL˜˜V™Ñ$Ô$Ð$Ø�LŠL˜×/Ò/°´	¸3¼8ÑDÔDÑEÔEÐEØ�LŠL˜ÑÔÐÝ˜T™
œ
ˆÝ˜C‘y”yˆØð 	L˜|ð 	LØ ð Ø—’˜TŸ_š_¨\×-=Ò-=¸aÑ-@Ô-@À$ÈÈqÉÐRUÑVÔVÑWÔWÐWØØð Ø—’˜TŸ_š_¨]×->Ò->¸qÑ-AÔ-AÀ4ÈÐPQÉÐSVÑWÔWÑXÔXÐXØØ�LŠL˜×*Ò*Ø×!Ò! !Ñ$Ô$ l×&6Ò&6°qÑ&9Ô&9¸4ÀÈÁñKô Kñ Lô Lð Lð ð 	L˜|ð 	Lð 	�Š�S˜‘ZÑ Ô Ð Ø�Š�T×.Ò.¨t°SÑ9Ô9Ñ:Ô:Ð:Ø�Š�TÑÔÐÝ�”ÑÔð 	�u S¤X™œð 	Ø�LŠL˜˜V™Ñ$Ô$Ð$Ø�LŠL˜×/Ò/°´	¸3¼8ÑDÔDÑEÔEÐEØ�LŠL˜ÑÔÐØ�wŠw�u‰~Œ~Ðr   c           
      óH  — |                       |j        |j        ¦  «        s|j        ›d|j        ›d�}n|j        }g }|j        dk    pd|j        v }t          |j                             ¦   «         ¦  «        D ]ž\  }}||j        vr3|s1|                     d|›d|                      |d¦  «        ›d�¦  «         ŒA||j        v r#|                      |j        |         |d¦  «        }n|                      |d¦  «        }|                     |›d|›d�¦  «         ŒŸ|sft          |j                             ¦   «         ¦  «        D ]?\  }}||j        v rŒ|                     d|›d|                      |d¦  «        ›d�¦  «         Œ@|rd	|›d
d
                     |¦  «        ›d�}nd|z  }|S )Nú (got: ú)rK   r“   rˆ   Fr‰   r”   rF   r   r‹   rŠ   )	rL   rM   rQ   rR   r�   ro   r   r–   rq   )	r.   r9   r:   rM   rŽ   rK   r�   rw   rO   s	            r   r•   z"LXMLOutputChecker.collect_diff_tag@  sâ  € Ø×Ò ¤¨#¬'Ñ2Ô2ð 	Ø$(¤H H H¨c¬g¨g¨gÐ6ˆCˆCà”'ˆCØˆØŒh˜%ÒÐ7 5¨D¬KÐ#7ˆÝ! #¤*×"2Ò"2Ñ"4Ô"4Ñ5Ô5ð 	7ð 	7‰KˆD�%Ø˜4œ;Ð&Ð&¨sÐ&Ø—’�¨4¨4¨4°×1AÒ1AÀ%ÈÑ1OÔ1OÐ1OÐ1OÐPÑQÔQÐQÐQà˜4œ;Ð&Ð&Ø×1Ò1°$´+¸dÔ2CÀUÈEÑRÔR�D�Dà×+Ò+¨E°5Ñ9Ô9�DØ—’¨$¨$¨$°°°Ð5Ñ6Ô6Ð6Ð6Øð 	RÝ% d¤k×&7Ò&7Ñ&9Ô&9Ñ:Ô:ð Rð R‘��eØ˜3œ:Ð%Ð%ØØ—’�¨4¨4¨4°×1AÒ1AÀ%ÈÑ1OÔ1OÐ1OÐ1OÐPÑQÔQÐQÐQØð 	ð 	Ø"˜s˜s C§H¢H¨U¡O¤O O OÐ4ˆCˆCà˜3‘,ˆCØˆ
r   c                 ó`   — |j         |j         k    r|j         ›d|j         ›d�}n|j         }d|z  S )Nr™   rš   r‘   )rM   )r.   r9   r:   rM   s       r   r—   z&LXMLOutputChecker.collect_diff_end_tag[  s:   € ØŒ8�s”wÒÐØ$(¤H H H¨c¬g¨g¨gÐ6ˆCˆCà”'ˆCØ˜‰}Ðr   c                 ó    — |                       |||¦  «        r|sdS |                      ||¦  «        S |›d|›d�}|                      ||¦  «        S )Nr_   r™   rš   )rN   r   )r.   r9   r:   r   rO   s        r   r–   z#LXMLOutputChecker.collect_diff_textb  sg   € Ø×Ò˜T 3¨Ñ.Ô.ð 	0Øð Ø�rØ×#Ò# C¨Ñ/Ô/Ð/Ø!%   s s sÐ+ˆØ×Ò  eÑ,Ô,Ð,r   N)T)r_   )Ú__name__Ú
__module__Ú__qualname__rz   r/   r5   r6   rD   r8   rN   rL   rp   r|   rr   r   r~   r€   rs   r•   r—   r–   © r   r   r   r   J   s1  € € € € € ð'€Jðð ð ð4ð 4ð 4ð*ð ð ð ,ð ,ð ,ð
ð ð ð:ð ð ðð ð ð%ð %ð %ð@ð ð ð ð!ð !ð !ð !ðF$ð $ð $ð $ð	5ð 	5ð 	5ð ð  ð  ð$ð $ð $ðLð ð ð6ð ð ð-ð -ð -ð -ð -ð -r   r   c                   ó   — e Zd Zd„ ZdS )r	   c                 ó   — t           S r   )r   r-   s    r   r/   z%LHTMLOutputChecker.get_default_parserk  s   € ÝÐr   N)r�   rž   rŸ   r/   r    r   r   r	   r	   j  s#   € € € € € ðð ð ð ð r   r	   c                 óR   — | rt           t          _        dS t          t          _        dS )z£
    Install doctestcompare for all future doctests.

    If html is true, then by default the HTML parser will be used;
    otherwise the XML parser is used.
    N)r	   Údoctestr4   r   r   s    r   r
   r
   n  s(   € ð ð 2Ý 2�ÔÐÐå 1�ÔÐÐr   c                 ó  — | rt           }nt          }t          ¦   «         }|j        d         } |¦   «         }|j        }||_        |j        d         j        }|j        j        }t          t          _        t          ||||||¦  «         dS )zÁ
    Use this *inside* a doctest to enable this checker for this
    doctest only.

    If html is true, then by default the HTML parser will be used;
    otherwise the XML parser is used.
    r.   ÚcheckN)
r	   r   Ú_find_doctest_frameÚf_localsÚ_checkerÚ__func__r5   r   r¤   Ú_RestoreChecker)	r   Ú
del_moduleÚCheckerÚframeÚdt_selfÚcheckerÚold_checkerÚ
check_funcÚchecker_check_funcs	            r   r   r   z  s›   € ð ð $Ý$ˆˆå#ˆÝÑ!Ô!€EØŒn˜VÔ$€GØˆg‰iŒi€GØÔ"€KØ€GÔð ” Ô(Ô1€JØ Ô-Ô6Ðõ …G„MÝ�G˜[¨'ØÐ 2Øñ ô  ð  ð  ð  r   c                   ó>   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
r«   c                 óÖ   — || _         || _        | j        | j        _        || j        _        || _        || _        || _        |                      ¦   «          |  	                    ¦   «          d S r   )
r¯   r°   Ú
call_superr3   r1   r²   Ú
clone_funcr¬   Úinstall_cloneÚinstall_dt_self)r.   r¯   r±   Únew_checkerr²   r·   r¬   s          r   Ú__init__z_RestoreChecker.__init__ž  se   € àˆŒØ"ˆŒØ59´_ˆŒÔ2Ø+6ˆŒÔ(Ø$ˆŒØ$ˆŒØ$ˆŒØ×ÒÑÔÐØ×ÒÑÔÐÐÐr   c                 óv   — | j         j        | _        | j         j        | _        | j        j        | j         _        d S r   )r²   Ú__code__Ú	func_codeÚ__globals__Úfunc_globalsr·   r-   s    r   r¸   z_RestoreChecker.install_clone©  s0   € ØœÔ1ˆŒØ œOÔ7ˆÔØ#'¤?Ô#;ˆŒÔ Ð Ð r   c                 ó(   — | j         | j        _        d S r   )r¾   r²   r½   r-   s    r   Úuninstall_clonez_RestoreChecker.uninstall_clone­  s   € Ø#'¤>ˆŒÔ Ð Ð r   c                 ó@   — | j         j        | _        | | j         _        d S r   )r¯   Ú_DocTestRunner__record_outcomeÚ	prev_funcr-   s    r   r¹   z_RestoreChecker.install_dt_self¯  s   € ØœÔDˆŒØ6:ˆŒÔ3Ð3Ð3r   c                 ó(   — | j         | j        _        d S r   )rÅ   r¯   rÄ   r-   s    r   Úuninstall_dt_selfz!_RestoreChecker.uninstall_dt_self²  s   € Ø6:´nˆŒÔ3Ð3Ð3r   c                 óÆ   — | j         rWdd l}|j        | j         = d| j         v r?| j                              dd¦  «        \  }}|j        |         }t	          ||¦  «         d S d S d S )Nr   ú.rj   )r¬   rm   ÚmodulesÚrsplitÚdelattr)r.   rm   ÚpackageÚmoduleÚpackage_mods        r   Úuninstall_modulez _RestoreChecker.uninstall_module´  s}   € ØŒ?ð 	-ØˆJˆJˆJØ”˜DœOÐ,Ø�d”oÐ%Ð%Ø"&¤/×"8Ò"8¸¸aÑ"@Ô"@‘�˜Ø!œk¨'Ô2�Ý˜ VÑ,Ô,Ð,Ð,Ð,ð	-ð 	-ð &Ð%r   c                 ó´   — |                       ¦   «          |                      ¦   «          | j        `| j        ` | j        |i |¤Ž}|                      ¦   «          |S r   )rÂ   rÇ   r°   r1   r3   rÅ   rÐ   )r.   ÚargsÚkwÚresults       r   Ú__call__z_RestoreChecker.__call__¼  sc   € Ø×ÒÑÔÐØ×ÒÑ Ô Ð ØŒLÐ,ØŒLÐ6Ø�” Ð,¨Ð,Ð,ˆØ×ÒÑÔÐØˆr   c                 ó    — |                       ¦   «          	  | j        |i |¤Ž|                      ¦   «          S # |                      ¦   «          w xY wr   )rÂ   r²   r¸   )r.   rÒ   rÓ   s      r   r¶   z_RestoreChecker.call_superÄ  sZ   € Ø×ÒÑÔÐð	!Ø"�4”? DÐ/¨BÐ/Ð/à×ÒÑ Ô Ð Ð øˆD×ÒÑ Ô Ð Ð øøøs	   –7 ·AN)r�   rž   rŸ   r»   r¸   rÂ   r¹   rÇ   rÐ   rÕ   r¶   r    r   r   r«   r«   �  s�   € € € € € ð
ð 
ð 
ð<ð <ð <ð2ð 2ð 2ð;ð ;ð ;ðEð Eð Eð-ð -ð -ðð ð ð!ð !ð !ð !ð !r   r«   c                  óx   — dd l }  | j        d¦  «        }|r|j        }d|v r|S |j        }|°t	          d¦  «        ‚)Nr   rj   ÚBOOMzBCould not find doctest (only use this function *inside* a doctest))rm   Ú	_getframer¨   Úf_backÚLookupError)rm   r®   Úls      r   r§   r§   Ë  sd   € Ø€J€J€JØˆCŒM˜!ÑÔ€EØ
ð ØŒNˆØ�Qˆ;ˆ;àˆLØ”ˆð ð õ ØLñNô Nð Nr   Úbasicai  
    >>> temp_install()
    >>> print """<xml a="1" b="2">stuff</xml>"""
    <xml b="2" a="1">...</xml>
    >>> print """<xml xmlns="http://example.com"><tag   attr="bar"   /></xml>"""
    <xml xmlns="...">
      <tag attr="..." />
    </xml>
    >>> print """<xml>blahblahblah<foo /></xml>""" # doctest: +NOPARSE_MARKUP, +ELLIPSIS
    <xml>...foo /></xml>
    Ú__main__)F)FN)"Ú__doc__Úlxmlr   rm   r`   r¤   r   r   r†   ÚImportErrorÚcgiÚ__all__Úregister_optionflagr   r   r   r4   r   r   Ú
HTMLParserr   r   ÚcompilerG   r   r   r	   r
   r   r«   r§   Ú__test__r�   Útestmodr    r   r   ú<module>ré      sR  ðð#ð #ðJ Ð Ð Ð Ð Ð Ø 
€
€
€
Ø 	€	€	€	Ø €€€ð*Ø*Ð*Ð*Ð*Ð*Ð*Ð*øØð *ð *ð *Ø)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ð*øøøð<ð <ð <€ð )ˆWÔ(¨Ñ6Ô6€
Ø'ˆGÔ'¨Ñ4Ô4€	Ø,�Ô,Ð-=Ñ>Ô>€àÔ%€ðð ð ð+ð +ð +ð  ˆuÔ¨ÀÐFÑFÔF€ð0ð 0ð 0ð ˆ2Œ:Ð-Ñ.Ô.€Ø �b”jÐ!3Ñ4Ô4Ð ð^-ð ^-ð ^-ð ^-ð ^-˜ñ ^-ô ^-ð ^-ð@	ð ð ð ð Ð*ñ ô ð ð
2ð 
2ð 
2ð 
2ð! ð ! ð ! ð ! ðF,!ð ,!ð ,!ð ,!ð ,!ñ ,!ô ,!ð ,!ð\
Nð 
Nð 
Nð ð 
ð	€ð ˆzÒÐØ€N€N€NØ€G„OÑÔÐÐÐð Ðs   – �+ª+