U e5d_ã@s´dZddlmZmZddlmZdZdZdZdZ dZ dZ ee ee ee Z e dks\t ‚dd „Zd 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 ú%/usr/lib64/python3.8/unittest/util.pyÚ_shortens&rcs¸ttt|ƒƒ}ttt|ƒƒ}|tkr(|St|ƒ‰tˆƒ‰t|ˆtt}|t kr”ttt |ˆtkspt ‚t ˆt|ƒ‰t‡‡fdd„|DƒƒSt ˆtt ƒ‰t‡‡fdd„|DƒƒS)Nc3s|]}ˆ|ˆd…VqdS©Nr ©Ú.0r ©Úprefixr r rÚ 'sz'_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_LENÚAssertionErrorr)ÚargsÚmaxlenZ common_lenr rrÚ_common_shorten_reprs*ÿ ÿÿ  ÿr"FcCsPz t|ƒ}Wntk r*t |¡}YnX|r yr )ÚxÚyr 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\}} | |krà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]&\}}||krZtd||ƒ}| |¡qZ|S)rAr)rÚitemsÚgetrEr.) r2r1r rFr(rIrJrKrLr r rÚ_count_diff_hashableœs     rPN)F)Ú__doc__Ú collectionsrrZos.pathrZ __unittestrr rrrrrrr"rr,r8r=r@rErMrPr r r rÚs4  ÿÿÿ  ) #