U ,a_@sdZddlmZmZddlmZdZdZdZdZ dZ dZ ee ee ee Z e dks\t dd Zd d Zdd dZddZddZddZddZeddZddZddZdS)zVarious utility functions.) namedtupleCounter) commonprefixTP cCsBt|||}|tkr>d|d|||t||df}|S)Nz%s[%d chars]%s)len_PLACEHOLDER_LEN)s prefixlenZ suffixlenskipr 2/opt/alt/python38/lib64/python3.8/unittest/util.py_shortens&rcsttt|}ttt|}|tkr(|St|tt|tt}|t krttt |tkspt t t|tfdd|DSt tt tfdd|DS)Nc3s|]}|dVqdSNr .0r prefixr r r 'sz'_common_shorten_repr..c3s&|]}t|dttVqdSr)r _MIN_DIFF_LEN _MIN_END_LENrrr rr*s) tuplemap safe_reprmaxr _MAX_LENGTHr_MIN_BEGIN_LENr _MIN_COMMON_LENAssertionErrorr)argsmaxlenZ common_lenr rr_common_shorten_reprs*   r"FcCsPz t|}Wntk r*t|}YnX|r yr )xyr r r three_way_cmpssr@ZMismatchzactual expected valuecCs,t|t|}}t|t|}}t}g}t|D]\}} | |krHq6d} } t||D] } || | krZ| d7} ||| <qZt|D] \} } | | kr| d7} ||| <q| | kr6t| | | }||q6t|D]X\}} | |krqd} t||D] } || | kr| d7} ||| <qtd| | }||q|S)HReturns list of (cnt_act, cnt_exp, elem) triples where the counts differrr-)listrr% enumeraterange _Mismatchr.)r2r1r tmnZNULLr(r3elemcnt_scnt_tr4Z other_elemdiffr r r_count_diff_all_purposeys<         rMc Cst|t|}}g}|D]2\}}||d}||krt|||}||q|D]&\}}||krZtd||}||qZ|S)rAr)ritemsgetrEr.) r2r1r rFr(rIrJrKrLr r r_count_diff_hashables     rPN)F)__doc__ collectionsrrZos.pathrZ __unittestrr rrrrrrr"rr,r8r=r@rErMrPr r r rs4    ) #