+
    -jQP                      a  0 t $ R t^ RIHt ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RIH
t ^ RIt^ RIHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt RtR] R&   Rt!R] R&   Rt"R] R&    ! R R]4      t#RPR R llt$R R lt%R R lt&R  R! lt'R" R# lt(R$ R% lt)R& R' lt*R( R) lt+R* R+ lt,R, R- lt-R. R/ lt.R0 R1 lt/R2 R3 lt0RQR4 R5 llt1RRR6 R7 llt2RRR8 R9 llt3RRR: R; llt4RRR< R= llt5RRR> R? llt6RRR@ RA llt7RRRB RC llt8RRRD RE llt9RRRF RG llt:RH RI lt;RRRJ RK llt<RL RM lt=RRRN RO llt>R# )Sz"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                  &    ] tR t^)tRR R lltRtR# )_HighlightFuncc               $    V ^8  d   QhRRRRRR/#    sourcestrlexerzLiteral['diff', 'python']return )formats   "k/Users/mitch_tango/dev/rabbit-r1-livekit/agent/.venv/lib/python3.14/site-packages/_pytest/assertion/util.py__annotate___HighlightFunc.__annotate__*   s#     6 6s 6+D 6TW 6    c                    R# )z'Apply highlighting to the given source.Nr   )selfr   r   s   &&&r    __call___HighlightFunc.__call__*   s    r#   r   Npython)__name__
__module____qualname____firstlineno__r&   __static_attributes__r   r#   r    r   r   )   s    6 6r#   r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r    r!   r!   .   s#      c *C SV r#   c                    V # )zDummy 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_highlighterr1   .   s	    
 Mr#   c                    V ^8  d   QhRRRR/# )r   explanationr   r   r   )r   s   "r    r!   r!   6   s      C C r#   c                P    \        V 4      p\        V4      pRP                  V4      # )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)r3   linesresults   &  r    format_explanationr;   6   s'     {+E5!F99Vr#   c                    V ^8  d   QhRRRR/# )r   r3   r   r   	list[str]r   )r   s   "r    r!   r!   E   s      C I r#   c                    T ;'       g    RP                  R4      pV^ ,          .pVR,           FH  pV'       d"   V^ ,          R9   d   VP                  V4       K,  VR;;,          RV,           ,          uu&   KJ  	  V# )zReturn 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.
 r5      NNz\n){}~>)splitappend)r3   	raw_linesr9   valuess   &   r    r6   r6   E   sk     ""))$/Iq\NEB--fQi#77LL "I'I	  
 Lr#   c                    V ^8  d   QhRRRR/# )r   r9   zSequence[str]r   r=   r   )r   s   "r    r!   r!   V   s          9  r#   c                   \        V R,          4      p^ .p^ .pV R,           EF  pVP                  R4      '       d   VR
,          '       d   RpMRpVP                  \        V4      4       VR
;;,          ^,          uu&   VP                  ^ 4       VP                  RR\        V4      ^,
          ,          ,           V,           VR,          ,           4       K  VP                  R4      '       dF   VP	                  4        VP	                  4        WR
,          ;;,          VR,          ,          uu&   EK  V^ ,          R9   g   Q hVR
;;,          ^,          uu&   VP                  R	4      '       d   \        V4      M\        V4      ^,
          pVP                  RV,          VR,          ,           4       EK  	  \        V4      ^8X  g   Q hV# )zFormat 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.
:NrA   Nr@   rB   zand   zwhere z +  rC   rD   rF   )rD   rE   )list
startswithrH   lenpop)r9   r:   stackstackcntlinesindents   &      r    r7   r7   V   sN    %)_FCEsHb		??3||LLV%RLALOOAMM$Ua!881<tBxGH__S!!IIKLLN9b)7j((("INI#'??3#7#7SZSZ!^FMM$-$r(23% & u:??Mr#   c                    V ^8  d   QhRRRR/# r   xr   r   boolr   )r   s   "r    r!   r!   y   s     N N# N$ Nr#   c                    \        V \        P                  P                  4      ;'       d    \        V \        4      '       * # N)
isinstancecollectionsabcr   r   rY   s   &r    
issequencera   y   s+    a112MM:a;M7MMr#   c                    V ^8  d   QhRRRR/# rX   r   )r   s   "r    r!   r!   }   s      c d r#   c                "    \        V \        4      # r\   )r]   r   r`   s   &r    istextrd   }   s    ar#   c                    V ^8  d   QhRRRR/# rX   r   )r   s   "r    r!   r!      s      c d r#   c                "    \        V \        4      # r\   )r]   dictr`   s   &r    isdictrh      s    ar#   c                    V ^8  d   QhRRRR/# rX   r   )r   s   "r    r!   r!      s     * *S *T *r#   c                8    \        V \        \        ,          4      # r\   )r]   set	frozensetr`   s   &r    issetrm      s    ay))r#   c                    V ^8  d   QhRRRR/# r   objr   r   rZ   r   )r   s   "r    r!   r!      s     P Pc Pd Pr#   c                P    \        V \        4      ;'       d    \        V R R4      RJ# )_fieldsN)r]   tuplegetattrrp   s   &r    isnamedtuplerv      s%    c5!OOgc9d&C4&OOr#   c                    V ^8  d   QhRRRR/# ro   r   )r   s   "r    r!   r!      s     B B3 B4 Br#   c                     \        V R R4      RJ# )__dataclass_fields__Nrt   ru   s   &r    	isdataclsr{      s    3.5TAAr#   c                    V ^8  d   QhRRRR/# ro   r   )r   s   "r    r!   r!      s     = = = =r#   c                     \        V R R4      RJ# )__attrs_attrs__Nrz   ru   s   &r    isattrsr      s    3)40<<r#   c                    V ^8  d   QhRRRR/# ro   r   )r   s   "r    r!   r!      s      C D r#   c                ^     \        V 4       \        V 4      '       * #   \         d     R # i ; iF)iterrd   	Exceptionru   s   &r    
isiterabler      s,    S	#; s    ,,c                    V ^8  d   QhRRRR/# )r   rp   objectr   rZ   r   )r   s   "r    r!   r!      s      		r#   c                    \        V P                  R4      '       db   \        V P                  P                  R4      '       d<   V P                  P                  P                  p\	        V 4      '       d   RV9   # VR8H  # R# )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__r   r   r   )rp   code_filenames   & r    has_default_eqr      sb     szz:&&73::3F3F+V+V

++773<<%66
**r#   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r   opr   leftr   right	use_asciirZ   r   zlist[str] | Noner   )r   s   "r    r!   r!      s;     C# C#C#C#'*C#7;C#C#r#   c                   V P                  \        P                  4      p\        V\        4      ;'       d2    \        V\        4      ;'       d    \        RV4      \        RV4      8H  pV^8  d   \        W$R7      p\        W4R7      pM:^A\        V4      ,
          ^,
          ^,          p\        W(VR7      p\        W8VR7      pV RV RV 2p	V P                  4       P                  p
Rp VR8X  d   \        W#W4      pEM;VR8X  d1   \        V4      '       d   \        V4      '       d   \        W#V4      pEMVR8X  d'   \        V4      '       d   \        V4      '       d   R	.pMVR
8X  d0   \        V4      '       d   \        V4      '       d   \        W#W4      pMVR8X  d0   \        V4      '       d   \        V4      '       d   \!        W#W4      pMkVR8X  d0   \        V4      '       d   \        V4      '       d   \#        W#W4      pM5VR8X  d/   \        V4      '       d   \        V4      '       d   \%        W#W4      pV'       g   R# V^ ,          R8w  d   R.VOpV	.VO#   \&        P(                   d    h \*         dB    \,        P.                  P0                  P3                  4       P5                  4       pRT R2R.p Li ; i)z<Return specialised explanations for some operators/operands.NFD)r   )maxsizer    Nz==znot inz!=Both sets are equalz>=z<=rE   <z<(pytest_assertion plugin: representation of details failed: .z+ Probably an object has a faulty __repr__.)r?   )get_verbosityr   VERBOSITY_ASSERTIONSr]   r   r   r   rP   r   get_terminal_writer
_highlight_compare_eq_anyrd   _notin_textrm   _compare_gte_set_compare_lte_set_compare_gt_set_compare_lt_setr   Exitr   _pytest_codeExceptionInfofrom_current_getreprcrash)configr   r   r   r   verbose	left_repr
right_reprr   summaryhighlighterr3   
repr_crashs   &&&&&        r    assertrepr_comparer      sZ    ""6#>#>?G
 	4 	> 	>uc"	> 	>eT"iu&==  {&tA	'C

 c"g! TiH	e	J
1RD*.G,,.99KK
:)${LK8^d||u)$w?4ZT{{uU||454ZT{{uU||.tKQ4ZT{{uU||.tKQ3YT{{uU||-d;P3YT{{uU||-d;P 1~(K("k"" ==  
]]00==?MMO
J:,VWX9

s<   *I ?5I 6,I #5I 5I 5I 5I J=;?J=<J=c          
     ,    V ^8  d   QhRRRRRRRRRR	/# 
r   r   r   r   r   r   r   intr   r=   r   )r   s   "r    r!   r!      s4     " "
""(6"AD""r#   c                x   . p\        V 4      '       d    \        V4      '       d   \        WW#4      pV# ^ RIHp \	        W4      '       g   \	        W4      '       d=   \	        W4      '       d   T MTp\	        W4      '       d   TMT pVP                  V4      pM\        V 4      \        V4      J dA   \        V 4      '       g#   \        V 4      '       g   \        V 4      '       d   \        WW#4      pM\        V 4      '       d   \        V4      '       d   \        WW#4      pM]\        V 4      '       d   \        V4      '       d   \        WW#4      pM.\        V 4      '       d   \        V4      '       d   \!        WW#4      p\#        V 4      '       d/   \#        V4      '       d   \%        WW#4      pVP'                  V4       V# )    )
ApproxBase)rd   
_diff_text_pytest.python_apir   r]   _repr_comparetyper{   r   rv   _compare_eq_clsra   _compare_eq_sequencerm   _compare_eq_setrh   _compare_eq_dictr   _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">">$EK",T">">DJ%33J?K$Z4;&dOOwt}}T0B0B *${LK*U"3"3.tKQK4[[U5\\)${LKD\\fUmm*4MKd
5 1 1'[JDt$r#   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r   r   r   r   r   r   r   r   r   r=   r   )r   s   "r    r!   r!     4     4 4
44(64AD44r#   c                Z   ^ RI Hp . pV^8  d   ^ p\        \        \	        V 4      \	        V4      4      4       F  pW,          W,          8w  g   K   M	  V^*8  d   V^
,          pRV R2.pWR p WR p\	        V 4      \	        V4      8X  d]   \        \	        V 4      4       F  pW) ,          W) ,          8w  g   K   M	  V^*8  d$   V^
,          pVRV R2.,          pV RV)  p VRV)  pRpV P                  4       '       g   VP                  4       '       d3   \        \        V 4      4      p \        \        V4      4      pVR.,          pVP                  V! RP                  R	 V! VP                  V4      V P                  V4      4       4       4      R
R7      P                  4       4       V# )zReturn 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.
)ndiffz	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()r5   c              3  D   "   T F  pVP                  R 4      x  K  	  R# 5i)r5   N)strip.0rT   s   & r    	<genexpr>_diff_text.<locals>.<genexpr>J  s#      XD 

4  Xs    diffr   )difflibr   rangeminrP   isspacereprr   r   r8   
splitlines)r   r   r   r   r   r3   ikeependss   &&&&    r    r   r     s    K{s3t9c%j12Aw%(" 3 r6GAA3STK 8D"IEt9E
"3t9%8uRy( & 2vRs #9 9   CaRycr
H||~~CISZ UVV II !%"2"28"<dooh>WX  	
 *, r#   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r   r   zIterable[Any]r   r   r   r   r   r   r=   r   )r   s   "r    r!   r!   T  s:      
   	
 r#   c                ~   V^ 8:  d   \        4       '       g   R.# ^ RIp\        4       P                  V 4      P	                  4       p\        4       P                  V4      P	                  4       pRR.pVP                  V! RP                  R VP                  We4       4       4      RR7      P	                  4       4       V# )	r   zUse -v to get more diffNr?   z
Full diff:r5   c              3  B   "   T F  pVP                  4       x  K  	  R # 5ir\   )rstripr   s   & r    r   '_compare_eq_iterable.<locals>.<genexpr>g  s      LD Ls   r   r   )r   r   r   pformatr   r   r8   r   )r   r   r   r   r   left_formattingright_formattingr3   s   &&&&    r    r   r   T  s     !|MOO)**#o--d3>>@O$..u5@@B|$K II #MM*:L  	
 *, r#   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r   r   zSequence[Any]r   r   r   r   r   r   r=   r   )r   s   "r    r!   r!   q  s:     9 9
99  9 	9
 9r#   c                   \        V \        4      ;'       d    \        V\        4      p. p\        V 4      p\        V4      p\        \	        Wg4      4       F  pW,          W,          8w  g   K  V'       d   WV^,            p	WV^,            p
MW,          p	W,          p
VP                  RV RV! \        V	4      4       RV! \        V
4      4       24        M	  V'       d   V# Wg,
          pV'       dn   V^ 8  d   Rp\        W,          4      pM^ V,
          pRp\        W,          4      pV^8X  d   VV RV! V4       2.,          pV# VV RV RV! V4       2.,          pV# )	rA   z	At index z diff:  != LeftRightz contains one more item: z
 contains z more items, first extra item: )r]   bytesrP   r   r   rH   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  s}    !u-JJ*UE2JOK4yHE
I3x+,7eh "a!e_
#A.!W
#hA3 Z 012${4CT7U6VX + -.  #Ha<"MT_-E8|H#MU_-Eq= /!:;u;M:NO K   /H:5TU`afUgThi K r#   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# 
r   r   AbstractSet[Any]r   r   r   r   r   r   r=   r   )r   s   "r    r!   r!     :     	 	
		  	 		
 	r#   c                z    . pVP                  \        R WV4      4       VP                  \        RWV4      4       V# )r   r   )r   _set_one_sided_diffr   r   r   r   r3   s   &&&& r    r   r     s?     K*64LM*7EMNr#   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# r   r   )r   s   "r    r!   r!     r   r#   c                4    \        WV4      pV'       g   R .# V# r   )r   r   s   &&&& r    r   r     "     #4<K%&&r#   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# r   r   )r   s   "r    r!   r!     r   r#   c                4    \        WV4      pV'       g   R .# V# r   )r   r   s   &&&& r    r   r     r   r#   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# r   r   )r   s   "r    r!   r!     sA     B B
BB  B 	B
 Br#   c                    \        R WV4      # )r   r   r   r   r   r   s   &&&&r    r   r     s     w[AAr#   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# r   r   )r   s   "r    r!   r!     sA     A A
AA  A 	A
 Ar#   c                    \        R WV4      # )r   r   r   s   &&&&r    r   r     s     vtK@@r#   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r   posnr   set1r   set2r   r   r   r=   r   )r   s   "r    r!   r!     s:      

   	
 r#   c                    . pW,
          pV'       d?   VP                  R V  R24       V F#  pVP                  V! \        V4      4      4       K%  	  V# )zExtra items in the z set:)rH   r   )r  r  r  r   r3   r   items   &&&&   r    r   r     sR     K;D0e<=D{8D>:; r#   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r   r   zMapping[Any, Any]r   r   r   r   r   r   r=   r   )r   s   "r    r!   r!     s:     + +
++  + 	+
 +r#   c                   . p\        V 4      p\        V4      pVP                  V4      pV Uu/ uF!  qV,          W,          8X  g   K  WV,          bK#  	  p	pV	'       d    V^8  d   VR\        V	4       R2.,          pMBV	'       d;   VR.,          pWB! \        P                  ! V	4      4      P                  4       ,          pV Uu0 uF  qV,          W,          8w  g   K  VkK  	  p
pV
'       dZ   VR.,          pV
 FI  pVV! \        WV,          /4      4      R,           V! \        WV,          /4      4      ,           .,          pKK  	  WV,
          p\        V4      pV'       dq   TP                  RT RV^8X  d   RMR	 R
24       TP                  T! \        P                  ! V Uu/ uF  qW,          bK  	  up4      4      P                  4       4       We,
          p\        V4      pV'       dq   TP                  RT RV^8X  d   RMR	 R
24       TP                  T! \        P                  ! V Uu/ uF  qW,          bK  	  up4      4      P                  4       4       V# u upi u upi u upi u upi )r   	Omitting ! identical items, use -vv to showzCommon items:zDiffering items:r   zLeft contains z
 more itemr?   rU   :zRight contains )	rk   intersectionrP   pprintr   r   r   rH   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     sF     K4yHE
I""9-F &>1q'UX*=JAAwJD>!)CI;.OPQQ	(({6>>$#78CCEE5v!aEH!4AAvD5*++AHaa\23h8}567 K  %J_N^,J^q=PrVY6ZZ[\	
 	J'GJq47
J'GHITTV	
 &K+&Oo.jRS?SY\8]]^_	
 	['I[58['IJKVVX	
 C ? 6  (H (Js#   III$I$$I)/I.c          
     ,    V ^8  d   QhRRRRRRRRRR	/# r   r   )r   s   "r    r!   r!      r   r#   c                   \        V 4      '       g   . # \        V 4      '       dE   ^ RIpVP                  V 4      pV Uu. uF"  qfP                  '       g   K  VP
                  NK$  	  ppMm\        V 4      '       d=   V P                  pV Uu. uF#  p\        VR4      '       g   K  VP
                  NK%  	  ppM \        V 4      '       d   V P                  pMQ hRp	. p
. pV F@  p\        W4      \        W4      8X  d   V
P                  V4       K/  VP                  V4       KB  	  . pV
'       g	   V'       d   VR.,          pV
'       d'   V^8  d    VP                  R\        V
4       R24       MBV
'       d;   VR.,          pW! \        P                  ! V
4      4      P                  4       ,          pV'       d   VR.,          pW! \        P                  ! V4      4      P                  4       ,          pV Fz  p\        W4      p\        W4      pVRR	V R
2V	 V RV! \!        V4      4       RV! \!        V4      4       2.,          pT\#        WW#4       Uu. uF  pW,           NK  	  up,          pK|  	  V# u upi u upi u upi )r   NeqrM   r?   r  r  zMatching attributes:zDiffering attributes:z$Drill down into differing attribute r  z: r   )r   r{   dataclassesfieldscomparenamer   r~   rt   rv   rr   rH   rP   r  r   r   r   r   )r   r   r   r   r  
all_fieldsinfofields_to_checkfieldrV   r  r   r3   
field_leftfield_rightrT   s   &&&&            r    r   r      sG    $	 ''-
1;L||9499L	))
3=V:%PTAU:5:::V	d		,,uFDD 475#88KKKK	 ! Ktt!Ys4yk1RST	.//{6>>$#78CCEE/00{6>>$#78CCEEE -J!%/K6ugQ?(5'KZ0@$A#B${SWXcSdGeFfg K
 +[D  K  W M WDs   I2I2
I7#I7I<c               (    V ^8  d   QhRRRRRRRR/# )r   termr   textr   r   r   r=   r   )r   s   "r    r!   r!   W  s(      c  s 9 r#   c                   VP                  V 4      pVR V pW\        V 4      ,           R  pWE,           p\        W\        V4      p\	        V ^*R7       R2.pV F~  p	V	P                  R4      '       d   K  V	P                  R4      '       d   K5  V	P                  R4      '       d"   VP                  RV	R,          ,           4       Km  VP                  V	4       K  	  V# )N)r   z is contained here:Skippingz- z+ rM   :r   NN)findrP   r   r1   r   rO   rH   )
r'  r(  r   indexheadtailcorrect_textr   newdiffrT   s
   &&&       r    r   r   W  s    IIdOE<DD	!#$D;Ld*;WED4,--@ABG??:&&??4  ??4  NN4$r(?+NN4   Nr#   r(   r   )r   )?__conditional_annotations____doc__
__future__r   collections.abcr^   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   r1   r;   r6   r7   ra   rd   rh   rm   rv   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r1  s   @r    <module>r>     s   ( "  $ $ # $ .     !   , ) 3 ( ! DH@ G ;?7 >  6X 6
" FN*PB=*C#L"J4n:9x			BA+\4n r#   