Skip to content
fix_notebook logo

Fix Notebook Errors

fix_notebook

ノートブックのエラーを、そのノートブック自体の修正(セル内容・JSONスキーマ)またはソースコードの修正により解決する

SKILL.md

Full skill instructions

Fix Notebook Errors

This skill handles fixing errors encountered during notebook execution, ranging from Python code bugs to Jupyter JSON schema violations.

Instructions

  1. Analyze the Failure:

    • Examine the traceback to determine if the error is in the notebook cell's logic, a JSON schema violation, or the underlying library.
  2. Strategy A: Fix Code Cell (Local):

    • If the usage is wrong, imports are missing, or data paths are incorrect, edit the .ipynb cells.
    • Modify the "source" field of the failing code cell in the notebook JSON.
    • Unit-Safe Assignment: When updating astropy.units objects, prefer series.value[:] = new_data to keep metadata.
  3. Strategy B: Fix JSON Schema:

    • If nbconvert or validators fail with "Additional properties are not allowed ('id' was unexpected)":
    • Remove Cell IDs: Delete the "id" key from all cells in the JSON.
    • Normalize nbformat_minor: Set nbformat_minor to 4 (if nbformat is 4) to prevent auto-adding IDs.
  4. Strategy C: Fix Library Source Code:

    • If the bug is in the gwexpy/ package, trace it to the source file and apply the fix.
  5. Verification:

    • Re-run the notebook using jupyter nbconvert --execute or test_notebooks to confirm it passes.
# Utility for Strategy B
import json
def fix_nb_schema(path):
    with open(path, 'r') as f:
        data = json.load(f)
    for cell in data.get('cells', []):
        cell.pop('id', None)
    if data.get('nbformat') == 4 and data.get('nbformat_minor', 0) >= 5:
        data['nbformat_minor'] = 4
    with open(path, 'w') as f:
        json.dump(data, f, indent=1)