U
    d                     @   sB   d Z ddlZddlZddlmZ ddlZdd ZG dd dZdS )z Tablib - JSON Support
    N)UUIDc                 C   s2   t | tjtfrt| S t| dr*|  S | S d S )N	isoformat)
isinstancedecimalDecimalr   strhasattrr   )obj r
   8/tmp/pip-unpacked-wheel-_3ph8cfy/tablib/formats/_json.pyserialize_objects_handler
   s
    
r   c                   @   sP   e Zd ZdZdZedd Zedd Zedd Zed	d
 Z	edd Z
dS )
JSONFormatjson)r   Zjsnc                 C   s   t j|jtddS )z'Returns JSON representation of Dataset.Fdefaultensure_ascii)r   dumpsdictr   )clsZdatasetr
   r
   r   
export_set   s
      zJSONFormat.export_setc                 C   s   t j| tddS )z(Returns JSON representation of Databook.Fr   )r   r   Z_packager   )r   Zdatabookr
   r
   r   export_book   s
      zJSONFormat.export_bookc                 C   s   |   t||_dS )z!Returns dataset from JSON stream.N)wiper   loadr   )r   Zdset	in_streamr
   r
   r   
import_set%   s    zJSONFormat.import_setc                 C   sB   |   t|D ]*}t }|d |_|d |_|| qdS )z"Returns databook from JSON stream.titledataN)r   r   r   tablibZDatasetr   r   Z	add_sheet)r   Zdbookr   Zsheetr   r
   r
   r   import_book,   s    

zJSONFormat.import_bookc              	   C   s0   zt | W dS  ttfk
r*   Y dS X dS )z+Returns True if given stream is valid JSON.TFN)r   r   	TypeError
ValueError)r   streamr
   r
   r   detect7   s
    
zJSONFormat.detectN)__name__
__module____qualname__r   
extensionsclassmethodr   r   r   r   r"   r
   r
   r
   r   r      s   




r   )__doc__r   r   uuidr   r   r   r   r
   r
   r
   r   <module>   s   	