???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................ž
§ÿf9?  c               @   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 „  d ƒ Z Gd d „  d e ƒ Z e d e ƒ Gd d „  d e ƒ Z e d e ƒ Gd d „  d e ƒ Z e d  e ƒ Gd! d „  d ƒ Z Gd" d „  d ƒ Z y e Wn e k
 r–e Z Yn XGd# d „  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   sh   |  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 d „  Z d d „  Z d S(	   u   DialectuÄ   Describe a CSV 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 r d |  _ n  |  j ƒ  d  S(   NT(   u	   __class__u   Dialectu   Trueu   _validu	   _validate(   u   self(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu   __init__)   s    u   Dialect.__init__c             C   sL   y t  |  ƒ Wn7 t k
 rG } z t t | ƒ ƒ ‚ WYd  d  } ~ Xn Xd  S(   N(   u   _Dialectu	   TypeErroru   Erroru   str(   u   selfu   e(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu	   _validate.   s    u   Dialect._validateNF(   u   __name__u
   __module__u   __qualname__u   __doc__u   _nameu   Falseu   _validu   Noneu	   delimiteru	   quotecharu
   escapecharu   doublequoteu   skipinitialspaceu   lineterminatoru   quotingu   __init__u	   _validate(   u
   __locals__(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu   Dialect   s   c             B   s>   |  Ee  Z d  Z d Z d Z d Z d Z d Z	 d Z
 e Z d S(   u   excelu;   Describe the usual properties of Excel-generated CSV files.u   ,u   "u   
NTF(   u   __name__u
   __module__u   __qualname__u   __doc__u	   delimiteru	   quotecharu   Trueu   doublequoteu   Falseu   skipinitialspaceu   lineterminatoru   QUOTE_MINIMALu   quoting(   u
   __locals__(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu   excel5   s   c             B   s    |  Ee  Z d  Z d Z d Z d S(   u	   excel_tabuE   Describe the usual properties of Excel-generated TAB-delimited files.u   	N(   u   __name__u
   __module__u   __qualname__u   __doc__u	   delimiter(   u
   __locals__(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu	   excel_tab?   s   u	   excel-tabc             B   s>   |  Ee  Z d  Z d Z d Z d Z d Z d Z	 d Z
 e Z d S(   u   unix_dialectu:   Describe the usual properties of Unix-generated CSV files.u   ,u   "u   
NTF(   u   __name__u
   __module__u   __qualname__u   __doc__u	   delimiteru	   quotecharu   Trueu   doublequoteu   Falseu   skipinitialspaceu   lineterminatoru	   QUOTE_ALLu   quoting(   u
   __locals__(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu   unix_dialectD   s   u   unix_dialectu   unixc             B   sk   |  Ee  Z d  Z d d d d d d „ Z d d „  Z e d d „  ƒ Z e j d d „  ƒ Z d	 d
 „  Z	 d S(   u
   DictReaderu   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(   /opt/alt/python33/lib64/python3.3/csv.pyu   __init__P   s    				u   DictReader.__init__c             C   s   |  S(   N(    (   u   self(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu   __iter__Y   s    u   DictReader.__iter__c             C   sS   |  j  d  k r= y t |  j ƒ |  _  Wq= t k
 r9 Yq= Xn  |  j j |  _ |  j  S(   N(   u   _fieldnamesu   Noneu   nextu   readeru   StopIterationu   line_num(   u   self(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu
   fieldnames\   s    u   DictReader.fieldnamesc             C   s   | |  _  d  S(   N(   u   _fieldnames(   u   selfu   value(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu
   fieldnamesf   s    c             C   sð   |  j  d k r |  j n  t |  j ƒ } |  j j  |  _  x | g  k rX t |  j ƒ } q: Wt t |  j | ƒ ƒ } t |  j ƒ } t | ƒ } | | k  r² | | d  … | |  j <n: | | k rì 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(   /opt/alt/python33/lib64/python3.3/csv.pyu   __next__j   s    
u   DictReader.__next__N(
   u   __name__u
   __module__u   __qualname__u   Noneu   __init__u   __iter__u   propertyu
   fieldnamesu   setteru   __next__(   u
   __locals__(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu
   DictReaderO   s   	
c             B   sY   |  Ee  Z d  Z d d d d d „ Z d d „  Z d d	 „  Z d
 d „  Z d d „  Z d S(   u
   DictWriteru    u   raiseu   excelc             O   s\   | |  _  | |  _ | j ƒ  d k r7 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(   /opt/alt/python33/lib64/python3.3/csv.pyu   __init__‚   s    			u   DictWriter.__init__c             C   s,   t  t |  j |  j ƒ ƒ } |  j | ƒ d  S(   N(   u   dictu   zipu
   fieldnamesu   writerow(   u   selfu   header(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu   writeheaderŒ   s    u   DictWriter.writeheaderc                sw   ˆ j  d k rZ ‡ f d d †  ˆ  Dƒ } | rZ t d d j d d „  | Dƒ ƒ ƒ ‚ qZ n  ‡  ‡ f d d †  ˆ j Dƒ S(   Nu   raisec                s%   g  |  ] } | ˆ  j  k r | ‘ q S(    (   u
   fieldnames(   u   .0u   k(   u   self(    u(   /opt/alt/python33/lib64/python3.3/csv.pyu
   <listcomp>’   s   	 u,   DictWriter._dict_to_list.<locals>.<listcomp>u(   dict contains fields not in fieldnames: u   , c             S   s   g  |  ] } t  | ƒ ‘ q S(    (   u   repr(   u   .0u   x(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu
   <listcomp>•   s   	 c                s%   g  |  ] } ˆ  j  | ˆ j ƒ ‘ q S(    (   u   getu   restval(   u   .0u   key(   u   rowdictu   self(    u(   /opt/alt/python33/lib64/python3.3/csv.pyu
   <listcomp>–   s   	 (   u   extrasactionu
   ValueErroru   joinu
   fieldnames(   u   selfu   rowdictu   wrong_fields(    (   u   rowdictu   selfu(   /opt/alt/python33/lib64/python3.3/csv.pyu   _dict_to_list   s    &u   DictWriter._dict_to_listc             C   s   |  j  j |  j | ƒ ƒ S(   N(   u   writeru   writerowu   _dict_to_list(   u   selfu   rowdict(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu   writerow˜   s    u   DictWriter.writerowc             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(   /opt/alt/python33/lib64/python3.3/csv.pyu	   writerows›   s    u   DictWriter.writerowsN(   u   __name__u
   __module__u   __qualname__u   __init__u   writeheaderu   _dict_to_listu   writerowu	   writerows(   u
   __locals__(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu
   DictWriter   s   	c             B   sY   |  Ee  Z d  Z d Z d d „  Z d d d „ Z d d „  Z d d	 „  Z d
 d „  Z	 d S(   u   Snifferue   
    "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(   /opt/alt/python33/lib64/python3.3/csv.pyu   __init__¬   s    u   Sniffer.__init__c             C   s˜   |  j  | | ƒ \ } } } } | s? |  j | | ƒ \ } } n  | sT t d ƒ ‚ n  Gd d „  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 d Z e Z d S(   u   Sniffer.sniff.<locals>.dialectu   sniffedu   
N(   u   __name__u
   __module__u   __qualname__u   _nameu   lineterminatoru   QUOTE_MINIMALu   quoting(   u
   __locals__(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu   dialect¿   s   u   dialectu   "(   u   _guess_quote_and_delimiteru   _guess_delimiteru   Erroru   Dialectu   doublequoteu	   delimiteru	   quotecharu   skipinitialspace(   u   selfu   sampleu
   delimitersu	   quotecharu   doublequoteu	   delimiteru   skipinitialspaceu   dialect(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu   sniff±   s    				u   Sniffer.sniffc             C   s/  g  } xC d D]; } t  j | t  j t  j Bƒ } | j | ƒ } | r Pq q W| sV d Si  } i  } d } x| D]ú }	 | j d d }
 |	 |
 } | r³ | j | d ƒ d | | <n  y | j d	 d }
 |	 |
 } Wn t	 k
 ré wo Yn X| r%| d k s| | k r%| j | d ƒ d | | <n  y | j d
 d }
 Wn t	 k
 rQwo Yn X|	 |
 ro | d 7} qo qo Wt
 | d | j ƒ} | rÅt
 | d | j ƒ} | | | k } | d k rÑd } qÑn d } d } t  j d i t  j | ƒ d	 6| d 6t  j ƒ } | j | ƒ rd } n 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   
u]   ((%(delim)s)|^)\W*%(quote)s[^%(delim)s\n]*%(quote)s[^%(delim)s\n]*%(quote)s\W*((%(delim)s)|$)(   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)(?:$|
)FN(   u    FNi    T(   u   reu   compileu   DOTALLu	   MULTILINEu   findallu   Falseu   Noneu
   groupindexu   getu   KeyErroru   maxu   escapeu   searchu   True(   u   selfu   datau
   delimitersu   matchesu   restru   regexpu   quotesu   delimsu   spacesu   mu   nu   keyu	   quotecharu   delimu   skipinitialspaceu	   dq_regexpu   doublequote(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu   _guess_quote_and_delimiterÎ   s^      


'	u"   Sniffer._guess_quote_and_delimiterc             C   s  t  t d | j d ƒ ƒ ƒ } d d „  t d ƒ Dƒ } t d t | ƒ ƒ } d } i  } i  } i  } d t | t | ƒ ƒ }	 }
 x§|	 t | ƒ k  r)| d 7} xn | |	 |
 … D]\ } xS | D]K } | j | i  ƒ } | j | ƒ } | j | d ƒ d | | <| | | <q½ Wq° WxÝ | j	 ƒ  D]Ï } t  | | j
 ƒ  ƒ } t | ƒ d k re| d d d k reqn  t | ƒ d k rÞt | d d	 d
 „  ƒ| | <| j | | ƒ | | d | | d t d d „  | Dƒ ƒ f | | <q| d | | <qW| j
 ƒ  } t | | ƒ } d } d } xŸ t | ƒ d k r¹| | k r¹xp | D]h \ } } | d d k r@| d d k r@| d | | k r¨| d k s˜| | k r¨| | | <q¨q@q@W| d 8} qWt | ƒ d k rt  | j	 ƒ  ƒ d } | d j | ƒ | d j d | ƒ k } | | f S|
 }	 |
 | 7}
 qƒ W| s4d St | ƒ d k r£xZ |  j D]L } | | j	 ƒ  k rP| d j | ƒ | d j d | ƒ k } | | f SqPWn  d 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 frequencies 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   c(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu
   <listcomp>.  s   	 u,   Sniffer._guess_delimiter.<locals>.<listcomp>i   i
   i    i   u   keyc             S   s   |  d S(   Ni   (    (   u   x(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu   <lambda>H  s    u*   Sniffer._guess_delimiter.<locals>.<lambda>c             s   s   |  ] } | d  Vq d S(   i   N(    (   u   .0u   item(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu	   <genexpr>M  s    u+   Sniffer._guess_delimiter.<locals>.<genexpr>g      ð?gÍÌÌÌÌÌì?g{®Gáz„?u   %c u    c             S   s"   g  |  ] \ } } | | f ‘ q S(    (    (   u   .0u   ku   v(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu
   <listcomp>w  s   	 N(   u    i    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(   /opt/alt/python33/lib64/python3.3/csv.pyu   _guess_delimiter  st    
&$! 

u   Sniffer._guess_delimiterc             C   s  t  t | ƒ |  j | ƒ ƒ } t | ƒ } t | ƒ } i  } x t | ƒ D] } d  | | <qI Wd } xì | D]ä } | d k r€ Pn  | d 7} t | ƒ | k r¢ qj n  x© t | j ƒ  ƒ D]• }	 xU t	 t
 t g D]4 }
 y |
 | |	 ƒ PWqË t t f k
 rþ YqË XqË Wt | |	 ƒ }
 |
 | |	 k rµ | |	 d  k r@|
 | |	 <qJ| |	 =qµ qµ Wqj Wd } x£ | j ƒ  D]• \ }	 } t | ƒ t d ƒ k r¹t | |	 ƒ | k r¬| d 7} qú| d 8} qey | | |	 ƒ Wn" t t f k
 rï| d 7} YqeX| d 8} qe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(   /opt/alt/python33/lib64/python3.3/csv.pyu
   has_header€  sJ    
 
	u   Sniffer.has_headerN(
   u   __name__u
   __module__u   __qualname__u   __doc__u   __init__u   Noneu   sniffu   _guess_quote_and_delimiteru   _guess_delimiteru
   has_header(   u
   __locals__(    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu   Sniffer§   s   K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   unix_dialectu
   DictReaderu
   DictWriteru   complexu	   NameErroru   floatu   Sniffer(    (    (    u(   /opt/alt/python33/lib64/python3.3/csv.pyu   <module>   s.   ^	2!