§
    åžyj_  ã                   óÀ   — d Z ddlmZmZ ddlmZ dZdZdZdZ	dZ
dZee	ez   ez   ez   e
z   z
  Zedk    sJ ‚d„ Zd	„ Zdd„Zd„ Zd„ Zd„ Zd„ Z edd¦  «        Zd„ Zd„ ZdS )zVarious utility functions.é    )Ú
namedtupleÚCounter)ÚcommonprefixTéP   é   é   c                 ó–   — t          | ¦  «        |z
  |z
  }|t          k    r(d| d |…         || t          | ¦  «        |z
  d …         fz  } | S )Nz%s[%d chars]%s)ÚlenÚ_PLACEHOLDER_LEN)ÚsÚ	prefixlenÚ	suffixlenÚskips       úe/home/ragecks/.local/share/uv/python/cpython-3.11.15-linux-x86_64-gnu/lib/python3.11/unittest/util.pyÚ_shortenr      sW   € Ýˆq‰6Œ6�IÑ 	Ñ)€DØÕÒÐØ  * 9 *¤¨t°Qµs¸1±v´vÀ	Ñ7IÐ7JÐ7JÔ5KÐLÑLˆØ€Hó    c                  óV  ‡‡— t          t          t          | ¦  «        ¦  «        } t          t          t          | ¦  «        ¦  «        }|t
          k    r| S t          | ¦  «        Št	          ‰¦  «        Št
          |‰z
  t          z   t          z   z
  }|t          k    rZt          t          z   t          z   |‰z
  z   t
          k     sJ ‚t          ‰t          |¦  «        Št          ˆˆfd„| D ¦   «         ¦  «        S t          ‰t          t          ¦  «        Št          ˆˆfd„| D ¦   «         ¦  «        S )Nc              3   ó2   •K  — | ]}‰|‰d …         z   V — Œd S ©N© ©Ú.0r   Úprefixr   s     €€r   ú	<genexpr>z'_common_shorten_repr.<locals>.<genexpr>'   s0   øè è € Ð:Ð:°�V˜a 	 
 
œmÑ+Ð:Ð:Ð:Ð:Ð:Ð:r   c              3   ód   •K  — | ]*}‰t          |‰d …         t          t          ¦  «        z   V — Œ+d S r   )r   Ú_MIN_DIFF_LENÚ_MIN_END_LENr   s     €€r   r   z'_common_shorten_repr.<locals>.<genexpr>*   sP   øè è € ð  ð  Øð �( 1 Y Z Z¤=µ-ÅÑNÔNÑNð  ð  ð  ð  ð  ð  r   )ÚtupleÚmapÚ	safe_reprÚmaxr
   Ú_MAX_LENGTHr   Ú_MIN_BEGIN_LENr   Ú_MIN_COMMON_LENr   )ÚargsÚmaxlenÚ
common_lenr   r   s      @@r   Ú_common_shorten_reprr(      s8  øø€ Ý••Y Ñ%Ô%Ñ&Ô&€DÝ••S˜$‘”Ñ Ô €FØ•ÒÐØˆå˜$ÑÔ€FÝ�F‘”€IåØ˜9Ñ$¥~Ñ5Õ8HÑHñJ€Jà•OÒ#Ð#ÝÕ 0Ñ0µ?ÑBØ˜Ñ"ñ$Ý&1ò2ð 2ð 2ð 2å˜&¥.°*Ñ=Ô=ˆÝÐ:Ð:Ð:Ð:Ð:°TÐ:Ñ:Ô:Ñ:Ô:Ð:å�f�n­oÑ>Ô>€FÝð  ð  ð  ð  ð  Øð ñ  ô  ñ  ô  ð  r   Fc                 óÔ   — 	 t          | ¦  «        }n*# t          $ r t                               | ¦  «        }Y nw xY w|rt	          |¦  «        t
          k     r|S |d t
          …         dz   S )Nz [truncated]...)ÚreprÚ	ExceptionÚobjectÚ__repr__r
   r"   )ÚobjÚshortÚresults      r   r    r    -   sv   € ð&Ý�c‘”ˆˆøÝð &ð &ð &Ý—’ Ñ%Ô%ˆˆˆð&øøøàð •C˜‘K”K¥+Ò-Ð-ØˆØ�,•;�,ÔÐ"3Ñ3Ð3s   ‚ ’$9¸9c                 ó$   — | j         ›d| j        ›�S )Nú.)Ú
__module__Ú__qualname__)Úclss    r   Ústrclassr6   6   s   € Ø”n�n�n cÔ&6Ð&6Ð7Ð7r   c                 óª  — dx}}g }g }	 	 | |         }||         }||k     r8|                      |¦  «         |dz  }| |         |k    r|dz  }| |         |k    °n«||k    r8|                      |¦  «         |dz  }||         |k    r|dz  }||         |k    °nm|dz  }	 | |         |k    r|dz  }| |         |k    °|dz  }||         |k    r|dz  }||         |k    °n'# |dz  }||         |k    r|dz  }||         |k    °w xY wnJ# t          $ r= |                     | |d…         ¦  «         |                     ||d…         ¦  «         Y nw xY w�ŒG||fS )ar  Finds elements in only one or the other of two, sorted input lists.

    Returns a two-element tuple of lists.    The first list contains those
    elements in the "expected" list but not in the "actual" list, and the
    second contains those elements in the "actual" list but not in the
    "expected" list.    Duplicate elements in either input list are ignored.
    r   Té   N)ÚappendÚ
IndexErrorÚextend)ÚexpectedÚactualÚiÚjÚmissingÚ
unexpectedÚeÚas           r   Úsorted_list_differencerD   9   sÙ  € ð €I€AˆØ€GØ€Jðð	Ø˜”ˆAØ�q”	ˆAØ�1ŠuˆuØ—’˜qÑ!Ô!Ð!Ø�Q‘�Ø˜q”k QÒ&Ð&Ø˜‘F�Að ˜q”k QÒ&Ð&øà�Q’�Ø×!Ò! !Ñ$Ô$Ð$Ø�Q‘�Ø˜Q”i 1’n�nØ˜‘F�Að ˜Q”i 1’n�nøð �Q‘�ðØ" 1œ+¨Ò*Ð*Ø˜Q™˜ð # 1œ+¨Ò*Ð*ð ˜‘F�AØ  œ) qš.˜.Ø˜Q™˜ð ! œ) qš.˜.øøð ˜‘F�AØ  œ) qš.˜.Ø˜Q™˜ð ! œ) qš.˜.˜.˜.˜.˜.øøåð 	ð 	ð 	Ø�NŠN˜8 A B Bœ<Ñ(Ô(Ð(Ø×Ò˜f Q R RœjÑ)Ô)Ð)ØˆEð	øøøñ/ð6 �JÐÐs+   ‹BD ÂC Â:#D Ã$DÄD ÄAEÅEc                 ó¶   — g }| rR|                       ¦   «         }	 |                     |¦  «         n%# t          $ r |                     |¦  «         Y nw xY w| °R||fS )z­Same behavior as sorted_list_difference but
    for lists of unorderable items (like dicts).

    As it does a linear search per item (remove) it
    has O(n*n) performance.)ÚpopÚremoveÚ
ValueErrorr9   )r<   r=   r@   Úitems       r   Úunorderable_list_differencerJ   b   s�   € ð €GØ
ð !Ø�|Š|‰~Œ~ˆð	!Ø�MŠM˜$ÑÔÐÐøÝð 	!ð 	!ð 	!Ø�NŠN˜4Ñ Ô Ð Ð Ð ð	!øøøð	 ð !ð �Fˆ?Ðs   š0 °AÁAc                 ó   — | |k    | |k     z
  S )z.Return -1 if x < y, 0 if x == y and 1 if x > yr   )ÚxÚys     r   Úthree_way_cmprN   s   s   € à�ŠE�a˜!’eÑÐr   ÚMismatchzactual expected valuec                 ó¤  — t          | ¦  «        t          |¦  «        }}t          |¦  «        t          |¦  «        }}t          ¦   «         }g }t          |¦  «        D ]ˆ\  }}	|	|u rŒ
dx}
}t	          ||¦  «        D ]}||         |	k    r
|
dz  }
|||<   Œt          |¦  «        D ]\  }}||	k    r
|dz  }|||<   Œ|
|k    r&t          |
||	¦  «        }|                     |¦  «         Œ‰t          |¦  «        D ][\  }}	|	|u rŒ
d}t	          ||¦  «        D ]}||         |	k    r
|dz  }|||<   Œt          d||	¦  «        }|                     |¦  «         Œ\|S )úHReturns list of (cnt_act, cnt_exp, elem) triples where the counts differr   r8   )Úlistr
   r,   Ú	enumerateÚrangeÚ	_Mismatchr9   )r=   r<   r   ÚtÚmÚnÚNULLr0   r>   ÚelemÚcnt_sÚcnt_tr?   Ú
other_elemÚdiffs                  r   Ú_count_diff_all_purposer_   y   s’  € õ �‰<Œ<�˜h™œ€q€AÝˆq‰6Œ6•3�q‘6”6€q€AÝ‰8Œ8€DØ€FÝ˜Q‘<”<ð  ð  ‰ˆˆ4Ø�4ˆ<ˆ<ØØÐˆ�Ý�q˜!‘”ð 	ð 	ˆAØ�Œt�tŠ|ˆ|Ø˜‘
�Ø��!‘øÝ& q™\œ\ð 	ð 	‰MˆAˆzØ˜TÒ!Ð!Ø˜‘
�Ø��!‘øØ�EŠ>ˆ>Ý˜U E¨4Ñ0Ô0ˆDØ�MŠM˜$ÑÔÐøå˜Q‘<”<ð 	ð 	‰ˆˆ4Ø�4ˆ<ˆ<ØØˆÝ�q˜!‘”ð 	ð 	ˆAØ�Œt�tŠ|ˆ|Ø˜‘
�Ø��!‘øÝ˜˜E 4Ñ(Ô(ˆØ�Š�dÑÔÐÐØ€Mr   c                 ó†  — t          | ¦  «        t          |¦  «        }}g }|                     ¦   «         D ]G\  }}|                     |d¦  «        }||k    r&t          |||¦  «        }|                     |¦  «         ŒH|                     ¦   «         D ]/\  }}||vr&t          d||¦  «        }|                     |¦  «         Œ0|S )rQ   r   )r   ÚitemsÚgetrU   r9   )	r=   r<   r   rV   r0   rZ   r[   r\   r^   s	            r   Ú_count_diff_hashablerc   œ   sÆ   € õ �6‰?Œ?�G HÑ-Ô-€q€AØ€FØ—w’w‘y”yð  ð  ‰ˆˆeØ—’�d˜A‘”ˆØ�EŠ>ˆ>Ý˜U E¨4Ñ0Ô0ˆDØ�MŠM˜$ÑÔÐøØ—w’w‘y”yð  ð  ‰ˆˆeØ�qˆ=ˆ=Ý˜Q  tÑ,Ô,ˆDØ�MŠM˜$ÑÔÐøØ€Mr   N)F)Ú__doc__Úcollectionsr   r   Úos.pathr   Ú
__unittestr"   r   r#   r   r$   r   r   r(   r    r6   rD   rJ   rN   rU   r_   rc   r   r   r   ú<module>rh      s;  ðØ  Ð  à +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø  Ð  Ð  Ð  Ð  Ð  à€
à€ØÐ Ø€Ø€Ø€ØØÐ!1Ñ1°OÑCØ ñ!Ø#/ñ0ñ1€ð ˜ÒÐÐÐðð ð ð ð  ð  ð*4ð 4ð 4ð 4ð8ð 8ð 8ð&ð &ð &ðRð ð ð"ð ð ð ˆJ�zÐ#:Ñ;Ô;€	ð!ð !ð !ðFð ð ð ð r   