o
    tf
                     @  sX   d Z ddlmZ ddlZddlmZ G dd deZdd	 Zd
d Z	dd Z
dd ZdS )z/API for reading notebooks of different versions    )annotationsN   )ValidationErrorc                   @  s   e Zd ZdZdS )NotJSONErrorz1An error raised when an object is not valid JSON.N)__name__
__module____qualname____doc__ r
   r
   X/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/nbformat/reader.pyr      s    r   c              
   K  sb   zt j| fi |}W |S  ty0 } zd| }t|dkr'|dd d }t||d}~ww )z Parse a JSON string into a dict.z%Notebook does not appear to be JSON: P   NM   z...)jsonloads
ValueErrorlenr   )skwargsnb_dictemessager
   r
   r   
parse_json   s   

r   c                 C  s    |  dd}|  dd}||fS )zGet the version of a notebook.

    Parameters
    ----------
    nb : dict
        NotebookNode or dict containing notebook data.

    Returns
    -------
    Tuple containing major (int) and minor (int) version numbers
    Znbformatr   Znbformat_minorr   )get)nbmajorminorr
   r
   r   get_version    s   r   c           	   
   K  s   ddl m}m} t| fi |}t|\}}||v r;z
|| j||dW S  ty: } z
d| }t|dd}~ww |d| )aQ  Read a notebook from a json string and return the
    NotebookNode object.

    This function properly reads notebooks of any version.  No version
    conversion is performed.

    Parameters
    ----------
    s : unicode | bytes
        The raw string or bytes object to read the notebook from.

    Returns
    -------
    nb : NotebookNode
        The notebook that was read.

    Raises
    ------
    ValidationError
        Notebook JSON for a given version is missing an expected key and cannot be read.
    NBFormatError
        Specified major version is invalid or unsupported.
    r   )NBFormatErrorversions)r   z8The notebook is invalid and is missing an expected key: NzUnsupported nbformat version %s) r   r   r   r   Zto_notebook_jsonAttributeErrorr   )	r   r   r   r   r   r   r   r   msgr
   r
   r   reads1   s   

r"   c                 K  s   t |  fi |S )aZ  Read a notebook from a file and return the NotebookNode object.

    This function properly reads notebooks of any version.  No version
    conversion is performed.

    Parameters
    ----------
    fp : file
        Any file-like object with a read method.

    Returns
    -------
    nb : NotebookNode
        The notebook that was read.
    )r"   read)fpr   r
   r
   r   r#   W   s   r#   )r	   
__future__r   r   	validatorr   r   r   r   r   r"   r#   r
   r
   r
   r   <module>   s    &