a ÕDOg_ã@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  ÿÿÿ  ) #