ÿØÿà 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 3gx@sdZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z m Z ddl m Z ddlmZmZddlmZmZe dZdZd Zeje jd ZGd d d ejZGd ddejZGdddeZ GdddeZ!ddZ"GdddejZ#e$dkre%dS)z!Test script for the gzip module. N)PIPEPopen)support)_4G bigmemtest)assert_python_okassert_python_failuregzipsy int length=DEFAULTALLOC, err = Z_OK; PyObject *RetVal; int flushmode = Z_FINISH; unsigned long start_total_out; s/* zlibmodule.c -- gzip-compatible data compression */ /* See http://www.gzip.org/zlib/ /* See http://www.winimage.com/zLibDll for Windows */ z-gzdirc@s$eZdZddZddZddZdS) UnseekableIOcCsdS)NFselfr r -/opt/python39/lib/python3.9/test/test_gzip.pyseekable$szUnseekableIO.seekablecCs tjdSNioUnsupportedOperationr r r rtell'szUnseekableIO.tellcGs tjdSrr)r argsr r rseek*szUnseekableIO.seekN)__name__ __module__ __qualname__rrrr r r rr #sr c@s"eZdZejZddZddZdS)BaseTestcCst|jdSrrunlinkfilenamer r r rsetUp1szBaseTest.setUpcCst|jdSrrr r r rtearDown4szBaseTest.tearDownN)rrrrTESTFNrrrr r r rr.src@szeZdZd]ddZddZddZdd Zd d Zd d ZddZ ddZ ddZ e e ddddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Z dd?Z"d@dAZ#dBdCZ$dDdEZ%dFdGZ&dHdIZ'dJdKZ(dLdMZ)dNdOZ*dPdQZ+dRdSZ,dTdUZ-dVdWZ.dXdYZ/dZd[Z0d\S)^TestGzipbcCst|}t|jd|}||}Wdn1s:0Y||t|t|jd| }|||Wdn1s0YdS)Nwr)bytesr GzipFilerwrite assertEquallenread)r datamodeZb_dataflr r rwrite_and_read_back9s (zTestGzip.write_and_read_backcCsxt|jdN}|td||ttdrFt || Wdn1sb0Y| dS)Nwb2fsync) r r&rr'data1flushfilenohasattrosr2closer r-r r r test_writeAs &zTestGzip.test_writecCst|j}t|d}|tdWdn1s<0Y||jt t|d}|tWdn1s0Yt|}| }Wdn1s0Y| |td||jt dS)Nr#r1a3) pathlibPathrr r&r'r3ZassertIsInstancenamestrr*r()r rr-dr r r"test_write_read_with_pathlike_fileOs ,( &z+TestGzip.test_write_read_with_pathlike_filecCsB|ttdtttd}|jdgdd}||dS)Nr1B)rE)shape)r/ memoryviewr3r%rangecast)r mr+r r rtest_write_memoryview^szTestGzip.test_write_memoryviewcCs|ttddS)Nr1)r/ bytearrayr3r r r rtest_write_bytearraydszTestGzip.test_write_bytearraycCs|tdtddS)NI()r/arrayr3r r r rtest_write_arraygszTestGzip.test_write_arrayc Cst|jd}|t|dWdn1s:0Y|t|gWdn1sn0Y|tWdn1s0Yt|jd }||tWdn1s0YdS)Nr0rb) r r&r assertRaises TypeErrorr'r3r(r*r9r r rtest_write_incompatible_typejs ( ((z%TestGzip.test_write_incompatible_typecCsR|t|jd}|}Wdn1s40Y||tddS)Nr$r1)r:r r&rr*r(r3r r-rAr r r test_readws&zTestGzip.test_readcCs|g}d}t|jdF}|}|s.qV|||t|7}|||q Wdn1sj0Y|d |t ddS)Nrr$r1) r:r r&rread1appendr)r(rjoinr3)r Zblocksnreadr-rAr r r test_read1~s  0zTestGzip.test_read1)sizeZmemusecCs8tjtdd}tjt|dd}|||tdS)Nr` compresslevelrTfileobjr,)r compressr3r&rBytesIOr(r*)r ra compressedr-r r rtest_read_largeszTestGzip.test_read_largecCsx|t|jd}|j}||j|||j| t | dWdn1sf0Y| t | dWdn1s0Y| t | Wdn1s0Yt|jd}|j}||j|||j| t |dWdn1s60Y| t |Wdn1sj0YdS)Nr$r`rr#rZ)r:r r&rre assertFalseclosedr8 assertTruerU ValueErrorr*rrr'r4)r r-rer r rtest_io_on_closed_objects*   ( ( &   * z!TestGzip.test_io_on_closed_objectcCs|t|jd}|tdWdn1s:0Yt|jd}|}Wdn1sp0Y||tdtddS)NabrTr1) r:r r&rr'data2r*r(r3rXr r r test_appends ,&zTestGzip.test_appendc Cst|jdd}|dWdn1s00YtddD]>}t|jdd}|dWdqD1sx0YqDt|jd.}d}|d }||7}|sqqWdn1s0Y||d dS) Nr0 arrorTrZi saaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)r r&rr'rIr*r()r r-iZzgfilecontentsZztxtr r rtest_many_appends(* &zTestGzip.test_many_appendcCst|jd}|tdWdn1s20Yt|jd$}||tdWdn1st0Y|tt|jdWdn1s0YdS)Nxbr1rT) r r&rr'r3r(r*rUFileExistsErrorr9r r rtest_exclusive_writes ,2 zTestGzip.test_exclusive_writec Cs|t|jdH}t|}dd|D}Wdn1sF0YWdn1sd0Y||dtjdddS)NrTcSsg|]}|qSr r ).0liner r r rZz1TestGzip.test_buffered_reader..r1Tkeepends) r:r r&rrBufferedReaderr(r3 splitlines)r r-r$linesr r rtest_buffered_readers  JzTestGzip.test_buffered_readercCsv|t|jdL}d}||}|s4|dkr4qT|t||k|dd}qWdn1sh0YdS)NrTrr`r1)r:r r&rreadlinerlr))r r-Z line_lengthLr r r test_readlines zTestGzip.test_readlinecCs|t|jd}|}Wdn1s40Yt|jd&}|d}|gkrNqdqNWdn1sx0YdS)NrT)r:r r&r readlines)r r-rr r rtest_readliness & zTestGzip.test_readlinescCs|t|j|}|}|}|s,q|}||t|dkrPd}nt|}||}| |d||||qWdn1s0YdS)N ) r:r r&rrrrr)r*r()r r-ZoldposZline1ZnewposamountZline2r r rtest_seek_reads   zTestGzip.test_seek_readcCsn|t|j2}|d|jddd|d}Wdn1sL0Y||tdddS)Nrr`)whence)r:r r&rr*rr(r3)r r-yr r rtest_seek_whence s  (zTestGzip.test_seek_whencecCsXt|jd6}tdddD]}|||dqWdn1sJ0YdS)Nr#rrCsGZ )r r&rrIrr')r r-posr r rtest_seek_writes zTestGzip.test_seek_writecCs|t|jd }||jjdWdn1s<0Yt|jt|jd }||jjdWdn1s0YdS)Nr$rTxry) r:r r&rr(Z myfileobjr,rrr9r r r test_modes . zTestGzip.test_modec Cs\dD]R}t|j|0}|t|d||j|jWdq1sL0YqdS)N)r0rTr?)r r&rrlr6r(r?)r r,r-r r r test_1647484%szTestGzip.test_1647484cCs^|t|jd4}|t|jd||jj|jWdn1sP0YdS)NrTr?) r:r r&rrlr6rer(r?r9r r rtest_paddedfile_getattr+sz TestGzip.test_paddedfile_getattrcCsd}tj|jd|d}|tWdn1s60Yt|jN}|t|d||j| }| |t| |j|Wdn1s0YdS)N[r#mtimer) r r&rr'r3rlr6Z assertIsNonerr*r()r rfWritefReadZdataReadr r r test_mtime1s(  zTestGzip.test_mtimec Csd}tj|jd|d}|tWdn1s60Yt|jd:}|d}||d|d}||dz|jd d }d}Wnt yd }d }Yn0|d}||||d } || t d ||d} || d|d} || d|t |} || || t|jjd|d } || d|d }||t d t tWdn1s0YdS)Nrr#rrTr`zLatin-1rZrFz.sizesrT!rrZd) r3r r&rr'Zmax_read_chunkpeekr(r*r))r rr-rr^rsr r r test_peeks(  zTestGzip.test_peekc Cstddjdd}|t|jdN}tj|dd }| | |Wdn1sb0YWdn1s0YdS)Nr1asciiTrr$encoding) r3decoderr:r r&rr TextIOWrapperr(r)r rr-tr r rtest_textio_readliness zTestGzip.test_textio_readlinesc Cstt|jtjtjB}t|d>}tj|dd}Wdn1sH0YWdn1sf0YdS)Nr0r#rd)r7rrO_WRONLYO_CREATfdopenr r&)r fdr-gr r rtest_fileobj_from_fdopensz!TestGzip.test_fileobj_from_fdopenc Cst|jdt|jdD}tj|dd }||jtjWdn1sV0Ytj|dd }||jtjWdn1s0Ytj|dd }||jtjWdn1s0Ytj|dd }||jtjWdn1s0Y| t tj|ddWdn1sL0YWdn1sl0Yd D]r}t|j|N}tj|d  }||jtjWdn1s0YWdn1s0Yqzd D]}d|vr t |jt|j|~}| ttj|d }Wdn1sH0Y| ||jtjWdn1s~0YWdn1s0YqdS) Nr0r+br$rdr#r;rz)rTrre)r0rory)r r&rr8rr(r,ZREADZWRITErUrmrrZ assertWarns FutureWarning)r r-rr,r r rtest_fileobj_modes0...0 NT   ,zTestGzip.test_fileobj_modecCs|j}z|d}Wnty0|dYn0t|d}|tdWdn1sb0Yt|d$}|| tdWdn1s0Yt|d$}|| tdWdn1s0YdS)Nrz%Temporary file name needs to be ASCIIr0r1rT) rrrZskipTestr r&r'r3r(r*)r Z str_filenameZbytes_filenamer-r r rtest_bytes_filenames ,2zTestGzip.test_bytes_filenamecCsttjdtddd}|t|tjt|}tj|d}| | dddtj}| |j j |ddS) z-Decompressed data buffering should be limitedrg>Arsrbrr`z)Excessive amount of data was decompressedN)r rfintZ assertLessr)rDEFAULT_BUFFER_SIZErgr&r(r*ZassertLessEqual_bufferrawr)r ZbombdecompZ max_decompr r rtest_decompress_limited s   z TestGzip.test_decompress_limitedc CsttfD]t}dD]j}tj|g|R}|t|ttjt |dd }|| |Wdq1sp0YqqdS)Nr )r`)r)rsrTrd) r3rqr rfr(typer%r&rrgr*)r r+rdatacr-r r r test_compresss  zTestGzip.test_compressc Csd}ttfD]}dD]}|j||dtj|g|Rd|i}|t|ttjt |dd(}| d||j |Wdn1s0YWdq1s0Yqq dS)Nrr)r+rrrTrdr`) r3rqrr rfr(rr%r&rrgr*r)r rr+rrr-r r rtest_compress_mtimes  zTestGzip.test_compress_mtimec CsttfD]v}t}tj|dd}||Wdn1sB0Y|t| |t |}|t||qdS)Nr0rd) r3rqrrgr r&r'r( decompressrrf)r r+rr-rr r rtest_decompress*s ( zTestGzip.test_decompressc Cstd}t|dd}tjt|d}|t|jWdn1sP0Ytjt|d6}| |t |||t|jdWdn1s0Yt ddD]P}tjt|d|d }|t|jdWdq1s0YqdS)Nr1irr`rr) r3r rfr&rrgrUEOFErrorr*r(r)rI)r r+Z truncatedr-rvr r rtest_read_truncated4s,.zTestGzip.test_read_truncatedcCsJd}tjt|d }||dWdn1s<0YdS)NscQExtra I-.2MxrsTest)r r&rrgr(r*)r Zgzdatar-r r rtest_read_with_extraBszTestGzip.test_read_with_extracCsxt|jd}|tWdn1s.0Yt|jd}|jjjWdn1sj0YdS)Nr0rT) r rrr'r3rr_fpZprependr9r r rtest_prepend_errorJs(zTestGzip.test_prepend_errorN)r")1rrrr/r:rBrLrNrRrWrYr_rrrirnrrrxr{rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r rr!8sZ          3    r!c@sTeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)TestOpencCstd}t|jd}||Wdn1s60Yt|jd*}t|}|||Wdn1s|0Yt|jd }|||Wdn1s0Yt|jd}||Wdn1s0Yt|jd.}t|}|||dWdn1s>0Y|t t|jdWdn1sx0Yt |jt|jd}||Wdn1s0Yt|jd*}t|}|||Wdn1s0YdS)Nr1r0rTrorry r3r rrr'rr*r(rUrzrrr rr- file_datar r rtest_binary_modesRs*(*.(0 . *zTestOpen.test_binary_modescCst|j}t|d}|tdWdn1s<0Yt|d}|tWdn1sr0Yt|$}||tdWdn1s0YdS)Nr0r1ror<) r=r>rr rr'r3r(r*)r rr-r r rtest_pathlike_filems ,( zTestOpen.test_pathlike_filecCstd}t|jd}||Wdn1s60Yt|jd*}t|}|||Wdn1s|0Yt|jd }|||Wdn1s0Yt|jd}||Wdn1s0Yt|jd.}t|}|||dWdn1s>0Y|t t|jdWdn1sx0Yt |jt|jd}||Wdn1s0Yt|jd*}t|}|||Wdn1s0YdS)Nr1r#rTr$r;rrrrr r rtest_implicit_binary_modesvs*(*.(0 . *z#TestOpen.test_implicit_binary_modescCsntdd}|dtj}t|jd}||Wdn1sJ0Yt|jd0}t | d}| ||Wdn1s0Yt|jd }| | |Wdn1s0Yt|jd}||Wdn1s0Yt|jd4}t | d}| ||dWdn1s`0YdS) Nrr1 wtrTrtZatr r3rreplacer7linesepr rrr'rr*r(r rZuncompressed_rawr-rr r rtest_text_modess(*.*zTestOpen.test_text_modescCstd}|d}t|}tt|d }|||Wdn1sT0Ytt|d }|||Wdn1s0Ytt|d }|||Wdn1s0YdS)Nr1rr$rTr) r3rr rfrrrgr(r*)r Zuncompressed_bytesZuncompressed_strrhr-r r r test_fileobjs  ..zTestOpen.test_fileobjcCs`|ttdWdn1s*0Y|tt|jdWdn1sb0Y|tt|jdWdn1s0Y|t"tj|jdddWdn1s0Y|t"tj|jdddWdn1s0Y|t"tj|jdd d Wdn1sR0YdS) Ngw/^@ZwbtZxbtrTzutf-8rignore)errorsrnewline)rUrVr rrmrr r r rtest_bad_paramss ( , , 0 2 zTestOpen.test_bad_paramscCstdd}|dtj}tj|jddd}||Wdn1sN0Yt|jd0}t | d}| ||Wdn1s0Ytj|jddd }| | |Wdn1s0YdS) Nrr1rrzutf-16rrTrrrr r r test_encodings(*zTestOpen.test_encodingcCst|jd}|dWdn1s.0Ytj|jdddd }||dWdn1sr0YdS)Nr0sfoobarrrr)rrZfoobar)r rrr'r(r*r9r r rtest_encoding_error_handlers (z$TestOpen.test_encoding_error_handlercCstdd}tj|jddd}||Wdn1s@0Ytj|jddd"}|||gWdn1s0YdS)Nrr1rrrr )r3rr rrr'r(r)r rr-r r r test_newlines (zTestOpen.test_newlineN) rrrrrrrrrrrrr r r rrQs   rcsfdd}|S)Ncstfdd}|S)Nc s6tz|i|WtSt0dSr)r7makedirsrrmtree)rkwargs) directoryfunctionr rwrappers   z?create_and_remove_directory..decorator..wrapper) functoolswraps)r rr )r r decoratorsz.create_and_remove_directory..decoratorr )r rr rrcreate_and_remove_directorys rc@speZdZdZddZeeddZddZeedd Z eed d Z eed d Z ddZ ddZ dS)TestCommandLinesThis is a simple test with gzipc Cst}tj|dd}||jWdn1s:0Ytjdddf}t|t t t d"}| | \}}Wdn1s0YWdn1s0Y| |d| ||jdS)Nr0rd-mr -dstdinstdoutstderrrZ) rrgr r&r'r+sys executablerr communicaterr()r Zbytes_ioZ gzip_filerprocouterrr r rtest_decompress_stdin_stdouts *N z,TestCommandLine.test_decompress_stdin_stdoutcCstjtd}|tj|tj|dd}||j Wdn1sP0Yt ddd|\}}}ttjtdd"}| | |j Wdn1s0Y| tj|| |d | |d | |d dS) Nz testgzip.gzr0)r,rr rtestgziprTrrZ)r7pathr]TEMPDIRrjexistsr rr'r+rr(r*rl)r gzipnamefprcrr Zgunzipedr r rtest_decompress_infile_outfiles*0  z.TestCommandLine.test_decompress_infile_outfilecCs@tdddd\}}}|d|||d||ddS)Nrr rzthisisatest.outs.filename doesn't end in .gz: 'thisisatest.out'r`rZ)rr(stripr r(rr r r r$test_decompress_infile_outfile_errors z4TestCommandLine.test_decompress_infile_outfile_errorcCsptjddf}t|tttd }||j\}}Wdn1sB0Y||d||ddddS)Nrr rrZrr)rrrrrr+r()r rrrr r r rtest_compress_stdin_outfile s  . z+TestCommandLine.test_compress_stdin_outfilecCstjtd}|d}|tj|t|d}||jWdn1sT0Yt dd|\}}}| tj|| |d| |ddS)Nr".gzr0rr rZ) r7r#r]r$rjr%rr'r+rrlr()r local_testgzipr&r'r(rr r r r$test_compress_infile_outfile_defaults * z4TestCommandLine.test_compress_infile_outfile_defaultc CsdD]}|j|dtjtd}|d}|tj|t|d}||j Wdn1sj0Yt dd||\}}}| tj|| |d| |dt ||tj|Wdq1s0YqdS) N)--fast--best)compress_levelr"r.r0rr rZ)rr7r#r]r$rjr%rr'r+rrlr(remove)r r3r/r&r'r(rr r r rtest_compress_infile_outfile$s *   z,TestCommandLine.test_compress_infile_outfilecCs0tdddd\}}}|d|||ddS)Nrr r1r2s8error: argument --best: not allowed with argument --fastrZrZassertInr(r+r r r%test_compress_fast_best_are_exclusive7s z5TestCommandLine.test_compress_fast_best_are_exclusivecCs0tdddd\}}}|d|||ddS)Nrr r1rsAerror: argument -d/--decompress: not allowed with argument --fastrZr6r+r r r-test_decompress_cannot_have_flags_compression<s z=TestCommandLine.test_decompress_cannot_have_flags_compressionN)rrrr+r!rr$r)r,r-r0r5r7r8r r r rrs     r__main__)&__doc__rQrrr7r=rrZunittest subprocessrrtestrZ test.supportrrZtest.support.script_helperrr import_moduler r3rqr#abspathr r$rgr ZTestCaserr!rrrrmainr r r rs:      \