ÿØÿà JFIF    ÿÛ „ !.%+&8&+/1555$;@;4?.451 4,$,44444444444414444444444444444444444444444444444444ÿÀ  á á" ÿÄ     ÿÄ ?    !1AQaq"2‘¡±ÁðBRbrÑá#‚’¢²3S CñÿÄ   ÿÄ !    !1QAa‘2ÿÚ   ? 5˜Z¯V¦cø)›t/? z¨±>Õ5€¶‹Á¤·¼z¼Ü¬+ñ®v¤¨_ˆR­BFn©—˜ý®ç̝P8gýt·ÉSTŦˆìät?þé¼íìN/Þa)ì–í6ô… Ï¿øÃj´¿KÇü]ÿ ªô¹-eKànëÕHTx}ýSÜ›ÿ ”7Ø×&µ<¦  ¥ÑO¶[Ù¯ä¨ÞÃÿ PZ-¬;#õ|•oaÿ ©CìÞz3˜öː/¤­ñTûIØ}š^ mÓ%ªxˆ¥ÉŸu=Z+ISe¿45™¼u;ú&WØ÷€æßQ™®{|íx*TC“#ZŠìZ§²‹ 6pv…³¿¡äª*áZÐ%ÒOáˆo"x«OHk w±æ+¬V(kMúŸ5Vö«$ ÁrÏbàb57/luR ¸ÑÛj Òµì`Мq­û žICÀÊ•©4€Âcà¨Ï€O´<èÐ:›ù(Ë^L8þ‘ÍÌ#¸Ð_Ì©ÙK(Öz 4¬û+¸;ü’V’84‘¬ÃŽ:[â‡ÔÌáõp¢~§ªlæ£ö{®G>J¼"°‡7¯ÆÉèßû ‹É‹§ÁòÃýâßî ^ƾÙõ‹×óH#«LP½ïX=xÑÍ$|W?•~• îëÔ©ª‹ {ÝT…Kÿ ”hûâá)J*ö˜–ÔU;iÇ€/ ÆþjóZ\ýwØ=Ìm ºèËL9 ýèÆð/¨’¥öo=nË.%Îì ŽÕ¯È|{Oj²ƒE6e/ßdÄõ²Ìâ1O®ò×TsəԸhOMýíMˆ¿¼H˜l²,7Â¥#MF/Úf°Ö½± ¸–dr‹NýÊ íjqx{œÉ ä-È ¦ øÄër¨q°ð †nцýÑÄÆ’mä…n<0È™;ÁÝá¯ÁZƒ7FÀmì­ É&9ˆîéi¶ùN§Y• ÃZãAâ?•‡©‰ , ó¾IŸŠc1 4â&y­&pŠ­6;M À 0¹qç»p.á …ŸÅáK@%6·y6ƒ‰3?”úºŽ‰éX5ªPT §µ!=Mž«Ú½‹ÅgÂSâÉaþÓoö–¯ÁÔìR>5éÿ üs¶ÆUcÌ kÇR ]ÿ ù¬¼«VŽ;Â|‡~¢¦”ÏŰæ {L™Õ°Óv¹ò¸írޡעCÃ!íVÕ {¶»sŒNPg/ "uÕbkm²“$ďå¿é¹§°½æz¯6 †s¿!s–wÚÝ“™Œ °.ûj>·+™Òa…©Œ&rÝÎtÛë긪Ît’LAVp%c Úý[ÄzJ¾ÇàXXç@˜ó<êL]·T˜¾¥1Ó©V‡g´æ½¦Ý@¹óø!_@´ÞâSÁ —S3™•& ]@JHÚý©ZŽ €×æÔr»Áf!‡yÞ4Mv*èÓã_{‘åóUuљØ«Oïé*®EvÑ Œ÷‡U \"㪒ÍK+À 4“M¡ï:0¥5í!'<@î´”>Ç»&Z–ïCCV˜Ì5Šo&îhè.žû |ÓK©h$s6KìŒëã)¹hI¦GïOåóI;ììü#É$Š0…Ææ¥TØ.5­¾gn´ “ÂÖ\:hœ89G)J@„}œ:’Ò{/Š"¦_Æ×7Æ3VÇŠÊa]ÚŒÙ€Ä–=®uÁßâACZƒ§§£ Qnâ:«,×{tyø¬iÛcœÜÄ€H½ÄÍCk´÷šß .W'b¤Íåh]÷€=,Žv×cÚEÚHXJX¶îo¨FÒtèöŸ>ªª6[J®Fµ£sGÁeqõfe\íjÒÐïÄÐGˆe1Ø‹.Ø”‘Ëuø Y­ˆÜ ŽG|zùªüMpDnQWÄ”%JŠ™)â*p@Örš«ÕT2Ð%ˆG#ª„ ·¤!°ŸOTÂT¸aÚ%4&h™LµšØüÐ.F¿²ÐÞ_Ç‚¾ÅÃaÜ÷09Æ q€öy˜v‡85õN÷]¬äѼóS{°_MެúÔ#°Ç¸0åÞè2ëôPcvÆw9®ií1Ä8F™˜à‰´+‰Ik1òÝ7“Ñ×ÒsÝ\x‚h`ÞÑ`ó"|µEcý£n˜h`}GÞ !±ù²Ápü²ß6 0ïi󜵩SÈÇ7˜-ÕURO˜¦´f$ªž-Í6(œ}<„ éc øs]ŽŽ„*—¾ ìdŽ„)méª\¿êÎIg¾ØÞ~I#C/¼¼´EÁÈŽi8“©õådô·>euä ƒ'Ê×लR1ÉJE1ÐAát`t;ÇР%Ý<‡¥„ÍÆ`×Oyó)õiI€ñQaŸ4Ûù\áàaÃÔ¹HÃu¹*k€¦<„e S‡&õÏ B!ŽhüÞ`yj}mªf×\¿ Ç~æ­9‡û\՞Ǖg²1Žû5V7 !àöšm° c`ܬøÇìµÒ'P"?…´Ö,"§^•õލsÔ)6˜sæéÍR¼ ò|Sl”‹7 nPW Gòú÷½§O¯‡„l¡kSÞŒr½PÊ@æ¢pŽ-mÿ #Ÿ˜Àº¶Áä¦;ïÔæ$1££`“Õ>„—·ž)ßð³ñ#Ï Ô$¶œ‰ÊE‹À;÷º ¯«P:Ñ”8–IÊtpÞ3ª“>ê“þës4ò2OÏÕ­±zô†Õ§‰.÷ä¸;¿˜“'œ›žª}«Œ{ª±Ì 9ÔóÞÕ‡0 $íWV3Üì¬ —@kÝ4@¿r¼±½¬™›?øØæ´'Áé®CË3-g$˜ö‡×auÚi´Žp/êÛ æF›Ú2v‹ã¿¿,nB1̨ƃqÞa5͝@&Æû“él÷ \C²½UÍc ¯k×¢U ÖéQå™—-r wô ÞÏ<Ò=&=ÿ Ôê Òêˈt,i—;LîÜ á¸*ÚÃ1$êL•LÍ <É)ýÐà’ ;F™{ƒ™˜€&'}‚ãÄK`¡ÞT@I;®žZóè‚s’7®°›+§O­Åq©é»²9<Ô J ¼9O’HL»Ùïì¸rk¼Ž_ý‘TŸu[²ßÚŒ·ü÷B%¯E ŸÔX5êO´ Ç•€’I0 ÉJX` ñ¹õ%;µŸD‘«´€àwÒ™U ûئžÖö\×®×´8 ½‡ºÐÆÓ§?Àkmœ=;d5*@-ì0F Rªýš[Ü6âö̃ڸr*KA9· u*µæ£?U¸Âêí†8@¦X4 e-ò„0s{ HâUpU?¼mñRa°®a%Ð'tÉ×’\¾ÊÉ]t›h>·(Ë@R¼¡Ãt h}’O÷au<+nT…Ö…MӐ??Óe95 q>í/;&JSû °¯ÊéÞ øƒ*Ã2½Ài&:nôUl=¾¿5eˆ3”ñc|Ú2V”>„»&eE;«ÚäC p¢Û úy 9š[ŒÌx¼擼A&DåÒ¯ˆ¤ÀÌ;"˜ ÏQä¸åhÊ}Ûq«Û0WžÒ|»€ø®öCm5•\ÇÀ§Pe3£]0ÃàLDÉ‰1øªxjgwT‚÷¿LΨK‹›ùs—xˆÜ±µ kæ¸f‰‰ÜGk/LÛØ6d9ò¶ùA{ƒA3š/¬D¬khÓk‰`˜"㯒r¿±Óã jx‡°e}<Ñø\3y:'À•/h½Í€Ç4~g ?Û(¼]v‘ªlKÎâ~?O‚W%{Ì:“'©úNq¾›úo(X’¥¯ˆ nFê{Ç€ü?º'ë ø‹ì Þ09ŒÌç9Æ —ËC`j@ÓÄ(+a‹un¸#ÂꟋ{K`‘ÑÍÍ'à´»/Û,KW;Þ4²þð ï Nm|~fGÏ(…³Ã)«1ö­Õ ¥‡¨©ƒÃ™ü-s=à=U66Ï«Ýc蓦W¹íž®›nÔ%êÇìŒ<#Ü×84ån®Ð ÒåOC` ñânÑs‡¢ç 1õ%Îhì½Ã½® e:ݼUZo™`  ÅZŸŒÊ«ê1ÏÄo$q¹Þ€©ˆhÐÉä¯ñ[!…Ú˜àJ:x2$Íß&PåT£6ç— ‡Í*4Ýšçjÿ ‰É nófÐ ó(L5C•åÆ\rMÒ@ò }y-W}™üýVù—ú¢=Ù”c®‘< M ž ´Phr ¦©TD ‘ù.$´÷O‡‘V2Æò.=IUŒ=ž‡â¬i™aþÓåÙ?òUø'ØÖ•.~* šTŒ!•-×áºTâ®ä#õü'´ eýlYÅÓeÕKÂrT"CÚ@u!Óxƒ{š3€}1¿(r}%«nËamjÑ%ÑNEò v ˜à  σöK³,*º.àzù¨™Ó ÚçâU¦*¿ 9{%Ö¹ njûdaXöb) kÛÆ±ûÓ\°M7ˆÂ=û›ç¿Ã‚­V»Cg–8ÙêE- j)k$º`Ã-ùEýeBÆÇ]c¡°ñty&Òd0nõ'¡W+ƒ*|–øµFa\GQªEAÔp5\Ǽ·¼Ç8·õ -â§Ú[ ‡ uZeÖ 3}×d'+¹:ð+K†Û®s!Ï$úe€<Û”x)1»a­¡LC]¸µík…ÚàA»AYº{†ªS[¦5HÒ7ù --,ísòDØ€èk ÞÀîÜ ò@â( ËNˆë›4ô½•/¦o‡€Û7 ê•ÆêòðÜy'Án½µ á˜ݦ ndeo…[ì¶Ê,¥R³Ä=À±—–ß;£™´ñSâ*g§”ïaið‘Jå~™ÓÞ ß³Õ¢»8x埒²52>AÊb&-÷\7´éÄù€T˜,w;3{ï˜k…à¹ÄqÀ«œ{€\ ˆ¾[´¨јr &Úé„Ívˆ±8†¿]|¬ņ4I×pÞS1ÈÖz‰#Ìv‡G!YNògñ:màTz¢Ý1ô©^O=~ë|5Bã™ç•¼µõ•bÆ@úÕS¬ÈŒ#¬zünrŸ û” Z²•èðV"ÁHÚý©wÝ €7¼Ìu1hÑa3Éä û f$o¿É ™Ú›ÝçnpÒ3äÌ3†Í§,Äï]$‰/pê †«À¼¸e9­Æê_C]žƒ·ý·frÁN«, E=›Çq -‰öŒ:aÏ¿±í&£Í:-} 84‘ÿ eƒQÑeëSsuiA ³g㟥ú£?ÿ ʼn*”“÷aühe:ÊWa@ÒÞk±eØ] F Ô—r.åä˜ @ö¥ªZoÐýYL·¥S²G/‡ñ <~*ZÆ´è>JlòàÛÆ½ÿ 窘ìGN¢:I®KšJp/`íIÁÀõ#Ä-€ö­šµŒoF4|ÆQØÆ@Ì|£Ô…¢À{9˜è½Üó›€ôYÒÎYsið;ís¤€à²ˆ‚4qÉVŒI$ ‰"° æµ8cXGjœˏ¡Aâý•ËÜ¢ûï e·çLx']á"oÅÎê3¯Ç—¹”ó0nå‚âg{Œñ> S´˜îè°g238‚ãköÝfÚd´6Ò€;ò÷±¢™¼›º ¢Æ'¥Ðx'e¬ç ]bÈÆV¢ó‹kýBO ðÊâ$Ÿ!×T 3Mýמ žìٍàÌü‘8÷€àæØ8æ©6‰©L´«…oãpð„~Çk‰!ñ;‹”ÛžÍ àž±z Ÿôû øŸÝužÏ;ÿ #|u6™Þ¬ÚˆÐõA4¶â|ôl|Ê2ŽÇ¤ÝÅÇY.<#Aí.k§hóF‚”Y; M½Ö4hŸ4&›­¿tès´%FìL¥£Ãk‰ÇT¤haÁ¤ÚxfÉ`ÑìË›>i 3t‚:,–+^÷´–{Û–Nxi"x‘Ûg î¨>¥Õ܁ùZH,2Û“:8xÊ¢Çí9.É-Ìâã-=çjwµS˜dütžçwýGòú®®ûº_ˆýx$–¡ãøO EÚÛÏ÷R„×w+3£Á£öUMyR²¹âŒ°š›¸Ñãò9§Ó_Dl+Ùßc›úšGÅÌc†Ž!Ko=¶.‘Îÿ c²(2®V mª.ÿ ¹B›¹å ù„öŸSV>™ü¯$y:G¢Z×àøúdî¹û­·ýÇ´:•c LÍõi_‹ö+ÎæGÊè>OŠ•äž´§Þ{X}¨1ÚTc›»Qþ•êô°t¿OP?eæ~É{5]•ÙR£r5†nZ\ã@ &îJõ ¾àC°þV>fé¥/ü5ñÊIº_é5 ;e­h<@ Ä&æÃëE%;X,ÒãÆÞ`Oò¦kŸm#˜!ÀyÄ¢| óLšò¥Ä` ¶R=|ÈCâh5ò3DˆïF†ðÒ#ÅìÛœ?¸yhBãœí ZxßÎÄhºRK„`Þödvײ™ÀÈÑÒgŒuY w³%†ƒÓzõ ÖÏp‚dH®¦A´ù§»ÓÇMæ~)ˆð‡û:ù&Ä •vGD´À n ݇¼Ö8Fö óáà£~Ë¥x`oK|Ä?fxiØü%pìR>éò+Û±éÎ>núlFŤ'tq8LZÏvÃ?„¡ß±È⽆¯³íü@x|PöUäèØã¡ð‚ŒAìÏ"vÍwóŸÍ{ ý0.z È•Ö{,N¡£¡ŸKÕÙž>Ýœþ ÍÀ°<×EA!Å‚D™IúOÍ¡>ôG}Â` ÍßkÜL™Ž Þð™ {IøF²¹òQ3&!ÃÂÞz.d&Ï-sH¸,Ôõ˜ŽP€ 77ˆÝ¼ÊëÜw =cÕ Ú,ØÐ5ÎYÐ)ì´öœgŒ[¤ßv㙑8心>h]§µháYš£²ºÑ.{Ï7Sð•?´~×SÃKýJÛ˜ ™Íäiúu<µX¶1õ^kâçIÑ£sZ4h>j*ÔšD:4­¿_ ÷¸ Õxæÿ ¸?Mù _•­ÊÐ ä ÷ý ÑwL œ­ïnTkÛUÍN©ë:¦fV ¶ÜÔÜMªÅâA½–¿R×TXš-%iTÊT•‡Ù‚JôϐZxWÑè‰f‰òG º ×Õû2aZ7OU3[“×AT–ÞŒ…-‘¤”Ì ì&(ˆ¿­•ƒkï’:ðY¦W‘ Å)“†‘˜³Åtcø˜ñTÂwÚÇ4|üLÇªí–v- qˆèU qPE.†â‘˜µ Æ,ÐÅs]8¾„oúÑ i>ÜxxÈó)ƒ ´æÁâØ$À‰vžŸf$Ž |ãw;ÀÁIJ»b` {¦Ó¤Ú$©YÀ‘n@Óïž«9J¼êG m¤ ܯ¹ÌW4€ÐÒÅÛ‡#褕Ÿn-?í|с¥÷Ú¹¬'´ÞÜ9ÓK `hê£SÄSà?7—Wí_´…óB›»:=Ãïq`<8ñÓŒÑlú2d¬ê³£hÖ[l|$vÝro~'R®‰§°ñmY ͧäP |PUª¹·:3Œ[Û{Xÿ ºâ@‚W–Äé u‚ ¯´*=íή.pûÒdt @G‰¬ s¸ ëÉücr ÞæÑ¨Ê@>¤¢Ö±. Þ'¯°ÌME[YéïĵÂCå½ Ué©Áû'Ê9%eÔðNU”ë‘ÌsD3/®+UI˜9h.WC”빓$#:pz:YÓ ¿xž* ³$Í +$kñAŠ‹†¢ Uê>¸)_š¬÷©ßAÂÔb9ÇU ¯¾á•9¯ÏÏ÷O÷¼¼Fähal1‰3Ì[Ïr•´UCksNÐ] R‘¸¥H+§Šé†c©vÖÞ0iÓ76s†î!§=ß ¼~Ô'°Ãmäoäš³ªøi1úÉ)³yV8 CLÄØÁ‘WYïi€H6ÖÑiámø^ÈY´°Ñ7¥Û*—Ñ©L«Qƒï—Ùrÿ ›£Ð*š¸ˆL©ˆ$ˆ ÷¾D§9È®«qbqC)–ˆïv´çñsÑVT­Ø, <àïºÀO«Jý·õ àfPìð .wFšir´þ’2_Y *Æ€x\« ì€9š@ Ž|F⇥ˆkZ@hÖÄ0t¿-<“‹qµ¾*ZL¤Ú)&BJpÓF5=$„at*Zš$’ÑtdûÝRI1 2މ$€$I$#‰SÞ’Hë¬ï;Á$¡t$’`<(ñÇt)$‡Ð.Êf¢X’Kt=Éé$‚ˆªè¢oÝëòI%Rgcª÷ŠyI%¡‰ÿ !ñ)´õ $¤ Ô’IIGÿÙa 3gz@sPddlZddlZddlZddlZddlZddlmZddlmZm Z m Z ddl m Z z ddl Z WneyvdZ Yn0edZdZddZd d Zd d Zd dZddZddZddZGdddejZGdddejZGdddejZGdddejZGdddejZee dudGd d!d!ejZ e!d"krLe"dS)#N)patch)assert_python_okassert_python_failure interpreter_requires_environment)support)i@cCsZg}td}t|D]:}|j}|j|}||j|fd}|j}|durqRqt|S)Nr) sys _getframerangef_codef_linenoappend co_filenamef_backtuple)nframeZ lineno_deltaframesframeindexcodelinenor4/opt/python39/lib/python3.9/test/test_tracemalloc.py get_framess   rcCs<t}|t}t|d}d|}|t|tt||fS)Nr x) tracemallocget_traceback_limitEMPTY_STRING_SIZEr Tracebackminlen)sizerZ bytes_lenrdatarrrallocate_bytes"s  r%cCs4d}gd}t||}gd}t||}||fS)N)r )a.pyr&b.pyr'r'r r&r*r+r.r&B)r,r r r. rr )r'r'r')r&r&r0r.)r&r0r.)r-)c.pyBr )rSnapshot)traceback_limit raw_tracessnapshotZ raw_traces2 snapshot2rrrcreate_snapshots)s   rEcCst||fSN)rZ_FramefilenamerrrrrJsrcGs t|SrF)rr )rrrr tracebackMsrIcCs t||fSrF)rIrGrrrtraceback_linenoPsrJcCs t|dSNr)rJ)rHrrrtraceback_filenameSsrLc@seZdZddZdS) TestTracebackcCsntddd}||dd||dddd}d }|||d |d |||d d |d dS)N)returncWsttj|SrF)reprrr )argsrrrget_reprYsz)TestTraceback.test_repr..get_reprrzrz))f1r )f2r&z@(, )z r&z total_nframe=2>)str assertEqual)selfrQrZexp_repr_framesrrr test_reprXs    zTestTraceback.test_reprN)__name__ __module__ __qualname__rXrrrrrMWsrMc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zeeed!d"d#d$Zd%S)&TestTracemallocEnabledcCs tr|dtddS)N+tracemalloc must be stopped before the testr )r is_tracingskipTeststartrWrrrsetUpks zTestTracemallocEnabled.setUpcCs tdSrFrstoprarrrtearDownqszTestTracemallocEnabled.tearDowncCsRddtdD}t}||dtt}||d|||dS)NcSsg|] }tdqS){r%).0countrrr urzFTestTracemallocEnabled.test_get_tracemalloc_memory..ir)r rZget_tracemalloc_memoryassertGreaterEqual clear_tracesassertLessEqual)rWr$r#size2rrrtest_get_tracemalloc_memoryts  z2TestTracemallocEnabled.test_get_tracemalloc_memorycCs2td}t|\}}t|}|||dSN90)rrlr%get_object_tracebackrVrWobj_sizeobj obj_tracebackrIrrrtest_get_object_traceback~s   z0TestTracemallocEnabled.test_get_object_tracebackcCshttg}d}g}t}t|d}t|tt||}t |}| || ||dS)N) rrlr gc_collectrrr r!r"rrassertIsNotNonerV)rWrurrrvrIrrrtest_new_references   z)TestTracemallocEnabled.test_new_referencecCsd}t|ttjdttdt|\}}t|}|t|d|||ttdt|\}}t|}|t|d|||dS)Nr(rr ) rrd assertRaises ValueErrorr`r%rrrVr")rWrtobj2obj2_tracebackrIrurvrrrtest_set_traceback_limits       z/TestTracemallocEnabled.test_set_traceback_limitcCs.|D]}|d|jkr|Sq|ddS)Nr&ztrace not found)_framesfail)rWtracesrItracerrr find_traces z!TestTracemallocEnabled.find_tracec Csztd}t|\}}t}|||}||t|\}}}} ||||||jt |tgdSrp) rrlr% _get_tracesrZassertIsInstancerrVrrd) rWrtrurvrrdomainr#rIlengthrrrtest_get_tracess     z&TestTracemallocEnabled.test_get_tracescsddfddfdd}ttdd}||\}}||\}}t}tt|j|_tt|j|_|||}|||} |\} } } } | \}}}}||| dS) NcSst|SrFrgr#rrrallocate_bytes2szPTestTracemallocEnabled.test_get_traces_intern_traceback..allocate_bytes2cs|SrFrr)rrrallocate_bytes3szPTestTracemallocEnabled.test_get_traces_intern_traceback..allocate_bytes3cs|SrFrr)rrrallocate_bytes4szPTestTracemallocEnabled.test_get_traces_intern_traceback..allocate_bytes4r-rf) rrdr`rrreversedrrZassertIs)rWrrtZobj1Zobj1_tracebackr~rrZtrace1Ztrace2Zdomain1size1Z traceback1Zlength1Zdomain2rn traceback2Zlength2r)rrr test_get_traces_intern_tracebacks          z7TestTracemallocEnabled.test_get_traces_intern_tracebackc Csd}d}tt|\}}t\}}||||||||||||||d}t\}}|||||||||||t|tdt|\}}t\}}|||t|tddS)N)rr) rrlr%get_traced_memoryrkrm assertLessrVrd) rWZ max_errorrtrurvr#Z peak_sizernZ peak_size2rrrtest_get_traced_memorys*          z-TestTracemallocEnabled.test_get_traced_memorycCs@td\}}t|}||tt|}||dS)Nrf)r%rrrrzrl assertIsNone)rWrurvrIrrrrtest_clear_tracess     z(TestTracemallocEnabled.test_clear_tracesc Csttttd}t\}}tt\}}||||||d}t |\}}t\} } || | | | ||| ||dS)Nir) rrlsumlistr rZ reset_peakrkrr% assertGreater) rWZ large_sumrZpeak1rnZpeak2rtrurvZsize3Zpeak3rrrtest_reset_peak s        z&TestTracemallocEnabled.test_reset_peakcCs0t|tt|tdSrF)rrd assertFalser^r` assertTruerarrrtest_is_tracing$sz&TestTracemallocEnabled.test_is_tracingcCstd\}}t}||jdjjd|tj | tj tj tj tj }||j|jt|t}tWdn1s0Y|t|jddS)Nrfr r(zLthe tracemalloc module must be tracing memory allocations to take a snapshot)r%r take_snapshotrrrI total_nframedumprTESTFN addCleanupunlinkr@loadrVrdr| RuntimeErrorrU exception)rWrusourcerCrDcmrrr test_snapshot+s   & z$TestTracemallocEnabled.test_snapshotcCsJt}d|_|tj|tjtjtj tj}| |jddS)Nnew) rrZ test_attrrrrrrr@rrV)rWrCrDrrrtest_snapshot_save_attrDs  z.TestTracemallocEnabled.test_snapshot_save_attrcCs6ts dSd}t|\}}t|}|dur2dSdS)Nr&rqr.r)rr^r%rrrsrrr fork_childOs  z!TestTracemallocEnabled.fork_childforkzneed os.fork()c CsHt}|s6d}z|}Wt|qDt|0ntj|dddS)Nr r)exitcode)osrr_exitrZ wait_process)rWpidrrrr test_fork\s z TestTracemallocEnabled.test_forkN)rYrZr[rbrerorwr{rrrrrrrrrrrunittestZ skipUnlesshasattrrrrrrrr\js$ $   r\c@sxeZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZdS) TestSnapshoticCsdg}t}|tjtddd|tjtddd|tjtd|dt}||jd|t |j d|j d }||j d||j j d |t |j d||j d jd ||j d jd Wdn1s0YdS) N)rr2)r)r(r^T)Z return_valuerr2rr rr(r*r&) contextlib ExitStack enter_contextrobjectrrrVrAr"rr#rIrrHr)rWrBstackrCrrrrtest_create_snapshotns(     z!TestSnapshot.test_create_snapshotc Cst\}}tdd}tddd}tddd}t|jj}||f}||jjgd||jj||||f}||jjgd|d } || ||| j|j|| j|j| t |j|dS) NFr,Tr*r&r2)r'r'r'r/r6)r'r'r'r/r) rErFilterrr_traces filter_tracesrVZ assertIsNotr| TypeError) rWrCrDfilter1filter2Zfilter3original_traces snapshot3Z snapshot4Z snapshot5rrrtest_filter_tracess       zTestSnapshot.test_filter_tracescCszt\}}tjdddd}tjdddd}t|jj}||f}||jjgd||f}||jjgddS)NFr*r rT)r'r'r'r3r6)rErrrrrrrV)rWrCrDrrrrrrrtest_filter_traces_domains    z&TestSnapshot.test_filter_traces_domaincCsht\}}tjddd}tjddd}||f}||jjgd||f}||jjdgdS)NFr.rT)r'r'r'r/r3r6)rEr DomainFilterrrVrr)rWrCrDrrrrrr test_filter_traces_domain_filters    z-TestSnapshot.test_filter_traces_domain_filterc Cs(t\}}tdd}tdd}tdd}tdd}tdd }|d }||t|d dt|d d t|ddt|ddg|d } || t|ddt|ddt|d d g||d } || t|ddddt|ddddt|ddddt|ddddt|d dd dgdS)Nr:rr*r&r2r,r r>r?rr4r.r7r<r;r)rErJ statisticsrVr Statistic compare_to StatisticDiff) rWrCrDtb_0tb_a_2tb_a_5tb_b_1Ztb_c_578stats1stats2rrrrtest_snapshot_group_by_lines6                z(TestSnapshot.test_snapshot_group_by_linec Cst\}}td}td}td}td}|d}||t|ddt|dd t|d dg|d}||t|d d t|d dg||d} || t|d dd dt|d d ddt|ddddt|ddddgdS)Nr:r*r,r>rHr4r r-r7ir2r<r;rrrr)rErLrrVrrrr) rWrCrDrtb_atb_bZtb_crrdiffrrrtest_snapshot_group_by_files.         z(TestSnapshot.test_snapshot_group_by_filec Cs6t\}}tdd}tdd}td}td}|d}||t|ddt|d d t|d dt|d dgtd }|d} || t|dd t|ddt|d d g||d} || t|ddd dt|ddddt|ddddt|ddddt|d dd dg|jt |jddddS)Nr)r+r1r5r9rIr4r rr.r7r&r=rr<r;rrrrT)Z cumulative) rErIrrVrrrrr|r}) rWrCrDZtb1Ztb2Ztb3Ztb4rZtb5rrrrr test_snapshot_group_by_tracebacks<             z-TestSnapshot.test_snapshot_group_by_tracebackc Cst\}}td}td}td}tdd}tdd}tdd}tdd} |dd } || t|d dt|d dt|d dg|d d } || t|ddt| d dt|ddt|d dt|ddgdS)Nr:r*r,r&r2r r-rHTbrr7rr4rr.)rErLrJrrVrr) rWrCrDrrrrrrZtb_b_4statsrrr!test_snapshot_group_by_cumulativeAs,               z.TestSnapshot.test_snapshot_group_by_cumulativecCsVt\}}|jd}|t|d|j}|t|d|d}|t|ddS)Nrz b.py:4: 10 Bzb.py:4)rErrVrUrI)rWrCrDrrIrrrrtest_trace_format]s  zTestSnapshot.test_trace_formatcCs0t\}}|d}|d}|t|ddS)Nrrz(b.py:1: size=66 B, count=1, average=66 B)rErrVrUrWrCrDrstatrrrtest_statistic_formatfs    z"TestSnapshot.test_statistic_formatcCs2t\}}||d}|d}|t|ddS)Nrrz;a.py:5: size=5002 B (+5000 B), count=2 (+1), average=2501 B)rErrVrUrrrrtest_statistic_diff_formatms    z'TestSnapshot.test_statistic_diff_formatcCs`t\}}||jdd|jd|jdf|jdj}||dd|d|dfdS)Nr&rr )rErVrrI)rWrCrDrIrrr test_slicests  zTestSnapshot.test_slicescCst\}}dd}tjjd|d|jdj}||gd||jddd d g||jd dd d g||jddgd||jdddd d g||jd ddd d gWdn1s0YdS)NcSs d||fS)Nz <%s, %s>rrGrrrgetlinesz3TestSnapshot.test_format_traceback..getlineztracemalloc.linecache.getline)Z side_effectr) File "b.py", line 4  File "a.py", line 2 r )limitrrrrrT)most_recent_first)rrrr)rr)rErZmockrrrIrVformat)rWrCrDrtbrrrtest_format_traceback}s@   z"TestSnapshot.test_format_tracebackN)rYrZr[maxDiffrrrrrrrrrrrrrrrrrrks&#&  rc@s8eZdZdZddZddZddZdd Zd d Zd S) TestFiltersrcCstdd}||jd||jd||j||jdtdddd}||jd||jd||jd||jdtjddddd}||jd||jd||jd||jd|t t |dddS)NTabcFztest.pyrf) inclusivefilename_patternr all_framesr) rrrVrrrrrr|AttributeErrorsetattrrWfrrrtest_filter_attributess   z"TestFilters.test_filter_attributescCstdd}||dd||dd||dd||dd||dd||ddtdd}||dd||dd||dd||dd||dd||ddtddd}||dd||dd||dd||dd||dd||ddtddd}||dd||dd||dd||dd||dd||ddtddd}||dd||dd||dd||dd||dd||ddtddd}||dd||dd||dd||dd||dd||dddS)NTrrr2r(12356F)rrr _match_framerrrrrtest_filter_matchsT  zTestFilters.test_filter_matchcCsxdd}||ddd||ddd||ddd||ddd||ddd||ddddS)NcSst||}||dSrKrrr)rrHpatternrrrrfnmatchs z7TestFilters.test_filter_match_filename..fnmatchTrrr:F)rrrWrrrrtest_filter_match_filenamesz&TestFilters.test_filter_match_filenamecCsdd}||dd||dd||dd||dd||dd||dd||dd||dd||dd ||dd ||dd ||dd ||d d||dd ||dd||dd||dd||dd||dd||dd||ddtjdkr||dd||dd||dd||ddn@||dd||dd||dd||ddtjdkr4||d d!||d!d ||d"d#||d$d%n@||d d!||d!d ||d"d#||d$d%||d&ddS)'NcSstd|}||dS)NTrr)rHrfilterrrrrs z=TestFilters.test_filter_match_filename_joker..fnmatchr*Zabcddefza*zabc*zb*zabcd*za*cZabcdcxza*cxZabbZabcdceZabcdeza*c*eZ abcbdefegza*bd*egZabcddZ abcbdefefza.pycr*ntZaBCZABcZaBcDezAb*dEza.PYza.PYCza/bza\bza/b\cza\b/cza/b/cza\b\cza.pyo)rrrnamerrrr test_filter_match_filename_jokersR  z,TestFilters.test_filter_match_filename_jokercCsDd}d}d}d}tjdddd}||||||||||||tjdddd}||||||||||||tjdddd}||||||||||||tjdddd}||||||||||||tjdd dd}||||||||||||tjdd dd}||||||||||||tjdd dd}||||||||||||dS) N)r))r,r.)r+)r,r2))r>r2r9r8Tr,)rFr:)rrrZ_match_tracebackr)rWt1t2Zt3unknownrrrrtest_filter_match_traceCsNz#TestFilters.test_filter_match_traceN) rYrZr[rrrrr rrrrrrs 4 Erc@seZdZddZeedddZddZdd Z d d Z d d Z ddZ ddZ ddZddZeedudddZdS)TestCommandLinecCs,d}td|\}}}|}||ddS)N3import tracemalloc; print(tracemalloc.is_tracing())-cFalserrstriprVrWrokstdoutstderrrrr test_env_var_disabled_by_defaultusz0TestCommandLine.test_env_var_disabled_by_defaultz6Cannot run -E tests when PYTHON env vars are required.cCs2d}tdd|dd\}}}|}||ddS)zAPYTHON* environment variables must be ignored when -E is present.rz-Er1ZPYTHONTRACEMALLOCrNrrrrrtest_env_var_ignored_with_E|sz+TestCommandLine.test_env_var_ignored_with_EcCs0d}td|dd\}}}|}||ddS)Nrr0rrrrrrrtest_env_var_disabledsz%TestCommandLine.test_env_var_disabledcCs0d}td|dd\}}}|}||ddS)NrrrrsTruerrrrrtest_env_var_enabled_at_startupsz/TestCommandLine.test_env_var_enabled_at_startupcCs0d}td|dd\}}}|}||ddS)Ntr|dd|_d|_t|jd|_t|j|_dS)Nr]r2rfr) rr^r_rr#r%ruidptrrarrrrbs  zTestCAPI.setUpcCs tdSrFrcrarrrreszTestCAPI.tearDowncCs*t|j|j}|dur"t|SdSdSrF)r:Ztracemalloc_get_tracebackrr=rr )rWrrrr get_tracebacks zTestCAPI.get_tracebackFr cCs$t|d}t|j|j|j||S)Nr )rr:Ztracemalloc_trackrr=r#)rW release_gilrrrrrtracks  zTestCAPI.trackcCst|j|jdSrF)r:Ztracemalloc_untrackrr=rarrruntrackszTestCAPI.untrackcCs6t}td|j}||g}tdd|jDS)NTcss|] }|jVqdSrFr)rhrrrr rz-TestCAPI.get_traced_memory..)rrrrrrr)rWrCZ domain_filterrrrrs zTestCAPI.get_traced_memorycCsRd}t|td}|||}||t||||jdS)Nr2r)rr`rr@rVr>r r#)rWr?rr#rrrr check_tracks    zTestCAPI.check_trackcCs|ddS)NFrCrarrr test_trackszTestCAPI.test_trackcCs|ddS)NTrDrarrrtest_track_without_gil szTestCAPI.test_track_without_gilcCs<d}t|||j|d}||t|dS)Nr2r*)rr`r@rVr>r )rWrrrrrtest_track_already_trackeds   z#TestCAPI.test_track_already_trackedcCsjt||||||j|| |||d||dSrK) rr`r@rzr>rVrr#rArrarrr test_untrackszTestCAPI.test_untrackcCsTtt|t|Wdn1s80Y||dSrF)rr`rdr|rr@rr>rarrrtest_stop_track+s  &zTestCAPI.test_stop_trackcCsNt|t|t|Wdn1s@0YdSrF)rr`r@rdr|rrArarrrtest_stop_untrack3s  zTestCAPI.test_stop_untrackN)Fr )rYrZr[rrbrer>r@rArrCrErFrGrHrIrJrrrrr;s    r;__main__)#rrr rrZ unittest.mockrZtest.support.script_helperrrrtestrr: ImportError getsizeofrr+rr%rErrIrJrLZTestCaserMr\rrrr9r;rYmainrrrrsD       !8T\k