o
    JAf_                     @   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)commonprefixTP         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.10/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r<t
 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>'   s    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w |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   s`  	 d }}g }g }	 z| | }|| }||k r1| | |d7 }| | |kr0|d7 }| | |ks&n^||krO| | |d7 }|| |krN|d7 }|| |ksDn@|d7 }z&| | |krd|d7 }| | |ksZW |d7 }|| |kry|d7 }|| |kson|d7 }|| |kr|d7 }|| |ksw W n ty   || |d   |||d   Y ||fS w q
)Nr   T   )append
IndexErrorextend)expectedactualijmissingZ
unexpectedear   r   r   sorted_list_difference9   sZ   

r7   c                 C   sJ   	 g }| r!|   }z|| W n ty   || Y nw | s||fS r   )popremove
ValueErrorr-   )r0   r1   r4   itemr   r   r   unorderable_list_differenceb   s   r<   c                 C   s   	 | |k| |k  S r   r   )xyr   r   r   three_way_cmps   s   r?   ZMismatchzactual expected valuec                 C   s.  	 t | t |}}t|t|}}t }g }t|D ]G\}}	|	|u r%qd }
}t||D ]}|| |	kr>|
d7 }
|||< q.t|D ]\}}||	krS|d7 }|||< qC|
|krct|
||	}|| qt|D ],\}}	|	|u rqqhd}t||D ]}|| |	kr|d7 }|||< qxtd||	}|| qh|S )Nr   r,   )listr   r$   	enumeraterange	_Mismatchr-   )r1   r0   r
   tmnZNULLr'   r2   elemcnt_scnt_tr3   Z
other_elemdiffr   r   r   _count_diff_all_purposey   sF   
rK   c           	      C   s   	 t | t |}}g }| D ]\}}||d}||kr)t|||}|| q| D ]\}}||vrAtd||}|| q.|S )Nr   )r   itemsgetrC   r-   )	r1   r0   r
   rD   r'   rG   rH   rI   rJ   r   r   r   _count_diff_hashable   s   

rN   N)F)collectionsr   r   Zos.pathr   Z
__unittestr   r	   r   r   r   r   r   r!   r   r+   r7   r<   r?   rC   rK   rN   r   r   r   r   <module>   s4    

	)
#