;ς
μό?c           @   s  d  Z  d k Z d k l Z l Z l Z l Z l Z l Z l	 Z	 l
 Z
 l Z l Z l Z l Z l  Z  y d k l Z Wn  e j
 o d k l Z n Xd d d d d d	 d
 d d d d d d d d d d d g Z d	 f  d     YZ d
 e f d     YZ e d
 e  d e f d     YZ e d e  d f  d     YZ d f  d     YZ y e Wn e j
 o e Z n Xd f  d     YZ d S(   s+   
csv.py - read/write/investigate CSV files
N(   s   Errors   __version__s   writers   readers   register_dialects   unregister_dialects   get_dialects   list_dialectss   QUOTE_MINIMALs	   QUOTE_ALLs   QUOTE_NONNUMERICs
   QUOTE_NONEs   __doc__(   s   StringIOs   QUOTE_MINIMALs	   QUOTE_ALLs   QUOTE_NONNUMERICs
   QUOTE_NONEs   Errors   Dialects   excels	   excel_tabs   readers   writers   register_dialects   get_dialects   list_dialectss   Sniffers   unregister_dialects   __version__s
   DictReaders
   DictWriterc           B   sP   t  Z d Z e Z e Z e Z e Z e Z	 e Z
 e Z e Z d   Z d   Z RS(   Ns    c         C   sT   |  i t j o t |  _ n |  i   } | g  j o t d d i |   n d  S(   Ns   Dialect did not validate: %ss   , (	   s   selfs	   __class__s   Dialects   Trues   _valids	   _validates   errorss   Errors   join(   s   selfs   errors(    (    s    /mit/python/lib/python2.3/csv.pys   __init__"   s
    c         C   s   g  } |  i o | i d  n |  i t j o | i d  n< t |  i t  p t |  i  d j o | i d  n |  i	 t j o% |  i
 t j o | i d  qξ n< t |  i	 t  p t |  i	  d j o | i d  n |  i t j o | i d  n& t |  i t  o | i d  n |  i t t f j o | i d	  n |  i t t f j o | i d
  n |  i
 t j o | i d  n |  i
 t j oE t |  i t t f  p t |  i  d j o | i d  qψn | Sd  S(   Ns(   can't directly instantiate Dialect classs   delimiter character not seti   s&   delimiter must be one-character strings   quotechar not sets&   quotechar must be one-character strings   lineterminator not sets   lineterminator must be a strings+   doublequote parameter must be True or Falses0   skipinitialspace parameter must be True or Falses   quoting parameter not sets;   escapechar must be a one-character string or unicode object(   s   errorss   selfs   _valids   appends	   delimiters   Nones
   isinstances   strs   lens	   quotechars   quotings
   QUOTE_NONEs   lineterminators   doublequotes   Trues   Falses   skipinitialspaces
   escapechars   unicode(   s   selfs   errors(    (    s    /mit/python/lib/python2.3/csv.pys	   _validate)   s4    **0(   s   __name__s
   __module__s   _names   Falses   _valids   Nones	   delimiters	   quotechars
   escapechars   doublequotes   skipinitialspaces   lineterminators   quotings   __init__s	   _validate(    (    (    s    /mit/python/lib/python2.3/csv.pys   Dialect   s   	c           B   s,   t  Z d Z d Z e Z e Z d Z e	 Z
 RS(   Ns   ,s   "s   
(   s   __name__s
   __module__s	   delimiters	   quotechars   Trues   doublequotes   Falses   skipinitialspaces   lineterminators   QUOTE_MINIMALs   quoting(    (    (    s    /mit/python/lib/python2.3/csv.pys   excelP   s   c           B   s   t  Z d Z RS(   Ns   	(   s   __name__s
   __module__s	   delimiter(    (    (    s    /mit/python/lib/python2.3/csv.pys	   excel_tabY   s   s	   excel-tabc           B   s,   t  Z e e d d  Z d   Z d   Z RS(   Ns   excelc         O   s7   | |  _  | |  _ | |  _ t | | | |  |  _ d  S(   N(	   s
   fieldnamess   selfs   restkeys   restvals   readers   fs   dialects   argss   kwds(   s   selfs   fs
   fieldnamess   restkeys   restvals   dialects   argss   kwds(    (    s    /mit/python/lib/python2.3/csv.pys   __init___   s    			c         C   s   |  Sd  S(   N(   s   self(   s   self(    (    s    /mit/python/lib/python2.3/csv.pys   __iter__f   s    c         C   sΖ   |  i i   } x! | g  j o |  i i   } q Wt t |  i |   } t |  i  } t |  } | | j  o | | | |  i <n7 | | j o) x& |  i | D] } |  i | | <q£ Wn | Sd  S(   N(   s   selfs   readers   nexts   rows   dicts   zips
   fieldnamess   ds   lens   lfs   lrs   restkeys   keys   restval(   s   selfs   lfs   ds   keys   lrs   row(    (    s    /mit/python/lib/python2.3/csv.pys   nexti   s      (   s   __name__s
   __module__s   Nones   __init__s   __iter__s   next(    (    (    s    /mit/python/lib/python2.3/csv.pys
   DictReader^   s   	c           B   s5   t  Z d d d d  Z d   Z d   Z d   Z RS(   Ns    s   raises   excelc         O   sa   | |  _  | |  _ | i   d d f j o t d |  n | |  _ t | | | |  |  _ d  S(   Ns   raises   ignores-   extrasaction (%s) must be 'raise' or 'ignore'(   s
   fieldnamess   selfs   restvals   extrasactions   lowers
   ValueErrors   writers   fs   dialects   argss   kwds(   s   selfs   fs
   fieldnamess   restvals   extrasactions   dialects   argss   kwds(    (    s    /mit/python/lib/python2.3/csv.pys   __init__|   s    			c         C   s   |  i d j o8 x5 | i   D]# } | |  i j o t d  q q Wn g  i } |  i D] } | | i
 | |  i   qY ~ Sd  S(   Ns   raises&   dict contains fields not in fieldnames(   s   selfs   extrasactions   rowdicts   keyss   ks
   fieldnamess
   ValueErrors   appends   _[1]s   keys   gets   restval(   s   selfs   rowdicts   _[1]s   keys   k(    (    s    /mit/python/lib/python2.3/csv.pys   _dict_to_list   s     c         C   s   |  i i |  i |   Sd  S(   N(   s   selfs   writers   writerows   _dict_to_lists   rowdict(   s   selfs   rowdict(    (    s    /mit/python/lib/python2.3/csv.pys   writerow   s    c         C   sA   g  } x$ | D] } | i |  i |   q W|  i i |  Sd  S(   N(   s   rowss   rowdictss   rowdicts   appends   selfs   _dict_to_lists   writers	   writerows(   s   selfs   rowdictss   rowss   rowdict(    (    s    /mit/python/lib/python2.3/csv.pys	   writerows   s
     (   s   __name__s
   __module__s   __init__s   _dict_to_lists   writerows	   writerows(    (    (    s    /mit/python/lib/python2.3/csv.pys
   DictWriter{   s   		c           B   s>   t  Z d  Z d   Z e d  Z d   Z d   Z d   Z RS(   se   
    "Sniffs" the format of a CSV file (i.e. delimiter, quotechar)
    Returns a Dialect object.
    c         C   s   d d d d d g |  _ d  S(   Ns   ,s   	s   ;s    s   :(   s   selfs	   preferred(   s   self(    (    s    /mit/python/lib/python2.3/csv.pys   __init__’   s    c         C   s   |  i | |  \ } } } | t j o |  i | |  \ } } n d t	 f d     Y} | | _ | p d | _ | | _ | Sd S(   sI   
        Returns a dialect (or None) corresponding to the sample
        s   dialectc           B   s    t  Z d Z d Z e Z e Z RS(   Ns   sniffeds   
(   s   __name__s
   __module__s   _names   lineterminators   QUOTE_MINIMALs   quotings   Falses   doublequote(    (    (    s    /mit/python/lib/python2.3/csv.pys   dialect²   s   s   "N(   s   selfs   _guess_quote_and_delimiters   samples
   delimiterss	   quotechars	   delimiters   skipinitialspaces   Nones   _guess_delimiters   Dialects   dialect(   s   selfs   samples
   delimiterss   dialects   skipinitialspaces	   delimiters	   quotechar(    (    s    /mit/python/lib/python2.3/csv.pys   sniff§   s     			c         C   s  g  } xQ d d d d f D]= } t i | t i t i B } | i |  } | o Pq q W| o d t	 d f Sn h  }
 h  } d }	 x| D]} | i d d } | | } | o |
 i | d  d |
 | <n y | i d	 d } | | } Wn t j
 o
 q n X| o | t	 j p
 | | j o | i | d  d | | <n y | i d
 d } Wn t j
 o
 q n X| | o |	 d 7}	 q q Wt |
 d  |
 i    } | oF t | d  | i    } | | |	 j } | d j o
 d } qn d } d } | | | f Sd S(   s  
        Looks for text enclosed between two identical quotes
        (the probable quotechar) which are preceded and followed
        by the same character (the probable delimiter).
        For example:
                         ,'some text',
        The quote with the most wins, same with the delimiter.
        If there is no quotechar the delimiter can't be determined
        this way.
        sF   (?P<delim>[^\w
"'])(?P<space> ?)(?P<quote>["']).*?(?P=quote)(?P=delim)sC   (?:^|
)(?P<quote>["']).*?(?P=quote)(?P<delim>[^\w
"'])(?P<space> ?)sD   (?P<delim>>[^\w
"'])(?P<space> ?)(?P<quote>["']).*?(?P=quote)(?:$|
)s*   (?:^|
)(?P<quote>["']).*?(?P=quote)(?:$|
)s    i    s   quotei   s   delims   spacec         C   s    | |  | | j o |  p | S(   N(   s   quotess   as   b(   s   as   bs   quotes(    (    s    /mit/python/lib/python2.3/csv.pys   <lambda>π   s    c         C   s    | |  | | j o |  p | S(   N(   s   delimss   as   b(   s   as   bs   delims(    (    s    /mit/python/lib/python2.3/csv.pys   <lambda>τ   s    s   
N(   s   matchess   restrs   res   compiles   Ss   Ms   regexps   findalls   datas   Nones   quotess   delimss   spacess   ms
   groupindexs   ns   keys   gets   KeyErrors
   delimiterss   reduces   keyss	   quotechars   delims   skipinitialspace(   s   selfs   datas
   delimiterss   restrs   skipinitialspaces   ms   delimss   ns   matchess   spacess   quotess   keys	   quotechars   regexps   delim(    (    s    /mit/python/lib/python2.3/csv.pys   _guess_quote_and_delimiterΑ   sV    
  	 
!c         C   s  t  t | i d   } g  i } t d  D] } | t |   q, ~ } t
 d t |   } d } h  } h  } h  }
 d t
 | t |   f \ } }	 x«| t |  j  o| d 7} xq | | |	 !D]b } xY | D]Q } | i | h   } | i   i |  } | i | d  d | | <| | | <qΤ WqΗ WxΣ | i   D]Ε } | | i   } t |  d j o | d d d j o q:n t |  d j o_ t d   |  | | <| i | |  | | d | | d t d   |  d f | | <q:| d | | <q:W| i   } t | |  } d } d	 } x© t |
  d j o
 | | j o xw | D]o \ } } | d d j o | d d j oA | d | | j o | t j p
 | | j o | |
 | <qΔqUqUW| d
 8} q.Wt |
  d j oH |
 i   d } | d i |  | d i d |  j } | | f Sn |	 } |	 | 7}	 q W|
 o d d f Sn t |
  d j oc x` |  i) D]Q } | |
 i   j o8 | d i |  | d i d |  j } | | f SqzqzWn |
 i   d } | d i |  | d i d |  j } | | f Sd S(   sΌ  
        The delimiter /should/ occur the same number of times on
        each row. However, due to malformed data, it may not. We don't want
        an all or nothing approach, so we allow for small variations in this
        number.
          1) build a table of the frequency of each character on every line.
          2) build a table of freqencies of this frequency (meta-frequency?),
             e.g.  'x occurred 5 times in 10 rows, 6 times in 1000 rows,
             7 times in 2 rows'
          3) use the mode of the meta-frequency to determine the /expected/
             frequency for that character
          4) find out how often the character actually meets that goal
          5) the character that best meets its goal is the delimiter
        For performance reasons, the data is evaluated in chunks, so it can
        try and evaluate the smallest portion of the data possible, evaluating
        additional chunks as necessary.
        s   
i   i
   i    i   c         C   s    |  d | d j o |  p | S(   Ni   (   s   as   b(   s   as   b(    (    s    /mit/python/lib/python2.3/csv.pys   <lambda>0  s    c         C   s   d |  d | d f S(   Ni    i   (   s   as   b(   s   as   b(    (    s    /mit/python/lib/python2.3/csv.pys   <lambda>6  s    f1.0f0.90000000000000002f0.01s   %c s    N(+   s   filters   Nones   datas   splits   appends   _[1]s   ranges   cs   chrs   asciis   mins   lens   chunkLengths	   iterations   charFrequencys   modess   delimss   starts   ends   lines   chars   gets   metaFrequencys   strips   counts   freqs   keyss   itemss   reduces   removes   modeLists   floats   totals   consistencys	   thresholds   ks   vs
   delimiterss   delims   skipinitialspaces   selfs	   preferreds   d(   s   selfs   datas
   delimiterss   metaFrequencys   chars	   thresholds   totals   asciis   freqs   ends   delimss   starts   chunkLengths   delims   vs   charFrequencys   lines   ds   cs   modess   skipinitialspaces   itemss   ks	   iterations   _[1]s   modeLists   consistency(    (    s    /mit/python/lib/python2.3/csv.pys   _guess_delimiter  sz     3! 
   (	   "/*
 **c      	   C   s.  t  t |  |  i |   }	 |	 i   } t |  } h  } x t |  D] } t | | <qI Wd } x	|	 D]} | d j o Pn | d 7} t |  | j o qj n xΒ | i   D]΄ } xY t t t t g D]5 }
 y |
 | |  PWqΜ t t f j
 o qΜ XqΜ Wt | |  }
 |
 t j o
 t }
 n |
 | | j o* | | t j o |
 | | <qg| | =q³ q³ Wqj Wd } x¨ | i   D] \ } } t |  t d  j o3 t | |  | j o | d 7} q| d 8} qy | | |  Wn# t t f j
 o | d 7} qX| d 8} qW| d j Sd  S(   Ni    i   i   (   s   readers   StringIOs   samples   selfs   sniffs   rdrs   nexts   headers   lens   columnss   columnTypess   ranges   is   Nones   checkeds   rows   keyss   cols   ints   longs   floats   complexs   thisTypes
   ValueErrors   OverflowErrors	   hasHeaders   itemss   colTypes   types	   TypeError(   s   selfs   samples   headers   colTypes   rows   checkeds   columnTypess   columnss   is   rdrs   thisTypes   cols	   hasHeader(    (    s    /mit/python/lib/python2.3/csv.pys
   has_headerf  sX    
   
  	
 (	   s   __name__s
   __module__s   __doc__s   __init__s   Nones   sniffs   _guess_quote_and_delimiters   _guess_delimiters
   has_header(    (    (    s    /mit/python/lib/python2.3/csv.pys   Sniffer   s    		@	e(   s   __doc__s   res   _csvs   Errors   __version__s   writers   readers   register_dialects   unregister_dialects   get_dialects   list_dialectss   QUOTE_MINIMALs	   QUOTE_ALLs   QUOTE_NONNUMERICs
   QUOTE_NONEs	   cStringIOs   StringIOs   ImportErrors   __all__s   Dialects   excels	   excel_tabs
   DictReaders
   DictWriters   complexs	   NameErrors   floats   Sniffer(   s   get_dialects   unregister_dialects	   excel_tabs   StringIOs   Dialects   __all__s	   QUOTE_ALLs   writers   excels   QUOTE_NONNUMERICs   Errors   complexs   register_dialects   readers   __version__s   __doc__s   list_dialectss
   DictWriters   res   Sniffers   QUOTE_MINIMALs
   QUOTE_NONEs
   DictReader(    (    s    /mit/python/lib/python2.3/csv.pys   ?   s&   	U<: