o
    i
                     @   sL   d 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    N   )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	   J/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/nbformat/reader.pyr      s    r   c              
   K   sL   zt j| fi |}W |S  ty% } ztd|  dd d |d}~ww )z Parse a JSON string into a dict.z'Notebook does not appear to be JSON: %rNM   z...)jsonloads
ValueErrorr   )skwargsnb_dicter	   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
    nbformatr   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 r9z
|| j||dW S  ty8 } ztd| 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   to_notebook_jsonAttributeErrorr   )r   r   r   r   r   r   r   r   r	   r	   r
   reads/   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!   V   s   r!   )
r   r   	validatorr   r   r   r   r   r    r!   r	   r	   r	   r
   <module>   s    '