a 4dg@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)/usr/local/lib/python3.9/test/test_csv.py__iter__szBadIterable.__iter__N)__name__ __module__ __qualname__rrrrrrsrc@seZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zejd.d/Zd0d1Zd2d3Zd4d5Zd6d7Z d8d9Z!d:d;Z"dd?Z$d@dAZ%dBdCZ&dDS)ETest_Csvz Test the underlying C csv parser in ways that are not appropriate from the high level interface. Further tests of this nature are done in TestDialectRegistry. cCs|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)'rrr__doc__r%r'r,r>r?r@rGrHrIrNrOrPr[r]rgrlrrrurwr~rrrZ cpython_onlyrrrrrrrrrrrrrrrrsF      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}td|z`|d |d ||jd |d |jd dd |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ΛNrrrrrtestUnisrz1,2,3 z1 2 3 z1:2:3 rz1|2|3 z1;2;3 r)r2ru 1Λ2Λ3 )r rrrr)r rrrrrrrtest_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_emptysz.TestDialectExcel.test_singlequoted_right_emptycCs|ddggdS)Nrtr/rr rrrtest_single_quoted_quotesz)TestDialectExcel.test_single_quoted_quotecCs|ddggdS)Nz""""""r^rr rrrtest_quoted_quotes sz#TestDialectExcel.test_quoted_quotescCs|ddggdS)Nza""brr rrrtest_inline_quote sz"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_quotesz%TestDialectExcel.test_quote_and_quotecCs|ddggdS)Nz "a"rr rrrtest_space_and_quotesz%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_nl.s zTestDialectExcel.test_quoted_nlcCs|dgdgdS)Nz 12,12,1",)12rz1"rrr rrrtest_dubious_quote:sz#TestDialectExcel.test_dubious_quotecCs|gddSrrr rrr test_null=szTestDialectExcel.test_nullcCs|dggddS)Nrzabc rr rrrtest_single_writer@sz#TestDialectExcel.test_single_writercCs|gdgddS)N)rrarrz 1,2,abc,3,4 rr rrrtest_simple_writerCsz#TestDialectExcel.test_simple_writercCs|gdgddS)N)rraza"bc"rrz1,2,"a""bc""",3,4 rr rrr test_quotesFszTestDialectExcel.test_quotescCs|dggddSNabc,defz "abc,def" rr rrrtest_quote_fieldsepIsz$TestDialectExcel.test_quote_fieldsepcCs|gdgddS)N)rraza bcrrz1,2,"a bc",3,4 rr rrr test_newlinesLszTestDialectExcel.test_newlinesN)rrrr2rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrs4 rc@seZdZejZdZdS) EscapedExcelrAN)rrrr rErr5rrrrrOsrc@s"eZdZeZddZddZdS)TestEscapedExcelcCs|dggddS)Nr abc\,def rr rrrtest_escape_fieldsepVsz%TestEscapedExcel.test_escape_fieldsepcCs|ddggdS)Nrrrr rrrtest_read_escape_fieldsepYsz*TestEscapedExcel.test_read_escape_fieldsepN)rrrrr2rrrrrrrSsrc@s eZdZdZddZddZdS)TestDialectUnixZunixcCs|gdgddS)N)rabc defr"1","abc def","abc" rr rrrr_sz"TestDialectUnix.test_simple_writercCs|dgdgdS)Nr )rr rrr rrrtest_simple_readerbsz"TestDialectUnix.test_simple_readerN)rrrr2rr rrrrr \sr c@seZdZejZdZdS)QuotedEscapedExcelrAN)rrrr rqrr5rrrrr esr c@s"eZdZeZddZddZdS)TestQuotedEscapedExcelcCs|dggddSrrr rrrtest_write_escape_fieldseplsz1TestQuotedEscapedExcel.test_write_escape_fieldsepcCs|ddggdS)Nz "abc\,def" rrr rrrrosz0TestQuotedEscapedExcel.test_read_escape_fieldsepN)rrrr r2rrrrrrrisrc@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_valueusz,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_dict{s  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 rrUr1rr+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 r0r1rrr1rrrtest_read_dict_no_fieldnamess     z+TestDictFields.test_read_dict_no_fieldnamescCstdf}|d|dtj|tt|d}||jgd|t|ddddWdn1st0YdS) NrRr3rrrrrr) rr(rVr r0rr&r1rr1rrr#test_read_dict_fieldnames_from_files    z2TestDictFields.test_read_dict_fieldnames_from_filec Csddl}tdp}|d|dt|}t|}||g|D]*}||j gd||ddddqFWdn1s0YdS)NrrRr3rrrr) itertoolsrr(rVr r0rchainr1r)r r6rZr&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)rrNr/r1rrrtest_read_longs   zTestDictFields.test_read_longcCsptdT}|d|dtj|ddgdd}|t|dd gd d Wdn1sb0YdS) NrRr:rrr_rest)rrestkeyrrr;rrr=r/r1rrrtest_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 r0r1rrr1rrr&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 r0splitr1rr1rrrtest_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 r0rEr1r)r sampler&rrrtest_read_multis zTestDictFields.test_read_multic CsVtjgddd}|t|dddddd d |t|dddddd d dS) N)r:r.r:rCrrrrrrrrDrJr r&rrrtest_read_with_blankss z$TestDictFields.test_read_with_blanksc Cs8tjdgddd}|t|ddddd d d dS) Nz1;2;abc;4;5;6 rCr)rrrrrrrrrDrJrMrrrtest_read_semi_sepsz!TestDictFields.test_read_semi_sepN)rrrrrr r"r&r(r,r.r2r4r5r9r<r@rBrFrLrNrOrrrrrrs&           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..rQrbrRrrSrrr-cSsg|] }t|qSrr#rRrrrrT(rUr. arrayrrr r+rUjoinrVr1rWr rXcontentsrnrZr+rrrrtest_int_write s   zTestArrayWrites.test_int_writecCsddl}ddtdD}|d|}tdddZ}tj|d d }||d d d|Dd }|d|| |Wdn1s0YdS)NrcSsg|]}d|dqSrQg?rrRrrrrT.rUz5TestArrayWrites.test_double_write..rQr|rRrrSrrr-cSsg|] }t|qSrrVrRrrrrT3rUr.rWrZrrrtest_double_write,s   z!TestArrayWrites.test_double_writecCsddl}ddtdD}|d|}tdddZ}tj|d d }||d d d|Dd }|d|| |Wdn1s0YdS)NrcSsg|]}d|dqSr]rrRrrrrT9rUz4TestArrayWrites.test_float_write..rQrrRrrSrrr-cSsg|] }t|qSrrVrRrrrrT>rUr.rWrZrrrtest_float_write7s   z TestArrayWrites.test_float_writecCsddl}ddl}|d|j}tdddP}tj|dd}||d|d }|d| | |Wdn1s0YdS) NrurRrrSrrr-r.) rXstring ascii_lettersrr r+rUrYrVr1rW)r rXrarnrZr+rrrrtest_char_writeBs  zTestArrayWrites.test_char_writeN)rrrr\r^r_rcrrrrrPs   rPc@s,eZdZddZddZddZddZd 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 mydialectOs rfTr/z''z("quotechar" must be a 1-character stringrz#"quotechar" must be string, not int) r rr1rrErr!r4r"r assertTruer#r$r rfr|cmrrr test_quotingNs0 $ $ z TestDialectValidity.test_quotingcCsTGdddtj}|}||jdd|_|tj}|Wdn1sT0Y|t|jdd|_|tj}|Wdn1s0Y|t|jdd|_|tj}|Wdn1s0Y|t|jdd |_|tj}|Wdn1s40Y|t|jd dS) Nc@s&eZdZdZdZdZdZdZej Z dS)z5TestDialectValidity.test_delimiter..mydialectrrAFTr.Nrerrrrrfqs rfr:::z("delimiter" must be a 1-character stringr,z%"delimiter" must be string, not bytesrz#"delimiter" must be string, not int)r rr1rrr!r#r$rhrrrtest_delimiterps6$ $ $ & z"TestDialectValidity.test_delimitercCsGdddtj}|}||jdd|_|}||jdd|_|tj}|Wdn1sn0Y|t|jddS)Nc@s&eZdZdZdZdZdZdZej Z dS)z:TestDialectValidity.test_lineterminator..mydialectrrAFTr.Nrerrrrrfs rfr.rkrz!"lineterminator" must be a string)r rr1rrr!r#r$rhrrrtest_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..mydialectN)rrrrrrrrfsrf)r rr;) field_namevaluerfr|rrrcreate_invalids z>TestDialectValidity.test_invalid_chars..create_invalid)rr5r)rorrxr)subTestrr r!)r rqrorrrtest_invalid_charssz&TestDialectValidity.test_invalid_charsN)rrrrjrmrnrtrrrrrdMs"#rdc@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_headerszTestSniffer.test_has_headercCs:t}|||jd|||j|jddSrv)r rwr3rxsample8header2r{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 rwrssniffr1rrr3r4r7)r r|headerr2rrrtest_guess_quote_and_delimiters  z*TestSniffer.test_guess_quote_and_delimitercCsxt}||j}||jd||jd||jd||j }||jd||jd||jddS)Nr-r/Tr0rF) r rwrryr1rrr3r7sample2r r|r2rrr test_sniffs  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 rwrsample3r%rr1sample4sample5sample6sample7rr~sample9rrrrtest_delimiters s*       zTestSniffer.test_delimiterscCst}||j}||j||j}||j||j}||j||j }||j||j }||jdSr ) r rwrrzZ assertFalser4rrrgr~rrrrrtest_doublequote#s         zTestSniffer.test_doublequoteN)rrrryrrzrrrrrrr~rr}rrrrrrrrrrus"  ruc@seZdZddZeZdS)NULcGsdSr r)sr<rrrr(1sz NUL.writeN)rrrr( writelinesrrrrr0srgettotalrefcountzrequires sys.gettotalrefcount()c@s,eZdZddZddZddZddZd S) TestLeakscCsxd}t}tdD]R}t|tjgt}tdgtdgtdg||}|}q| |ddS)NrrQa,b,c r sysrrgccollectr1garbager r& assertLess)r deltalastrcrbrcrrrtest_create_read8s    zTestLeaks.test_create_readcCsxd}t}t}tdD]L}t|tjgt}t |t |t |||}|}q| |ddS)NrrQr) rrrrrrr1rr r+r)r rrrrbrrrrtest_create_writeGs    zTestLeaks.test_create_writecCsrd}dgd}t}tdD]B}t|tjgt}t|}|D]}qN||}|}q| |ddS)NrrrrQr)r rrrrbrZrdrrrrr test_readWs   zTestLeaks.test_readc Csd}gdgd}t}t}tdD]L}t|tjgt}t |}|D]}| |qX||}|}q(| |ddS)NrrrrQ) rrrrrrr1rr r+rUr) r rrrrrbrr+rrrr test_writegs   zTestLeaks.test_writeN)rrrrrrrrrrrr5src@s$eZdZgdZddZddZdS) TestUnicode)uMartin von LöwisuMarc André LemburgzGuido van RossumuFrançois PinardcCsptddddN}|d|jd|dt|}|t||jgWdn1sb0YdSNrRrrrr-r.r) rr(rYnamesrVr r&r1rr1rrrtest_unicode_reads   zTestUnicode.test_unicode_readcCsrtddddP}t|}||jd|jd}|d|||Wdn1sd0YdSr) rr r+rUrrYrVr1rW)r rZr+rrrrtest_unicode_writes    zTestUnicode.test_unicode_writeN)rrrrrrrrrrrxsrc@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 rrrVr0tuplerr1addlen)r Z resultsetkeysZ fileobjectZdwZdrZktrrr,test_ordering_for_the_dict_reader_and_writers      *zsL      ^ka   ..jy A4