
lR\h
                 @   s  d  Z  d d l Z d d l Z d d l Z d d l m Z d d l m Z d d l m Z e r d d l m	 Z	 d d l m
 Z
 d d l m Z d d l Z n0 d d l m	 Z	 d d l m
 Z
 d d l m Z d	 Z d Z d Z d d   Z d d d  Z d d   Z d S)z Tablib - DBF Support.
    N)StringIO)dbfpy)is_py3)dbf)dbfnew)recordr   csvzutf-8c             C   s  t  j   } t j   \ } } |  d } xd t |  j |  D]P \ } } t |  t t g k rx | j	 | d d d  q; | j	 | d d  q; W| j
 |  t j | d d } xT |  D]L } t j |  }	 x* t |  j |  D] \ } } | |	 | <q W|	 j   q W| j   t | d  }
 t r?t j |
 j    } n t |
 j    } |
 j   t j |  t j |  | j   S)	z'Returns DBF representation of a Datasetr   N
      CP   readOnlyrb)r   Zdbf_newtempfilemkstempzipheaderstypeintfloatZ	add_fieldwriter   Dbf	dbfrecordZ	DbfRecordstorecloseopenr   ioBytesIOreadr   osremovegetvalue)ZdatasetZnew_dbf	temp_fileZtemp_uriZ	first_rowZ	fieldnameZfield_valueZdbf_filerowr   Z
dbf_streamstream r&   H/var/www/dbchiro/venv/lib/python3.4/site-packages/tablib/formats/_dbf.py
export_set   s.    


r(   Tc                s   |  j    t r+ t j t j |     n t j t |       j |  _ xC t	   j
  D]2     f d d     j D } |  j |  q\ Wd S)z$Returns a dataset from a DBF stream.c                s   g  |  ] }    |  q Sr&   r&   ).0f)_dbfr   r&   r'   
<listcomp>H   s   	 zimport_set.<locals>.<listcomp>N)Zwiper   r   r   r   r   r   Z
fieldNamesr   rangeZrecordCountappend)ZdsetZ	in_streamr   r$   r&   )r+   r   r'   
import_set>   s    
r/   c             C   s   yn t  rN t |   t k	 r- t |  d  }  n  t j t j |   d d } n t j t |   d d } d SWn t t	 j
 f k
 r d SYn Xd S)z-Returns True if the given stream is valid DBFzutf-8r   TFN)r   r   bytesr   r   r   r   r   
ValueErrorstructerror)r%   r+   r&   r&   r'   detectK   s    !r4   )r   )__doc__r   r2   r    Ztablib.compatr   r   r   Ztablib.packages.dbfpy3r   r   r   r   r   Ztablib.packages.dbfpytitle
extensionsZDEFAULT_ENCODINGr(   r/   r4   r&   r&   r&   r'   <module>   s(   !