ó
    áÅŸg)O  ã                  óT  • % S r SSKJr  SSKrSSK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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rS\S'   SrS\S'   SrS\S'    " S S\5      r S5S jr!S6S jr"S7S jr#S8S jr$S8S jr%S8S jr&S8S  jr'S9S! jr(S9S" jr)S9S# jr*S9S$ jr+    S:S% jr, S;         S<S& jjr- S=         S>S' jjr.S=S?S( jjr/ S=         S@S) jjr0 S=         SAS* jjr1 S=         SBS+ jjr2 S=         SBS, jjr3 S=         SBS- jjr4 S=         SBS. jjr5 S=         SBS/ jjr6          SCS0 jr7 S=         SDS1 jjr8          S>S2 jr9S=SES3 jjr:SFS4 jr;g)Gz"Utilities for assertion debugging.é    )ÚannotationsN)ÚAbstractSet)ÚAny)ÚCallable)ÚIterable)ÚLiteral)ÚMapping)ÚProtocol)ÚSequence)Ú	normalize)Úoutcomes)ÚPrettyPrinter)Úsaferepr)Úsaferepr_unlimited)Ú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      ÚW/var/www/blue/EV-Temp_rev04/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                ó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_explanationr1   .   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)r.   Ú	raw_linesr/   Úvaluess       r   r+   r+   =   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.
Nr4   r   r5   r9   zand   zwhere z +ú  r6   )r7   r8   r7   )ÚlistÚ
startswithr;   ÚlenÚpop)r/   r0   ÚstackÚstackcntÚlineÚsÚindents          r   r,   r,   N   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   Ú
issequencerP   q   s(   € Ü�aœŸ™×1Ñ1Ó2×M¼:ÀaÌÓ;MÔ7MÐMr    c                ó"   • [        U [        5      $ rJ   )rK   r"   rN   s    r   ÚistextrR   u   s   € Ü�aœÓÐr    c                ó"   • [        U [        5      $ rJ   )rK   ÚdictrN   s    r   ÚisdictrU   y   s   € Ü�aœÓÐr    c                ó.   • [        U [        [        45      $ rJ   )rK   ÚsetÚ	frozensetrN   s    r   ÚissetrY   }   s   € Ü�aœ#œyÐ)Ó*Ð*r    c                óN   • [        U [        5      =(       a    [        U SS 5      S L$ )NÚ_fields)rK   ÚtupleÚgetattr©Úobjs    r   Úisnamedtupler`   �   s"   € Ü�cœ5Ó!×O¤g¨c°9¸dÓ&CÈ4Ð&OÐOr    c                ó    • [        U SS 5      S L$ )NÚ__dataclass_fields__©r]   r^   s    r   Ú	isdataclsrd   …   s   € Ü�3Ð.°Ó5¸TÐAÐAr    c                ó    • [        U SS 5      S L$ )NÚ__attrs_attrs__rc   r^   s    r   Úisattrsrg   ‰   s   € Ü�3Ð)¨4Ó0¸Ð<Ð<r    c                óZ   •  [        U 5        [        U 5      (       + $ ! [         a     gf = f)NF)ÚiterrR   Ú	Exceptionr^   s    r   Ú
isiterablerk   �   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 eqz<string>T)ÚhasattrÚ__eq__rm   rn   rg   )r_   Úcode_filenames     r   Úhas_default_eqrr   •   sb   € ô ˆs�z‰z˜:×&Ñ&¬7°3·:±:×3FÑ3FÈ×+VÑ+VØŸ
™
×+Ñ+×7Ñ7ˆä�3�<‰<Ø'¨=Ñ8Ð8à 
Ñ*Ð*Ø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.ÚNFDr4   )Ú	use_asciiéA   é   )Úmaxsizeru   Ú Nz==znot inz!=úBoth sets are equalz>=z<=r8   Ú<z<(pytest_assertion plugin: representation of details failed: Ú.z+ Probably an object has a faulty __repr__.)r   r3   )Úget_verbosityr   ÚVERBOSITY_ASSERTIONSrK   r"   r   r   rB   r   Úget_terminal_writerÚ
_highlightÚ_compare_eq_anyrR   Ú_notin_textrY   Ú_compare_gte_setÚ_compare_lte_setÚ_compare_gt_setÚ_compare_lt_setr   ÚExitrj   Ú_pytestÚ_codeÚExceptionInfoÚfrom_currentÚ_getreprcrash)ÚconfigÚopÚleftÚrightru   ÚverboseÚ	left_reprÚ
right_reprrx   ÚsummaryÚhighlighterr.   Ú
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U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)rR   Ú
_diff_textÚ_pytest.python_apir™   rK   Ú_repr_compareÚtyperd   rg   r`   Ú_compare_eq_clsrP   Ú_compare_eq_sequencerY   Ú_compare_eq_setrU   Ú_compare_eq_dictrk   Ú_compare_eq_iterableÚextend)	r�   r�   r•   r‘   r.   r™   Úapprox_sideÚ
other_sideÚexpls	            r   r�   r�   ð   sC  € ð €KÜˆd‡|�|œ˜uŸ™Ü  ¨gÓ6ˆð: Ðõ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U" UR                  U5      U R                  U5      5       Vs/ sH  nUR                  S5      PM     sn-  nU$ s  snf )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   )Úndiffr4   é*   é
   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*   )
Údifflibr¨   ÚrangeÚminrB   ÚisspaceÚreprr"   Ú
splitlinesÚstrip)r�   r�   r‘   r¨   r.   ÚiÚkeependsrF   s           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ˆð á˜%×*Ñ*¨8Ó4°d·o±oÀhÓ6OÔPóáPˆDð 	�
‰
�4ÖÙPññ €Kð Ðùò	s   ÅE,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 diffr3   z
Full diff:r*   c              3  ó@   #   • U H  nUR                  5       v •  M     g 7frJ   )Úrstrip)Ú.0rF   s     r   Ú	<genexpr>Ú'_compare_eq_iterable.<locals>.<genexpr>X  s   é € ð áL�Dð —‘—�ÚLùs   ‚Údiff)r   )Úrunning_on_cir«   r   Úpformatr°   r£   r-   r¨   )r�   r�   r•   r‘   r«   Úleft_formattingÚright_formattingr.   s           r   r¢   r¢   E  s¯   € ð �!ƒ|œMŸO™OØ)Ð*Ð*ãä#“o×-Ñ-¨dÓ3×>Ñ>Ó@€OÜ$“×.Ñ.¨uÓ5×@Ñ@ÓBÐà�|Ð$€Kð ×ÑÙØ�I‰Iñ à#ŸM™MÐ*:ÔLóó ð ñ	
÷ ‰*‹,ôð Ðr    c                óN  • [        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(       aT  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S	XËU" U5      4-  /-  nU$ )
Nr4   z	At index z diff: ú != r   ÚLeftÚRightz contains one more item: z/%s contains %d more items, first extra item: %s)rK   ÚbytesrB   r¬   r­   r;   r¯   r   )r�   r�   r•   r‘   Úcomparing_bytesr.   Úlen_leftÚ	len_rightr²   Ú
left_valueÚright_valueÚlen_diffÚdir_with_moreÚextras                 r   rŸ   rŸ   b  ss  € ô ! ¤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ð Ðð	 ØAØ ©K¸Ó,>Ð?ñ@ðñ ˆ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‘   r.   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$ ©Nrz   )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•   r.   rº   Úitems          r   rÍ   rÍ   Õ  sR   € ð €KØ‰;€DÞØ×ÑÐ0°°°eÐ<Ô=ÛˆDØ×Ñ™{¬8°D«>Ó:Ö;ñ àÐr    c                ó6  • / 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(       ah  UR                  SXÌS:X  a  S	OS
4-  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(       ah  UR                  SXîS:X  a  S	OS
4-  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 )Nrw   ú	Omitting ú! identical items, use -vv to showzCommon items:zDiffering items:rÀ   zLeft contains %d more item%s:r4   r3   rG   zRight contains %d more item%s:)	rW   ÚintersectionrB   Úpprintr¼   r°   r   r;   r£   )r�   r�   r•   r‘   r.   Úset_leftÚ	set_rightÚcommonÚkÚsamerº   Ú
extra_leftÚlen_extra_leftÚextra_rightÚlen_extra_rights                  r   r¡   r¡   ä  s5  € ð  €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ÞØ×ÑØ+Ø°qÓ%8™r¸cÐBñCô	
ð 	×ÑÙœŸš¹JÓ'G¹J°q¨4©7ª
¹JÑ'GÓHÓI×TÑTÓVô	
ð Ñ&€KÜ˜+Ó&€OÞØ×ÑØ,Ø¸Ó&:¡ÀÐDñEô	
ð 	×ÑÙœŸš¹[Ó'I¹[¸¨5©8ª¹[Ñ'IÓJÓK×VÑVÓXô	
ð ÐùòG ?ùò 6ùò" (Hùò (Js"   ®H¿	HÂ(HÂ9HÅHÇHc                ó¨  • [        U 5      (       d  / $ [        U 5      (       aC  SS KnUR                  U 5      nU Vs/ sH!  ofR                  (       d  M  UR
                  PM#     nnOj[        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 Hn  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Mp     U$ s  snf s  snf s  snf )Nr   Úeqr?   r3   rw   rÝ   rÞ   zMatching attributes:zDiffering attributes:z$Drill down into differing attribute Ú:z: rÀ   )rr   rd   ÚdataclassesÚfieldsÚcompareÚnamerg   rf   r]   r`   r[   r;   rB   rà   r¼   r°   r¯   r�   )r�   r�   r•   r‘   rí   Ú
all_fieldsÚinfoÚfields_to_checkÚfieldrH   rå   rº   r.   Ú
field_leftÚfield_rightrF   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©   )rx   z is contained here:ÚSkippingz- z+ r?   rw   )ÚfindrB   rš   r   rA   r;   )
ÚtermÚtextr‘   ÚindexÚheadÚtailÚcorrect_textrº   ÚnewdiffrF   s
             r   r‚   r‚   K  s¿   € Ø�I‰I�d‹O€EØ��ˆ<€DØœ˜D›	Ñ!Ð#Ð$€DØ‘;€LÜ�d¨'Ó2€DÜ˜4¨Ñ,Ð-Ð-@ÐAÐB€GÛˆØ�?‰?˜:×&Ñ&ÙØ�?‰?˜4× Ñ ÙØ�?‰?˜4× Ñ Ø�N‰N˜4 $ q r (™?Ö+à�N‰N˜4Ö ñ ð €Nr    c                 ó.   • SS/n [        S U  5       5      $ )z0Check if we're currently running on a CI system.ÚCIÚBUILD_NUMBERc              3  óD   #   • U H  o[         R                  ;   v •  M     g 7frJ   )ÚosÚenviron)r·   Úvars     r   r¸   Ú running_on_ci.<locals>.<genexpr>a  s   é € Ð5©H S”b—j‘jÖ ªHùs   ‚ )Úany)Úenv_varss    r   r»   r»   ^  s   € à�nÐ%€HÜÑ5©HÓ5Ó5Ð5r    )r.   r"   r#   r"   )r.   r"   r#   ú	list[str])r/   zSequence[str]r#   r  )rO   r   r#   Úbool)r_   r   r#   r  )r_   Úobjectr#   r  )F)
rŽ   r"   r�   r   r�   r   ru   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�   ú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  )r#   r  )<Ú__doc__Ú
__future__r   Úcollections.abcrL   r  rà   Útypingr   r   r   r   r   r	   r
   r   Úunicodedatar   rˆ   r   Ú_pytest._codeÚ_pytest._io.pprintr   Ú_pytest._io.safereprr   r   Ú_pytest.configr   r   Ú__annotations__r   r   r   r1   r+   r,   rP   rR   rU   rY   r`   rd   rg   rk   rr   r—   r�   rš   r¢   rŸ   r    r…   r†   rƒ   r„   rÍ   r¡   rž   r‚   r»   r   r    r   Ú<module>r     st  ðâ (å "ã Û 	Û Ý Ý Ý Ý Ý Ý Ý Ý Ý !å Û Ý ,Ý )Ý 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ð"àõ"öJ-ðh ð	Ø
ðàðð  ðð ð	ð
 õðB ð	:Ø
ð:àð:ð  ð:ð ð	:ð
 õ:ðB ð		Ø
ð	àð	ð  ð	ð ð		ð
 õ	ð  ð		Ø
ð	àð	ð  ð	ð ð		ð
 õ	ð  ð		Ø
ð	àð	ð  ð	ð ð		ð
 õ	ð  ð	BØ
ðBàðBð  ðBð ð	Bð
 õBð ð	AØ
ðAàðAð  ðAð ð	Að
 õAðØ
ðà
ðð ðð  ð	ð
 ôð& ð	-Ø
ð-àð-ð  ð-ð ð	-ð
 õ-ð`4Ø
ð4Øð4Ø(6ð4ØADð4àô4önõ&6r    