;
Êâ"Ic               @   s{  d  Z  d d l Z d d l m Z m Z m Z m Z m Z m Z m	 Z	 m
 Z
 m Z m Z m Z m Z m Z m  Z  d d l m Z d d l m Z d d d d	 d
 d d d d d d d d d d d d d d d g Z Gd „  d ƒ Z Gd „  d e ƒ Z e d e ƒ Gd „  d e ƒ Z e d e ƒ Gd „  d ƒ Z Gd „  d ƒ Z y e Wn e k
 o e Z Yn XGd  „  d ƒ Z d S(!   u+   
csv.py - read/write/investigate CSV files
i    N(   u   Erroru   __version__u   writeru   readeru   register_dialectu   unregister_dialectu   get_dialectu   list_dialectsu   field_size_limitu   QUOTE_MINIMALu	   QUOTE_ALLu   QUOTE_NONNUMERICu
   QUOTE_NONEu   __doc__(   u   Dialect(   u   StringIOu   QUOTE_MINIMALu	   QUOTE_ALLu   QUOTE_NONNUMERICu
   QUOTE_NONEu   Erroru   Dialectu   __doc__u   excelu	   excel_tabu   field_size_limitu   readeru   writeru   register_dialectu   get_dialectu   list_dialectsu   Snifferu   unregister_dialectu   __version__u
   DictReaderu
   DictWriterc             B   s\   |  Ee  Z d  Z d Z d Z d Z d Z d Z	 d Z
 d Z d Z d Z d „  Z d „  Z d S(   uÇ   Describe an Excel dialect.

    This must be subclassed (see csv.excel).  Valid attributes are:
    delimiter, quotechar, escapechar, doublequote, skipinitialspace,
    lineterminator, quoting.

    u    c             C   s+   |  j  t k o d |  _ n |  j ƒ  d  S(   NT(   u	   __class__u   Dialectu   Trueu   _validu	   _validate(   u   self(    (    u    /mit/python/lib/python3.0/csv.pyu   __init__)   s    c             C   sN   y t  |  ƒ Wn9 t k
 o- } z t t | ƒ ƒ ‚ WYd  d  } ~ Xn Xd  S(   N(   u   _Dialectu	   TypeErroru   Erroru   str(   u   selfu   e(    (    u    /mit/python/lib/python3.0/csv.pyu	   _validate.   s    NF(   u   __name__u
   __module__u   __doc__u   _nameu   Falseu   _validu   Noneu	   delimiteru	   quotecharu
   escapecharu   doublequoteu   skipinitialspaceu   lineterminatoru   quotingu   __init__u	   _validate(   u
   __locals__(    (    u    /mit/python/lib/python3.0/csv.pyu   Dialect   s   
	c             B   s8   |  Ee  Z d  Z d Z d Z d Z d Z d Z	 e
 Z d S(   u;   Describe the usual properties of Excel-generated CSV files.u   ,u   "u   
NTF(   u   __name__u
   __module__u   __doc__u	   delimiteru	   quotecharu   Trueu   doublequoteu   Falseu   skipinitialspaceu   lineterminatoru   QUOTE_MINIMALu   quoting(   u
   __locals__(    (    u    /mit/python/lib/python3.0/csv.pyu   excel5   s   
c             B   s   |  Ee  Z d  Z d Z d S(   uE   Describe the usual properties of Excel-generated TAB-delimited files.u   	N(   u   __name__u
   __module__u   __doc__u	   delimiter(   u
   __locals__(    (    u    /mit/python/lib/python3.0/csv.pyu	   excel_tab?   s   
u	   excel-tabc             B   sV   |  Ee  Z d d d d  d „ Z d „  Z e d „  ƒ Z e j d „  ƒ Z d „  Z d S(   u   excelc             O   sI   | |  _  | |  _ | |  _ t | | | | Ž |  _ | |  _ d |  _ d  S(   Ni    (   u   _fieldnamesu   restkeyu   restvalu   readeru   dialectu   line_num(   u   selfu   fu
   fieldnamesu   restkeyu   restvalu   dialectu   argsu   kwds(    (    u    /mit/python/lib/python3.0/csv.pyu   __init__F   s    				c             C   s   |  S(   N(    (   u   self(    (    u    /mit/python/lib/python3.0/csv.pyu   __iter__O   s    c             C   sW   |  j  d  k o1 y t |  j ƒ |  _  WqA t k
 o YqA Xn |  j j |  _ |  j  S(   N(   u   _fieldnamesu   Noneu   nextu   readeru   StopIterationu   line_num(   u   self(    (    u    /mit/python/lib/python3.0/csv.pyu
   fieldnamesR   s    
c             C   s   | |  _  d  S(   N(   u   _fieldnames(   u   selfu   value(    (    u    /mit/python/lib/python3.0/csv.pyu
   fieldnames\   s    c             C   sø   |  j  d k o |  j n t |  j ƒ } |  j j  |  _  x! | g  k o t |  j ƒ } q< Wt t |  j | ƒ ƒ } t |  j ƒ } t | ƒ } | | k  o | | d  … | |  j <n= | | k o/ x, |  j | d  … D] } |  j | | <qÙ Wn | S(   Ni    (	   u   line_numu
   fieldnamesu   nextu   readeru   dictu   zipu   lenu   restkeyu   restval(   u   selfu   rowu   du   lfu   lru   key(    (    u    /mit/python/lib/python3.0/csv.pyu   __next__`   s"      N(	   u   __name__u
   __module__u   Noneu   __init__u   __iter__u   propertyu
   fieldnamesu   setteru   __next__(   u
   __locals__(    (    u    /mit/python/lib/python3.0/csv.pyu
   DictReaderE   s   
		
c             B   s;   |  Ee  Z d  d d d „ Z d „  Z d „  Z d „  Z d S(   u    u   raiseu   excelc             O   s^   | |  _  | |  _ | j ƒ  d k o t d | ƒ ‚ n | |  _ t | | | | Ž |  _ d  S(   Nu   raiseu   ignoreu-   extrasaction (%s) must be 'raise' or 'ignore'(   u   raiseu   ignore(   u
   fieldnamesu   restvalu   loweru
   ValueErroru   extrasactionu   writer(   u   selfu   fu
   fieldnamesu   restvalu   extrasactionu   dialectu   argsu   kwds(    (    u    /mit/python/lib/python3.0/csv.pyu   __init__x   s    			c                sh   ˆ  j  d k o> ‡  f d †  ˆ Dƒ } | o t d d j | ƒ ƒ ‚ qN n ‡  ‡ f d †  ˆ  j Dƒ S(   Nu   raisec                s/   g  } |  ]! } | ˆ  j  k o | | q
 q
 S(    (   u
   fieldnames(   u   .0u   _[1]u   k(   u   self(    u    /mit/python/lib/python3.0/csv.pyu
   <listcomp>„   s    u(   dict contains fields not in fieldnames: u   , c                s*   g  } |  ] } | ˆ j  | ˆ  j ƒ q
 S(    (   u   getu   restval(   u   .0u   _[1]u   key(   u   selfu   rowdict(    u    /mit/python/lib/python3.0/csv.pyu
   <listcomp>ˆ   s    (   u   extrasactionu
   ValueErroru   joinu
   fieldnames(   u   selfu   rowdictu   wrong_fields(    (   u   selfu   rowdictu    /mit/python/lib/python3.0/csv.pyu   _dict_to_list‚   s    c             C   s   |  j  j |  j | ƒ ƒ S(   N(   u   writeru   writerowu   _dict_to_list(   u   selfu   rowdict(    (    u    /mit/python/lib/python3.0/csv.pyu   writerowŠ   s    c             C   s=   g  } x$ | D] } | j  |  j | ƒ ƒ q W|  j j | ƒ S(   N(   u   appendu   _dict_to_listu   writeru	   writerows(   u   selfu   rowdictsu   rowsu   rowdict(    (    u    /mit/python/lib/python3.0/csv.pyu	   writerows   s
     N(   u   __name__u
   __module__u   __init__u   _dict_to_listu   writerowu	   writerows(   u
   __locals__(    (    u    /mit/python/lib/python3.0/csv.pyu
   DictWriterw   s
   
			c             B   sD   |  Ee  Z d  Z d „  Z d d „ Z d „  Z d „  Z d „  Z d S(   ue   
    "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(   Nu   ,u   	u   ;u    u   :(   u	   preferred(   u   self(    (    u    /mit/python/lib/python3.0/csv.pyu   __init__ž   s    c             C   sŽ   |  j  | | ƒ \ } } } | p |  j | | ƒ \ } } n | p t d ƒ ‚ n Gd „  d t ƒ } | | _ | p d | _ | | _ | S(   uI   
        Returns a dialect (or None) corresponding to the sample
        u   Could not determine delimiterc             B   s&   |  Ee  Z d  Z d Z e Z d Z d S(   u   sniffedu   
NF(   u   __name__u
   __module__u   _nameu   lineterminatoru   QUOTE_MINIMALu   quotingu   Falseu   doublequote(   u
   __locals__(    (    u    /mit/python/lib/python3.0/csv.pyu   dialect±   s   
u   dialectu   "(   u   _guess_quote_and_delimiteru   _guess_delimiteru   Erroru   Dialectu	   delimiteru	   quotecharu   skipinitialspace(   u   selfu   sampleu
   delimitersu	   quotecharu	   delimiteru   skipinitialspaceu   dialect(    (    u    /mit/python/lib/python3.0/csv.pyu   sniff£   s    			c             C   sò  g  } xE d D]= } t  j | t  j t  j Bƒ } | j | ƒ } | o Pq q W| p d Si  } i  } d } x| D]}	 | j d d }
 |	 |
 } | o | j | d ƒ d | | <n y | j d	 d }
 |	 |
 } Wn t k
 o ws Yn X| o8 | d k p | | k o | j | d ƒ d | | <n y | j d
 d }
 Wn t k
 o ws Yn X|	 |
 o | d 7} qs qs Wt	 | d | j ƒ} | o@ t	 | d | j ƒ} | | | k } | d k o
 d } qån d } d } | | | f S(   u  
        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.
        uF   (?P<delim>[^\w
"'])(?P<space> ?)(?P<quote>["']).*?(?P=quote)(?P=delim)uC   (?:^|
)(?P<quote>["']).*?(?P=quote)(?P<delim>[^\w
"'])(?P<space> ?)uD   (?P<delim>>[^\w
"'])(?P<space> ?)(?P<quote>["']).*?(?P=quote)(?:$|
)u*   (?:^|
)(?P<quote>["']).*?(?P=quote)(?:$|
)u    i    u   quotei   u   delimu   spaceu   keyu   
(   uF   (?P<delim>[^\w
"'])(?P<space> ?)(?P<quote>["']).*?(?P=quote)(?P=delim)uC   (?:^|
)(?P<quote>["']).*?(?P=quote)(?P<delim>[^\w
"'])(?P<space> ?)uD   (?P<delim>>[^\w
"'])(?P<space> ?)(?P<quote>["']).*?(?P=quote)(?:$|
)u*   (?:^|
)(?P<quote>["']).*?(?P=quote)(?:$|
)N(   u    Ni    (
   u   reu   compileu   DOTALLu	   MULTILINEu   findallu   Noneu
   groupindexu   getu   KeyErroru   max(   u   selfu   datau
   delimitersu   matchesu   restru   regexpu   quotesu   delimsu   spacesu   mu   nu   keyu	   quotecharu   delimu   skipinitialspace(    (    u    /mit/python/lib/python3.0/csv.pyu   _guess_quote_and_delimiterÀ   sV       	 
	!	c             C   s  t  t d | j d ƒ ƒ ƒ } d „  t d ƒ Dƒ } t d t | ƒ ƒ } d } i  } i  } i  } d t | t | ƒ ƒ }	 }
 x´|	 t | ƒ k  o | d 7} xn | |	 |
 … D]\ } xS | D]K } | j | i  ƒ } | j | ƒ } | j | d ƒ d | | <| | | <q» Wq® WxÜ | j	 ƒ  D]Î } t  | | j
 ƒ  ƒ } t | ƒ d k o | d d d k o qn t | ƒ d k ob t | d d „  ƒ| | <| j | | ƒ | | d | | d t d	 „  | Dƒ ƒ f | | <q| d | | <qW| j
 ƒ  } t | | ƒ } d
 } d } x© t | ƒ d k o• | | k oˆ xw | D]o \ } } | d d k oR | d d k oA | d | | k o( | d k p | | k o | | | <q®q?q?W| d 8} qWt | ƒ d k oK t  | j	 ƒ  ƒ d } | d j | ƒ | d j d | ƒ k } | | f S|
 }	 |
 | 7}
 q€ W| p d St | ƒ d k o` x] |  j D]N } | | j	 ƒ  k o5 | d j | ƒ | d j d | ƒ k } | | f Sq]Wn d „  | j
 ƒ  Dƒ } | j ƒ  | d d } | d j | ƒ | d j d | ƒ k } | | f S(   u¼  
        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.
        u   
c             S   s!   g  } |  ] } | t  | ƒ q
 S(    (   u   chr(   u   .0u   _[1]u   c(    (    u    /mit/python/lib/python3.0/csv.pyu
   <listcomp>  s    i   i
   i    i   u   keyc             S   s   |  d  S(   i   (    (   u   x(    (    u    /mit/python/lib/python3.0/csv.pyu   <lambda>-  s    c             s   s   |  ] } | d  Vq d S(   i   N(    (   u   .0u   item(    (    u    /mit/python/lib/python3.0/csv.pyu	   <genexpr>2  s    g      ð?gÍÌÌÌÌÌì?g{®Gáz„?u   %c u    c             S   s'   g  } |  ] \ } } | | | f q
 S(    (    (   u   .0u   _[1]u   ku   v(    (    u    /mit/python/lib/python3.0/csv.pyu
   <listcomp>\  s    iÿÿÿÿN(   u    i    (   u   listu   filteru   Noneu   splitu   rangeu   minu   lenu   getu   countu   keysu   itemsu   maxu   removeu   sumu   floatu	   preferredu   sort(   u   selfu   datau
   delimitersu   asciiu   chunkLengthu	   iterationu   charFrequencyu   modesu   delimsu   startu   endu   lineu   charu   metaFrequencyu   frequ   itemsu   modeListu   totalu   consistencyu	   thresholdu   ku   vu   delimu   skipinitialspaceu   d(    (    u    /mit/python/lib/python3.0/csv.pyu   _guess_delimiterþ   s‚     
   ("   "
 
c             C   s  t  t | ƒ |  j | ƒ ƒ } t | ƒ } t | ƒ } i  } x t | ƒ D] } d  | | <qI Wd } xö | D]î } | d k o Pn | d 7} t | ƒ | k o qj n x¯ t | j ƒ  ƒ D]› }	 xW t	 t
 t g D]6 }
 y |
 | |	 ƒ PWqÏ t t f k
 o YqÏ XqÏ Wt | |	 ƒ }
 |
 | |	 k o* | |	 d  k o |
 | |	 <qT| |	 =q¹ q¹ Wqj Wd } x© | j ƒ  D]› \ }	 } t | ƒ t d ƒ k o3 t | |	 ƒ | k o | d 7} q
| d 8} qoy | | |	 ƒ Wn$ t t f k
 o | d 7} YqoX| d 8} qoW| d k S(   Ni    i   i   (   u   readeru   StringIOu   sniffu   nextu   lenu   rangeu   Noneu   listu   keysu   intu   floatu   complexu
   ValueErroru   OverflowErroru   itemsu   typeu	   TypeError(   u   selfu   sampleu   rdru   headeru   columnsu   columnTypesu   iu   checkedu   rowu   colu   thisTypeu	   hasHeaderu   colType(    (    u    /mit/python/lib/python3.0/csv.pyu
   has_headere  sT    
   
  
 N(	   u   __name__u
   __module__u   __doc__u   __init__u   Noneu   sniffu   _guess_quote_and_delimiteru   _guess_delimiteru
   has_header(   u
   __locals__(    (    u    /mit/python/lib/python3.0/csv.pyu   Sniffer™   s   
		>	g(   u   __doc__u   reu   _csvu   Erroru   __version__u   writeru   readeru   register_dialectu   unregister_dialectu   get_dialectu   list_dialectsu   field_size_limitu   QUOTE_MINIMALu	   QUOTE_ALLu   QUOTE_NONNUMERICu
   QUOTE_NONEu   Dialectu   _Dialectu   iou   StringIOu   __all__u   excelu	   excel_tabu
   DictReaderu
   DictWriteru   complexu	   NameErroru   floatu   Sniffer(    (    (    u    /mit/python/lib/python3.0/csv.pyu   <module>   s*   ^	2