ó
    EñiQP  ã                  óp  • % S r SSKJr  SSK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
  SSK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  SSK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  SrS\S'   Sr S\S'   Sr!S\S'    " S S\5      r"S6S7S jjr#S8S jr$S9S jr%S:S jr&S;S jr'S;S  jr(S;S! jr)S;S" jr*S<S# jr+S<S$ jr,S<S% jr-S<S& jr.    S=S' jr/ S>         S?S( jjr0 S@         SAS) jjr1 S@         SBS* jjr2 S@         SCS+ jjr3 S@         SDS, jjr4 S@         SES- jjr5 S@         SES. jjr6 S@         SES/ jjr7 S@         SES0 jjr8 S@         SES1 jjr9          SFS2 jr: S@         SGS3 jjr;          SAS4 jr<S@SHS5 jjr=g)Iz"Utilities for assertion debugging.é    )ÚannotationsN)ÚCallable)ÚIterable)ÚMapping)ÚSequence)ÚSet)ÚAny)ÚLiteral)ÚProtocol)Ú	normalize)Úoutcomes)ÚPrettyPrinter)Úsaferepr)Úsaferepr_unlimited)Úrunning_on_ci)ÚConfigz2Callable[[str, object, object], str | None] | NoneÚ_reprcomparez&Callable[[int, str, str], None] | NoneÚ_assertion_passzConfig | NoneÚ_configc                  ó"   • \ rS rSrSSS jjrSrg)Ú_HighlightFuncé)   c                ó   • g)z'Apply highlighting to the given source.N© )ÚselfÚsourceÚlexers      ÚS/home/mande/repo/quber/.venv/lib/python3.13/site-packages/_pytest/assertion/util.pyÚ__call__Ú_HighlightFunc.__call__*   s   � ó    r   N©Úpython©r   Ústrr   zLiteral['diff', 'python']Úreturnr%   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__static_attributes__r   r!   r   r   r   )   s   † ÷6ñ 6r!   r   c                ó   • U $ )z‰Dummy highlighter that returns the text unprocessed.

Needed for _notin_text, as the diff gets post-processed to only show the "+" part.
r   )r   r   s     r   Údummy_highlighterr-   .   s	   € ð
 €Mr!   c                óP   • [        U 5      n[        U5      nSR                  U5      $ )an  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)ÚexplanationÚlinesÚresults      r   Úformat_explanationr6   6   s'   € ô ˜{Ó+€EÜ˜5Ó!€FØ�9‰9�VÓÐr!   c                óÄ   • U =(       d    SR                  S5      nUS   /nUSS  H6  nU(       a  US   S;   a  UR                  U5        M&  US==   SU-   -  ss'   M8     U$ )	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)r3   Ú	raw_linesr4   Úvaluess       r   r0   r0   E   sh   € ð ×" ×)Ñ)¨$Ó/€IØ�q‰\ˆN€EØ˜A˜B“-ˆÞ�f˜Q‘iÐ#7Ó7Ø�L‰L˜Ö à�"‹I˜ ™Ñ'�Iñ	  ð
 €Lr!   c                óØ  • [        U SS 5      nS/nS/nU SS  GH:  nUR                  S5      (       au  US   (       a  SnOSnUR                  [        U5      5        US==   S-  ss'   UR                  S5        UR                  SS	[        U5      S-
  -  -   U-   USS -   5        M�  UR                  S
5      (       a4  UR	                  5         UR	                  5         XS   ==   USS -  ss'   MÙ  US   S;   d   eUS==   S-  ss'   UR                  S5      (       a  [        U5      O[        U5      S-
  nUR                  S	U-  USS -   5        GM=     [        U5      S:X  d   eU$ )z÷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.
Nr9   r   r:   r>   zand   zwhere z +ú  r;   )r<   r=   r<   )ÚlistÚ
startswithr@   ÚlenÚpop)r4   r5   ÚstackÚstackcntÚlineÚsÚindents          r   r1   r1   V   sT  € ô �%˜˜�)‹_€FØˆC€EØˆs€HØ�a�b”	ˆØ�?‰?˜3×ÑØ˜�|Ø‘à�Ø�L‰Lœ˜V›Ô%Ø�R‹L˜AÑ‹LØ�O‰O˜AÔØ�M‰M˜$ ¬¨U«°a©Ñ!8Ñ8¸1Ñ<¸tÀAÀB¸xÑGÖHØ�_‰_˜S×!Ñ!Ø�I‰IŒKØ�L‰LŒNØ˜‘9Ó  a b Ñ)Õà˜‘7˜jÓ(Ð(Ð(Ø�"‹I˜‰N‹IØ#'§?¡?°3×#7Ñ#7”S˜”Z¼SÀ»ZÈ!¹^ˆFØ�M‰M˜$ ™-¨$¨q¨r¨(Ñ2×3ñ% ô& ˆu‹:˜‹?Ðˆ?Ø€Mr!   c                ó‚   • [        U [        R                  R                  5      =(       a    [        U [        5      (       + $ ©N)Ú
isinstanceÚcollectionsÚabcr   r%   ©Úxs    r   Ú
issequencerU   y   s(   € Ü�aœŸ™×1Ñ1Ó2×M¼:ÀaÌÓ;MÔ7MÐMr!   c                ó"   • [        U [        5      $ rO   )rP   r%   rS   s    r   ÚistextrW   }   s   € Ü�aœÓÐr!   c                ó"   • [        U [        5      $ rO   )rP   ÚdictrS   s    r   ÚisdictrZ   �   s   € Ü�aœÓÐr!   c                ó0   • [        U [        [        -  5      $ rO   )rP   ÚsetÚ	frozensetrS   s    r   Úissetr^   …   s   € Ü�aœœy™Ó)Ð)r!   c                óN   • [        U [        5      =(       a    [        U SS 5      S L$ )NÚ_fields)rP   ÚtupleÚgetattr©Úobjs    r   Úisnamedtuplere   ‰   s"   € Ü�cœ5Ó!×O¤g¨c°9¸dÓ&CÈ4Ð&OÐOr!   c                ó    • [        U SS 5      S L$ )NÚ__dataclass_fields__©rb   rc   s    r   Ú	isdataclsri   �   s   € Ü�3Ð.°Ó5¸TÐAÐAr!   c                ó    • [        U SS 5      S L$ )NÚ__attrs_attrs__rh   rc   s    r   Úisattrsrl   ‘   s   € Ü�3Ð)¨4Ó0¸Ð<Ð<r!   c                óZ   •  [        U 5        [        U 5      (       + $ ! [         a     gf = f)NF)ÚiterrW   Ú	Exceptionrc   s    r   Ú
isiterablerp   •   s,   € ðÜˆSŒ	Ü˜#“;ŒÐøÜó Ùðús   ‚ �
*©*c                óø   • [        U R                  S5      (       a_  [        U R                  R                  S5      (       a:  U R                  R                  R                  n[	        U 5      (       a  SU;   $ US:H  $ g)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 z<string>T)ÚhasattrÚ__eq__rr   rs   rl   )rd   Úcode_filenames     r   Úhas_default_eqrw   �   sb   € ô ˆs�z‰z˜:×&Ñ&¬7°3·:±:×3FÑ3FÈ×+VÑ+VØŸ
™
×+Ñ+×7Ñ7ˆä�3�<‰<Ø%¨Ñ6Ð6à 
Ñ*Ð*Ør!   c                ó  • U R                  [        R                  5      n[        U[        5      =(       a0    [        U[        5      =(       a    [        SU5      [        SU5      :H  nUS:”  a  [        X$S9n[        X4S9nO(S[        U5      -
  S-
  S-  n[        X(US9n[        X8US9nU SU SU 3n	U R                  5       R                  n
Sn US	:X  a  [        X#X¥5      nGO(US
:X  a-  [        U5      (       a  [        U5      (       a  [        X#U5      nOõUS:X  a$  [        U5      (       a  [        U5      (       a  S/nOËUS:X  a-  [        U5      (       a  [        U5      (       a  [        X#X¥5      nO˜US:X  a-  [        U5      (       a  [        U5      (       a  [!        X#X¥5      nOeUS:X  a-  [        U5      (       a  [        U5      (       a  [#        X#X¥5      nO2US:X  a,  [        U5      (       a  [        U5      (       a  [%        X#X¥5      nU(       d  gUS   S:w  a  S/UQnU	/UQ$ ! [&        R(                   a    e [*         aA    [,        R.                  R0                  R3                  5       R5                  5       nSU S3S/n Nyf = f)z<Return specialised explanations for some operators/operands.ÚNFDr9   )Ú	use_asciiéA   é   )Úmaxsizerz   Ú Nz==znot inz!=úBoth sets are equalz>=z<=r=   Ú<z<(pytest_assertion plugin: representation of details failed: Ú.z+ Probably an object has a faulty __repr__.)r   r8   )Úget_verbosityr   ÚVERBOSITY_ASSERTIONSrP   r%   r   r   rG   r   Úget_terminal_writerÚ
_highlightÚ_compare_eq_anyrW   Ú_notin_textr^   Ú_compare_gte_setÚ_compare_lte_setÚ_compare_gt_setÚ_compare_lt_setr   ÚExitro   Ú_pytestÚ_codeÚExceptionInfoÚfrom_currentÚ_getreprcrash)ÚconfigÚopÚleftÚrightrz   ÚverboseÚ	left_reprÚ
right_reprr}   ÚsummaryÚhighlighterr3   Ú
repr_crashs                r   Úassertrepr_comparerœ   ²   sP  € ð ×"Ñ"¤6×#>Ñ#>Ó?€Gô
 	�4œÓ÷ 	>Ü�uœcÓ"÷	>ä�e˜TÓ"¤i°°uÓ&=Ñ=ð ð �ƒ{Ü& tÑAˆ	Ü'¨ÑC‰
ð
 ”c˜"“gÑ Ñ!Øñˆô ˜T¸iÑHˆ	Ü˜eÀ	ÑJˆ
à�˜1˜R˜D  * Ð.€GØ×,Ñ,Ó.×9Ñ9€Kà€Kð
Ø�‹:Ü)¨$°{ÓLŠKØ�8‹^Ü�d�|‰|¤ u§¡Ü)¨$°wÓ?�øØ�4‹ZÜ�T�{‰{œu UŸ|™|Ø4Ð5�øØ�4‹ZÜ�T�{‰{œu UŸ|™|Ü.¨t¸KÓQ�øØ�4‹ZÜ�T�{‰{œu UŸ|™|Ü.¨t¸KÓQ�øØ�3‹YÜ�T�{‰{œu UŸ|™|Ü-¨d¸;ÓP�øØ�3‹YÜ�T�{‰{œu UŸ|™|Ü-¨d¸;ÓP�ö Øà�1�~˜ÓØÐ(˜KÐ(ˆØÐ"�kÐ"Ð"øô �=‰=ó ØÜó 
Ü—]‘]×0Ñ0×=Ñ=Ó?×MÑMÓOˆ
àJÈ:È,ÐVWÐXØ9ð
Šð
ús7   ÃH& Ã#2H& Ä)H& Å 2H& Å32H& Æ&2H& Ç2H& È&AJÊJc                óT  • / n[        U 5      (       a  [        U5      (       a  [        XX#5      nU$ SSKJn  [	        X5      (       d  [	        X5      (       a:  [	        X5      (       a  U OUn[	        X5      (       a  UOU nUR                  U5      nOÚ[        U 5      [        U5      L a=  [        U 5      (       d   [        U 5      (       d  [        U 5      (       a  [        XX#5      nO†[        U 5      (       a  [        U5      (       a  [        XX#5      nOY[        U 5      (       a  [        U5      (       a  [        XX#5      nO,[        U 5      (       a  [        U5      (       a  [!        XX#5      n[#        U 5      (       a-  [#        U5      (       a  [%        XX#5      nUR'                  U5        U$ )Nr   )Ú
ApproxBase)rW   Ú
_diff_textÚ_pytest.python_apirž   rP   Ú_repr_compareÚtyperi   rl   re   Ú_compare_eq_clsrU   Ú_compare_eq_sequencer^   Ú_compare_eq_setrZ   Ú_compare_eq_dictrp   Ú_compare_eq_iterableÚextend)	r”   r•   rš   r–   r3   rž   Úapprox_sideÚ
other_sideÚexpls	            r   r†   r†   ø   sC  € ð €KÜˆd‡|�|œ˜uŸ™Ü  ¨kÓCˆð: Ðõ7 	2ä�d×'Ñ'¬:°e×+HÑ+Hä",¨T×">Ñ">™$ÀEˆKÜ",¨T×">Ñ">™ÀDˆJà%×3Ñ3°JÓ?‰KÜ�$‹Zœ4 ›;Ò&Ü�d�O‰Oœw tŸ}™}´¸T×0BÑ0Bô *¨$°{ÓL‰KÜ˜×Ñ¤*¨U×"3Ñ"3Ü.¨t¸KÓQ‰KÜ�4�[‰[œU 5Ÿ\™\Ü)¨$°{ÓL‰KÜ�D�\‰\œf UŸm™mÜ*¨4¸ÓMˆKä�d×Ñ¤
¨5× 1Ñ 1Ü'¨°[ÓJˆDØ×Ñ˜tÔ$àÐr!   c                ó  • SSK Jn  / nUS:  a¸  Sn[        [        [	        U 5      [	        U5      5      5       H  nX   X   :w  d  M    O   US:”  a  US-  nSU S3/nXS n XS n[	        U 5      [	        U5      :X  aJ  [        [	        U 5      5       H  nX*    X*    :w  d  M    O   US:”  a  US-  nUSU S	3/-  nU SU*  n USU*  nS
nU R                  5       (       d  UR                  5       (       a.  [        [        U 5      5      n [        [        U5      5      nUS/-  nUR                  U" SR                  S U" UR                  U5      U R                  U5      5       5       5      SS9R                  5       5        U$ )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   )Úndiffr9   é*   é
   z	Skipping z5 identical leading characters in diff, use -v to showNz6 identical trailing characters in diff, use -v to showTz;Strings contain only whitespace, escaping them using repr()r/   c              3  óD   #   • U  H  nUR                  S 5      v •  M     g7f)r/   N)Ústrip©Ú.0rK   s     r   Ú	<genexpr>Ú_diff_text.<locals>.<genexpr>J  s#   é € ð âX�Dð —
‘
˜4× Ð ÚXùs   ‚ Údiff©r   )Údifflibr­   ÚrangeÚminrG   ÚisspaceÚreprr%   r¨   r2   Ú
splitlines)r”   r•   rš   r–   r­   r3   ÚiÚkeependss           r   rŸ   rŸ     s¨  € õ à€Kà�ƒ{ØˆÜ”sœ3˜t›9¤c¨%£jÓ1Ö2ˆAØ‰w˜%™(Õ"Ùñ 3ð ˆr‹6Ø�‰GˆAà˜A˜3ÐSÐTðˆKð ˜�8ˆDØ˜"�IˆEÜˆt‹9œ˜E›
Ó"Üœ3˜t›9Ö%�Ø˜‘8˜u R™yÕ(Ùñ &ð �2‹vØ�R‘�ØØ ˜sð #9ð 9ð ñ �ð ˜C˜a˜R�y�Ø˜c ˜r˜
�Ø€HØ‡|�|‡~�~˜Ÿ™Ÿ™Ü”C˜“I‹ˆÜ”S˜“ZÓ ˆØÐUÐVÑVˆð ×ÑÙØ�I‰Iñ á! %×"2Ñ"2°8Ó"<¸d¿o¹oÈhÓ>WÔXóó ð ñ	
÷ ‰*‹,ôð Ðr!   c                ót  • US::  a  [        5       (       d  S/$ SS Kn[        5       R                  U 5      R	                  5       n[        5       R                  U5      R	                  5       nSS/nUR                  U" SR                  S UR                  Xe5       5       5      SS9R	                  5       5        U$ )	Nr   zUse -v to get more diffr8   z
Full diff:r/   c              3  óB   #   • U  H  nUR                  5       v •  M     g 7frO   )Úrstripr²   s     r   r´   Ú'_compare_eq_iterable.<locals>.<genexpr>g  s   é € ð âL�Dð —‘—�ÚLùs   ‚r¶   r·   )r   r¸   r   Úpformatr½   r¨   r2   r­   )r”   r•   rš   r–   r¸   Úleft_formattingÚright_formattingr3   s           r   r§   r§   T  s¯   € ð �!ƒ|œMŸO™OØ)Ð*Ð*ãä#“o×-Ñ-¨dÓ3×>Ñ>Ó@€OÜ$“×.Ñ.¨uÓ5×@Ñ@ÓBÐà�|Ð$€Kð ×ÑÙØ�I‰Iñ à#ŸM™MÐ*:ÔLóó ð ñ	
÷ ‰*‹,ôð Ðr!   c                óT  • [        U [        5      =(       a    [        U[        5      n/ n[        U 5      n[        U5      n[        [	        Xg5      5       He  nX   X   :w  d  M  U(       a  XUS-    n	XUS-    n
OX   n	X   n
UR                  SU SU" [        U	5      5       SU" [        U
5      5       35          O   U(       a  U$ Xg-
  nU(       aW  US:”  a  Sn[        X   5      nOSU-
  nSn[        X   5      nUS:X  a  UU SU" U5       3/-  nU$ UU S	U S
U" U5       3/-  nU$ )Nr9   z	At index z diff: ú != r   ÚLeftÚRightz contains one more item: z
 contains z more items, first extra item: )rP   ÚbytesrG   r¹   rº   r@   r¼   r   )r”   r•   rš   r–   Úcomparing_bytesr3   Úlen_leftÚ	len_rightr¾   Ú
left_valueÚright_valueÚlen_diffÚdir_with_moreÚextras                 r   r¤   r¤   q  sz  € ô ! ¤uÓ-×J´*¸UÄEÓ2J€OØ€KÜ�4‹y€HÜ�E“
€IÜ”3�xÓ+Ö,ˆØ‰7�e‘hÕÞð " a¨!¡e˜_�
Ø#¨¨A©Ð.‘à!™W�
Ø#™h�à×ÑØ˜A˜3ð Ù¤ ZÓ 0Ó1Ð2°$±{Ä4ÈÓCTÓ7UÐ6VðXôñ ñ+ -ö. ð ÐàÑ#€HÞØ�a‹<Ø"ˆMÜ˜T™_Ó-‰Eà˜8‘|ˆHØ#ˆMÜ˜U™_Ó-ˆEà�q‹=ØØ �/Ð!:¹;ÀuÓ;MÐ:NÐOðñ ˆKð Ðð Ø �/ ¨H¨:Ð5TÑU`ÐafÓUgÐThÐiðñ ˆKð Ðr!   c                óz   • / nUR                  [        SXU5      5        UR                  [        SXU5      5        U$ )Nr”   r•   )r¨   Ú_set_one_sided_diff©r”   r•   rš   r–   r3   s        r   r¥   r¥   ­  s?   € ð €KØ×ÑÔ*¨6°4ÀÓLÔMØ×ÑÔ*¨7°EÀÓMÔNØÐr!   c                ó2   • [        XU5      nU(       d  S/$ U$ ©Nr   )rˆ   rÖ   s        r   rŠ   rŠ   ¹  ó"   € ô # 4°Ó<€KÞØ%Ð&Ð&ØÐr!   c                ó2   • [        XU5      nU(       d  S/$ U$ rØ   )r‰   rÖ   s        r   r‹   r‹   Å  rÙ   r!   c                ó   • [        SXU5      $ )Nr•   ©rÕ   ©r”   r•   rš   r–   s       r   rˆ   rˆ   Ñ  s   € ô ˜w¨°[ÓAÐAr!   c                ó   • [        SXU5      $ )Nr”   rÜ   rÝ   s       r   r‰   r‰   Ú  s   € ô ˜v t°KÓ@Ð@r!   c                óœ   • / nX-
  nU(       a>  UR                  SU  S35        U H#  nUR                  U" [        U5      5      5        M%     U$ )NzExtra items in the z set:)r@   r   )ÚposnÚset1Úset2rš   r3   r¶   Úitems          r   rÕ   rÕ   ã  sR   € ð €KØ‰;€DÞØ×ÑÐ0°°°eÐ<Ô=ÛˆDØ×Ñ™{¬8°D«>Ó:Ö;ñ àÐr!   c                óJ  • / n[        U 5      n[        U5      nUR                  U5      nU Vs0 s H  o€U   X   :X  d  M  X€U   _M     n	nU	(       a  US:  a  US[        U	5       S3/-  nO9U	(       a2  US/-  nXB" [        R                  " U	5      5      R                  5       -  nU Vs1 s H  o€U   X   :w  d  M  UiM     n
nU
(       aA  US/-  nU
 H5  nUU" [        X€U   05      5      S-   U" [        X�U   05      5      -   /-  nM7     XV-
  n[        U5      nU(       al  UR                  SU SUS	:X  a  S
OS S35        UR                  U" [        R                  " U Vs0 s H  oˆX   _M	     sn5      5      R                  5       5        Xe-
  n[        U5      nU(       al  UR                  SU SUS	:X  a  S
OS S35        UR                  U" [        R                  " U Vs0 s H  oˆX   _M	     sn5      5      R                  5       5        U$ s  snf s  snf s  snf s  snf )Nr|   ú	Omitting ú! identical items, use -vv to showzCommon items:zDiffering items:rÈ   zLeft contains z
 more itemr9   r8   rL   Ú:zRight contains )	r\   ÚintersectionrG   ÚpprintrÄ   r½   r   r@   r¨   )r”   r•   rš   r–   r3   Úset_leftÚ	set_rightÚcommonÚkÚsamer¶   Ú
extra_leftÚlen_extra_leftÚextra_rightÚlen_extra_rights                  r   r¦   r¦   ò  sD  € ð  €KÜ�4‹y€HÜ�E“
€IØ×"Ñ" 9Ó-€FÙ &Ó>¢˜1¨q©'°U±XÑ*=‹JˆA�A‰wŠJ¡€DÐ>Þ�˜!“Ø˜)¤C¨£I ;Ð.OÐPÐQÑQ‰Þ	Ø˜Ð(Ñ(ˆØ�{¤6§>¢>°$Ó#7Ó8×CÑCÓEÑEˆÙÓ5’v�! a¡¨E©HÑ!4�A‘v€DÐ5ÞØÐ*Ð+Ñ+ˆÛˆAØÙœH a¨a© \Ó2Ó3Øñáœh¨°©8 }Ó5Ó6ñ7ðñ ŠKñ ð Ñ%€JÜ˜“_€NÞØ×ÑØ˜^Ð,¨J¸^ÈqÓ=P±rÐVYÐ6ZÐZ[Ð\ô	
ð 	×ÑÙœŸš¹JÓ'GºJ°q¨4©7ª
¹JÑ'GÓHÓI×TÑTÓVô	
ð Ñ&€KÜ˜+Ó&€OÞØ×ÑØ˜oÐ.¨j¸ÐRSÓ?S¹ÐY\Ð8]Ð]^Ð_ô	
ð 	×ÑÙœŸš¹[Ó'Iº[¸¨5©8ª¹[Ñ'IÓJÓK×VÑVÓXô	
ð ÐùòC ?ùò 6ùò  (Hùò (Js#   ®HÁ 	HÂ)HÂ;HÅ"HÇ$H c                ó®  • [        U 5      (       d  / $ [        U 5      (       aD  SS KnUR                  U 5      nU Vs/ s H!  ofR                  (       d  M  UR
                  PM#     nnOk[        U 5      (       a<  U R                  nU Vs/ s H"  n[        US5      (       d  M  UR
                  PM$     nnO[        U 5      (       a  U R                  nO eSn	/ n
/ nU H?  n[        X5      [        X5      :X  a  U
R                  U5        M.  UR                  U5        MA     / nU
(       d  U(       a  US/-  nU
(       a%  US:  a  UR                  S[        U
5       S35        O9U
(       a2  US/-  nXÂ" [        R                  " U
5      5      R                  5       -  nU(       a§  US	/-  nXÂ" [        R                  " U5      5      R                  5       -  nU Ho  n[        X5      n[        X5      nUSS
U S3U	 U SU" [!        U5      5       SU" [!        U5      5       3/-  nU[#        XÞX#5       Vs/ s H  nXŸ-   PM	     sn-  nMq     U$ s  snf s  snf s  snf )Nr   ÚeqrD   r8   r|   rå   ræ   zMatching attributes:zDiffering attributes:z$Drill down into differing attribute rç   z: rÈ   )rw   ri   ÚdataclassesÚfieldsÚcompareÚnamerl   rk   rb   re   r`   r@   rG   ré   rÄ   r½   r¼   r†   )r”   r•   rš   r–   rõ   Ú
all_fieldsÚinfoÚfields_to_checkÚfieldrM   rî   r¶   r3   Ú
field_leftÚfield_rightrK   s                   r   r£   r£      sE  € ô ˜$×ÑØˆ	Ü�‡�Ûà ×'Ñ'¨Ó-ˆ
Ù1;ÓL²¨¿|½|›9˜4Ÿ9œ9±ˆÐLˆÜ	��‰Ø×)Ñ)ˆ
Ù3=ÓV²:¨%ÄÈÐPT×AU›:˜5Ÿ:œ:±:ˆÐVˆÜ	�d×	Ñ	ØŸ,™,‰àˆuà€FØ€DØ€DÛ ˆÜ�4Ó¤7¨5Ó#8Ó8Ø�K‰K˜Öà�K‰K˜Öñ	 !ð €KÞŽtØ˜�tÑˆÞ�˜!“Ø×Ñ˜Y¤s¨4£y kÐ1RÐSÕTÞ	ØÐ.Ð/Ñ/ˆØ�{¤6§>¢>°$Ó#7Ó8×CÑCÓEÑEˆÞØÐ/Ð0Ñ0ˆØ�{¤6§>¢>°$Ó#7Ó8×CÑCÓEÑEˆÛˆEÜ  Ó-ˆJÜ! %Ó/ˆKØØØ6°u°g¸QÐ?Ø�(˜5˜' ¡K´°ZÓ0@Ó$AÐ#BÀ$Á{ÔSWÐXcÓSdÓGeÐFfÐgðñ ˆKð
 ä+Ø¨[ôóò�Dð ”ñññ ŠKñ ð ÐùòW Mùò WùòDs   ¼IÁIÂIÂ IÈ/Ic                óŠ  • UR                  U 5      nUS U nX[        U 5      -   S  nXE-   n[        X[        U5      n[	        U SS9 S3/nU Hs  n	U	R                  S5      (       a  M  U	R                  S5      (       a  M3  U	R                  S5      (       a  UR                  SU	SS  -   5        Mb  UR                  U	5        Mu     U$ )	Nr®   )r}   z is contained here:ÚSkippingz- z+ rD   r|   )ÚfindrG   rŸ   r-   r   rF   r@   )
ÚtermÚtextr–   ÚindexÚheadÚtailÚcorrect_textr¶   ÚnewdiffrK   s
             r   r‡   r‡   W  sÂ   € Ø�I‰I�d‹O€EØ��ˆ<€DØœ˜D›	Ñ!Ð#Ð$€DØ‘;€LÜ�dÔ*;¸WÓE€DÜ˜4¨Ñ,Ð-Ð-@ÐAÐB€GÛˆØ�?‰?˜:×&Ñ&ÙØ�?‰?˜4× Ñ ÙØ�?‰?˜4× Ñ Ø�N‰N˜4 $ q r (™?Ö+à�N‰N˜4Ö ñ ð €Nr!   r"   r$   )r3   r%   r&   r%   )r3   r%   r&   ú	list[str])r4   zSequence[str]r&   r	  )rT   r	   r&   Úbool)rd   r	   r&   r
  )rd   Úobjectr&   r
  )F)
r“   r%   r”   r	   r•   r	   rz   r
  r&   zlist[str] | None)r   )
r”   r	   r•   r	   rš   r   r–   Úintr&   r	  )
r”   r%   r•   r%   rš   r   r–   r  r&   r	  )
r”   úIterable[Any]r•   r  rš   r   r–   r  r&   r	  )
r”   úSequence[Any]r•   r  rš   r   r–   r  r&   r	  )
r”   úAbstractSet[Any]r•   r  rš   r   r–   r  r&   r	  )
rà   r%   rá   r  râ   r  rš   r   r&   r	  )
r”   úMapping[Any, Any]r•   r  rš   r   r–   r  r&   r	  )r  r%   r  r%   r–   r  r&   r	  )>Ú__doc__Ú
__future__r   Úcollections.abcrQ   r   r   r   r   r   ÚAbstractSetré   Útypingr	   r
   r   Úunicodedatar   r�   r   Ú_pytest._codeÚ_pytest._io.pprintr   Ú_pytest._io.safereprr   r   Ú_pytest.compatr   Ú_pytest.configr   r   Ú__annotations__r   r   r   r-   r6   r0   r1   rU   rW   rZ   r^   re   ri   rl   rp   rw   rœ   r†   rŸ   r§   r¤   r¥   rŠ   r‹   rˆ   r‰   rÕ   r¦   r£   r‡   r   r!   r   Ú<module>r     s£  ðâ (å "ã Ý $Ý $Ý #Ý $Ý .Û Ý Ý Ý Ý !å Û Ý ,Ý )Ý 3Ý (Ý !ð DH€Ð@Ó Gð ;?€Ð7Ó >ð €ˆÓ ô6�Xô 6ö
ôôô" ôFNôôô*ôPôBô=ôðØ	ðà	ôð, ?DðC#ØðC#ØðC#Ø'*ðC#Ø7;ðC#àõC#ðN HIð"Ø
ð"Øð"Ø(6ð"ØADð"àõ"ðL HIð4Ø
ð4Øð4Ø(6ð4ØADð4àõ4ðv ð	Ø
ðàðð  ðð ð	ð
 õðB ð	9Ø
ð9àð9ð  ð9ð ð	9ð
 õ9ð@ ð		Ø
ð	àð	ð  ð	ð ð		ð
 õ	ð  ð		Ø
ð	àð	ð  ð	ð ð		ð
 õ	ð  ð		Ø
ð	àð	ð  ð	ð ð		ð
 õ	ð  ð	BØ
ðBàðBð  ðBð ð	Bð
 õBð ð	AØ
ðAàðAð  ðAð ð	Að
 õAðØ
ðà
ðð ðð  ð	ð
 ôð& ð	+Ø
ð+àð+ð  ð+ð ð	+ð
 õ+ð\4Ø
ð4Øð4Ø(6ð4ØADð4àô4÷nr!   