a XC?h_�@s�dZddlmZmZddlmZdZdZdZdZ dZ dZ ee ee ee Z e dks\J�dd �Z d d �Zdd d�Zdd�Zdd�Zdd�Zdd�Zedd�Zdd�Zdd�ZdS)zVarious utility functions.�)� namedtuple�Counter)� commonprefixT�P� �cCsBt|�||}|tkr>d|d|�||t|�|d�f}|S)Nz%s[%d chars]%s)�len�_PLACEHOLDER_LEN)�s� prefixlenZ suffixlen�skip�r �2/opt/alt/python39/lib64/python3.9/unittest/util.py�_shortens&rcs�ttt|��}ttt|��}|tkr(|St|��t���t|�tt}|t kr�ttt |�tkspJ�t �t|��t��fdd�|D��St �tt ��t��fdd�|D��S)Nc3s|]}�|�d�VqdS�Nr ��.0r ��prefixr r r� '�z'_common_shorten_repr..c3s&|]}�t|�d�tt�VqdSr)r� _MIN_DIFF_LEN� _MIN_END_LENrrr rr*s�) �tuple�map� safe_repr�maxr� _MAX_LENGTHr�_MIN_BEGIN_LENr �_MIN_COMMON_LENr)�args�maxlenZ common_lenr rr�_common_shorten_reprs*� ��  �r"FcCsNz t|�}Wnty(t�|�}Yn0|r:t|�tkr>|S|dt�dS)Nz [truncated]...)�repr� Exception�object�__repr__rr)�objZshort�resultr r rr-s  rcCsd|j|jfS)Nz%s.%s)� __module__� __qualname__)�clsr r r�strclass6sr,cCs4d}}g}g}z�||}||}||krT|�|�|d7}|||kr�|d7}q          � r8cCsFg}|r>|��}z|�|�Wqty:|�|�Yq0q||fS)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� ValueErrorr.)r1r2r5�itemr r r�unorderable_list_differencebs r=cCs||k||kS)z.Return -1 if x < y, 0 if x == y and 1 if x > yr )�x�yr r r� three_way_cmpssr@ZMismatchzactual expected valuecCs,t|�t|�}}t|�t|�}}t�}g}t|�D]�\}} | |urHq6d} } t||�D] } || | krZ| d7} ||| <qZt|�D] \} } | | kr�| d7} ||| <q�| | kr6t| | | �}|�|�q6t|�D]X\}} | |ur�q�d} t||�D] } || | kr�| d7} ||| <q�td| | �}|�|�q�|S)�HReturns list of (cnt_act, cnt_exp, elem) triples where the counts differrr-)�listrr%� enumerate�range� _Mismatchr.)r2r1r �t�m�nZNULLr(r3�elem�cnt_s�cnt_tr4Z other_elem�diffr r r�_count_diff_all_purposeys<         rMc Cs�t|�t|�}}g}|��D]2\}}|�|d�}||krt|||�}|�|�q|��D]&\}}||vrZtd||�}|�|�qZ|S)rAr)r�items�getrEr.) r2r1r rFr(rIrJrKrLr r r�_count_diff_hashable�s     rPN)F)�__doc__� collectionsrrZos.pathrZ __unittestrr rrrrrr"rr,r8r=r@rErMrPr r r r�s4  ���  ) #