+
    Spj_                       ^ RI Ht ^ RIHt ^ RI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Ht ^ R
IHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt R R ltR R ltR# )    )annotations)IteratorN)_compare_eq_mapping)_compare_eq_iterable)_compare_eq_sequence)_compare_eq_set)has_default_eq)isattrs)	isdatacls)
isiterable)	ismapping)isnamedtuple)
issequence)isset)istext)_AssertionTextDiffStyle)_HighlightFunc)_compare_eq_textc               0    V ^8  d   QhRRRRRRRRRR	R
R/#    leftobjectrighthighlighterr   verboseintassertion_text_diff_styler   returnzIterator[str] )formats   "E/tmp/pip-target-d46v3snk/lib/python/_pytest/assertion/_compare_any.py__annotate__r#      sL     3O 3O
3O3O  3O 	3O
  73O 3O    c              #    "   \        V 4      '       d+   \        V4      '       d   \        V VVVV4       Rj  xL
  R# ^ RIHp \	        W4      '       d   VP                  V 4       Rj  xL
  EM3\	        W4      '       d   V P                  V4       Rj  xL
  EM\        V 4      \        V4      J dL   \        V 4      '       g#   \        V 4      '       g   \        V 4      '       d   \        V VVVV4       Rj  xL
  M\        V 4      '       d'   \        V4      '       d   \        WW#4       Rj  xL
  Mm\        V 4      '       d'   \        V4      '       d   \        WW#4       Rj  xL
  M6\        V 4      '       d&   \        V4      '       d   \!        WW#4       Rj  xL
  \#        V 4      '       d*   \#        V4      '       d   \%        WW#4       Rj  xL
  R# R# R#  EL ELy ELP L L L LO L5i)zYield the per-line explanation for ``left == right`` (without summary).

Yields nothing when no specialised explanation applies, so consumers
can stream the output and bail out early (e.g. for truncation) without
materialising the entire diff first.
N)
ApproxBase)r   r   _pytest.python_apir&   
isinstance_repr_comparetyper   r
   r   _compare_eq_clsr   r   r   r   r   r   r   r   )r   r   r   r   r   r&   s   &&&&& r"   _compare_eq_anyr,      s     d||u#%
 	
 	
 	2 e((**4000))))%000$Z4;&dOOwt}}T0B0B ')   *U"3"3+DNNN4[[U5\\&tKIIIt__5!1!1*4MMMd
5 1 1+DNNN !2I	
 10 OIM Os   5G2G1G2)G"*+G2G%A#G29G(:6G20G*16G2'G,(6G2G.5G2G0G2"G2%G2(G2*G2,G2.G20G2c               0    V ^8  d   QhRRRRRRRRRR	R
R/# r   r    )r!   s   "r"   r#   r#   O   sD     4$ 4$
4$4$  4$ 	4$
  74$ 4$r$   c              #    "   \        V 4      '       g   R # \        V 4      '       dF   \        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  	  V
'       g	   V'       d   Rx  V
'       d   V^8  d   R\        V
4       R2x  M>V
'       d7   Rx  V! \        P                  ! V
4      4      P                  4        R j  xL
  V'       d   Rx  V! \        P                  ! V4      4      P                  4        R j  xL
  V Fq  p\        W4      p\        W4      pRx  RV R	2x  V	 V R
V! \!        V4      4       RV! \!        V4      4       2x  \#        VVVVV4       F  pW,           x  K  	  Ks  	  R # R # u upi u upi  L L5i)Neqz   z	Omitting z! identical items, use -vv to showzMatching attributes:zDiffering attributes:z$Drill down into differing attribute :z: z != )r	   r   dataclassesfieldscomparenamer
   __attrs_attrs__getattrr   _fieldsappendlenpprintpformat
splitlinesreprr,   )r   r   r   r   r   
all_fieldsinfofields_to_checkfieldindentsamediff
field_leftfield_rightlines   &&&&&          r"   r+   r+   O   s	     $ ''-
1;L||9499L	))
3=V:%PTAU:5:::V	d		,,uFDD 475#88KKKK	 ! t!#d)$EFF	$$v~~d34??AAA%%v~~d34??AAAE -J!%/KH8qAAHUG2k$z2B&C%DDUYZeUfIgHhii') m#  3 M W* 	B 	Bsg   ?III)$II&I6A6I-I5I I"1III 1IIB
II)
__future__r   collections.abcr   r2   r;   "_pytest.assertion._compare_mappingr   #_pytest.assertion._compare_sequencer   r   _pytest.assertion._compare_setr   _pytest.assertion._guardsr	   r
   r   r   r   r   r   r   r   _pytest.assertion._typingr   r   _pytest.assertion.compare_textr   r,   r+   r    r$   r"   <module>rQ      sM    " $   B D D : 4 - / 0 / 2 0 + , = 4 ;3Ol4$r$   