ó
÷j Vc           @   s!  d  d l  Z  d  d l Z d  d l m Z d d d d d d d	 d
 d d d d d d g Z d d d d g e Z x$ e D] Z e e  e ƒ e ƒ  e <qu Wd „  Z	 d d „ Z
 d „  Z d e f d „  ƒ  YZ e Z d e f d „  ƒ  YZ e Z d e  j f d „  ƒ  YZ d e  j f d „  ƒ  YZ d S(   iÿÿÿÿN(   t   izipt   register_dialectt   unregister_dialectt   get_dialectt   list_dialectst   field_size_limitt   Dialectt   excelt	   excel_tabt   Sniffert	   QUOTE_ALLt   QUOTE_MINIMALt   QUOTE_NONNUMERICt
   QUOTE_NONEt   Errort   readert   writert
   DictReadert
   DictWriterc         C   sf   |  d  k r d St |  t ƒ r/ |  j | | ƒ St |  t j ƒ rD n t |  t ƒ sb t |  ƒ }  n  |  S(   Nt    (   t   Nonet
   isinstancet   unicodet   encodet   numberst   Numbert   str(   t   st   encodingt   errors(    (    s-   lib/python2.7/site-packages/unicodecsv/py2.pyt
   _stringify"   s    t   strictc         C   s\   y- g  t  |  ƒ D] } t | | | ƒ ^ q SWn( t k
 rW } t j t | ƒ ƒ ‚ n Xd  S(   N(   t   iterR   t	   TypeErrort   csvR   R   (   t   lR   R   R   t   e(    (    s-   lib/python2.7/site-packages/unicodecsv/py2.pyt   _stringify_list.   s    -c         C   sL   |  d  k r d  St |  t t t f ƒ r, |  St |  t ƒ rH |  j | ƒ S|  S(   N(   R   R   R   t   intt   floatR   t   decode(   R   R   (    (    s-   lib/python2.7/site-packages/unicodecsv/py2.pyt
   _unicodify5   s    t   UnicodeWriterc           B   sD   e  Z d  Z e j d d d „ Z d „  Z d „  Z e d „  ƒ Z	 RS(   sQ  
    >>> import unicodecsv
    >>> from cStringIO import StringIO
    >>> f = StringIO()
    >>> w = unicodecsv.writer(f, encoding='utf-8')
    >>> w.writerow((u'Ã©', u'Ã±'))
    >>> f.seek(0)
    >>> r = unicodecsv.reader(f, encoding='utf-8')
    >>> row = r.next()
    >>> row[0] == u'Ã©'
    True
    >>> row[1] == u'Ã±'
    True
    s   utf-8R   c         O   s1   | |  _  t j | | | | Ž |  _ | |  _ d  S(   N(   R   R"   R   t   encoding_errors(   t   selft   ft   dialectR   R   t   argst   kwds(    (    s-   lib/python2.7/site-packages/unicodecsv/py2.pyt   __init__N   s    	c         C   s"   |  j  j t | |  j |  j ƒ ƒ S(   N(   R   t   writerowR%   R   R+   (   R,   t   row(    (    s-   lib/python2.7/site-packages/unicodecsv/py2.pyR2   T   s    	c         C   s"   x | D] } |  j  | ƒ q Wd  S(   N(   R2   (   R,   t   rowsR3   (    (    s-   lib/python2.7/site-packages/unicodecsv/py2.pyt	   writerowsX   s    c         C   s
   |  j  j S(   N(   R   R.   (   R,   (    (    s-   lib/python2.7/site-packages/unicodecsv/py2.pyR.   \   s    (
   t   __name__t
   __module__t   __doc__R"   R   R1   R2   R5   t   propertyR.   (    (    (    s-   lib/python2.7/site-packages/unicodecsv/py2.pyR*   ?   s
   		t   UnicodeReaderc           B   sJ   e  Z d d  d d „ Z d „  Z d „  Z e d „  ƒ Z e d „  ƒ Z RS(   s   utf-8R   c         K   s«   d d d d d d d g } | d  k ra t g  | j ƒ  D] } | | k ^ q7 ƒ sa t j } qa n  t j | | |  |  _ | |  _ | |  _ t |  j	 j
 t j @ƒ |  _ d  S(   Nt	   delimitert   doublequotet
   escapechart   lineterminatort	   quotechart   quotingt   skipinitialspace(   R   t   anyt   keysR"   R   R   R   R+   t   boolR.   R@   R   t   _parse_numerics(   R,   R-   R.   R   R   R0   t   format_paramst   kwd_name(    (    s-   lib/python2.7/site-packages/unicodecsv/py2.pyR1   c   s    			%		c         C   s•   |  j  j ƒ  } |  j } |  j } t } |  j rn t } g  | D]- } t | | ƒ rX | n | | | | ƒ ^ q= Sg  | D] } | | | | ƒ ^ qu Sd  S(   N(   R   t   nextR   R+   R   RE   R'   R   (   R,   R3   R   R+   t   unicode_t   float_t   value(    (    s-   lib/python2.7/site-packages/unicodecsv/py2.pyRH   t   s    			5c         C   s   |  S(   N(    (   R,   (    (    s-   lib/python2.7/site-packages/unicodecsv/py2.pyt   __iter__‚   s    c         C   s
   |  j  j S(   N(   R   R.   (   R,   (    (    s-   lib/python2.7/site-packages/unicodecsv/py2.pyR.   …   s    c         C   s
   |  j  j S(   N(   R   t   line_num(   R,   (    (    s-   lib/python2.7/site-packages/unicodecsv/py2.pyRM   ‰   s    N(	   R6   R7   R   R1   RH   RL   R9   R.   RM   (    (    (    s-   lib/python2.7/site-packages/unicodecsv/py2.pyR:   b   s
   		c           B   s/   e  Z d  Z d d d d d d „ Z d „  Z RS(   s   
    >>> from cStringIO import StringIO
    >>> f = StringIO()
    >>> w = DictWriter(f, ['a', u'Ã±', 'b'], restval=u'Ã®')
    >>> w.writerow({'a':'1', u'Ã±':'2'})
    >>> w.writerow({'a':'1', u'Ã±':'2', 'b':u'Ã¸'})
    >>> w.writerow({'a':u'Ã©', u'Ã±':'2'})
    >>> f.seek(0)
    >>> r = DictReader(f, fieldnames=['a', u'Ã±'], restkey='r')
    >>> r.next() == {'a': u'1', u'Ã±':'2', 'r': [u'Ã®']}
    True
    >>> r.next() == {'a': u'1', u'Ã±':'2', 'r': [u'Ã¸']}
    True
    >>> r.next() == {'a': u'Ã©', u'Ã±':'2', 'r': [u'Ã®']}
    True
    R   t   raiseR   s   utf-8R   c   
   	   O   s_   | |  _  t j j |  | | | | | | |	 Ž t | | d | d | | |	 Ž|  _ | |  _ d  S(   NR   R   (   R   R"   R   R1   R*   R   R+   (
   R,   t   csvfilet
   fieldnamest   restvalt   extrasactionR.   R   R   R/   R0   (    (    s-   lib/python2.7/site-packages/unicodecsv/py2.pyR1       s    	c         C   s,   t  t |  j |  j ƒ ƒ } |  j | ƒ d  S(   N(   t   dictt   zipRP   R2   (   R,   t   header(    (    s-   lib/python2.7/site-packages/unicodecsv/py2.pyt   writeheaderª   s    (   R6   R7   R8   R1   RV   (    (    (    s-   lib/python2.7/site-packages/unicodecsv/py2.pyR      s
   	c           B   s2   e  Z d  Z d d d d d d d „ Z d „  Z RS(   s˜  
    >>> from cStringIO import StringIO
    >>> f = StringIO()
    >>> w = DictWriter(f, fieldnames=['name', 'place'])
    >>> w.writerow({'name': 'Cary Grant', 'place': 'hollywood'})
    >>> w.writerow({'name': 'Nathan Brillstone', 'place': u'Ã¸Land'})
    >>> w.writerow({'name': u'Will Ã¸. Unicoder', 'place': u'Ã©Spandland'})
    >>> f.seek(0)
    >>> r = DictReader(f, fieldnames=['name', 'place'])
    >>> print r.next() == {'name': 'Cary Grant', 'place': 'hollywood'}
    True
    >>> print r.next() == {'name': 'Nathan Brillstone', 'place': u'Ã¸Land'}
    True
    >>> print r.next() == {'name': u'Will Ã¸. Unicoder', 'place': u'Ã©Spandland'}
    True
    R   s   utf-8R   c      	   O   s  | d  k	 r t | | ƒ } n  t j j |  | | | | | | |	 Ž t | | d | d | | |	 Ž|  _ | d  k r¿ t t j d ƒ r¿ t | | d | | |	 Ž}
 t |
 j ƒ  |
 j	 ƒ |  _
 n  |  j
 d  k	 rù g  |  j
 D] } t | | ƒ ^ qØ |  _ n	 g  |  _ t | | ƒ |  _ d  S(   NR   R   RP   (   R   R%   R"   R   R1   R:   R   t   hasattrRH   R   RP   R)   t   unicode_fieldnamest   unicode_restkey(   R,   RO   RP   t   restkeyRQ   R.   R   R   R/   R0   R   R-   (    (    s-   lib/python2.7/site-packages/unicodecsv/py2.pyR1   À   s    (	c            si   t  j j |  ƒ ‰  t ‡  f d †  t |  j |  j ƒ Dƒ ƒ } ˆ  j |  j ƒ } | re | | |  j	 <n  | S(   Nc         3   s%   |  ] \ } } | ˆ  | f Vq d  S(   N(    (   t   .0t   str_keyt   uni_key(   R3   (    s-   lib/python2.7/site-packages/unicodecsv/py2.pys	   <genexpr>Ú   s    (
   R"   R   RH   RS   R    RP   RX   t   getRZ   RY   (   R,   t   resultt   rest(    (   R3   s-   lib/python2.7/site-packages/unicodecsv/py2.pyRH   Ø   s    N(   R6   R7   R8   R   R1   RH   (    (    (    s-   lib/python2.7/site-packages/unicodecsv/py2.pyR   ¯   s   	(   R"   R   t	   itertoolsR    t   pass_throughst   __all__t   propt   getattrt   globalsR   R%   R)   t   objectR*   R   R:   R   R   R   (    (    (    s-   lib/python2.7/site-packages/unicodecsv/py2.pyt   <module>   s@   			
 * 