o
    tf;
                     @  s@   d Z ddlm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.    )annotations   )versions)get_version)ValidationErrorc           	   
   C  s   t | \}}||kr| S |tv ra||kr|d }t| j}n	|d }t| j}z|| }|dd|kr>d||f }t|W n ty[ } zd| d| d| }t|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   Z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)	nbZ
to_versionversionZversion_minorZstep_versionZconvert_functionZ	convertedmsge r   [/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/nbformat/converter.pyr      s0   


r   N)
__doc__
__future__r    r   readerr   	validatorr   r   r   r   r   r   <module>   s    