
    e                        d Z ddlZddlZddlmZ ddlmZmZmZm	Z	m
Z
  G d dej                  Z G d d	e          Z G 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)	from_dict   )NotebookReaderNotebookWriterrejoin_linessplit_linesstrip_transientc                       e Zd ZdZd ZdS )BytesEncoderz@A JSON encoder that accepts b64 (and other *ascii*) bytestrings.c                     t          |t                    r|                    d          S t          j                            | |          S )z#Get the default value of an object.ascii)
isinstancebytesdecodejsonJSONEncoderdefault)selfobjs     2lib/python3.11/site-packages/nbformat/v4/nbjson.pyr   zBytesEncoder.default   s?    c5!! 	'::g&&&''c222    N)__name__
__module____qualname____doc__r    r   r   r   r      s)        JJ3 3 3 3 3r   r   c                       e Zd ZdZd Zd ZdS )
JSONReaderzA JSON notebook reader.c                 F    t          j        |fi |} | j        |fi |}|S )z)Read a JSON string into a Notebook object)r   loadsto_notebook)r   skwargsnbs       r   readszJSONReader.reads   s8    Z$$V$$Tb++F++	r   c                 `    t          |          }t          |          }t          |          }|S )zConvert 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$   s       r   r!   zJSONReader.to_notebook!   s.    
 q\\"R  	r   N)r   r   r   r   r%   r!   r   r   r   r   r      s8        !!      r   r   c                       e Zd ZdZd ZdS )
JSONWriterzA JSON notebook writer.c                    t           |d<   d|d<   d|d<   d|d<   |                    dd	           t          j        |          }|                    d
d          rt          |          }t          |          }t          j        |fi |S )z0Serialize a NotebookNode object as a JSON stringclsr   indentT	sort_keys),z: 
separatorsensure_asciiFr   )	r   
setdefaultcopydeepcopypopr   r	   r   dumps)r   r$   r#   s      r   writeszJSONWriter.writes/   s    $ux"{*|.%000]2::mT** 	!RBR  z"'''''r   N)r   r   r   r   r6   r   r   r   r)   r)   ,   s)        !!( ( ( ( (r   r)   )r   r2   r   nbformat.notebooknoder   rwbaser   r   r   r   r	   r   r   r   r)   _reader_writerr%   readr!   writer6   r   r   r   <module>r=      s   . .
   + + + + + + ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^3 3 3 3 34# 3 3 3       (( ( ( ( ( ( ( ($ *,,
*,,|!	r   