B
    £'=[ˆ  ã               @   s¨   d Z ddlZddlZddlmZ ddlmZ ddlmZm	Z	m
Z
mZmZ G dd	„ d	ejƒZG d
d„ deƒZG dd„ de	ƒZeƒ Zeƒ ZejZejZejZejZejZdS )z(Read and write notebooks in JSON format.é    N)Ú	py3compaté   )Ú	from_dicté   )ÚNotebookReaderÚNotebookWriterÚrejoin_linesÚsplit_linesÚstrip_transientc               @   s   e Zd ZdZdd„ ZdS )ÚBytesEncoderz@A JSON encoder that accepts b64 (and other *ascii*) bytestrings.c             C   s"   t |tƒr| d¡S tj | |¡S )NÚascii)Ú
isinstanceÚbytesÚdecodeÚjsonÚJSONEncoderÚdefault)ÚselfÚobj© r   ú1lib/python3.7/site-packages/nbformat/v4/nbjson.pyr      s    

zBytesEncoder.defaultN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r      s   r   c               @   s   e Zd Zdd„ Zdd„ ZdS )Ú
JSONReaderc             K   s    t j|f|Ž}| j|f|Ž}|S )z)Read a JSON string into a Notebook object)r   ÚloadsÚto_notebook)r   ÚsÚkwargsÚnbr   r   r   Úreads   s    zJSONReader.readsc             K   s   t |ƒ}t|ƒ}t|ƒ}|S )z¡Convert a disk-format notebook dict to in-memory NotebookNode
        
        handles multi-line values as strings, scrubbing of transient values, etc.
        )r   r   r
   )r   Údr   r    r   r   r   r   !   s    zJSONReader.to_notebookN)r   r   r   r!   r   r   r   r   r   r      s   r   c               @   s   e Zd Zdd„ ZdS )Ú
JSONWriterc             K   sh   t |d< d|d< d|d< d|d< | dd	¡ t |¡}| d
d¡rJt|ƒ}t|ƒ}t t	j
|f|Žd¡S )z0Serialize a NotebookNode object as a JSON stringÚclsr   ÚindentTZ	sort_keys)ú,z: Z
separatorsZensure_asciiFr	   zutf-8)r   Ú
setdefaultÚcopyÚdeepcopyÚpopr	   r
   r   Zcast_unicode_py2r   Údumps)r   r    r   r   r   r   Úwrites.   s    
zJSONWriter.writesN)r   r   r   r,   r   r   r   r   r#   ,   s   r#   )r   r(   r   Zipython_genutilsr   Znotebooknoder   Zrwbaser   r   r   r	   r
   r   r   r   r#   Z_readerZ_writerr!   Úreadr   Úwriter,   r   r   r   r   Ú<module>   s   