o
    iE
                     @   s4   d Z ddlmZ ddlmZ ddlmZ dd ZdS )z.API for converting notebooks between versions.   )versions)get_version)ValidationErrorc              
   C   s   t | \}}||kr| S |tv r]||kr|d }t| j}n	|d }t| j}z|| }|dd|kr<td||f W n tyW } ztd| d| d| dd}~ww t||S td| )	a  Convert a notebook node object to a specific version.  Assumes that
    all the versions starting from 1 to the latest major X are implemented.
    In other words, there should never be a case where v1 v2 v3 v5 exist without
    a v4.  Also assumes that all conversions can be made in one step increments
    between major versions and ignores minor revisions.

    Parameters
    ----------
    nb : NotebookNode
    to_version : int
        Major revision to convert the notebook to.  Can either be an upgrade or
        a downgrade.

    Raises
    ------
    ValueError
        Notebook failed to convert.
    ValueError
        The version specified is invalid or doesn't exist.
    ValidationError
        Conversion failed due to missing expected attributes.
    r   nbformatz+Failed to convert notebook from v%d to v%d.z-Notebook could not be converted from version z to version z because it's missing a key: NzACannot convert notebook to v%d because that version doesn't exist)	r   r   upgrade	downgradeget
ValueErrorAttributeErrorr   convert)nb
to_versionversionversion_minorstep_versionconvert_function	convertede r   M/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/nbformat/converter.pyr      s8   


r   N)__doc__ r   readerr   	validatorr   r   r   r   r   r   <module>   s
    