mò %U²Ic@sŽdZdkZdklZlZlZlZlZlZl Z l Z l Z l Z l Z lZlZydklZWn ej odklZnXdddddd d d d d ddddddddgZd fd„ƒYZd efd„ƒYZed eƒd efd„ƒYZedeƒdfd„ƒYZdfd„ƒYZyeWnej o eZnXdfd„ƒYZdS(s+ csv.py - read/write/investigate CSV files N( sErrors __version__swritersreadersregister_dialectsunregister_dialects get_dialects list_dialectss QUOTE_MINIMALs QUOTE_ALLsQUOTE_NONNUMERICs QUOTE_NONEs__doc__(sStringIOt QUOTE_MINIMALt QUOTE_ALLtQUOTE_NONNUMERICt QUOTE_NONEtErrortDialecttexcelt excel_tabtreadertwritertregister_dialectt get_dialectt list_dialectstSniffertunregister_dialectt __version__t DictReadert DictWritercBsPtZdZeZdZdZdZdZ dZ dZ dZ d„Z d„ZRS(NtcCsT|itjo t|_n|iƒ}|gjotddi|ƒ‚ndS(NsDialect did not validate: %ss, ( tselft __class__RtTruet_validt _validateterrorsRtjoin(RR((t /data/zmath/lib/python2.4/csv.pyt__init__"s    cCsúg}|ip|idƒn|idjo|idƒn<t|itƒ pt|iƒdjo|idƒn|i djo%|i t jo|idƒqín<t|i tƒ pt|i ƒdjo|idƒn|i djo|idƒn%t|i tƒp|idƒn|i ttfjo|id ƒn|ittfjo|id ƒn|i djo|id ƒn|i t joEt|ittfƒ pt|iƒdjo|id ƒqön|S( Ns(can't directly instantiate Dialect classsdelimiter character not setis&delimiter must be one-character stringsquotechar not sets&quotechar must be one-character stringslineterminator not setslineterminator must be a strings+doublequote parameter must be True or Falses0skipinitialspace parameter must be True or Falsesquoting parameter not sets;escapechar must be a one-character string or unicode object(RRRtappendt delimitertNonet isinstancetstrtlent quotechartquotingRtlineterminatort doublequoteRtFalsetskipinitialspacet escapechartunicode(RR((RR)s4 **0(t__name__t __module__t_nameR&RRRR"R(R%R'R$R#RR(((RRs cBs,tZdZdZeZeZdZe Z RS(Nt,t"s ( R*R+RR"RR%R&R'R$RR#(((RRPs cBstZdZRS(Ns (R*R+R(((RRYss excel-tabcBs/tZddddd„Zd„Zd„ZRS(NRcOs7||_||_||_t||||Ž|_dS(N( t fieldnamesRtrestkeytrestvalRtftdialecttargstkwds(RR2R/R0R1R3R4R5((RR_s   cCs|S(N(R(R((Rt__iter__fscCsî|iiƒ}|idjo||_|iiƒ}nx!|gjo|iiƒ}q>Wtt|i|ƒƒ}t |iƒ}t |ƒ}||jo||||i R=R8((RR7is"     (R*R+RRR6R7(((RR^s cBs5tZdddd„Zd„Zd„Zd„ZRS(NRtraiseRcOs[||_||_|iƒdjotd|‚n||_t||||Ž|_dS(NR?tignores-extrasaction (%s) must be 'raise' or 'ignore'(R?signore( R/RR1t extrasactiontlowert ValueErrorR R2R3R4R5(RR2R/R1RAR3R4R5((RR€s    cCsy|idjo8x5|iƒD]#}||ijo td‚qqWng}|iD]}||i ||i ƒqV~S(NR?s&dict contains fields not in fieldnames( RRAtrowdicttkeystkR/RCt_[1]R>tgetR1(RRDRGR>RF((Rt _dict_to_list‹s  cCs|ii|i|ƒƒS(N(RR twriterowRIRD(RRD((RRJ’scCs=g}x$|D]}|i|i|ƒƒq W|ii|ƒS(N(trowstrowdictsRDRRRIR t writerows(RRLRKRD((RRM•s (R*R+RRIRJRM(((RRs  cBs>tZdZd„Zed„Zd„Zd„Zd„ZRS(se "Sniffs" the format of a CSV file (i.e. delimiter, quotechar) Returns a Dialect object. cCsdddddg|_dS(NR-s t;t t:(Rt preferred(R((RR¦scCs€|i||ƒ\}}}|djo|i||ƒ\}}ndt fd„ƒY}||_|pd|_||_|S(sI Returns a dialect (or None) corresponding to the sample R3cBs tZdZdZeZeZRS(Ntsniffeds (R*R+R,R$RR#R&R%(((RR3¶sR.N( Rt_guess_quote_and_delimitertsamplet delimitersR"RR'Rt_guess_delimiterRR3(RRTRUR3R'RR"((Rtsniff«s    cCsÿg}xEdD]=}ti|titiBƒ} | i|ƒ}|oPq q W|pdSnh} h}d} x |D]}| idd}||} | o| i| dƒd| | [^\w "'])(?P ?)(?P["']).*?(?P=quote)(?P=delim)sC(?:^| )(?P["']).*?(?P=quote)(?P[^\w "'])(?P ?)sD(?P>[^\w "'])(?P ?)(?P["']).*?(?P=quote)(?:$| )s*(?:^| )(?P["']).*?(?P=quote)(?:$| )RitquoteitdelimtspacecCs ||||jo|p|S(N(tquotestatb(R\R]R[((RtôscCs ||||jo|p|S(N(tdelimsR\R](R\R]R_((RR^øss N(sF(?P[^\w "'])(?P ?)(?P["']).*?(?P=quote)(?P=delim)sC(?:^| )(?P["']).*?(?P=quote)(?P[^\w "'])(?P ?)sD(?P>[^\w "'])(?P ?)(?P["']).*?(?P=quote)(?:$| )s*(?:^| )(?P["']).*?(?P=quote)(?:$| )(RNi(tmatchestrestrtretcompiletDOTALLt MULTILINEtregexptfindalltdataRR[R_tspacestmt groupindextnR>RHtKeyErrorRUtreduceRER"RYR'(RRhRURaR'RjR_RlR`RiR[R>R"RfRY((RRSÅsV   !    cCsÿtd |idƒƒ}g}tdƒD]}|t|ƒq)~}t dt |ƒƒ} d}h}h}h} dt | t |ƒƒ} } x¥| t |ƒjo‘|d7}xk|| | !D]\}xS|D]K}|i|hƒ}|i|ƒ}|i|dƒd||<|||