ó
    ùÞ j  ã                  ó   • % S 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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	r"S\#S'   S	r$S\#S'   S	r%S\#S'   Sr&Sr'S\#S'   S r(S!\#S"'   \'\(4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/g	)/z"Utilities for assertion debugging.é    )Úannotations)ÚCallable)ÚIterator)ÚSequence)ÚLiteral)Ú	normalize)ÚoutcomesN)Úsaferepr)Úsaferepr_unlimited)Ú_compare_eq_any)ÚSET_COMPARISON_FUNCTIONS)Úisset)Úistext)Ú_AssertionTextDiffStyle)Ú_HighlightFunc)Ú_notin_text)Údummy_highlighter)ÚConfig)Ú
UsageErrorz2Callable[[str, object, object], str | None] | NoneÚ_reprcomparez&Callable[[int, str, str], None] | NoneÚ_assertion_passzConfig | NoneÚ_configÚassertion_text_diff_styleÚndiffzLiteral['ndiff']ÚASSERTION_TEXT_DIFF_STYLE_NDIFFÚblockzLiteral['block']ÚASSERTION_TEXT_DIFF_STYLE_BLOCKc                óÐ   • [        U R                  [        5      5      nU=S:X  a    U$ =S:X  a    U$    SR                  S [         5       5      n[        [         SU SU< 35      e)Nr   r   z, c              3  ó6   #   • U H  n[        U5      v •  M     g 7f©N)Úrepr)Ú.0Úchoices     ÚP/var/www/html/gaurav/venv/lib/python3.13/site-packages/_pytest/assertion/util.pyÚ	<genexpr>Ú0get_assertion_text_diff_style.<locals>.<genexpr>8   s   é € ð  Ù+L ”�V—�Ò+Lùs   ‚z must be one of z; got )ÚstrÚgetiniÚASSERTION_TEXT_DIFF_STYLE_INIÚjoinÚ!ASSERTION_TEXT_DIFF_STYLE_CHOICESr   )ÚconfigÚstyleÚchoicess      r$   Úget_assertion_text_diff_styler/   2   s{   € Ü�—‘Ô;Ó<Ó=€EØ
ÝÐØˆLõ ÐØˆLð àØ—i‘iñ  Ý+Ló ó ˆGô Ü0Ð1Ð1AÀ'ÀÈ&ÐQVÑPYÐZóð ó    c                ó   • [        U 5        g r    )r/   )r,   s    r$   Ú"validate_assertion_text_diff_styler2   @   s
   € Ü! &Õ)r0   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_linesr*   )ÚexplanationÚlinesÚresults      r$   Úformat_explanationr:   D   s'   € ô ˜{Ó+€EÜ˜5Ó!€FØ�9‰9�VÓÐr0   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.
Ú r4   r   é   N)Ú{Ú}Ú~Ú>éÿÿÿÿz\n)ÚsplitÚappend)r7   Ú	raw_linesr8   Úvaluess       r$   r5   r5   S   sh   € ð ×" ×)Ñ)¨$Ó/€IØ�q‰\ˆN€EØ˜A˜B“-ˆÞ�f˜Q‘iÐ#7Ó7Ø�L‰L˜Ö à�"‹I˜ ™Ñ'�Iñ	  ð
 €Lr0   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.
Nr=   r   r>   rB   zand   zwhere z +z  r?   )r@   rA   r@   )ÚlistÚ
startswithrD   ÚlenÚpop)r8   r9   ÚstackÚstackcntÚlineÚsÚindents          r$   r6   r6   d   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‹:˜‹?Ðˆ?Ø€Mr0   c             #  ó‚  #   • [        U[        5      =(       a0    [        U[        5      =(       a    [        SU5      [        SU5      :H  nUS:”  a  [        XS9n[        X&S9nO(S[	        U 5      -
  S-
  S-  n	[        XUS9n[        X)US9nU SU  SU 3n
 U S:X  a  [        UUUUU5      nOuU S	:X  a-  [        U5      (       a  [        U5      (       a  [        XU5      nOBU S
;   a1  [        U5      (       a!  [        U5      (       a  [        U    " XXC5      nO[        S5      nSnU H  nU(       d  U
v •  US:w  a  Sv •  SnUv •  M      g! [        R                   a    e [         aV    [        R                   R"                  R%                  5       R'                  5       nW(       d
  U
v •  Sv •  SnSU S3v •  Sv •   gf = f7f)a  Yield specialised explanations for some operators/operands.

The first line yielded is always the summary (``left op right``);
subsequent lines are the detailed explanation. Yields nothing when no
specialised explanation applies, which lets consumers map an empty
iterator to "no explanation" without materialising anything.

The iterator is lazy on purpose: a streaming consumer can stop pulling
lines as soon as it has enough to show, so an enormous diff doesn't
have to be built in full just to be thrown away.
ÚNFDr=   )Ú	use_asciiéA   é   )ÚmaxsizerS   Ú z==znot in>   Ú<rA   ú!=ú<=ú>=© Fr<   Tz<(pytest_assertion plugin: representation of details failed: Ú.z+ Probably an object has a faulty __repr__.)N)Ú
isinstancer'   r   r   rJ   r
   r   r   r   r   r   Úiterr	   ÚExitÚ	ExceptionÚ_pytestÚ_codeÚExceptionInfoÚfrom_currentÚ_getreprcrash)ÚopÚleftÚrightÚverboseÚhighlighterr   rS   Ú	left_reprÚ
right_reprrV   ÚsummaryÚsourceÚsummary_yieldedrN   Ú
repr_crashs                  r$   Úassertrepr_comparerr   ‡   sÂ  é € ô. 	�4œÓ÷ 	>Ü�uœcÓ"÷	>ä�e˜TÓ"¤i°°uÓ&=Ñ=ð ð �ƒ{Ü& tÑAˆ	Ü'¨ÑC‰
ð
 ”c˜"“gÑ Ñ!Øñˆô ˜T¸iÑHˆ	Ü˜eÀ	ÑJˆ
à�˜1˜R˜D  * Ð.€Gð%<Ø�‹:Ü$ØØØØØ)ó‰Fð �8‹^¤ t§¡´¸·±Ü  ¨gÓ6‰FØÐ/Ó/´E¸$·K±KÄEÈ%ÇLÁLÜ-¨bÒ1°$¸{ÓT‰Fä˜"“XˆFð  ˆÛˆDÞ"Ø’Ø˜2“:Ø’HØ"&�ØŒJò øô �=‰=ó ØÜó 	<Ü—]‘]×0Ñ0×=Ñ=Ó?×MÑMÓOˆ
ÞØŠMØŠHØ"ˆOàJÈ:È,ÐVWÐXò	
ð <Ô;ð	<üs,   ‚BF?ÂB1E ÅF?ÅA1F<Æ9F?Æ;F<Æ<F?)r,   r   Úreturnr   )r,   r   rs   ÚNone)r7   r'   rs   r'   )r7   r'   rs   ú	list[str])r8   zSequence[str]rs   ru   )rg   r'   rh   Úobjectri   rv   rj   Úintrk   r   r   r   rs   zIterator[str])0Ú__doc__Ú
__future__r   Úcollections.abcr   r   r   Útypingr   Úunicodedatar   rb   r	   Ú_pytest._codeÚ_pytest._io.safereprr
   r   Ú_pytest.assertion._compare_anyr   Ú_pytest.assertion._compare_setr   Ú_pytest.assertion._guardsr   r   Ú_pytest.assertion._typingr   r   Ú_pytest.assertion.compare_textr   Ú_pytest.assertion.highlightr   Ú_pytest.configr   r   r   Ú__annotations__r   r   r)   r   r   r+   r/   r2   r:   r5   r6   rr   r\   r0   r$   Ú<module>r‡      s  ðâ (å "å $Ý $Ý $Ý Ý !å Û Ý )Ý 3Ý :Ý CÝ +Ý ,Ý =Ý 4Ý 6Ý NÝ !Ý %ð DH€Ð@Ó Gð ;?€Ð7Ó >ð €ˆÓ à ;Ð Ø4;Ð Ð!1Ó ;Ø4;Ð Ð!1Ó ;à#Ø#ð%Ð !ôô*ôôô" ðFP<ØðP<à
ðP<ð ðP<ð
 ðP<ð  ðP<ð  7ðP<ð õP<r0   