ÿØÿà 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 3g"@sddlZddlZddlZddlmZddlmZddlZddlZddl Z ddl m Z ddl m Z ddlmZddlmZGdd d ZGd d d ejZGd d d ejZGdddejZGdddeZGdddejZGdddeZGdddeZGdddejZGdddeZGdddejZGdddejZGd d!d!ejZ Gd"d#d#ejZ!Gd$d%d%Z"e#e$ed&d'Gd(d)d)ejZ%Gd*d+d+ejZ&Gd,d-d-ejZ'Gd.d/d/ejZ(e)d0kre*dS)1N)StringIO) TemporaryFile)support) permutations)dedent) OrderedDictc@seZdZddZdS) BadIterablecCstdSNOSErrorselfr,/opt/python39/lib/python3.9/test/test_csv.py__iter__szBadIterable.__iter__N)__name__ __module__ __qualname__rrrrrrsrc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zejd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Z d9d:Z!d;d<Z"d=d>Z#d?d@Z$dAdBZ%dCS)DTest_CsvcCs|t||t|d|jt||dd|jt||dd|jt||dd|tj||d|jt||dd|jt||dd|jt||dd|jt||dd|jt||dd|jt||dd |jt||tjd d |jt||tjdd dS) NrZbad_attr delimiterZXXZfoo) quotechar)lineterminatorquoting)rr) assertRaises TypeErrorcsvError QUOTE_ALL)r ctorargrrr_test_arg_valids$   zTest_Csv._test_arg_validcCs$|tjg|ttjtdSr )r%r readerrr rr rrrtest_reader_arg_valid/szTest_Csv.test_reader_arg_validcCs4|tjtGddd}|ttj|dS)Nc@seZdZeddZdS)z1Test_Csv.test_writer_arg_valid..BadWritercSstdSr r r rrrwrite6sz7Test_Csv.test_writer_arg_valid..BadWriter.writeN)rrrpropertyr(rrrr BadWriter5sr*)r%r writerrrr )r r*rrrtest_writer_arg_valid3szTest_Csv.test_writer_arg_validcGs||}||jjd||jjd||jjd||jjd||jjd||jjt j ||jj d||jj d| tt|jd| tt|jdd| tt|jd| tt|jdddS) N,T "Fr:r) assertEqualdialectrassertIs doublequote escapecharrrrr QUOTE_MINIMALskipinitialspacestrictrAttributeErrordelattrsetattr)r r#argsobjrrr_test_default_attrs;s zTest_Csv._test_default_attrscCs|tjgdSr )r>r r&r rrrtest_reader_attrsMszTest_Csv.test_reader_attrscCs|tjtdSr )r>r r+rr rrrtest_writer_attrsPszTest_Csv.test_writer_attrsc Gstdddddtjddd}||i|}||jjd||jjd||jjd||jj d||jj d||jj tj||jj d||jj ddS)Nr0F\ *T)rr4r5rrrr7r8)dictr QUOTE_NONEr1r2rr3r4r5rrrr7r8)r r#r<kwargsr=rrr_test_kw_attrsSszTest_Csv._test_kw_attrscCs|tjgdSr )rGr r&r rrrtest_reader_kw_attrscszTest_Csv.test_reader_kw_attrscCs|tjtdSr )rGr r+rr rrrtest_writer_kw_attrsfszTest_Csv.test_writer_kw_attrscGsGddd}||f}||}||jjd||jjd||jjd||jjd||jjd||jjt j ||jj d||jj ddS) Nc@s.eZdZdZdZdZdZdZej Z dZ dZ dS)z-Test_Csv._test_dialect_attrs..dialect-F^$#TN) rrrrr4r5rrr r"rr7r8rrrrr2ksr2rJFrKrLrMT) r1r2rr3r4r5rrrr r"r7r8)r r#r<r2r=rrr_test_dialect_attrsis zTest_Csv._test_dialect_attrscCs|tjgdSr )rNr r&r rrrtest_reader_dialect_attrssz"Test_Csv.test_reader_dialect_attrscCs|tjtdSr )rNr r+rr rrrtest_writer_dialect_attrssz"Test_Csv.test_writer_dialect_attrscKsntdddN}tj|fi|}|||d||||jjWdn1s`0YdSNw+rnewliner) rr r+writerowseekr1readr2r)r fieldsexpectrFfileobjr+rrr _write_tests    zTest_Csv._write_testc Kstdddp}tj|fi|}||||Wdn1sJ0Y|d||dWdn1s0YdSrQ)rr r+rrUrVr1rW)r excrXrFrZr+rrr_write_error_tests  ( zTest_Csv._write_error_testcCs|tjd|dd|dgd|jtjdgtjd|ttGddd}|t|Gddd}|t|gdS) Nrr""rc@seZdZddZddZdS)z.Test_Csv.test_write_arg_valid..BadListcSsdS)N rr rrr__len__sz6Test_Csv.test_write_arg_valid..BadList.__len__cSs|dkr tdS)Nr )r irrr __getitem__sz:Test_Csv.test_write_arg_valid..BadList.__getitem__N)rrrr`rcrrrrBadListsrdc@seZdZddZdS)z.Test_Csv.test_write_arg_valid..BadItemcSstdSr r r rrr__str__sz6Test_Csv.test_write_arg_valid..BadItem.__str__N)rrrrerrrrBadItemsrf)r]r r!r[rEr r)r rdrfrrrtest_write_arg_valids zTest_Csv.test_write_arg_validcCs$dd}|||gd||fdS)NXP%s,%s)r[)r bigstringrrrtest_write_bigfields zTest_Csv.test_write_bigfieldcCs|gdd|jtjgdtjd|jgddtjd|jgddtjd|jgddtjd|jddgdtjddS) Narzp,q a,1,"p,q"rz "a",1,"p,q"z "a","1","p,q"a brz "a b","1")r[r]r r!rEr6QUOTE_NONNUMERICr"r rrrtest_write_quotings     zTest_Csv.test_write_quotingcCs|jgdddd|jtjgdddd|jgddddd|jd gd dtjd |jd gd dtjdd |jd gd dtjd |jgdddtjd dS)NrmrorAr5)rnrzp,"q"F)r5r4z a,1,"p,\"q\""r/"""")r5rz\")r5rr4za,1,p\,q)r[r]r r!r6rEr rrrtest_write_escapes,      zTest_Csv.test_write_escapecCs||tgdd|tgdd|tgd|tdgd|jtjtdgtjd|tddgddS) Nrmro)rnrNza,1,rr^rr-)r[iterr]r r!rEr rrrtest_write_iterables zTest_Csv.test_write_iterablecCsGddd}t|}|t|jdggtdddZ}t|}|t|jd|ddgdd gg|d || d Wdn1s0YdS) Nc@seZdZddZdS)z+Test_Csv.test_writerows..BrokenFilecSstdSr r )r bufrrrr(sz1Test_Csv.test_writerows..BrokenFile.writeN)rrrr(rrrr BrokenFilesryrnrRrrSbcdrz a,b c,d ) r r+rr writerowsrrrVr1rW)r ryr+rZrrrtest_writerowss   zTest_Csv.test_writerowscCs0tdddJ}t|}|ddgddgg|d||dWdn1s\0YtdddF}t|}|dgdgg|d||dWdn1s0YtdddF}t|}|dgdgg|d||d Wdn1s"0YdS) NrRrrSrnr|rza, ,d z"" a za "" )rr r+r}rVr1rWr rZr+rrrtest_writerows_with_nones  .  .  z!Test_Csv.test_writerows_with_nonecCs\tddd<}t|}|t|jd|t|jtWdn1sN0YdS)NrRrrS)rr r+rrr}r rrrrrtest_writerows_errorss zTest_Csv.test_writerows_errorscCstddl}|d}tdddB}t|}||gg|d||dWdn1sf0YdS)NrrnrRrrSza ) _testcapiZunicode_legacy_stringrr r+r}rVr1rW)r rr{rZr+rrrtest_writerows_legacy_stringss   z&Test_Csv.test_writerows_legacy_stringscKs*tj|fi|}t|}|||dSr )r r&listr1)r inputrYrFr&resultrrr _read_testszTest_Csv._read_testcCs|gg|dggg|jtj|jdgddd|jtj|jdgddd|jdgdggdd|tj|jd gddS) Nrz"ab"crr8zabcabcr)r4sabcrrr r!r rrrtest_read_oddinputs s    zTest_Csv.test_read_oddinputscCs|dgddgg|dgddgg|dgddgg|dgddgg|tj|jdgg|tj|jdgg|tj|jd ggdS) Nza,brnrzza,b za,b za,b za,b c,dza,b c,dza,b c,drr rrr test_read_eolszTest_Csv.test_read_eolcCs|dgddgg|dgdgg|jdgdggdd|jtj|jdggdd |jtj|jdggdd |jtj|jdggddd dS) Nza,"rnrz"arK rsTr)r5r8rr rrr test_read_eof#s  zTest_Csv.test_read_eofcCs|jdggdgdd|jdgddggdd|jdgddggdd|jd gddggdd|jd gdd ggdd|jd gdd ggdddS)Nza,\b,c)rnrzr{rArsza,b\,crnzb,cza,"b\,c"za,"b,\c"z a,"b,c\""zb,c"za,"b,c"\zb,c\)rr rrrtest_read_escape,s zTest_Csv.test_read_escapecCs|dggdg|jdggdgddd|jdggdgtjdd|jdggdgtjd |d gd d gg|jt|jd gggtjd dS)Nz 1,",3,",5)1z,3,5)rr/3r/rrA)rr5rr5z ,3,"5",7.3, 9)rrg333333@ rz"a b", 7rpz 7zabc,3)rr rErqr ValueErrorr rrrtest_read_quoting4s zTest_Csv.test_read_quotingc Cst}zd}d|}d||f}||g||ggt|||g||gg|t|t|d|tj|j|gg|ttjd|ttjddWt|n t|0dS)Nrirhrjr)r Zfield_size_limitrr1rr!r)r limitsizerkZbiglinerrrtest_read_bigfieldBs  zTest_Csv.test_read_bigfieldcCs~tgd}||jdt|||jdt|||jdt|||jd|tt|||jddS)N)zline,1zline,2zline,3rrrar)r r&r1Zline_numnextr StopIteration)r rrrrtest_read_linenumUszTest_Csv.test_read_linenumcCstdddf}t|}ddgddgg}|||dtt|D]\}}||||qJWdn1sx0YdS) NrRrrSrprzr{x dr)rr r+r}rV enumerater&r1r rZr+rowsrbrowrrrtest_roundtrip_quoteed_newlinesas   z(Test_Csv.test_roundtrip_quoteed_newlinescCstdddv}tj|tjdd}ddgdd gg}|||d ttj|tjddD]\}}||||qZWdn1s0YdS) NrRrrSrArrprzr{rr) rr r+rEr}rVrr&r1rrrr(test_roundtrip_escaped_unquoted_newlinesjs  z1Test_Csv.test_roundtrip_escaped_unquoted_newlinesN)&rrrr%r'r,r>r?r@rGrHrIrNrOrPr[r]rgrlrrrurwr~rrrZ cpython_onlyrrrrrrrrrrrrrrrrsD      rc@s\eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS)TestDialectRegistrycCs|ttjd|ttj|tjtjd|tjtjd|ttj|tjtjd|tjtjd|ttjd|ttjdd|ttjddd|jttjddd|jttjddd|ttjgdS)NZnonesuchr)Z badargumentr)rrr list_dialects get_dialectr!unregister_dialectregister_dialectr rrrtest_registry_badargsts"  z)TestDialectRegistry.test_registry_badargscCsvGdddtj}d}t|g}|t|||tj||t|j dt t}|||dS)Nc@seZdZdZdS)z5TestDialectRegistry.test_registry..myexceltsv Nrrrrrrrr myexceltsvsrr) r excelrsortr addCleanuprr1rrsorted)r rnameZexpected_dialectsZ got_dialectsrrr test_registrys  z!TestDialectRegistry.test_registrycCsXd}tj|dd|tj||t|jd|gdgttdg|dS)NZfedcba;r)rhYZzX;Y;Z) r rrrr1rrrr&)r rrrrtest_register_kwargss z(TestDialectRegistry.test_register_kwargscCs$Gdddtj}|tj|dS)Nc@seZdZdZdS)z?TestDialectRegistry.test_incomplete_dialect..myexceltsvrNrrrrrrsr)r Dialectrr!)r rrrrtest_incomplete_dialectsz+TestDialectRegistry.test_incomplete_dialectcCsGdddtj}td\}|d|dtj||d}|t|ddg|t|d d gWdn1s|0YdS) Nc@seZdZdZejZdZdS)z5TestDialectRegistry.test_space_dialect..space rAN)rrrrr rErr5rrrrspacesrrRzabc def c1ccccc1 benzene rr2rdefZc1ccccc1Zbenzene)r rrr(rVr&r1r)r rrZr&rrrtest_space_dialects   z&TestDialectRegistry.test_space_dialectcOsrtddddP}tj|g|Ri|}|gd|d|||Wdn1sd0YdS)NrRrutf-8rTencodingrrarr)rr r+rUrVr1rW)r expectedZ writeargsZ kwwriteargsrZr+rrrcompare_dialect_123s  z'TestDialectRegistry.compare_dialect_123c CsGdddtj}Gdddtj}Gdddtj}Gdddtj}Gd d d }td|z||d |jd dd |jd |d |d ||jd|d |jddd |jd|dd|jd|d Wtdn td0dS)Nc@seZdZdZdS)z5TestDialectRegistry.test_dialect_apply..testArNrrrrrtestAsrc@seZdZdZdS)z5TestDialectRegistry.test_dialect_apply..testBr0NrrrrrtestBsrc@seZdZdZdS)z5TestDialectRegistry.test_dialect_apply..testC|NrrrrrtestCsrc@seZdZdZdS)z7TestDialectRegistry.test_dialect_apply..testUniuΛNrrrrrtestUnisrc@s eZdZdS)z;TestDialectRegistry.test_dialect_apply..unspecifiedNrrrrrrr unspecifiedsrz1,2,3 rz1 2 3 z1:2:3 z1|2|3 z1;2;3 r)r2ru 1Λ2Λ3 )r rrrr)r rrrrrrrrtest_dialect_applys(   z&TestDialectRegistry.test_dialect_applycCsT|jttjgdd|jttjgdd|jttjgdd|jttjgdddS)Nrrrrd)rrr r&r rrrtest_bad_dialectsz$TestDialectRegistry.test_bad_dialectcCs,tD]}t|}|ttj|qdSr )r rrrrcopy)r rr2rrr test_copys  zTestDialectRegistry.test_copycCsBtD]4}t|}ttjdD]}|ttj||q$qdS)Nr) r rrrangepickleHIGHEST_PROTOCOLrrdumps)r rr2protorrr test_pickles  zTestDialectRegistry.test_pickleN) rrrrrrrrrrrrrrrrrrss   rc@seZdZddZddZdS) TestCsvBasecCshtdddH}|||dtj||jd}t|}|||Wdn1sZ0YdS)NrRrrSrr)rr(rVr r&r2rr1)r rexpected_resultrZr&rXrrrreaderAssertEquals   zTestCsvBase.readerAssertEqualcCsdtdddD}tj||jd}|||d|||Wdn1sV0YdS)NrRrrSrr)rr r+r2r}rVr1rW)r rrrZr+rrrwriterAssertEquals   zTestCsvBase.writerAssertEqualN)rrrrrrrrrrsrc@seZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4S)5TestDialectExcelrcCs|ddggdS)Nrrr rrr test_singleszTestDialectExcel.test_singlecCs|dgdgdS)Nz 1,2,3,4,5)r2r4rrr rrr test_simpleszTestDialectExcel.test_simplecCs|dgdSNrrr rrrtest_blanklineszTestDialectExcel.test_blanklinecCs|dddggdS)Nr-rrr rrrtest_empty_fieldssz"TestDialectExcel.test_empty_fieldscCs|ddggdS)Nr^rrr rrrtest_singlequotedsz"TestDialectExcel.test_singlequotedcCs|dddggdS)Nz"",rrr rrrtest_singlequoted_left_emptysz-TestDialectExcel.test_singlequoted_left_emptycCs|dddggdS)Nz,""rrr rrrtest_singlequoted_right_empty sz.TestDialectExcel.test_singlequoted_right_emptycCs|ddggdS)Nrtr/rr rrrtest_single_quoted_quote sz)TestDialectExcel.test_single_quoted_quotecCs|ddggdS)Nz""""""r^rr rrrtest_quoted_quotessz#TestDialectExcel.test_quoted_quotescCs|ddggdS)Nza""brr rrrtest_inline_quotesz"TestDialectExcel.test_inline_quotecCs|ddggdS)Nza"b"crr rrrtest_inline_quotessz#TestDialectExcel.test_inline_quotescCs|ddggdS)Nz"a"babrr rrrtest_quotes_and_moresz%TestDialectExcel.test_quotes_and_morecCs|ddggdS)Nza"brr rrrtest_lone_quotesz TestDialectExcel.test_lone_quotecCs|ddggdS)Nz"a" "b"za "b"rr rrrtest_quote_and_quote sz%TestDialectExcel.test_quote_and_quotecCs|ddggdS)Nz "a"rr rrrtest_space_and_quote%sz%TestDialectExcel.test_space_and_quotecCs|dgdgdS)Nz#1,2,3,"I think, therefore I am",5,6)rrrzI think, therefore I amr6rr rrr test_quoted(szTestDialectExcel.test_quotedcCs|dgdgdS)NzJ1,2,3,"""I see,"" said the blind man","as he picked up his hammer and saw")rrrz"I see," said the blind manz"as he picked up his hammer and sawrr rrrtest_quoted_quote.sz"TestDialectExcel.test_quoted_quotecCs d}||gdgdgdS)NzR1,2,3,"""I see,"" said the blind man","as he picked up his hammer and saw" 9,8,7,6)rrrz"I see," said the blind manz"as he picked up his hammer and saw)987rr)r rrrrtest_quoted_nl4s zTestDialectExcel.test_quoted_nlcCs|dgdgdS)Nz 12,12,1",)12rz1"rrr rrrtest_dubious_quote@sz#TestDialectExcel.test_dubious_quotecCs|gddSrrr rrr test_nullCszTestDialectExcel.test_nullcCs|dggddS)Nrzabc rr rrrtest_single_writerFsz#TestDialectExcel.test_single_writercCs|gdgddS)N)rrarrz 1,2,abc,3,4 rr rrrtest_simple_writerIsz#TestDialectExcel.test_simple_writercCs|gdgddS)N)rraza"bc"rrz1,2,"a""bc""",3,4 rr rrr test_quotesLszTestDialectExcel.test_quotescCs|dggddSNabc,defz "abc,def" rr rrrtest_quote_fieldsepOsz$TestDialectExcel.test_quote_fieldsepcCs|gdgddS)N)rraza bcrrz1,2,"a bc",3,4 rr rrr test_newlinesRszTestDialectExcel.test_newlinesN)rrrr2rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrs4 rc@seZdZejZdZdS) EscapedExcelrAN)rrrr rErr5rrrrrUsrc@s"eZdZeZddZddZdS)TestEscapedExcelcCs|dggddS)Nr abc\,def rr rrrtest_escape_fieldsep\sz%TestEscapedExcel.test_escape_fieldsepcCs|ddggdS)Nrrrr rrrtest_read_escape_fieldsep_sz*TestEscapedExcel.test_read_escape_fieldsepN)rrrrr2rr rrrrrYsrc@s eZdZdZddZddZdS)TestDialectUnixZunixcCs|gdgddS)N)rabc defr"1","abc def","abc" rr rrrresz"TestDialectUnix.test_simple_writercCs|dgdgdS)Nr )rr rrr rrrtest_simple_readerhsz"TestDialectUnix.test_simple_readerN)rrrr2rr rrrrr bsr c@seZdZejZdZdS)QuotedEscapedExcelrAN)rrrr rqrr5rrrrrksrc@s"eZdZeZddZddZdS)TestQuotedEscapedExcelcCs|dggddSrrr rrrtest_write_escape_fieldseprsz1TestQuotedEscapedExcel.test_write_escape_fieldsepcCs|ddggdS)Nz "abc\,def" rrr rrrr usz0TestQuotedEscapedExcel.test_read_escape_fieldsepN)rrrrr2rr rrrrrosrc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'S)(TestDictFieldscCsVtddd6}tj|gdd}|}||dWdn1sH0YdS)NrRrrSf1f2f3 fieldnamesr_)rr DictWriter writeheaderr1)r rZr+Zwriteheader_return_valuerrrtest_writeheader_return_value{sz,TestDictFields.test_writeheader_return_valuecCstdddv}tj|gdd}||d||d|dd d |d|||d Wdn1s0YdS) NrRrrSrrr f1,f2,f3 r_r)rrz 10,,abc ) rr rrrVr1readlinerUrWrrrrtest_write_simple_dicts  z%TestDictFields.test_write_simple_dictcCsbt}tj|gdd}|||d|ddddddd dg||d dS) NrrrrrfraZxyzzf1,f2,f3 1,abc,f 2,5,xyz )rr rrr1getvaluer}rrrrtest_write_multiple_dict_rowss  z,TestDictFields.test_write_multiple_dict_rowscCst}|ttj|dSr )rrrr rr rZrrrtest_write_no_fieldssz#TestDictFields.test_write_no_fieldsc Cstddd}tj|gdd}|t"}|dddd Wdn1sR0Yt|j}|d ||d || d ||d |Wdn1s0YdS)NrRrrSrrr_Zspamr)Zf4rrrz'f4'z'f2'r) rr rrrrUstr exceptionassertInZ assertNotIn)r rZr+Zcxr%rrr#test_write_fields_not_in_fieldnamess 0    z2TestDictFields.test_write_fields_not_in_fieldnamescCs$t}|jttj|ddgdddS)NrrZraisedZ extrasaction)rrrr rr"rrr&test_typo_in_extrasaction_raises_errorsz5TestDictFields.test_typo_in_extrasaction_raises_errorcCs@t}tj|ddgdd}ddddd }|ttjj||dS) Nrrraiser(rrrarZf0rrr)rr rrrrUr rZr+Zdictrowrrr)test_write_field_not_in_field_names_raisesz8TestDictFields.test_write_field_not_in_field_names_raisecCsJt}tj|ddgdd}ddddd }tj||||d dS) Nrrignorer(rrrarr+z1,2 )rr rrUr1r r,rrr*test_write_field_not_in_field_names_ignores z9TestDictFields.test_write_field_not_in_field_names_ignorecCsjtdN}|d|dtj|gdd}|t|ddddWdn1s\0YdS) NrRz 1,2,abc rrrrrrrr(rVr DictReaderr1rr rZr&rrrtest_read_dict_fieldss   z$TestDictFields.test_read_dict_fieldscCsttdX}|d|dt|}|t|dddd||jgdWdn1sf0YdS)NrRf1,f2,f3 1,2,abc rrrrr)rr(rVr r1r1rrr2rrrtest_read_dict_no_fieldnamess     z+TestDictFields.test_read_dict_no_fieldnamescCstdf}|d|dtj|tt|d}||jgd|t|ddddWdn1st0YdS) NrRr4rrrrrr) rr(rVr r1rr&r1rr2rrr#test_read_dict_fieldnames_from_files    z2TestDictFields.test_read_dict_fieldnames_from_filec Csddl}tdp}|d|dt|}t|}||g|D]*}||j gd||ddddqFWdn1s0YdS)NrrRr4rrrr) itertoolsrr(rVr r1rchainr1r)r r7rZr&firstrrrrtest_read_dict_fieldnames_chains    z.TestDictFields.test_read_dict_fieldnames_chaincCsntdR}|d|dtj|ddgd}|t|ddgd d Wdn1s`0YdS) NrR1,2,abc,4,5,6 rrrrrrrrrr)rrNr0r2rrrtest_read_longs   zTestDictFields.test_read_longcCsptdT}|d|dtj|ddgdd}|t|dd gd d Wdn1sb0YdS) NrRr;rrr_rest)rrestkeyrrr<rrr>r0r2rrrtest_read_long_with_rests   z'TestDictFields.test_read_long_with_restcCs|td`}|d|dtj|dd}||jddg|t|dd gd d Wdn1sn0YdS) NrRzf1,f2 1,2,abc,4,5,6 rr>r?rrrrr<r@)rr(rVr r1r1rrr2rrr&test_read_long_with_rest_no_fieldnamess   z5TestDictFields.test_read_long_with_rest_no_fieldnamesc Cstdt}|d|dtj|ddd}|t|ddd d d d d |t|ddd dddd Wdn1s0YdS)NrRz1,2,abc,4,5,6 1,2,abc r 1 2 3 4 5 6ZDEFAULT)rZrestvalrrrrrrrrrrrr)rr(rVr r1splitr1rr2rrrtest_read_shorts   zTestDictFields.test_read_shortc Cs:gd}tj|dd}|t|dddddd dS) N)z2147483648,43.0e12,17,abc,def z147483648,43.0e2,17,abc,def z47483648,43.0,170,abc,def zi1 float i2 s1 s2rZ 2147483648z43.0e12Z17rr)Zi1floatZi2s1s2r r1rFr1r)r sampler&rrrtest_read_multis zTestDictFields.test_read_multic CsVtjgddd}|t|dddddd d |t|dddddd d dS) N)r;r.r;rDrrrrrrrrErKr r&rrrtest_read_with_blankss z$TestDictFields.test_read_with_blanksc Cs8tjdgddd}|t|ddddd d d dS) Nz1;2;abc;4;5;6 rDr)rrrrrrrrrErKrNrrrtest_read_semi_sepsz!TestDictFields.test_read_semi_sepN)rrrrrr!r#r'r)r-r/r3r5r6r:r=rArCrGrMrOrPrrrrrxs&           rc@s,eZdZddZddZddZddZd S) TestArrayWritescCsddl}ddtdD}|d|}tdddZ}tj|d d }||d d d|Dd }|d|| |Wdn1s0YdS)NrcSsg|] }d|qS)r.0rbrrr (z2TestArrayWrites.test_int_write..rRrbrRrrSrrr-cSsg|] }t|qSrr$rSrrrrU.rVr. arrayrrr r+rUjoinrVr1rWr rYcontentsrnrZr+rrrrtest_int_write&s   zTestArrayWrites.test_int_writecCsddl}ddtdD}|d|}tdddZ}tj|d d }||d d d|Dd }|d|| |Wdn1s0YdS)NrcSsg|]}d|dqSrRg?rrSrrrrU4rVz5TestArrayWrites.test_double_write..rRr|rRrrSrrr-cSsg|] }t|qSrrWrSrrrrU9rVr.rXr[rrrtest_double_write2s   z!TestArrayWrites.test_double_writecCsddl}ddtdD}|d|}tdddZ}tj|d d }||d d d|Dd }|d|| |Wdn1s0YdS)NrcSsg|]}d|dqSr^rrSrrrrU?rVz4TestArrayWrites.test_float_write..rRrrRrrSrrr-cSsg|] }t|qSrrWrSrrrrUDrVr.rXr[rrrtest_float_write=s   z TestArrayWrites.test_float_writecCsddl}ddl}|d|j}tdddP}tj|dd}||d|d }|d| | |Wdn1s0YdS) NrurRrrSrrr-r.) rYstring ascii_lettersrr r+rUrZrVr1rW)r rYrbrnrZr+rrrrtest_char_writeHs  zTestArrayWrites.test_char_writeN)rrrr]r_r`rdrrrrrQ%s   rQc@s4eZdZddZddZddZddZd d Zd S) TestDialectValiditycCsGdddtj}|}||jtjd|_|tj|d|_tj|_d|_ |}||jtj||j d| |jd|_ |tj}|Wdn1s0Y|t |j dd|_ |tj}|Wdn1s0Y|t |j ddS) Nc@s&eZdZdZdZdZdZdZej Z dS)z3TestDialectValidity.test_quoting..mydialectrrAFTr.N rrrrr5r4r7rr rErrrrr mydialectUs rgTr/z''z("quotechar" must be a 1-character stringrz+"quotechar" must be string or None, not int) r rr1rrErr!r4r"r assertTruer$r%r rgr|cmrrr test_quotingTs0 $ $ z TestDialectValidity.test_quotingcCsGdddtj}|}||jdd|_|tj}|Wdn1sT0Y|t|jdd|_|tj}|Wdn1s0Y|t|jdd|_|tj}|Wdn1s0Y|t|jdd |_|tj}|Wdn1s40Y|t|jd d|_|tj}|Wdn1s0Y|t|jd dS) Nc@s&eZdZdZdZdZdZdZej Z dS)z5TestDialectValidity.test_delimiter..mydialectrrAFTr.Nrfrrrrrgws rgr:::z("delimiter" must be a 1-character stringr,z%"delimiter" must be string, not bytesrz#"delimiter" must be string, not intz("delimiter" must be string, not NoneType)r rr1rrr!r$r%rirrrtest_delimitervsB$ $ $ & & z"TestDialectValidity.test_delimitercCsGdddtj}|}||jdd|_|tjd|Wdn1sV0Yd|_|tjd|Wdn1s0Yd|_|tjd |Wdn1s0YdS) Nc@s&eZdZdZdZdZdZdZej Z dS)z6TestDialectValidity.test_escapechar..mydialectrrAFTr.Nrfrrrrrgs rgrAz**z)"escapechar" must be a 1-character string*z."escapechar" must be string or None, not bytesrz,"escapechar" must be string or None, not int)r rr1r5ZassertRaisesRegexr!)r rgr|rrrtest_escapechars$$z#TestDialectValidity.test_escapecharcCsGdddtj}|}||jdd|_|}||jdd|_|tj}|Wdn1sn0Y|t|jddS)Nc@s&eZdZdZdZdZdZdZej Z dS)z:TestDialectValidity.test_lineterminator..mydialectrrAFTr.Nrfrrrrrgs rgr.rlrz!"lineterminator" must be a string)r rr1rrr!r$r%rirrrtest_lineterminators$ z'TestDialectValidity.test_lineterminatorc Csdd}dD]x}|j|dX|tj||d|tj||d|tj||d|tj||dWdq 1sz0Yq dS) NcSs(Gdddtj}t||||}dS)Nc@s eZdZdS)zQTestDialectValidity.test_invalid_chars..create_invalid..mydialectNrrrrrrgsrg)r rr;) field_namevaluergr|rrrcreate_invalids z>TestDialectValidity.test_invalid_chars..create_invalid)rr5r)rrrrxr)subTestrr r!)r rtrrrrrtest_invalid_charssz&TestDialectValidity.test_invalid_charsN)rrrrkrnrprqrwrrrrreSs ")rec@sheZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d d ZddZddZddZddZddZdS) TestSnifferzHarry's, Arlington Heights, IL, 2/1/03, Kimi Hayes Shark City, Glendale Heights, IL, 12/28/02, Prezence Tommy's Place, Blue Island, IL, 12/28/02, Blue Sunday/White Crow Stonecutters Seafood and Chop House, Lemont, IL, 12/19/02, Week Back a 'Harry''s':'Arlington Heights':'IL':'2/1/03':'Kimi Hayes' 'Shark City':'Glendale Heights':'IL':'12/28/02':'Prezence' 'Tommy''s Place':'Blue Island':'IL':'12/28/02':'Blue Sunday/White Crow' 'Stonecutters ''Seafood'' and Chop House':'Lemont':'IL':'12/19/02':'Week Back' z+"venue","city","state","date","performers" z05/05/03?05/05/03?05/05/03?05/05/03?05/05/03?05/05/03 05/05/03?05/05/03?05/05/03?05/05/03?05/05/03?05/05/03 05/05/03?05/05/03?05/05/03?05/05/03?05/05/03?05/05/03 zT2147483648;43.0e12;17;abc;def 147483648;43.0e2;17;abc;def 47483648;43.0;170;abc;def zaaa bbb AAA BBB za|b|c d|e|f z'a'|'b'|'c' 'd'|e|f z+"venue"+"city"+"state"+"date"+"performers" zHarry's+ Arlington Heights+ IL+ 2/1/03+ Kimi Hayes Shark City+ Glendale Heights+ IL+ 12/28/02+ Prezence Tommy's Place+ Blue Island+ IL+ 12/28/02+ Blue Sunday/White Crow Stonecutters Seafood and Chop House+ Lemont+ IL+ 12/19/02+ Week Back a'Harry''s'+ Arlington Heights'+ 'IL'+ '2/1/03'+ 'Kimi Hayes' 'Shark City'+ Glendale Heights'+' IL'+ '12/28/02'+ 'Prezence' 'Tommy''s Place'+ Blue Island'+ 'IL'+ '12/28/02'+ 'Blue Sunday/White Crow' 'Stonecutters ''Seafood'' and Chop House'+ 'Lemont'+ 'IL'+ '12/19/02'+ 'Week Back' cCs:t}|||jd|||j|jddSNFT)r Snifferr3 has_headersample1header1r snifferrrrtest_has_header szTestSniffer.test_has_headercCs:t}|||jd|||j|jddSry)r rzr3r{sample8header2r~rrr'test_has_header_regex_special_delimitersz3TestSniffer.test_has_header_regex_special_delimiterc Cst}dD]r}||T||d}||jd||jd||jd||j dWdq 1st0Yq dS)N)z ;'123;4';z'123;4';z;'123;4'z'123;4'z,;r'F) r rzrvsniffr1rrr3r4r7)r rheaderr2rrrtest_guess_quote_and_delimiters  z*TestSniffer.test_guess_quote_and_delimitercCsxt}||j}||jd||jd||jd||j }||jd||jd||jddS)Nr-r/Tr0rF) r rzrr|r1rrr3r7sample2r rr2rrr test_sniff s  zTestSniffer.test_sniffcCst}||j}||j|j|j|jdd}||jd|j|jdd}||jd||j}||jd||j}||jd||j }||jd||j }||jd||j d ||j }||jd ||j }||jd ||j d dS) Nz?,)Z delimiters?z/,/rrrr+)r rzrsample3r&rr1sample4sample5sample6sample7rrsample9rrrrtest_delimiters,s*       zTestSniffer.test_delimiterscCst}||j}||j||j}||j||j}||j||j }||j||j }||jdSr ) r rzrr}Z assertFalser4rrrhrrrrrrtest_doublequoteFs         zTestSniffer.test_doublequoteN)rrrr|rr}rrrrrrrrrrrrrrrrrrrxs"  rxc@seZdZddZeZdS)NULcGsdSr r)sr<rrrr(Tsz NUL.writeN)rrrr( writelinesrrrrrSsrgettotalrefcountzrequires sys.gettotalrefcount()c@s,eZdZddZddZddZddZd S) TestLeakscCsxd}t}tdD]R}t|tjgt}tdgtdgtdg||}|}q| |ddS)NrrRa,b,c r sysrrgccollectr1garbager r& assertLess)r deltalastrcrbrcrrrtest_create_read[s    zTestLeaks.test_create_readcCsxd}t}t}tdD]L}t|tjgt}t |t |t |||}|}q| |ddS)NrrRr) rrrrrrr1rr r+r)r rrrrbrrrrtest_create_writejs    zTestLeaks.test_create_writecCsrd}dgd}t}tdD]B}t|tjgt}t|}|D]}qN||}|}q| |ddS)NrrrrRr)r rrrrbrZrdrrrrr test_readzs   zTestLeaks.test_readc Csd}gdgd}t}t}tdD]L}t|tjgt}t |}|D]}| |qX||}|}q(| |ddS)NrrrrR) rrrrrrr1rr r+rUr) r rrrrrbrr+rrrr test_writes   zTestLeaks.test_writeN)rrrrrrrrrrrrXsrc@s$eZdZgdZddZddZdS) TestUnicode)uMartin von LöwisuMarc André LemburgzGuido van RossumuFrançois PinardcCsptddddN}|d|jd|dt|}|t||jgWdn1sb0YdSNrRrrrr-r.r) rr(rZnamesrVr r&r1rr2rrrtest_unicode_reads   zTestUnicode.test_unicode_readcCsrtddddP}t|}||jd|jd}|d|||Wdn1sd0YdSr) rr r+rUrrZrVr1rW)r rZr+rrrrtest_unicode_writes    zTestUnicode.test_unicode_writeN)rrrrrrrrrrrsrc@seZdZddZddZdS)KeyOrderingTestc Cst}tdD]z}tddddX}t||}||dt|}t|j }| ||| |Wdq1s~0Yq| t |dddS) NZabcderRrrrrxz@Key ordering: some key permutations not collected (expected 120)) setrrr rrrVr1tuplerr1addlen)r Z resultsetkeysZ fileobjectZdwZdrZktrrr,test_ordering_for_the_dict_reader_and_writers      *zsN      ^qa   ..y A4