3 \9@sddlmZmZddlmZdZdZdZdZdZ dZ eeee ee Z ddZ d d Z dd d ZddZddZddZddZeddZddZddZddZdS) ) namedtuple OrderedDict) commonprefixTP cCsBt|||}|tkr>d|d|||t||df}|S)Nz%s[%d chars]%s)len_PLACEHOLDER_LEN)s prefixlenZ suffixlenskipr %/usr/lib64/python3.6/unittest/util.py_shortens&rcsttt|}ttt|}|tkr(|St|tt|tt}|t krxt t|tfdd|DSt tt tfdd|DS)Nc3s|]}|dVqdS)Nr ).0r )prefixr r r 'sz'_common_shorten_repr..c3s&|]}t|dttVqdS)N)r _MIN_DIFF_LEN _MIN_END_LEN)rr )rr r rr*s) tuplemap safe_reprmaxr _MAX_LENGTHr_MIN_BEGIN_LENr _MIN_COMMON_LENr)argsmaxlenZ common_lenr )rr r_common_shorten_reprs  rFc CsRy t|}Wntk r*tj|}YnX| s>t|tkrB|S|dtdS)Nz [truncated]...)repr Exceptionobject__repr__rr)objZshortresultr r rr-s rcCsd|j|jfS)Nz%s.%s) __module__ __qualname__)clsr r rstrclass6sr(cCs*d}}g}g}xy||}||}||kr\|j||d7}x|||krX|d7}qBWn||kr|j||d7}xf|||kr|d7}qxWnL|d7}zx|||kr|d7}qWWd|d7}x|||kr|d7}qWXWqtk r|j||d|j||dPYqXqW||fS)Nr)append IndexErrorextend)expectedactualijmissingZ unexpectedear r rsorted_list_difference9s:   r4c CsLg}x>|rB|j}y|j|Wqtk r>|j|YqXqW||fS)N)popremove ValueErrorr*)r-r.r1itemr r runorderable_list_differencebsr9cCs||k||kS)Nr )xyr r r three_way_cmpssr<ZMismatchzactual expected valuecCsDt|t|}}t|t|}}t}g}xt|D]\}} | |krJq8d} } x.t||D] } || | kr^| d7} ||| <q^Wx,t|D] \} } | | kr| d7} ||| <qW| | kr8t| | | }|j|q8Wxlt|D]`\}} | |krqd} x2t||D]$} || | kr| d7} ||| <qWtd| | }|j|qW|S)Nrr))listrr! enumeraterange _Mismatchr*)r.r-r tmnZNULLr$r/elemcnt_scnt_tr0Z other_elemdiffr r r_count_diff_all_purposeys<     rHcCs,t}x |D]}|j|dd||<q W|S)Nrr))rget)iterablecrDr r r_ordered_counts rLc Cst|t|}}g}x>|jD]2\}}|j|d}||kr t|||}|j|q Wx2|jD]&\}}||kr`td||}|j|q`W|S)Nr)rLitemsrIr@r*) r.r-r rAr$rDrErFrGr r r_count_diff_hashables   rNN)F) collectionsrrZos.pathrZ __unittestrr rrrrrrrr(r4r9r<r@rHrLrNr r r rs(  ) #