From b54ce375bdfb703274b0f99a61a2aeac77c745bc Mon Sep 17 00:00:00 2001 From: Rg9906 Date: Fri, 19 Jun 2026 22:32:28 +0530 Subject: [PATCH] Update notebook version metadata during normalize --- nbformat/validator.py | 7 ++++++- tests/test_validator.py | 31 ++++++++++++++++++++++++++++--- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/nbformat/validator.py b/nbformat/validator.py index 00e8755f..f679d863 100644 --- a/nbformat/validator.py +++ b/nbformat/validator.py @@ -313,7 +313,7 @@ def normalize( version = nbdict_version if version_minor is None: version_minor = nbdict_version_minor - return _normalize( + changes, normalized_nb = _normalize( nbdict, version, version_minor, @@ -321,6 +321,11 @@ def normalize( relax_add_props=relax_add_props, strip_invalid_metadata=strip_invalid_metadata, ) + if "nbformat" in normalized_nb: + normalized_nb["nbformat"] = version + if "nbformat_minor" in normalized_nb: + normalized_nb["nbformat_minor"] = version_minor + return changes, normalized_nb def _normalize( diff --git a/tests/test_validator.py b/tests/test_validator.py index ba7fd5ef..efe53321 100644 --- a/tests/test_validator.py +++ b/tests/test_validator.py @@ -15,7 +15,7 @@ import nbformat from nbformat import read from nbformat.json_compat import VALIDATORS -from nbformat.validator import isvalid, iter_validate, validate +from nbformat.validator import isvalid, iter_validate, normalize, validate from nbformat.warnings import DuplicateCellId, MissingIDFieldWarning from .base import TestsBase @@ -369,8 +369,33 @@ def test_notebook_v3_valid_without_min_version(): validate(nb) -def test_notebook_invalid_without_main_version(): - pass +@pytest.mark.filterwarnings("ignore::nbformat.warnings.MissingIDFieldWarning") +def test_normalize_updates_minor_version(): + """Normalizing to v4.5 should update notebook metadata version.""" + + nb = { + "nbformat": 4, + "nbformat_minor": 0, + "metadata": {}, + "cells": [ + { + "cell_type": "code", + "metadata": {}, + "source": "", + "outputs": [], + "execution_count": None, + } + ], + } + + changes, new_nb = normalize(nb, version_minor=5) + + assert changes == 1 + assert "id" in new_nb["cells"][0] + + # Expected notebook version metadata + assert new_nb["nbformat"] == 4 + assert new_nb["nbformat_minor"] == 5 def test_strip_invalid_metadata():