Ë
    V.j)O  ã                  ó  — U d Z ddlm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ZddlmZ ddlmZ ddlmZ ddlmZ dZded<   dZded<   dZded<    G d„ de«      Z d5d„Z!d6d„Z"d7d„Z#d8d„Z$d8d„Z%d8d„Z&d8d „Z'd9d!„Z(d9d"„Z)d9d#„Z*d9d$„Z+	 	 	 	 d:d%„Z,	 d;	 	 	 	 	 	 	 	 	 d<d&„Z-	 d=	 	 	 	 	 	 	 	 	 d>d'„Z.d=d?d(„Z/	 d=	 	 	 	 	 	 	 	 	 d@d)„Z0	 d=	 	 	 	 	 	 	 	 	 dAd*„Z1	 d=	 	 	 	 	 	 	 	 	 dBd+„Z2	 d=	 	 	 	 	 	 	 	 	 dBd,„Z3	 d=	 	 	 	 	 	 	 	 	 dBd-„Z4	 d=	 	 	 	 	 	 	 	 	 dBd.„Z5	 d=	 	 	 	 	 	 	 	 	 dBd/„Z6	 	 	 	 	 	 	 	 	 	 dCd0„Z7	 d=	 	 	 	 	 	 	 	 	 dDd1„Z8	 	 	 	 	 	 	 	 	 	 d>d2„Z9d=dEd3„Z:dFd4„Z;y)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                  ó   — e Zd Zddd„Zy)Ú_HighlightFuncc                 ó   — y)z'Apply highlighting to the given source.N© )ÚselfÚsourceÚlexers      úXC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\_pytest/assertion/util.pyÚ__call__z_HighlightFunc.__call__*   s   � ó    N)Úpython)r   Ústrr   zLiteral['diff', 'python']Úreturnr    )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   )   s   „ õ6r   r   c                óP   — t        | «      }t        |«      }dj                  |«      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)ÚexplanationÚlinesÚresults      r   Úformat_explanationr-   .   s'   € ô ˜{Ó+€EÜ˜5Ó!€FØ�9‰9�VÓÐr   c                ó¦   — | xs dj                  d«      }|d   g}|dd D ]-  }|r|d   dv r|j                  |«       Œ|dxx   d|z   z  cc<   Œ/ |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'   =   sh   € ð Ò" ×)Ñ)¨$Ó/€IØ�q‰\ˆN€EØ˜A˜B“-ˆÙ�f˜Q‘iÐ#7Ñ7Ø�L‰L˜Õ à�"‹I˜ ™Ñ'ŒIð	  ð
 €Lr   c                ó¤  — t        | dd «      }dg}dg}| dd D �]"  }|j                  d«      ro|d   rd}nd}|j                  t        |«      «       |dxx   dz  cc<   |j                  d«       |j                  dd	t        |«      dz
  z  z   |z   |dd z   «       Œ„|j                  d
«      r4|j	                  «        |j	                  «        ||d   xx   |dd z  cc<   ŒÉ|d   dv sJ ‚|dxx   dz  cc<   |j                  d«      rt        |«      nt        |«      dz
  }|j                  d	|z  |dd z   «       �Œ% t        |«      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.
    Nr0   r   r1   r5   zand   zwhere z +ú  r2   )r3   r4   r3   )ÚlistÚ
startswithr7   ÚlenÚpop)r+   r,   ÚstackÚstackcntÚlineÚsÚindents          r   r(   r(   N   sM  € ô �%˜˜�)‹_€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Ø�5˜‘9Ó  a b Ñ)Ôà˜‘7˜jÑ(Ð(Ð(Ø�"‹I˜‰N‹IØ#'§?¡?°3Ô#7”S˜”Z¼SÀ»ZÈ!¹^ˆFØ�M‰M˜$ ™-¨$¨q¨r¨(Ñ2Ö3ð% ô& ˆu‹:˜Š?Ðˆ?Ø€Mr   c                óp   — t        | t        j                  j                  «      xr t        | t        «       S ©N)Ú
isinstanceÚcollectionsÚabcr   r    ©Úxs    r   Ú
issequencerL   q   s(   € Ü�aœŸ™×1Ñ1Ó2ÒM¼:ÀaÌÓ;MÐ7MÐMr   c                ó"   — t        | t        «      S rF   )rG   r    rJ   s    r   ÚistextrN   u   s   € Ü�aœÓÐr   c                ó"   — t        | t        «      S rF   )rG   ÚdictrJ   s    r   ÚisdictrQ   y   s   € Ü�aœÓÐr   c                ó.   — t        | t        t        f«      S rF   )rG   ÚsetÚ	frozensetrJ   s    r   ÚissetrU   }   s   € Ü�aœ#œyÐ)Ó*Ð*r   c                óD   — t        | t        «      xr t        | dd «      d uS )NÚ_fields)rG   ÚtupleÚgetattr©Úobjs    r   Úisnamedtupler\   �   s"   € Ü�cœ5Ó!ÒO¤g¨c°9¸dÓ&CÈ4Ð&OÐOr   c                ó    — t        | dd «      d uS )NÚ__dataclass_fields__©rY   rZ   s    r   Ú	isdataclsr`   …   s   € Ü�3Ð.°Ó5¸TÐAÐAr   c                ó    — t        | dd «      d uS )NÚ__attrs_attrs__r_   rZ   s    r   Úisattrsrc   ‰   s   € Ü�3Ð)¨4Ó0¸Ð<Ð<r   c                óP   — 	 t        | «       t        | «       S # t        $ r Y yw xY w)NF)ÚiterrN   Ú	ExceptionrZ   s    r   Ú
isiterablerg   �   s,   € ðÜˆSŒ	Ü˜#“;ˆÐøÜò Ùðús   ‚ ™	%¤%c                óØ   — t        | j                  d«      rTt        | j                  j                  d«      r4| j                  j                  j                  }t	        | «      rd|v S |dk(  S y)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__ri   rj   rc   )r[   Úcode_filenames     r   Úhas_default_eqrn   •   sZ   € ô ˆs�z‰z˜:Ô&¬7°3·:±:×3FÑ3FÈÔ+VØŸ
™
×+Ñ+×7Ñ7ˆä�3Œ<Ø'¨=Ð8Ð8à 
Ñ*Ð*Ør   c                ó˜  — | j                  t        j                  «      }t        |t        «      xr+ t        |t        «      xr t        d|«      t        d|«      k(  }|dkD  rt        ||¬«      }t        ||¬«      }n0dt        |«      z
  dz
  dz  }t        |||¬«      }t        |||¬«      }|› d|› d|› �}	| j                  «       j                  }
d}	 |d	k(  rt        |||
|«      }nï|d
k(  r$t        |«      rßt        |«      rÔt        |||«      }nÆ|dk(  rt        |«      r¶t        |«      r«dg}n§|dk(  r%t        |«      r—t        |«      rŒt        |||
|«      }n}|dk(  r%t        |«      rmt        |«      rbt!        |||
|«      }nS|dk(  r%t        |«      rCt        |«      r8t#        |||
|«      }n)|dk(  r$t        |«      rt        |«      rt%        |||
|«      }|sy|d   dk7  rdg|¢}|	g|¢S # t&        j(                  $ r ‚ t*        $ rA t,        j.                  j0                  j3                  «       j5                  «       }d|› d�dg}Y Œqw xY w)z<Return specialised explanations for some operators/operands.ÚNFDr0   )Ú	use_asciiéA   é   )Úmaxsizerq   Ú Nz==znot inz!=úBoth sets are equalz>=z<=r4   Ú<z<(pytest_assertion plugin: representation of details failed: Ú.z+ Probably an object has a faulty __repr__.)r   r/   )Úget_verbosityr   ÚVERBOSITY_ASSERTIONSrG   r    r   r   r>   r   Úget_terminal_writerÚ
_highlightÚ_compare_eq_anyrN   Ú_notin_textrU   Ú_compare_gte_setÚ_compare_lte_setÚ_compare_gt_setÚ_compare_lt_setr   ÚExitrf   Ú_pytestÚ_codeÚExceptionInfoÚfrom_currentÚ_getreprcrash)ÚconfigÚopÚleftÚrightrq   ÚverboseÚ	left_reprÚ
right_reprrt   ÚsummaryÚhighlighterr*   Ú
repr_crashs                r   Úassertrepr_comparer“   ª   sQ  € ð ×"Ñ"¤6×#>Ñ#>Ó?€Gô
 	�4œÓò 	>Ü�uœcÓ"ò	>ä�e˜TÓ"¤i°°uÓ&=Ñ=ð ð �‚{Ü& t°yÔAˆ	Ü'¨¸ÔC‰
ð
 ”c˜"“gÑ Ñ!Øñˆô ˜T¨7¸iÔHˆ	Ü˜e¨WÀ	ÔJˆ
à�˜1˜R˜D  * Ð.€GØ×,Ñ,Ó.×9Ñ9€Kà€Kð
Ø�Š:Ü)¨$°°{ÀGÓL‰KØ�8Š^Ü�dŒ|¤ u¤Ü)¨$°°wÓ?‘Ø�4ŠZÜ�TŒ{œu Uœ|Ø4Ð5‘Ø�4ŠZÜ�TŒ{œu Uœ|Ü.¨t°U¸KÈÓQ‘Ø�4ŠZÜ�TŒ{œu Uœ|Ü.¨t°U¸KÈÓQ‘Ø�3ŠYÜ�TŒ{œu Uœ|Ü-¨d°E¸;ÈÓP‘Ø�3ŠYÜ�TŒ{œu Uœ|Ü-¨d°E¸;ÈÓP�ñ Øà�1�~˜ÒØÐ(˜KÐ(ˆØÐ"�kÐ"Ð"øô �=‰=ò ØÜò 
Ü—]‘]×0Ñ0×=Ñ=Ó?×MÑMÓOˆ
àJÈ:È,ÐVWÐXØ9ð
Šð
ús   ÃDG, Ç,AI	ÉI	c                óÆ  — g }t        | «      rt        |«      rt        | ||«      }|S ddlm} t	        | |«      st	        ||«      r2t	        | |«      r| n|}t	        | |«      r|n| }|j                  |«      }n´t        | «      t        |«      u r0t        | «      st        | «      st        | «      rt        | |||«      }nnt        | «      rt        |«      rt        | |||«      }nIt        | «      rt        |«      rt        | |||«      }n$t        | «      rt        |«      rt!        | |||«      }t#        | «      r*t#        |«      rt%        | |||«      }|j'                  |«       |S )Nr   )Ú
ApproxBase)rN   Ú
_diff_textÚ_pytest.python_apir•   rG   Ú_repr_compareÚtyper`   rc   r\   Ú_compare_eq_clsrL   Ú_compare_eq_sequencerU   Ú_compare_eq_setrQ   Ú_compare_eq_dictrg   Ú_compare_eq_iterableÚextend)	r‹   rŒ   r‘   r�   r*   r•   Úapprox_sideÚ
other_sideÚexpls	            r   r}   r}   ð   s6  € ð €KÜˆd„|œ˜uœÜ   u¨gÓ6ˆð: Ðõ7 	2ä�d˜JÔ'¬:°e¸ZÔ+Hä",¨T°:Ô">™$ÀEˆKÜ",¨T°:Ô">™ÀDˆJà%×3Ñ3°JÓ?‰KÜ�$‹Zœ4 ›;Ñ&Ü�dŒOœw tœ}´¸TÔ0Bô *¨$°°{ÀGÓL‰KÜ˜Ô¤*¨UÔ"3Ü.¨t°U¸KÈÓQ‰KÜ�4Œ[œU 5œ\Ü)¨$°°{ÀGÓL‰KÜ�DŒ\œf UœmÜ*¨4°¸ÀWÓMˆKä�dÔ¤
¨5Ô 1Ü'¨¨e°[À'ÓJˆDØ×Ñ˜tÔ$àÐr   c                óÂ  — ddl m} g }|dk  rµd}t        t        t	        | «      t	        |«      «      «      D ]  }| |   ||   k7  sŒ n |dkD  r|dz  }d|› d�g}| |d } ||d }t	        | «      t	        |«      k(  rHt        t	        | «      «      D ]  }| |    ||    k7  sŒ n |dkD  r|dz  }|d|› d	�gz  }| d|  } |d|  }d
}| j                  «       s|j                  «       r.t        t        | «      «      } t        t        |«      «      }|dgz  }| ||j                  |«      | j                  |«      «      D �cg c]  }|j                  d«      ‘Œ c}z  }|S c c}w )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   )Úndiffr0   é*   é
   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Úminr>   ÚisspaceÚreprr    Ú
splitlinesÚstrip)r‹   rŒ   r�   r¤   r*   ÚiÚkeependsrB   s           r   r–   r–     s¦  € õ à€Kà�‚{ØˆÜ”sœ3˜t›9¤c¨%£jÓ1Ö2ˆAØ�A‰w˜% ™(Ó"Ùð 3ð ˆrŠ6Ø�‰GˆAà˜A˜3ÐSÐTðˆKð ˜˜�8ˆDØ˜!˜"�IˆEÜˆt‹9œ˜E›
Ò"Üœ3˜t›9Ö%�Ø˜˜‘8˜u a 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                óp  — |dk  rt        «       sdgS dd l}t        «       j                  | «      j	                  «       }t        «       j                  |«      j	                  «       }ddg}|j                   |dj                  d„ |j                  ||«      D «       «      d¬«      j	                  «       «       |S )	Nr   zUse -v to get more diffr/   z
Full diff:r&   c              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wrF   )Úrstrip)Ú.0rB   s     r   Ú	<genexpr>z'_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×-Ñ-¨dÓ3×>Ñ>Ó@€OÜ$“×.Ñ.¨uÓ5×@Ñ@ÓBÐà�|Ð$€Kð ×ÑÙØ�I‰Iñ à#ŸM™MÐ*:¸OÔLóó ð ô	
÷ ‰*‹,ôð Ðr   c                ó2  — t        | t        «      xr t        |t        «      }g }t        | «      }t        |«      }t        t	        ||«      «      D ]d  }| |   ||   k7  sŒ|r| ||dz    }	|||dz    }
n
| |   }	||   }
|j                  d|› d |t        |	«      «      › d |t        |
«      «      › �«        n |r|S ||z
  }|rU|dkD  rd}t        | |   «      }nd|z
  }d}t        ||   «      }|dk(  r||› d ||«      › �gz  }|S |d	|| ||«      fz  gz  }|S )
Nr0   z	At index z diff: ú != r   ÚLeftÚRightz contains one more item: z/%s contains %d more items, first extra item: %s)rG   Úbytesr>   r¨   r©   r7   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  s‰  € ô ! ¤uÓ-ÒJ´*¸UÄEÓ2J€OØ€KÜ�4‹y€HÜ�E“
€IÜ”3�x Ó+Ö,ˆØ�‰7�e˜A‘hÓÙð " ! a¨!¡e˜_�
Ø# A¨¨A©Ð.‘à! !™W�
Ø# A™h�à×ÑØ˜A˜3ð Ù¤ ZÓ 0Ó1Ð2°$±{Ä4ÈÓCTÓ7UÐ6VðXôñ ð+ -ñ. ð Ðà˜)Ñ#€HÙØ�aŠ<Ø"ˆMÜ˜T )™_Ó-‰Eà˜8‘|ˆHØ#ˆMÜ˜U 8™_Ó-ˆEà�qŠ=ØØ �/Ð!:¹;ÀuÓ;MÐ:NÐOðñ ˆKð Ðð	 ØAØ  (©K¸Ó,>Ð?ñ@ðñ ˆKð Ðr   c                ó~   — g }|j                  t        d| ||«      «       |j                  t        d|| |«      «       |S )Nr‹   rŒ   )rŸ   Ú_set_one_sided_diff©r‹   rŒ   r‘   r�   r*   s        r   rœ   rœ   Ÿ  sC   € ð €KØ×ÑÔ*¨6°4¸ÀÓLÔMØ×ÑÔ*¨7°E¸4ÀÓMÔNØÐr   c                ó*   — t        | ||«      }|sdgS |S ©Nrv   )r   rÉ   s        r   r�   r�   «  ó$   € ô # 4¨°Ó<€KÙØ%Ð&Ð&ØÐr   c                ó*   — t        | ||«      }|sdgS |S rË   )r€   rÉ   s        r   r‚   r‚   ·  rÌ   r   c                ó   — t        d|| |«      S )NrŒ   ©rÈ   ©r‹   rŒ   r‘   r�   s       r   r   r   Ã  s   € ô ˜w¨¨t°[ÓAÐAr   c                ó   — t        d| ||«      S )Nr‹   rÏ   rÐ   s       r   r€   r€   Ì  s   € ô ˜v t¨U°KÓ@Ð@r   c                ó�   — g }||z
  }|r<|j                  d| › d�«       |D ]"  }|j                   |t        |«      «      «       Œ$ |S )NzExtra items in the z set:)r7   r   )ÚposnÚset1Úset2r‘   r*   rµ   Úitems          r   rÈ   rÈ   Õ  sT   € ð €KØ�$‰;€DÙØ×ÑÐ0°°°eÐ<Ô=ÛˆDØ×Ñ™{¬8°D«>Ó:Õ;ð àÐr   c                óü  — g }t        | «      }t        |«      }|j                  |«      }|D �ci c]  }| |   ||   k(  sŒ|| |   “Œ }	}|	r|dk  r|dt        |	«      › d�gz  }n4|	r2|dgz  }| |t        j                  |	«      «      j                  «       z  }|D �ch c]  }| |   ||   k7  sŒ|’Œ }
}|
rA|dgz  }|
D ]6  }| |t        || |   i«      «      dz    |t        |||   i«      «      z   gz  }Œ8 ||z
  }t        |«      }|rg|j                  d||dk(  rd	nd
fz  «       |j                   |t        j                  |D �ci c]  }|| |   “Œ
 c}«      «      j                  «       «       ||z
  }t        |«      }|rg|j                  d||dk(  rd	nd
fz  «       |j                   |t        j                  |D �ci c]  }|||   “Œ
 c}«      «      j                  «       «       |S c c}w c c}w c c}w c c}w )Nrs   ú	Omitting ú! identical items, use -vv to showzCommon items:zDiffering items:r»   zLeft contains %d more item%s:r0   r/   rC   zRight contains %d more item%s:)	rS   Úintersectionr>   Úpprintr·   r¬   r   r7   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�   ä  sQ  € ð  €KÜ�4‹y€HÜ�E“
€IØ×"Ñ" 9Ó-€FÙ &Ó>¡˜1¨$¨q©'°U¸1±XÓ*=ˆAˆt�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¨¨5°©8 }Ó5Ó6ñ7ðñ ‰Kð ð ˜IÑ%€JÜ˜“_€NÙØ×ÑØ+Ø ^°qÒ%8™r¸cÐBñCô	
ð 	×ÑÙœŸ™¹JÓ'G¹J°q¨¨4°©7©
¸JÑ'GÓHÓI×TÑTÓVô	
ð ˜hÑ&€KÜ˜+Ó&€OÙØ×ÑØ,Ø o¸Ò&:¡ÀÐDñEô	
ð 	×ÑÙœŸ™¹[Ó'I¹[¸¨¨5°©8©¸[Ñ'IÓJÓK×VÑVÓXô	
ð ÐùòG ?ùò 6ùò" (Hùò (Js"   ®G*¿G*ÂG/Â-G/ÅG4Æ>G9c                ó,  — t        | «      sg S t        | «      r<dd l}|j                  | «      }|D �cg c]  }|j                  sŒ|j
                  ‘Œ }}nXt        | «      r3| j                  }|D �cg c]  }t        |d«      sŒ|j
                  ‘Œ }}nt        | «      r| j                  }nJ ‚d}	g }
g }|D ]>  }t        | |«      t        ||«      k(  r|
j                  |«       Œ.|j                  |«       Œ@ g }|
s|r|dgz  }|
r$|dk  r|j                  dt        |
«      › d�«       n4|
r2|dgz  }| |t        j                  |
«      «      j                  «       z  }|r§|d	gz  }| |t        j                  |«      «      j                  «       z  }|D ]p  }t        | |«      }t        ||«      }|dd
|› d�|	› |› d |t!        |«      «      › d |t!        |«      «      › �gz  }|t#        ||||«      D �cg c]  }|	|z   ‘Œ	 c}z  }Œr |S c c}w c c}w c c}w )Nr   Úeqr;   r/   rs   rØ   rÙ   zMatching attributes:zDiffering attributes:z$Drill down into differing attribute Ú:z: r»   )rn   r`   ÚdataclassesÚfieldsÚcompareÚnamerc   rb   rY   r\   rW   r7   r>   rÛ   r·   r¬   r«   r}   )r‹   rŒ   r‘   r�   rè   Ú
all_fieldsÚinfoÚfields_to_checkÚfieldrD   rà   rµ   r*   Ú
field_leftÚfield_rightrB   s                   r   rš   rš     sC  € ô ˜$ÔØˆ	Ü�„Ûà ×'Ñ'¨Ó-ˆ
Ù1;ÓL±¨¸t¿|»|˜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Ü   uÓ-ˆ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   ²HÁHÁ0HÂHÇ2Hc                ód  — |j                  | «      }|d | }||t        | «      z   d  }||z   }t        |||«      }t        | d¬«      › d�g}|D ]`  }	|	j	                  d«      rŒ|	j	                  d«      rŒ'|	j	                  d«      r|j                  d|	dd  z   «       ŒP|j                  |	«       Œb |S )	Nr¥   )rt   z is contained here:ÚSkippingz- z+ r;   rs   )Úfindr>   r–   r   r=   r7   )
ÚtermÚtextr�   ÚindexÚheadÚtailÚcorrect_textrµ   ÚnewdiffrB   s
             r   r~   r~   K  s¼   € Ø�I‰I�d‹O€EØ��ˆ<€DØ�œ˜D›	Ñ!Ð#Ð$€DØ˜$‘;€LÜ�d˜L¨'Ó2€DÜ˜4¨Ô,Ð-Ð-@ÐAÐB€GÛˆØ�?‰?˜:Ô&ØØ�?‰?˜4Ô ØØ�?‰?˜4Ô Ø�N‰N˜4 $ q 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  ó@   K  — | ]  }|t         j                  v –— Œ y ­wrF   )ÚosÚenviron)r³   Úvars     r   r´   z running_on_ci.<locals>.<genexpr>a  s   è ø€ Ð5©H Sˆ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  )rK   r   r!   Úbool)r[   r   r!   r  )r[   Úobjectr!   r  )F)
rŠ   r    r‹   r   rŒ   r   rq   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.abcrH   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   r-   r'   r(   rL   rN   rQ   rU   r\   r`   rc   rg   rn   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   