ÿØÿà 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 3g1u@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z m Z mZmZddlZddlZddlZddlZddlZddlmZmZmZz ddlZWneydZYn0dZeeddZdZd d Zd d Z eZ!eee!e"eZ#d Z$dZ%dZ&ej'(dZ)ej'(dZ*ej+,e$dZ-dZ.Gdddej/Z0Gddde0Z1e 2Gddde1Z3Gdddej/Z4ddZ5e6dkre7dS)N)support)ZipFileZipInfo ZIP_STORED ZIP_DEFLATED) extract_tb extract_stackprint_tbzHdef get_name(): return __name__ def get_file(): return __file__ execz def do_raise(): raise TypeError cCs6t|}tjjtddt|d@|d@|}|S)NzZ'd?d@Z(dAdBZ)dCdDZ*dEdFZ+dGdHZ,dIdJZ-e.e/j0dKudLdMdNZ1dOdPZ2dQdRZ3dSdTZ4dUdVZ5dKS)WUncompressedZipImportTestCasecCs ttjt|dSr&) linecache clearcache zipimport_zip_directory_cacher+r%r/r-rrrr/Ps z#UncompressedZipImportTestCase.setUpc Cs|tj||D]\}\}}tj||}|dtjkrVtj|st |qtj |}tj|sxt |t |d}| |Wdq1s0YqdS)Nwb) addCleanuprrmtreeitemsrr!joinr isdirmakedirsdirnameopenwrite) r.filesZdirNamenamerrr!ZdnamefprrrmakeTreeWs      z&UncompressedZipImportTestCase.makeTreec Ks|tj|t|dd}|D]0\}\}}t|t|}|j|_ | ||q"| dd} | durn| |_ Wdn1s0Y| dd} | durt |d} | }Wdn1s0Yt |d$} | | | |Wdn1s 0YdS)Nwcommentstuffrbr:)r;runlinkrr=rtime localtime compression compress_typewritestrgetrIrBreadrC) r.rDZzipNamekwzrErrzinforIrJfrrrmakeZiphs   $   &  z%UncompressedZipImportTestCase.makeZipcOsz|j|fi|tjdttd|}|d}|durJ|||rv| }| |t jjtg|R|dS)Nrrcall) rXr'r!insertTEMP_ZIPr import_moduler>rRZget_file assertEqualr)r.Z expected_extrDmodulesrTmodrYfilerrrdoTests z$UncompressedZipImportTestCase.doTestcCsdtjvr|ddtjvr&tjd=dttfi}z|d|dWn&tyj|jt krf| dYn0|jt kr| ddS)Nzlibzzlib is a builtin modulezzlib.pyr#z&expected test to not raise ImportErrorz"expected test to raise ImportError) r'builtin_module_namesZskipTestr^NOWtest_srcra ImportErrorrOrfailrr.rDrrr testAFakeZlibs       z+UncompressedZipImportTestCase.testAFakeZlibcCs"tdttfi}|d|tdSNr#TESTMODrdrerarhrrrtestPysz$UncompressedZipImportTestCase.testPycCs"ttttfi}|t|tdSr&)rlpyc_extrdtest_pycrarhrrrtestPycsz%UncompressedZipImportTestCase.testPyccCs.tdttfttttfi}|t|tdSrj)rlrdrernrorarhrrrtestBoths  z&UncompressedZipImportTestCase.testBothcsjd}tj|}tjt|dd|d}tdtdftdtd|fi}fd d }jd|t|d dS) N state = 'old'???r Fr# state = 'new'r$cs|jddS)Noldr]stater_r-rrcheckszFUncompressedZipImportTestCase.testUncheckedHashBasedPyc..checkrY rr source_hash_bootstrap_external_code_to_hash_pyccompilerlrdrar.sourcer}bytecoderDrzrr-rtestUncheckedHashBasedPycs    z7UncompressedZipImportTestCase.testUncheckedHashBasedPycz_imp.check_hash_based_pycsalwayscsjd}tj|}tjt|dd|d}tdtdftdtd|fi}fd d }jd|t|d dS) Nrrrsr Fr#rtr$rucs|jddS)Nnewrwryr-rrrzszOUncompressedZipImportTestCase.test_checked_hash_based_change_pyc..checkr{r|rrr-r"test_checked_hash_based_change_pycs    z@UncompressedZipImportTestCase.test_checked_hash_based_change_pyccCs"tdtdfi}|d|tdS)Nr#)rlrdrarhrrr testEmptyPysz)UncompressedZipImportTestCase.testEmptyPycCsFtt}|ddN<tdttfttt|fi}|d|tdS)Nrr# bytearrayrorlrdrernrar.Z badmagic_pycrDrrr testBadMagics   z*UncompressedZipImportTestCase.testBadMagiccCs\tt}|ddN<ttt|fi}z|d|tWntyLYn 0|ddS)Nrrr#z)expected ImportError; import from bad pyc)rrorlrnrdrarfrgrrrr testBadMagic2s z+UncompressedZipImportTestCase.testBadMagic2cCsFtt}|ddN<tdttfttt|fi}|d|tdS)N r#r)r.Z badtime_pycrDrrr testBadMTimes   z*UncompressedZipImportTestCase.testBadMTimecCs>ttdtt}tdttfttt|fi}|d|tdS)Nr r#)rtest_colenrerlrdrnra)r.Ztwenty_thirty_eight_pycrDrrr test2038MTimes   z+UncompressedZipImportTestCase.test2038MTimecCsBttj}|dtttf|ttttfi}|t|ttdSN__init__)TESTPACKrr rnrdrorlra)r.packdirrDrrr testPackages  z)UncompressedZipImportTestCase.testPackagecCsbttj}|ttj}|dtttf|dtttf|ttttfi}|t|tttdSr) rrr TESTPACK2rnrdrorlrar.rpackdir2rDrrrtestSubPackage s z,UncompressedZipImportTestCase.testSubPackagecCsRttj}|ttj}|tdf|tdf|ttttfi}|t|tttdSNr) rrr rrdrlrnrorarrrrtestSubNamespacePackages z5UncompressedZipImportTestCase.testSubNamespacePackagec CsRttj}|ttj}|tdtj}|tdf|ttttf|tdf|tdf|ttttf|tdtttf|ttttfi}|tdf|tdtttf|tdf|tdtttf|ttttfi}tj d}| ||t }| ||t jd|t jd|tt}|dt|j|j\} } |tjt | tjd|d| tjdt|tjddd }|d t|jt|jddtjd } ||dd | tdttf}|d|jtjd tdttdf}|tjt |jtjd dttf} t| }|dt|j|j\} } |tjt | tjd |d| tjd td| tf}|tjt |jtjd td| tdf}|tjt |jtjd td| tdf}|d|jtjd dS) N3r2 path1.ziprrrr9)rrr rrdrlrnror!abspathrXTEMP_DIRrGr'rZrr\r]r__path__basenamesplitrlistr>__file__) r.rrpackdir3files1files2zip1zip2r_p1p2mpathsubpkgrrrtestMixedNamespacePackagesl          z7UncompressedZipImportTestCase.testMixedNamespacePackagec Cs2ttj}|ttj}|tdtj}|tdf|ttttf|tdf|tdf|ttttf|tdtttf|ttttfi}tj d}| |||tdf|tdtttf|tdf|tdtttf|ttttfi}tj d}| ||t j d|t j d|t t}|dt|j|j\} } |d| tjd|d| tjdt |tjd dd }|d t|jt|jddtjd } ||dd | t d ttf}|d|jtjd t d ttdf}|d|jtjd d ttf} t | }|dt|j|j\} } |d| tjd |d| tjd t d | tf}|d|jtjd t d | tdf}|d|jtjd t d | tdf}|d|jtjd dS)Nrrrrz path2.ziprrrrr9rrr)rrr rrdrlrnror!rrXr'rZrr\r]rrrrrr>r) r.rrrrrrrr_rrrrrrrtestNamespacePackageks`         z2UncompressedZipImportTestCase.testNamespacePackagec Csttj}|ttj}|dtttf|dtttf|ttttfdtttfi}|t j t t t dP}| D]6\}\}}t|t|}|j|_d|_|||qzWdn1s0Ytt } || jt || td| d} || || tj|| d| d} || d| j | t} || t| j t!"tj#d} tj$%t t}|| ||| |dd|| |td|| |td|t}t&|}t!"|} |'|t(j)v|| *td|| *|d|| || j | j+}||*|d|||| j tt tjt}||jt ||j,ttjdS)NrZspamrHsspamTrF)-rrr rrnrdrorlr;rrLr[rr=rrMrNrOrPrIrQr7 zipimporterr]archive is_package find_moduleassertIsNotNoneassertIsInstance assertFalse load_module get_filenamerrr\rr!r>r" assertTruer'r^ get_source __loader__prefix)r.rrrDrUrErrrVziZfind_modload_modr_Zexisting_pack_pathZexpected_path_pathmod_pathmod_nameloaderzi2rrrtestZipImporterMethodssX   ,       z4UncompressedZipImportTestCase.testZipImporterMethodscCsPttj}|ttj}|dtttf|ttttfi}|t j t t t dP}| D]6\}\}}t|t|}|j|_d|_|||q^Wdn1s0Ytt tj|} || jt || j||| td| t} || t| j|| ttjdd|| ttjtdt tj|t} t| } | t} || | | tj|!| t| t}|| t|jttjt}t"|}t#$|} |%|t&j'v|| (td|| (|d|| || j| j)}||(|d|||| jdS)NrrHseggsTF)*rrr rrnrdrorlr;rrLr[rr=rrMrNrOrPrIrQr7rr]rrrrrrrrrrr"rr\rr'r^rr)r.rrrDrUrErrrVrr_Zpkg_pathrZfind_mod_dottedrrrrrrr$testZipImporterMethodsInSubDirectorysX  ,       zBUncompressedZipImportTestCase.testZipImporterMethodsInSubDirectorycCs|tjtttd>}|j|_d}tddtdD}|||Wdn1s\0Yt t}| || || dt|dS)NrHz testdata.datcss|] }|VqdSr&r).0xrrr "z.zzipimporter object)r;rrLr[rrObytesrangerQr7rr]get_dataZassertInrepr)r.rUrErrrrr testGetDatas * z)UncompressedZipImportTestCase.testGetDatacCsFd}tt|ddtt|}ttt|fdtdfi}|t|tdS)Nzif 1: # indent hack def get_file(): return __file__ if __loader__.get_data("some.data") != b"some data": raise AssertionError("bad data") r r z some.dataz some data)rrrdrrlrnra)r.srcrrDrrrtestImporterAttr)s  z.UncompressedZipImportTestCase.testImporterAttrcCs\d}tdt|fi}||tjdttt}| | dd| t |j ddS)Nz[if 1: # indent hack def test(val): assert(val) return val r#rrF) rlrdrXr'r!rZr[rr\r]test assertRaisesAssertionError)r.rrDr_rrrtestDefaultOptimizationLevel4s  z:UncompressedZipImportTestCase.testDefaultOptimizationLevelcCs&tdttfi}|jd|tdddS)Nr#s6Some StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome Stuff)rJrkrhrrrtestImport_WithStuffAs z2UncompressedZipImportTestCase.testImport_WithStuffcCs|t|tdSr&)r]inspectZ getsourcere)r.modulerrrassertModuleSourceHsz0UncompressedZipImportTestCase.assertModuleSourcecCs(tdttfi}|jd|t|jddSNr#r{)rlrdrerarrhrrr testGetSourceKsz+UncompressedZipImportTestCase.testGetSourcecCsLtttddttt}tdttfttt|fi}|jt|t|jddS)Nr r r#r{) rrrerdrrlrnrar)r.rrDrrrtestGetCompiledSourceOs   z3UncompressedZipImportTestCase.testGetCompiledSourcecCs.tdttfdtdfi}|jd|t|ddS)Nr#xyz.txtz>>> log.append(True) r{rk)r.callbackrDrrr runDoctestUs z(UncompressedZipImportTestCase.runDoctestcCsLg}tjd}t_ztjd|dtdW|t_n|t_0||dgdSNrT)packageZmodule_relativeZglobs)doctestZmasterZtestfilelocalsr])r.rlogZ old_masterrrr doDoctestFileZsz+UncompressedZipImportTestCase.doDoctestFilecCs||jdSr&)rrr-rrrtestDoctestFilefsz-UncompressedZipImportTestCase.testDoctestFilecCs.g}tjd|dtd||dgdSr)rZ DocFileTestrrunr])r.rrrrrdoDoctestSuiteis  z,UncompressedZipImportTestCase.doDoctestSuitecCs||jdSr&)rrr-rrrtestDoctestSuiteqsz.UncompressedZipImportTestCase.testDoctestSuitec Csz |Wnty}z|jj}t|dd\}}}}||tt|j dd\}}}}||tt }t |d|| |tWYd}~nd}~00tddS)NrrzThis ought to be impossible)Zdo_raise Exception __traceback__tb_nextrr] raise_srcstriprtb_frameioStringIOr rgetvalueendswithr) r.retbrWlnonlinesrrr doTracebackts  *z)UncompressedZipImportTestCase.doTracebackcCs(tdttfi}|jd|t|jddSr)rlrdrrarrhrrr testTracebacksz+UncompressedZipImportTestCase.testTracebackNzneed an unencodable filenamecCs~tjd}|tj|t|d8}ttdtt }|j |_ | |t Wdn1s`0Yt|tdSNz.ziprHr#)rTESTFN_UNENCODABLEr;rLrrrlrMrNrdrOrPrQrer7rrr.filenamerUrVrrrtestUnencodables  *z-UncompressedZipImportTestCase.testUnencodablecCstjd}|tj|t|d8}ttdtt }|j |_ | |t Wdn1s`0Yt|tt||t$ttt|Wdn1s0Y|t$ttt|Wdn1s0YdSr)rZTESTFNr;rLrrrlrMrNrdrOrPrQrer7rrfsencoder TypeErrorr memoryviewrrrr testBytesPaths  *  2 z+UncompressedZipImportTestCase.testBytesPathcCs&tdttfi}|jd|tdddS)Nr#scommentrIrkrhrrr testCommentsz)UncompressedZipImportTestCase.testCommentcCs(tdttfi}|jd|tddddS)Nr#s@cruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftshi)rJrIrkrhrrrtestBeginningCruftAndCommentsz:UncompressedZipImportTestCase.testBeginningCruftAndCommentcCs*tdttfi}|jd|tddddS)Nr#cirrkrhrrrtestLargestPossibleCommentsz8UncompressedZipImportTestCase.testLargestPossibleComment)6r1r2r3rrOr/rrGr[rXrarirmrprqrunittestZmockZpatchrrrrrrrrrrrrrrrrrrrrrrrrrrrZskipIfrrr r rrrrrrrr4Ls\         MI81      r4c@seZdZeZdS)CompressedZipImportTestCaseN)r1r2r3rrOrrrrrsrc@sTeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)BadFileZipImportTestCasecCs|tjtj|dSr&)rr7ZipImportErrorr)r.rrrrassertZipFailuresz)BadFileZipImportTestCase.assertZipFailurecCs|ddS)NZAdfjdkFJKDFJjdklfjsrr-rrr testNoFilesz#BadFileZipImportTestCase.testNoFilecCs|ddSrrr-rrrtestEmptyFilenamesz*BadFileZipImportTestCase.testEmptyFilenamecCsB|ttjd|jttjtdd|ttjtttdS)N)Zkwd)rr r7rrlrrr r-rrr testBadArgss   z$BadFileZipImportTestCase.testBadArgscCs|dddS)NAirr-rrrtestFilenameTooLongsz,BadFileZipImportTestCase.testFilenameTooLongcCs"tttt|tdSr&)rrLrlZcreate_empty_filerr-rrr testEmptyFiles  z&BadFileZipImportTestCase.testEmptyFilec Cstttttjd}zZt||tj }t tWdn1sR0YWt tdttnt tdtt0dS)Nri) rrLrlrrBO_CREATcloserr7rrchmod)r.fdcmrrrtestFileUnreadables  *  z+BadFileZipImportTestCase.testFileUnreadablecCs4ttttd}|d||tdS)Nw+Zaaaaaaaaaaaaaaaaaaaaaa)rrLrlrBrCr r)r.rFrrrtestNotZipFiles    z'BadFileZipImportTestCase.testNotZipFilecCs*ttttd}|tdd|d|t t}z| t |j d| t |j d| t |jd| t |jd| t |jd| t |jdtj}|| dd| ||j d| ||jd| t|jd| ||jd| ||jdWtjn tj0dS)Nr%z=IiPKZaaaaaaaaaaaaaaaaaaabc)rrLrlrBrCrrr r7rrr rrrget_coderrrr]OSErrorr8r+)r.rFrUerrorrrr_testBogusZipFiles*    z*BadFileZipImportTestCase._testBogusZipFileN) r1r2r3rrrrrrr$r&r+rrrrrsrcCsttdSr&)rrLrlrrrrtearDownModulesr,__main__)8r'rr rimportlib.utilrrMrZ unittest.mockrrzipfilerrrrr7r5rrr tracebackrrr rbrfrerrrrr"rdrrorlrrr!rrr[rcache_from_sourceZpyc_filernZTestCaser%r4Z requires_zlibrrr,r1mainrrrrs\       iK