File nbsmoke-pr63-remove-id.patch of Package python-nbsmoke

From 86860f1900bbc38f0a1873001bb8f420f66d96d4 Mon Sep 17 00:00:00 2001
From: maximlt <mliquet@anaconda.com>
Date: Mon, 3 Oct 2022 14:30:05 +0200
Subject: [PATCH 2/2] remove added id field when not required

---
 nbsmoke/lint/magics/__init__.py | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/nbsmoke/lint/magics/__init__.py b/nbsmoke/lint/magics/__init__.py
index 8e991e8..c23f2ab 100644
--- a/nbsmoke/lint/magics/__init__.py
+++ b/nbsmoke/lint/magics/__init__.py
@@ -120,11 +120,23 @@ def _load_user_magic_handlers(path):
     def insert_get_ipython(nb):
         # define and use get_ipython (for pyflakes)
         if len(nb['cells']) > 0:
+            is_id_field = 'id' in nb['cells'][0]
             # the get_ipython() is so pyflakes doesn't complain if no
             # magics present (which would leave get_ipython unused)
             get_ipython_cell = nbformat.v4.new_code_cell(
                 'from IPython import get_ipython\nget_ipython()')
             nb['cells'].insert(0,get_ipython_cell)
+            # Starting from nbformat 4.5 notebook cells must have an id field.
+            # So adding a new cell with new_code_cell will add a cell with an id field.
+            # However, if the notebook was based on a previous version (e.g. 4.2),
+            # then it would contain a mix of id and non id cells. Newer versions
+            # of nbformat (5.6) raise an error when validating such notebook while
+            # before they were mutating it. nbconvert uses nbformat to validate
+            # it build proper notebooks, in particular after applying preprocessors.
+            # This change remove the id added by new_code_cell if the notebook
+            # didn't have ids (just checking the first cell...).
+            if 'id' in nb['cells'][0] and not is_id_field:
+                del nb['cells'][0]['id']
 
 
     def ipython_to_python_for_flake_checks(self, ipy):
openSUSE Build Service is sponsored by