a
    åze_  ã                   @   s¤   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 e
 e e	  Zdd„ Zd	d
„ Zddd„Zdd„ Zdd„ Zdd„ Zdd„ ZeddƒZdd„ Zdd„ ZdS )é    )Ú
namedtupleÚCounter)ÚcommonprefixTéP   é   é   c                 C   sB   t | ƒ| | }|tkr>d| d |… || t | ƒ| d … f } | S )Nz%s[%d chars]%s)ÚlenÚ_PLACEHOLDER_LEN)ÚsÚ	prefixlenZ	suffixlenÚskip© r   ú#/usr/lib/python3.9/unittest/util.pyÚ_shorten   s    &r   c                     sœ   t tt| ƒƒ} ttt| ƒƒ}|tkr(| S t| ƒ‰ tˆ ƒ‰t|ˆ t t  }|t	krxt
ˆ t|ƒ‰ t ‡ ‡fdd„| D ƒƒS t
ˆ tt	ƒ‰ t ‡ ‡fdd„| D ƒƒS )Nc                 3   s   | ]}ˆ |ˆd …  V  qd S ©Nr   ©Ú.0r
   ©Úprefixr   r   r   Ú	<genexpr>'   ó    z'_common_shorten_repr.<locals>.<genexpr>c                 3   s&   | ]}ˆ t |ˆd … ttƒ V  qd S r   )r   Ú_MIN_DIFF_LENÚ_MIN_END_LENr   r   r   r   r   *   s   ÿ)ÚtupleÚmapÚ	safe_reprÚmaxr   Ú_MAX_LENGTHr   Ú_MIN_BEGIN_LENr	   Ú_MIN_COMMON_LENr   )ÚargsÚmaxlenZ
common_lenr   r   r   Ú_common_shorten_repr   s     ÿÿr"   Fc                 C   sN   zt | ƒ}W n ty(   t | ¡}Y n0 |r:t|ƒtk r>|S |d t… d S )Nz [truncated]...)ÚreprÚ	ExceptionÚobjectÚ__repr__r   r   )ÚobjZshortÚresultr   r   r   r   -   s    r   c                 C   s   d| j | jf S )Nz%s.%s)Ú
__module__Ú__qualname__)Úclsr   r   r   Ústrclass6   s    r,   c                 C   s4  d }}g }g }zÚ| | }|| }||k rT|  |¡ |d7 }| | |krè|d7 }q<n”||kr†|  |¡ |d7 }|| |krè|d7 }qnnb|d7 }z8| | |kr¦|d7 }qW |d7 }|| |krè|d7 }q°n |d7 }|| |kræ|d7 }qÐ0 W q ty(   | | |d … ¡ | ||d … ¡ Y q,Y q0 q||fS ©Nr   é   )ÚappendÚ
IndexErrorÚextend)ÚexpectedÚactualÚiÚjÚmissingZ
unexpectedÚeÚar   r   r   Úsorted_list_difference9   s>    

þr9   c                 C   sF   g }| r>|   ¡ }z| |¡ W q ty:   | |¡ Y q0 q||fS r   )ÚpopÚremoveÚ
ValueErrorr/   )r2   r3   r6   Úitemr   r   r   Úunorderable_list_differenceb   s    r>   c                 C   s   | |k| |k  S r   r   )ÚxÚyr   r   r   Úthree_way_cmps   s    rA   ZMismatchzactual expected valuec                 C   s,  t | ƒt |ƒ }}t|ƒt|ƒ }}tƒ }g }t|ƒD ]Ž\}}	|	|u rHq6d }
}t||ƒD ] }|| |	krZ|
d7 }
|||< qZt|ƒD ] \}}||	kr„|d7 }|||< q„|
|kr6t|
||	ƒ}| |¡ q6t|ƒD ]X\}}	|	|u ràqÎd}t||ƒD ] }|| |	krî|d7 }|||< qîtd||	ƒ}| |¡ qÎ|S r-   )Úlistr   r%   Ú	enumerateÚrangeÚ	_Mismatchr/   )r3   r2   r
   ÚtÚmÚnZNULLr(   r4   ÚelemÚcnt_sÚcnt_tr5   Z
other_elemÚdiffr   r   r   Ú_count_diff_all_purposey   s<    


rM   c           	      C   s†   t | ƒt |ƒ }}g }| ¡ D ]2\}}| |d¡}||krt|||ƒ}| |¡ q| ¡ D ]&\}}||vrZtd||ƒ}| |¡ qZ|S )Nr   )r   ÚitemsÚgetrE   r/   )	r3   r2   r
   rF   r(   rI   rJ   rK   rL   r   r   r   Ú_count_diff_hashableœ   s    rP   N)F)Úcollectionsr   r   Zos.pathr   Z
__unittestr   r	   r   r   r   r   r   r"   r   r,   r9   r>   rA   rE   rM   rP   r   r   r   r   Ú<module>   s0   
ÿÿÿ
	)
#