§
    öyIfNO  ã                   ó¾  — U d Z ddlZddlZddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ddlm
Z
 ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlZddlmZ ddlmZ ddlmZ ddlmZ dZeeeeegee         f                  ed<   dZ eee!eegdf                  ed<   dZ"ee         ed<    G d„ de¦  «        Z#dedefd„Z$dede
e         fd„Z%dee         de
e         fd„Z&dede'fd„Z(dede'fd „Z)dede'fd!„Z*dede'fd"„Z+d#ede'fd$„Z,d#ede'fd%„Z-d#ede'fd&„Z.d#ede'fd'„Z/d#ede'fd(„Z0	 dEd*ed+ed,ed-e'dee
e                  f
d.„Z1	 dFd+ed,ed/e#d0e!de
e         f
d1„Z2dFd+ed,ed0e!de
e         fd2„Z3	 dFd+e	e         d,e	e         d3e#d0e!de
e         f
d4„Z4	 dFd+ee         d,ee         d/e#d0e!de
e         f
d5„Z5	 dFd+ee         d,ee         d/e#d0e!de
e         f
d6„Z6	 dFd+ee         d,ee         d/e#d0e!de
e         f
d7„Z7	 dFd+ee         d,ee         d/e#d0e!de
e         f
d8„Z8	 dFd+ee         d,ee         d/e#d0e!de
e         f
d9„Z9	 dFd+ee         d,ee         d/e#d0e!de
e         f
d:„Z:d;ed<ee         d=ee         d/e#de
e         f
d>„Z;	 dFd+eeef         d,eeef         d/e#d0e!de
e         f
d?„Z<d+ed,ed/e#d0e!de
e         f
d@„Z=dFdAedBed0e!de
e         fdC„Z>de'fdD„Z?dS )Gz"Utilities for assertion debugging.é    N)ÚAbstractSet)ÚAny)ÚCallable)ÚIterable)ÚList)ÚLiteral)ÚMapping)ÚOptional)ÚProtocol)ÚSequence)Ú	normalize)Úoutcomes)ÚPrettyPrinter)Úsaferepr)Úsaferepr_unlimited)ÚConfigÚ_reprcompareÚ_assertion_passÚ_configc                   ó0   — e Zd Zddeded         defd„ZdS )	Ú_HighlightFuncÚpythonÚsourceÚlexer)Údiffr   Úreturnc                 ó   — dS )z'Apply highlighting to the given source.N© )Úselfr   r   s      úJ/var/www/piapp/venv/lib/python3.11/site-packages/_pytest/assertion/util.pyÚ__call__z_HighlightFunc.__call__*   s   € € € ó    N)r   )Ú__name__Ú
__module__Ú__qualname__Ústrr   r!   r   r"   r    r   r   )   sI   € € € € € ð6ð 6˜sð 6¨7Ð3CÔ+Dð 6ÐTWð 6ð 6ð 6ð 6ð 6ð 6r"   r   Úexplanationr   c                 óh   — t          | ¦  «        }t          |¦  «        }d                     |¦  «        S )aŠ  Format an explanation.

    Normally all embedded newlines are escaped, however there are
    three exceptions: \n{, \n} and \n~.  The first two are intended
    cover nested explanations, see function and attribute explanations
    for examples (.visit_Call(), visit_Attribute()).  The last one is
    for when one explanation needs to span multiple lines, e.g. when
    displaying diffs.
    ú
)Ú_split_explanationÚ_format_linesÚjoin)r'   ÚlinesÚresults      r    Úformat_explanationr/   .   s0   € õ ˜{Ñ+Ô+€EÝ˜5Ñ!Ô!€FØ�9Š9�VÑÔÐr"   c                 óÊ   — | pd                      d¦  «        }|d         g}|dd…         D ]7}|r |d         dv r|                     |¦  «         Œ$|dxx         d|z   z  cc<   Œ8|S )	zãReturn a list of individual lines in the explanation.

    This will return a list of lines split on '\n{', '\n}' and '\n~'.
    Any other newlines will be escaped and appear in the line as the
    literal '\n' characters.
    Ú r)   r   é   N)Ú{Ú}ú~ú>éÿÿÿÿz\n)ÚsplitÚappend)r'   Ú	raw_linesr-   Úvaluess       r    r*   r*   =   s‹   € ð Ð" ×)Ò)¨$Ñ/Ô/€IØ�qŒ\ˆN€EØ˜A˜B˜B”-ð (ð (ˆØð 	(�f˜Q”iÐ#7Ð7Ð7Ø�LŠL˜Ñ Ô Ð Ð à�"ˆIˆIŒI˜ ™Ñ'ˆIˆI‰IˆIØ€Lr"   r-   c                 ór  — t          | dd…         ¦  «        }dg}dg}| dd…         D �]x}|                     d¦  «        rŽ|d         rd}nd}|                     t          |¦  «        ¦  «         |dxx         dz  cc<   |                     d¦  «         |                     dd	t          |¦  «        dz
  z  z   |z   |dd…         z   ¦  «         Œ¦|                     d
¦  «        rH|                     ¦   «          |                     ¦   «          ||d         xx         |dd…         z  cc<   �Œ|d         dv sJ ‚|dxx         dz  cc<   |                     d¦  «        rt          |¦  «        nt          |¦  «        dz
  }|                     d	|z  |dd…         z   ¦  «         �Œzt          |¦  «        dk    sJ ‚|S )a  Format the individual lines.

    This will replace the '{', '}' and '~' characters of our mini formatting
    language with the proper 'where ...', 'and ...' and ' + ...' text, taking
    care of indentation along the way.

    Return a list of formatted lines.
    Nr2   r   r3   r7   zand   zwhere z +ú  r4   )r5   r6   r5   )ÚlistÚ
startswithr9   ÚlenÚpop)r-   r.   ÚstackÚstackcntÚlineÚsÚindents          r    r+   r+   N   sÎ  € õ �%˜˜˜”)‰_Œ_€FØˆC€EØˆs€HØ�a�b�b”	ð 4ñ 4ˆØ�?Š?˜3ÑÔð 	4Ø˜Œ|ð Ø��à�Ø�LŠL�˜V™œÑ%Ô%Ð%Ø�RˆLˆLŒL˜AÑˆLˆL‰LØ�OŠO˜AÑÔÐØ�MŠM˜$ ­¨U©¬°a©Ñ!8Ñ8¸1Ñ<¸tÀAÀBÀB¼xÑGÑHÔHÐHÐHØ�_Š_˜SÑ!Ô!ð 	4Ø�IŠI‰KŒKˆKØ�LŠL‰NŒNˆNØ�5˜”9ÐÐÔ  a b b¤Ñ)ÐÐÑÑà˜”7˜jÐ(Ð(Ð(Ð(Ø�"ˆIˆIŒI˜‰NˆIˆI‰IØ#'§?¢?°3Ñ#7Ô#7ÐK•S˜‘Z”Z�Z½SÀ¹Z¼ZÈ!¹^ˆFØ�MŠM˜$ ™-¨$¨q¨r¨r¬(Ñ2Ñ3Ô3Ð3Ñ3Ýˆu‰:Œ:˜Š?ˆ?ˆ?ˆ?Ø€Mr"   Úxc                 ól   — t          | t          j        j        ¦  «        ot          | t          ¦  «         S ©N)Ú
isinstanceÚcollectionsÚabcr   r&   ©rG   s    r    Ú
issequencerN   q   s)   € Ý�a�œÔ1Ñ2Ô2ÐM½:ÀaÍÑ;MÔ;MÐ7MÐMr"   c                 ó,   — t          | t          ¦  «        S rI   )rJ   r&   rM   s    r    ÚistextrP   u   s   € Ý�a�ÑÔÐr"   c                 ó,   — t          | t          ¦  «        S rI   )rJ   ÚdictrM   s    r    ÚisdictrS   y   s   € Ý�a�ÑÔÐr"   c                 ó:   — t          | t          t          f¦  «        S rI   )rJ   ÚsetÚ	frozensetrM   s    r    ÚissetrW   }   s   € Ý�a�#�yÐ)Ñ*Ô*Ð*r"   Úobjc                 óR   — t          | t          ¦  «        ot          | dd ¦  «        d uS )NÚ_fields)rJ   ÚtupleÚgetattr©rX   s    r    Úisnamedtupler^   �   s(   € Ý�c�5Ñ!Ô!ÐO¥g¨c°9¸dÑ&CÔ&CÈ4Ð&OÐOr"   c                 ó(   — t          | dd ¦  «        d uS )NÚ__dataclass_fields__©r\   r]   s    r    Ú	isdataclsrb   …   s   € Ý�3Ð.°Ñ5Ô5¸TÐAÐAr"   c                 ó(   — t          | dd ¦  «        d uS )NÚ__attrs_attrs__ra   r]   s    r    Úisattrsre   ‰   s   € Ý�3Ð)¨4Ñ0Ô0¸Ð<Ð<r"   c                 ód   — 	 t          | ¦  «         t          | ¦  «         S # t          $ r Y dS w xY w)NF)ÚiterrP   Ú	Exceptionr]   s    r    Ú
isiterableri   �   sB   € ðÝˆS‰	Œ	ˆ	Ý˜#‘;”;ˆÐøÝð ð ð Øˆuˆuðøøøs   ‚! ¡
/®/c                 ó¸   — t          | j        d¦  «        rDt          | j        j        d¦  «        r*| j        j        j        }t	          | ¦  «        rd|v S |dk    S dS )a�  Check if an instance of an object contains the default eq

    First, we check if the object's __eq__ attribute has __code__,
    if so, we check the equally of the method code filename (__code__.co_filename)
    to the default one generated by the dataclass and attr module
    for dataclasses the default co_filename is <string>, for attrs class, the __eq__ should contain "attrs eq generated"
    Ú__code__Úco_filenamezattrs generated eqz<string>T)ÚhasattrÚ__eq__rk   rl   re   )rX   Úcode_filenames     r    Úhas_default_eqrp   •   sd   € õ ˆsŒz˜:Ñ&Ô&ð +­7°3´:Ô3FÈÑ+VÔ+Vð +Øœ
Ô+Ô7ˆå�3‰<Œ<ð 	9Ø'¨=Ð8Ð8à 
Ò*Ð*Øˆ4r"   FÚopÚleftÚrightÚ	use_asciic                 ó„  — |                       t          j        ¦  «        }t          |t          ¦  «        o6t          |t          ¦  «        o!t          d|¦  «        t          d|¦  «        k    }|dk    r#t          ||¬¦  «        }t          ||¬¦  «        }n<dt          |¦  «        z
  dz
  dz  }t          |||¬¦  «        }t          |||¬¦  «        }|› d|› d|› �}	|  	                    ¦   «         j
        }
d}	 |d	k    rt          |||
|¦  «        }�n:|d
k    r1t          |¦  «        r t          |¦  «        rt          |||¦  «        }�n|dk    r"t          |¦  «        rt          |¦  «        rdg}nÛ|dk    r1t          |¦  «        r!t          |¦  «        rt          |||
|¦  «        }n¤|dk    r1t          |¦  «        r!t          |¦  «        rt!          |||
|¦  «        }nm|dk    r1t          |¦  «        r!t          |¦  «        rt#          |||
|¦  «        }n6|dk    r0t          |¦  «        r!t          |¦  «        rt%          |||
|¦  «        }n\# t&          j        $ r ‚ t*          $ r@ t,          j        j                             ¦   «                              ¦   «         }d|› d�dg}Y nw xY w|sdS |d         dk    rdg|¢}|	g|¢S )z<Return specialised explanations for some operators/operands.ÚNFDr2   )rt   éA   é   )Úmaxsizert   ú Nz==znot inz!=úBoth sets are equalz>=z<=r6   ú<z<(pytest_assertion plugin: representation of details failed: ú.z+ Probably an object has a faulty __repr__.)r   r1   )Úget_verbosityr   ÚVERBOSITY_ASSERTIONSrJ   r&   r   r   r@   r   Úget_terminal_writerÚ
_highlightÚ_compare_eq_anyrP   Ú_notin_textrW   Ú_compare_gte_setÚ_compare_lte_setÚ_compare_gt_setÚ_compare_lt_setr   ÚExitrh   Ú_pytestÚ_codeÚExceptionInfoÚfrom_currentÚ_getreprcrash)Úconfigrq   rr   rs   rt   ÚverboseÚ	left_reprÚ
right_reprry   ÚsummaryÚhighlighterr'   Ú
repr_crashs                r    Úassertrepr_comparer•   ª   s(  € ð ×"Ò"¥6Ô#>Ñ?Ô?€Gõ
 	�4�ÑÔð 	>Ý�u�cÑ"Ô"ð	>å�e˜TÑ"Ô"¥i°°uÑ&=Ô&=Ò=ð ð �‚{€{Ý& t°yÐAÑAÔAˆ	Ý'¨¸ÐCÑCÔCˆ
ˆ
ð
 •c˜"‘g”gÑ Ñ!Øñˆõ ˜T¨7¸iÐHÑHÔHˆ	Ý˜e¨WÀ	ÐJÑJÔJˆ
àÐ.Ð.˜RÐ.Ð. *Ð.Ð.€GØ×,Ò,Ñ.Ô.Ô9€Kà€Kð
Ø�Š:ˆ:Ý)¨$°°{ÀGÑLÔLˆK‰KØ�8Š^ˆ^Ý�d‰|Œ|ð @¥ u¡¤ð @Ý)¨$°°wÑ?Ô?�ùØ�4ŠZˆZÝ�T‰{Œ{ð 6�u U™|œ|ð 6Ø4Ð5�øØ�4ŠZˆZÝ�T‰{Œ{ð R�u U™|œ|ð RÝ.¨t°U¸KÈÑQÔQ�øØ�4ŠZˆZÝ�T‰{Œ{ð R�u U™|œ|ð RÝ.¨t°U¸KÈÑQÔQ�øØ�3ŠYˆYÝ�T‰{Œ{ð Q�u U™|œ|ð QÝ-¨d°E¸;ÈÑPÔP�øØ�3ŠYˆYÝ�T‰{Œ{ð Q�u U™|œ|ð QÝ-¨d°E¸;ÈÑPÔP�øøåŒ=ð ð ð ØÝð 
ð 
ð 
Ý”]Ô0×=Ò=Ñ?Ô?×MÒMÑOÔOˆ
àXÈ:ÐXÐXÐXØ9ð
ˆˆˆð
øøøð ð Øˆtà�1„~˜ÒÐØÐ(˜KÐ(ˆØÐ"�kÐ"Ð"s   Ã7EI ÉAJ%Ê$J%r“   r�   c                 óž  — g }t          | ¦  «        r"t          |¦  «        rt          | ||¦  «        }�n™ddlm} t	          | |¦  «        st	          ||¦  «        r>t	          | |¦  «        r| n|}t	          | |¦  «        r|n| }|                     |¦  «        }nðt          | ¦  «        t          |¦  «        u r@t          | ¦  «        st          | ¦  «        st          | ¦  «        rt          | |||¦  «        }n’t          | ¦  «        r"t          |¦  «        rt          | |||¦  «        }nat          | ¦  «        r"t          |¦  «        rt          | |||¦  «        }n0t          | ¦  «        r!t          |¦  «        rt!          | |||¦  «        }t#          | ¦  «        r6t#          |¦  «        r't%          | |||¦  «        }|                     |¦  «         |S )Nr   )Ú
ApproxBase)rP   Ú
_diff_textÚ_pytest.python_apir—   rJ   Ú_repr_compareÚtyperb   re   r^   Ú_compare_eq_clsrN   Ú_compare_eq_sequencerW   Ú_compare_eq_setrS   Ú_compare_eq_dictri   Ú_compare_eq_iterableÚextend)	rr   rs   r“   r�   r'   r—   Úapprox_sideÚ
other_sideÚexpls	            r    r‚   r‚   ð   sñ  € ð €KÝˆd�|„|ð %�˜u™œð %Ý   u¨gÑ6Ô6ˆ‰à1Ð1Ð1Ð1Ð1Ð1å�d˜JÑ'Ô'ð 	N­:°e¸ZÑ+HÔ+Hð 	Nå",¨T°:Ñ">Ô">ÐI˜$˜$ÀEˆKÝ",¨T°:Ñ">Ô">ÐH˜˜ÀDˆJà%×3Ò3°JÑ?Ô?ˆKˆKÝ�$‰ZŒZ�4 ™;œ;Ð&Ð&Ý�d‰OŒOð 'Ý& t™}œ}ð 'Ý0<¸TÑ0BÔ0Bð 'õ *¨$°°{ÀGÑLÔLˆKˆKÝ˜ÑÔð 	N¥*¨UÑ"3Ô"3ð 	NÝ.¨t°U¸KÈÑQÔQˆKˆKÝ�4‰[Œ[ð 	N�U 5™\œ\ð 	NÝ)¨$°°{ÀGÑLÔLˆKˆKÝ�D‰\Œ\ð 	N�f U™mœmð 	NÝ*¨4°¸ÀWÑMÔMˆKå�dÑÔð 	%¥
¨5Ñ 1Ô 1ð 	%Ý'¨¨e°[À'ÑJÔJˆDØ×Ò˜tÑ$Ô$Ð$àÐr"   c                 óZ  — ddl m} g }|dk     rõd}t          t          t	          | ¦  «        t	          |¦  «        ¦  «        ¦  «        D ]}| |         ||         k    r nŒ|dk    r|dz  }d|z  g}| |d…         } ||d…         }t	          | ¦  «        t	          |¦  «        k    r`t          t	          | ¦  «        ¦  «        D ]}| |          ||          k    r nŒ|dk    r%|dz  }|d|› d	�gz  }| d| …         } |d| …         }d
}|                      ¦   «         s|                     ¦   «         r>t          t          | ¦  «        ¦  «        } t          t          |¦  «        ¦  «        }|dgz  }|d„  ||                     |¦  «        |                      |¦  «        ¦  «        D ¦   «         z  }|S )zµReturn the explanation for the diff between text.

    Unless --verbose is used this will skip leading and trailing
    characters which are identical to keep the diff minimal.
    r   )Úndiffr2   é*   é
   z@Skipping %s identical leading characters in diff, use -v to showNz	Skipping z6 identical trailing characters in diff, use -v to showTz;Strings contain only whitespace, escaping them using repr()c                 ó8   — g | ]}|                      d ¦  «        ‘ŒS )r)   )Ústrip©Ú.0rD   s     r    ú
<listcomp>z_diff_text.<locals>.<listcomp>>  s4   € ð ð ð àð 	�
Š
�4ÑÔðð ð r"   )	Údifflibr¦   ÚrangeÚminr@   ÚisspaceÚreprr&   Ú
splitlines)rr   rs   r�   r¦   r'   ÚiÚkeependss          r    r˜   r˜     s  € ð ÐÐÐÐÐà€Kà�‚{€{ØˆÝ•s�3˜t™9œ9¥c¨%¡j¤jÑ1Ô1Ñ2Ô2ð 	ð 	ˆAØ�AŒw˜% œ(Ò"Ð"Ø�ð #àˆrŠ6ˆ6Ø�‰GˆAàRÐUVÑVðˆKð ˜˜˜”8ˆDØ˜!˜"˜"”IˆEÝˆt‰9Œ9�˜E™
œ
Ò"Ð"Ý�3˜t™9œ9Ñ%Ô%ð ð �Ø˜˜”8˜u a RœyÒ(Ð(Ø�Eð )à�2ŠvˆvØ�R‘�Øð9 ð 9ð 9ð 9ð ñ �ð ˜C˜a˜R˜C”y�Ø˜c ˜r˜cœ
�Ø€HØ‡|‚|�~„~ð W˜Ÿš™œð WÝ•C˜‘I”I‰ŒˆÝ•S˜‘Z”ZÑ Ô ˆØÐUÐVÑVˆð ð ð à�E˜%×*Ò*¨8Ñ4Ô4°d·o²oÀhÑ6OÔ6OÑPÔPðñ ô ñ €Kð Ðr"   Ú
highligherc                 óÖ  — |dk    rt          ¦   «         sdgS dd l}t          ¦   «                              | ¦  «                             ¦   «         }t          ¦   «                              |¦  «                             ¦   «         }ddg}|                      |d                     d„ |                     ||¦  «        D ¦   «         ¦  «        d¬¦  «                             ¦   «         ¦  «         |S )	Nr   zUse -v to get more diffr1   z
Full diff:r)   c              3   ó>   K  — | ]}|                      ¦   «         V — Œd S rI   )Úrstripr«   s     r    ú	<genexpr>z'_compare_eq_iterable.<locals>.<genexpr>X  s>   è è € ð ð àð —’‘”ðð ð ð ð ð r"   r   )r   )Úrunning_on_cir®   r   Úpformatr³   r¡   r,   r¦   )rr   rs   r¶   r�   r®   Úleft_formattingÚright_formattingr'   s           r    r    r    E  sú   € ð �!‚|€|�M™OœO€|Ø)Ð*Ð*à€N€N€Nå#‘o”o×-Ò-¨dÑ3Ô3×>Ò>Ñ@Ô@€OÝ$‘”×.Ò.¨uÑ5Ô5×@Ò@ÑBÔBÐà�|Ð$€Kð ×ÒØˆ
Ø�IŠIð ð à#ŸMšMÐ*:¸OÑLÔLðñ ô ñ ô ð ð	
ñ 	
ô 	
÷ Š*‰,Œ,ñô ð ð Ðr"   c                 óÚ  — t          | t          ¦  «        ot          |t          ¦  «        }g }t          | ¦  «        }t          |¦  «        }t          t	          ||¦  «        ¦  «        D ]�}| |         ||         k    ry|r| ||dz   …         }	|||dz   …         }
n| |         }	||         }
|                     d|› d |t          |	¦  «        ¦  «        › d |t          |
¦  «        ¦  «        › �¦  «          nŒŽ|r|S ||z
  }|rj|dk    rd}t          | |         ¦  «        }nd|z
  }d}t          ||         ¦  «        }|dk    r||› d ||¦  «        › �gz  }n|d	|| ||¦  «        fz  gz  }|S )
Nr2   z	At index z diff: ú != r   ÚLeftÚRightz contains one more item: z/%s contains %d more items, first extra item: %s)rJ   Úbytesr@   r¯   r°   r9   r²   r   )rr   rs   r“   r�   Úcomparing_bytesr'   Úlen_leftÚ	len_rightr´   Ú
left_valueÚright_valueÚlen_diffÚdir_with_moreÚextras                 r    r�   r�   b  sû  € õ ! ¥uÑ-Ô-ÐJµ*¸UÅEÑ2JÔ2J€OØ€KÝ�4‰yŒy€HÝ�E‘
”
€IÝ•3�x Ñ+Ô+Ñ,Ô,ð ð ˆØ�Œ7�e˜A”hÒÐØð 'ð " ! a¨!¡e )œ_�
Ø# A¨¨A© IÔ.��à! !œW�
Ø# Aœh�à×ÒðX˜Að Xð XØ�K¥ ZÑ 0Ô 0Ñ1Ô1ðXð XØ7B°{Å4ÈÑCTÔCTÑ7UÔ7UðXð Xñô ð ð ˆEð) ð, ð ð Ðà˜)Ñ#€HØð Ø�aŠ<ˆ<Ø"ˆMÝ˜T )œ_Ñ-Ô-ˆEˆEà˜8‘|ˆHØ#ˆMÝ˜U 8œ_Ñ-Ô-ˆEà�qŠ=ˆ=ØØ ÐOÐO¸;¸;ÀuÑ;MÔ;MÐOÐOðñ ˆKˆKð ØAØ  (¨K¨K¸Ñ,>Ô,>Ð?ñ@ðñ ˆKð Ðr"   c                 óž   — g }|                      t          d| ||¦  «        ¦  «         |                      t          d|| |¦  «        ¦  «         |S )Nrr   rs   )r¡   Ú_set_one_sided_diff©rr   rs   r“   r�   r'   s        r    rž   rž   Ÿ  sU   € ð €KØ×ÒÕ*¨6°4¸ÀÑLÔLÑMÔMÐMØ×ÒÕ*¨7°E¸4ÀÑMÔMÑNÔNÐNØÐr"   c                 ó2   — t          | ||¦  «        }|sdgS |S ©Nr{   )r„   rÎ   s        r    r†   r†   «  ó,   € õ # 4¨°Ñ<Ô<€KØð 'Ø%Ð&Ð&ØÐr"   c                 ó2   — t          | ||¦  «        }|sdgS |S rÐ   )r…   rÎ   s        r    r‡   r‡   ·  rÑ   r"   c                 ó&   — t          d|| |¦  «        S )Nrs   ©rÍ   ©rr   rs   r“   r�   s       r    r„   r„   Ã  s   € õ ˜w¨¨t°[ÑAÔAÐAr"   c                 ó&   — t          d| ||¦  «        S )Nrr   rÔ   rÕ   s       r    r…   r…   Ì  s   € õ ˜v t¨U°KÑ@Ô@Ð@r"   ÚposnÚset1Úset2c                 óª   — g }||z
  }|rI|                      d| › d�¦  «         |D ]-}|                       |t          |¦  «        ¦  «        ¦  «         Œ.|S )NzExtra items in the z set:)r9   r   )r×   rØ   rÙ   r“   r'   r   Úitems          r    rÍ   rÍ   Õ  sv   € ð €KØ�$‰;€DØð <Ø×ÒÐ<°Ð<Ð<Ð<Ñ=Ô=Ð=Øð 	<ð 	<ˆDØ×Ò˜{˜{­8°D©>¬>Ñ:Ô:Ñ;Ô;Ð;Ð;ØÐr"   c           
      ó$  ‡ ‡— g }t          ‰ ¦  «        }t          ‰¦  «        }|                     |¦  «        }ˆ ˆfd„|D ¦   «         }|r|dk     r|dt          |¦  «        z  gz  }n:|r8|dgz  }| |t          j        |¦  «        ¦  «                             ¦   «         z  }ˆ ˆfd„|D ¦   «         }	|	rS|dgz  }|	D ]J}
| |t          |
‰ |
         i¦  «        ¦  «        dz    |t          |
‰|
         i¦  «        ¦  «        z   gz  }ŒK||z
  }t          |¦  «        }|rp|                     d||d	k    rd
ndfz  ¦  «         |                      |t          j        ˆ fd„|D ¦   «         ¦  «        ¦  «                             ¦   «         ¦  «         ||z
  }t          |¦  «        }|rp|                     d||d	k    rd
ndfz  ¦  «         |                      |t          j        ˆfd„|D ¦   «         ¦  «        ¦  «                             ¦   «         ¦  «         |S )Nc                 óF   •— i | ]}‰|         ‰|         k    ¯|‰|         “ŒS r   r   ©r¬   Úkrr   rs   s     €€r    ú
<dictcomp>z$_compare_eq_dict.<locals>.<dictcomp>î  s1   ø€ Ð>Ð>Ð>˜1¨$¨q¬'°U¸1´XÒ*=Ð*=ˆAˆt�AŒwÐ*=Ð*=Ð*=r"   rx   ú,Omitting %s identical items, use -vv to showzCommon items:c                 ó8   •— h | ]}‰|         ‰|         k    ¯|’ŒS r   r   rÞ   s     €€r    ú	<setcomp>z#_compare_eq_dict.<locals>.<setcomp>ô  s+   ø€ Ð5Ð5Ð5�!  a¤¨E°!¬HÒ!4Ð!4ˆAÐ!4Ð!4Ð!4r"   zDiffering items:rÀ   zLeft contains %d more item%s:r2   r1   rE   c                 ó"   •— i | ]}|‰|         “ŒS r   r   )r¬   rß   rr   s     €r    rà   z$_compare_eq_dict.<locals>.<dictcomp>  s   ø€ Ð'GÐ'GÐ'G°q¨¨4°¬7Ð'GÐ'GÐ'Gr"   zRight contains %d more item%s:c                 ó"   •— i | ]}|‰|         “ŒS r   r   )r¬   rß   rs   s     €r    rà   z$_compare_eq_dict.<locals>.<dictcomp>  s   ø€ Ð'IÐ'IÐ'I¸¨¨5°¬8Ð'IÐ'IÐ'Ir"   )	rU   Úintersectionr@   Úpprintr¼   r³   r   r9   r¡   )rr   rs   r“   r�   r'   Úset_leftÚ	set_rightÚcommonÚsamer   rß   Ú
extra_leftÚlen_extra_leftÚextra_rightÚlen_extra_rights   ``             r    rŸ   rŸ   ä  s¯  øø€ ð  €KÝ�4‰yŒy€HÝ�E‘
”
€IØ×"Ò" 9Ñ-Ô-€FØ>Ð>Ð>Ð>Ð> Ð>Ñ>Ô>€DØð F�˜!’�ØÐFÍÈTÉÌÑRÐSÑSˆˆØ	ð FØ˜Ð(Ñ(ˆØ�{�{¥6¤>°$Ñ#7Ô#7Ñ8Ô8×CÒCÑEÔEÑEˆØ5Ð5Ð5Ð5Ð5�vÐ5Ñ5Ô5€DØð ØÐ*Ð+Ñ+ˆØð 	ð 	ˆAØØ��H a¨¨a¬ \Ñ2Ô2Ñ3Ô3Øñà�+�h¨¨5°¬8 }Ñ5Ô5Ñ6Ô6ñ7ðñ ˆKˆKð
 ˜IÑ%€JÝ˜‘_”_€NØð 
Ø×ÒØ+Ø ^°qÒ%8Ð%8˜r˜r¸cÐBñCñ	
ô 	
ð 	
ð 	×ÒØˆK�œÐ'GÐ'GÐ'GÐ'G¸JÐ'GÑ'GÔ'GÑHÔHÑIÔI×TÒTÑVÔVñ	
ô 	
ð 	
ð ˜hÑ&€KÝ˜+Ñ&Ô&€OØð 
Ø×ÒØ,Ø o¸Ò&:Ð&:  ÀÐDñEñ	
ô 	
ð 	
ð 	×ÒØˆK�œÐ'IÐ'IÐ'IÐ'I¸[Ð'IÑ'IÔ'IÑJÔJÑKÔK×VÒVÑXÔXñ	
ô 	
ð 	
ð Ðr"   c                 ó(  ‡— t          | ¦  «        sg S t          | ¦  «        r&dd l}|                     | ¦  «        }d„ |D ¦   «         }n<t	          | ¦  «        r| j        }d„ |D ¦   «         }nt          | ¦  «        r| j        }nJ ‚dŠg }g }|D ]O}	t          | |	¦  «        t          ||	¦  «        k    r| 	                    |	¦  «         Œ:| 	                    |	¦  «         ŒPg }
|s|r|
dgz  }
|r,|dk     r&|
 	                    dt          |¦  «        z  ¦  «         n:|r8|
d	gz  }
|
 |t          j        |¦  «        ¦  «                             ¦   «         z  }
|rÀ|
d
gz  }
|
 |t          j        |¦  «        ¦  «                             ¦   «         z  }
|D ]…}	t          | |	¦  «        }t          ||	¦  «        }|
dd|	› d�‰› |	› d |t          |¦  «        ¦  «        › d |t          |¦  «        ¦  «        › �gz  }
|
ˆfd„t          ||||¦  «        D ¦   «         z  }
Œ†|
S )Nr   c                 ó*   — g | ]}|j         ¯	|j        ‘ŒS r   )ÚcompareÚname)r¬   Úinfos     r    r­   z#_compare_eq_cls.<locals>.<listcomp>  s!   € ÐLÐLÐL¨¸t¼|ÐL˜4œ9ÐLÐLÐLr"   c                 ó<   — g | ]}t          |d ¦  «        ¯|j        ‘ŒS )Úeq)r\   ró   )r¬   Úfields     r    r­   z#_compare_eq_cls.<locals>.<listcomp>   s*   € ÐVÐVÐV¨%ÅÈÐPTÑAUÔAUÐV˜5œ:ÐVÐVÐVr"   Fr=   r1   rx   rá   zMatching attributes:zDiffering attributes:z$Drill down into differing attribute ú:z: rÀ   c                 ó   •— g | ]}‰|z   ‘ŒS r   r   )r¬   rD   rF   s     €r    r­   z#_compare_eq_cls.<locals>.<listcomp>B  s-   ø€ ð ð ð àð ˜‘ðð ð r"   )rp   rb   ÚdataclassesÚfieldsre   rd   r^   rZ   r\   r9   r@   rç   r¼   r³   r²   r‚   )rr   rs   r“   r�   rú   Ú
all_fieldsÚfields_to_checkrë   r   r÷   r'   Ú
field_leftÚfield_rightrF   s                @r    rœ   rœ     sÂ  ø€ õ ˜$ÑÔð Øˆ	Ý��„ð ØÐÐÐà ×'Ò'¨Ñ-Ô-ˆ
ØLÐL°ÐLÑLÔLˆˆÝ	�‰Œð ØÔ)ˆ
ØVÐV°:ÐVÑVÔVˆˆÝ	�dÑ	Ô	ð Øœ,ˆˆàˆà€FØ€DØ€DØ ð ð ˆÝ�4˜ÑÔ¥7¨5°%Ñ#8Ô#8Ò8Ð8Ø�KŠK˜ÑÔÐÐà�KŠK˜ÑÔÐÐà€KØð ˆtð Ø˜�tÑˆØð F�˜!’�Ø×ÒÐIÍCÐPTÉIÌIÑUÑVÔVÐVÐVØ	ð FØÐ.Ð/Ñ/ˆØ�{�{¥6¤>°$Ñ#7Ô#7Ñ8Ô8×CÒCÑEÔEÑEˆØð ØÐ/Ð0Ñ0ˆØ�{�{¥6¤>°$Ñ#7Ô#7Ñ8Ô8×CÒCÑEÔEÑEˆØð 	ð 	ˆEÝ   uÑ-Ô-ˆJÝ! %¨Ñ/Ô/ˆKØØØ?°uÐ?Ð?Ð?ØÐg˜5ÐgÐg K Kµ°ZÑ0@Ô0@Ñ$AÔ$AÐgÐgÀ{À{ÕSWÐXcÑSdÔSdÑGeÔGeÐgÐgðñ ˆKð
 ð ð ð ð å+Ø ¨[¸'ñô ðñ ô ñ ˆKˆKð Ðr"   ÚtermÚtextc                 óÆ  — |                      | ¦  «        }|d |…         }||t          | ¦  «        z   d …         }||z   }t          |||¦  «        }dt          | d¬¦  «        z  g}|D ]y}	|	                     d¦  «        rŒ|	                     d¦  «        rŒ.|	                     d¦  «        r!|                     d|	dd …         z   ¦  «         Œd|                     |	¦  «         Œz|S )	Nz%s is contained here:r§   )ry   ÚSkippingz- z+ r=   rx   )Úfindr@   r˜   r   r?   r9   )
r   r  r�   ÚindexÚheadÚtailÚcorrect_textr   ÚnewdiffrD   s
             r    rƒ   rƒ   K  sù   € Ø�IŠI�d‰OŒO€EØ���Œ<€DØ��˜D™	œ	Ñ!Ð#Ð#Ô$€DØ˜$‘;€LÝ�d˜L¨'Ñ2Ô2€DØ&­°$ÀÐ)CÑ)CÔ)CÑCÐD€GØð !ð !ˆØ�?Š?˜:Ñ&Ô&ð 	ØØ�?Š?˜4Ñ Ô ð 	ØØ�?Š?˜4Ñ Ô ð 	!Ø�NŠN˜4 $ q r r¤(™?Ñ+Ô+Ð+Ð+à�NŠN˜4Ñ Ô Ð Ð Ø€Nr"   c                  ó<   — ddg} t          d„ | D ¦   «         ¦  «        S )z0Check if we're currently running on a CI system.ÚCIÚBUILD_NUMBERc              3   ó2   K  — | ]}|t           j        v V — Œd S rI   )ÚosÚenviron)r¬   Úvars     r    rº   z running_on_ci.<locals>.<genexpr>a  s)   è è € Ð5Ð5 Sˆs•b”jÐ Ð5Ð5Ð5Ð5Ð5Ð5r"   )Úany)Úenv_varss    r    r»   r»   ^  s)   € à�nÐ%€HÝÐ5Ð5¨HÐ5Ñ5Ô5Ñ5Ô5Ð5r"   )F)r   )@Ú__doc__Úcollections.abcrK   r  rç   Útypingr   r   r   r   r   r   r	   r
   r   r   Úunicodedatar   r‰   r   Ú_pytest._codeÚ_pytest._io.pprintr   Ú_pytest._io.safereprr   r   Ú_pytest.configr   r   r&   ÚobjectÚ__annotations__r   Úintr   r   r/   r*   r+   ÚboolrN   rP   rS   rW   r^   rb   re   ri   rp   r•   r‚   r˜   r    r�   rž   r†   r‡   r„   r…   rÍ   rŸ   rœ   rƒ   r»   r   r"   r    ú<module>r     sd  ðà (Ð (Ð (à Ð Ð Ð Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø )Ð )Ð )Ð )Ð )Ð )Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø !Ð !Ð !Ð !Ð !Ð !ð JN€ˆh�x  f¨fÐ 5°xÀ´}Ð DÔEÔFÐ MÐ MÑ Mð >B€�˜( C¨¨c ?°DÐ#8Ô9Ô:Ð AÐ AÑ Að !€ˆ�&Ô	Ð  Ð  Ñ  ð6ð 6ð 6ð 6ð 6�Xñ 6ô 6ð 6ð
 Cð ¨Cð ð ð ð ð Cð ¨D°¬Ið ð ð ð ð" ˜ #œð  ¨4°¬9ð  ð  ð  ð  ðFN�#ð N˜$ð Nð Nð Nð Nðˆcð �dð ð ð ð ðˆcð �dð ð ð ð ð+ˆSð +�Tð +ð +ð +ð +ðP�cð P˜dð Pð Pð Pð PðB�3ð B˜4ð Bð Bð Bð Bð=�ð =˜ð =ð =ð =ð =ð�Cð ˜Dð ð ð ð ðØ	ðà	ðð ð ð ð, ?DðC#ð C#ØðC#ØðC#Ø'*ðC#Ø7;ðC#àˆd�3ŒiÔðC#ð C#ð C#ð C#ðN HIð"ð "Ø
ð"Øð"Ø(6ð"ØADð"à	ˆ#„Yð"ð "ð "ð "ðJ-ð -�Sð - ð -¨sð -¸4À¼9ð -ð -ð -ð -ðh ð	ð Ø
�3Œ-ðà�CŒ=ðð ðð ð	ð
 
ˆ#„Yðð ð ð ðB ð	:ð :Ø
�3Œ-ð:à�CŒ=ð:ð  ð:ð ð	:ð
 
ˆ#„Yð:ð :ð :ð :ðB ð		ð 	Ø
�cÔ
ð	à�sÔð	ð  ð	ð ð		ð
 
ˆ#„Yð	ð 	ð 	ð 	ð  ð		ð 	Ø
�cÔ
ð	à�sÔð	ð  ð	ð ð		ð
 
ˆ#„Yð	ð 	ð 	ð 	ð  ð		ð 	Ø
�cÔ
ð	à�sÔð	ð  ð	ð ð		ð
 
ˆ#„Yð	ð 	ð 	ð 	ð  ð	Bð BØ
�cÔ
ðBà�sÔðBð  ðBð ð	Bð
 
ˆ#„YðBð Bð Bð Bð ð	Að AØ
�cÔ
ðAà�sÔðAð  ðAð ð	Að
 
ˆ#„YðAð Að Að AðØ
ðà
�cÔ
ðð �cÔ
ðð  ð	ð
 
ˆ#„Yðð ð ð ð& ð	-ð -Ø
�#�s�(Ô
ð-à�3˜�8Ôð-ð  ð-ð ð	-ð
 
ˆ#„Yð-ð -ð -ð -ð`4Ø
ð4Øð4Ø(6ð4ØADð4à	ˆ#„Yð4ð 4ð 4ð 4ðnð �cð  ð ¨sð ¸4À¼9ð ð ð ð ð&6�tð 6ð 6ð 6ð 6ð 6ð 6r"   