Ë ‚Ö¦i_ãó¨—dZddlmZmZddlmZdZdZdZdZ dZ dZ ee eze zeze zz Z d„Z d „Zdd „Zd „Zd „Zd „Zd„Zedd«Zd„Zd„Zy)zVarious utility functions.é)Ú namedtupleÚCounter)Ú commonprefixTéPé écón—t|«|z |z }|tkDrd|d|||t|«|z dfz}|S)Nz%s[%d chars]%s)ÚlenÚ_PLACEHOLDER_LEN)ÚsÚ prefixlenÚ suffixlenÚskips ú&/usr/lib64/python3.12/unittest/util.pyÚ_shortenrsK€Ü ˆq‹6�IÑ   Ñ )€DØ ÔÒØ   * 9  ¨t°Q´s¸1³vÀ Ñ7IÐ7JÐ5KÐLÑ LˆØ €Hóc󒇇—ttt|««}ttt|««}|t kr|St |«Št ‰«Št |‰z tztzz }|tkDr&t‰t|«Štˆˆfd„|D««St‰tt«Štˆˆfd„|D««S)Nc3ó.•K—|] }‰|‰dz–—Œy­w©N©©Ú.0r Úprefixr s €€rÚ z'_common_shorten_repr..'søèø€Ð:±T°�V˜a    ˜mÕ+±Tùsƒc3óT•K—|]}‰t|‰dtt«z–—Œ!y­wr)rÚ _MIN_DIFF_LENÚ _MIN_END_LENrs €€rrz'_common_shorten_repr..*s-øèø€ð Ù�Qðœ( 1 Y Z =´-ÄÓNÕNÙùsƒ%() ÚtupleÚmapÚ safe_reprÚmaxr Ú _MAX_LENGTHrÚ_MIN_BEGIN_LENr Ú_MIN_COMMON_LENr)ÚargsÚmaxlenÚ common_lenrr s @@rÚ_common_shorten_reprr(s³ù€Ü ””Y Ó%Ó &€DÜ ””S˜$“Ó €FØ ”ÒØˆ ä ˜$Ó €FÜ�F“ €IäØ˜9Ñ$¤~Ñ5Ô8HÑHñJ€Jà”OÒ#ô˜&¤.°*Ó=ˆÜÔ:±TÓ:Ó:Ð:ä �fœn¬oÓ >€FÜ ô Ùó ó ð rcó¦— t|«}|rt |«t kr|S|dt dzS#t$rtj|«}YŒBwxYw)Nz [truncated]...)ÚreprÚ ExceptionÚobjectÚ__repr__r r")ÚobjÚshortÚresults rr r -sW€ð&Ü�c“ˆñ ”C˜“K¤+Ò-؈ Ø �,”;Ð Ð"3Ñ 3Ð3øô ò&Ü—‘ Ó%Šð&ús‚ /¯AÁAcó8—|j›d|j›�S)NÚ.)Ú __module__Ú __qualname__)Úclss rÚstrclassr66s€Ø—n“n c×&6Ò&6Ð 7Ð7rcó—dx}}g}g} ||}||}||kr-|j|«|dz }|||k(ry|dz }|||k(rŒnj||kDr-|j|«|dz }|||k(rG|dz }|||k(rŒn8|dz } |||k(r|dz }|||k(rŒ|dz }|||k(r|dz }|||k(rŒ Œ¨#|dz }|||k(r|dz }|||k(rŒwwxYw#t$r.|j||d«|j||d«Y||fSwxYw)arFinds elements in only one or the other of two, sorted input lists. Returns a two-element tuple of lists. The first list contains those elements in the "expected" list but not in the "actual" list, and the second contains those elements in the "actual" list but not in the "expected" list. Duplicate elements in either input list are ignored. réN)ÚappendÚ IndexErrorÚextend)ÚexpectedÚactualÚiÚjÚmissingÚ unexpectedÚeÚas rÚsorted_list_differencerD9sƒ€ð €I€AˆØ€GØ€JØ ð Ø˜‘ ˆAØ�q‘ ˆAØ�1ŠuØ—‘˜qÔ!Ø�Q‘�ؘq‘k QÒ&ؘ‘F�Að˜q‘k QÔ&à�Q’Ø×!Ñ! !Ô$Ø�Q‘�ؘQ‘i 1’nؘ‘F�Að˜Q‘i 1”nð�Q‘�ðØ" 1™+¨Ò*ؘQ™˜ð# 1™+¨Ó*ð˜‘F�AØ  ™) qš.ؘQ™˜ð! ™) qœ.ð+ øð(˜‘F�AØ  ™) qš.ؘQ™˜ð! ™) q�.ûäò Ø �N‰N˜8 A B˜<Ô (Ø × Ñ ˜f Q R˜jÔ )Ø Ø �JÐ Ðð  úsA‹:CÁ1CÁ8CÁ?B2ÂCÂ0CÂ2CÃCÃCÃ1D Ä D cóœ—g}|r%|j«} |j|«|rŒ%||fS#t$r|j|«YŒ#wxYw)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Ú ValueErrorr9)r<r=r@Úitems rÚunorderable_list_differencerJbsV€ð €GÙ Ø�|‰|‹~ˆð !Ø �M‰M˜$Ô ò ð �Fˆ?Ðøô ò !Ø �N‰N˜4Ö ð !ús–.®A Á A có—||kD||kz S)z.Return -1 if x < y, 0 if x == y and 1 if x > yr)ÚxÚys rÚ three_way_cmprNss€à �‰E�a˜!‘eÑ ÐrÚMismatchzactual expected valuecó<—t|«t|«}}t|«t|«}}t«}g}t|«D]y\}} | |urŒ dx} } t ||«D]} || | k(sŒ | dz } ||| <Œt|«D]\} } | | k(sŒ | dz } ||| <Œ| | k7sŒ\t | | | «}|j |«Œ{t|«D]N\}} | |urŒ d} t ||«D]} || | k(sŒ | dz } ||| <Œt d| | «}|j |«ŒP|S)úHReturns list of (cnt_act, cnt_exp, elem) triples where the counts differrr8)Úlistr r,Ú enumerateÚrangeÚ _Mismatchr9)r=r<r ÚtÚmÚnÚNULLr0r>ÚelemÚcnt_sÚcnt_tr?Ú other_elemÚdiffs rÚ_count_diff_all_purposer_ysI€ô �‹<œ˜h›€q€AÜ ˆq‹6”3�q“6€q€AÜ ‹8€DØ €FܘQ–<‰ˆˆ4Ø �4‰<Ø ØÐˆ�Ü�q˜!–ˆAØ�‰t�t‹|ؘ‘ �Ø��!’ðô' qž\‰MˆAˆzؘTÓ!ؘ‘ �Ø��!’ð*ð �E‹>ܘU E¨4Ó0ˆDØ �M‰M˜$Õ ð ô ˜Q–<‰ˆˆ4Ø �4‰<Ø ØˆÜ�q˜!–ˆAØ�‰t�t‹|ؘ‘ �Ø��!’ðô˜˜E 4Ó(ˆØ� ‰ �dÕð ð €MrcóH—t|«t|«}}g}|j«D];\}}|j|d«}||k7sŒt|||«}|j |«Œ=|j«D](\}}||vsŒ td||«}|j |«Œ*|S)rQr)rÚitemsÚgetrUr9) r=r<r rVr0rZr[r\r^s rÚ_count_diff_hashablercœs�€ô �6‹?œG HÓ-€q€AØ €FØ—w‘w–y‰ ˆˆeØ—‘�d˜A“ˆØ �E‹>ܘU E¨4Ó0ˆDØ �M‰M˜$Õ ð !ð —w‘w–y‰ ˆˆeØ �qŠ=ܘQ  tÓ,ˆDØ �M‰M˜$Õ ð!ð €MrN)F)Ú__doc__Ú collectionsrrÚos.pathrÚ __unittestr"r r#rr$rrr(r r6rDrJrNrUr_rcrrrÚrhs“ðÙ ç+Ý à € à€ ØÐ؀؀ Ø€ØØÐ!1Ñ1°OÑCØ ñ!Ø#/ñ0ñ1€ ò  ò  ó*4ò8ò&òRò"ñ �zÐ#:Ó ;€ ò!óFr