name: fix_notebook description: ノートブックのエラーを、そのノートブック自体の修正(セル内容・JSONスキーマ)またはソースコードの修正により解決する
Fix Notebook Errors
This skill handles fixing errors encountered during notebook execution, ranging from Python code bugs to Jupyter JSON schema violations.
Instructions
-
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.
-
Strategy A: Fix Code Cell (Local):
- If the usage is wrong, imports are missing, or data paths are incorrect, edit the
.ipynbcells. - Modify the
"source"field of the failing code cell in the notebook JSON. - Unit-Safe Assignment: When updating
astropy.unitsobjects, preferseries.value[:] = new_datato keep metadata.
- If the usage is wrong, imports are missing, or data paths are incorrect, edit the
-
Strategy B: Fix JSON Schema:
- If
nbconvertor 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_minorto4(ifnbformatis 4) to prevent auto-adding IDs.
- If
-
Strategy C: Fix Library Source Code:
- If the bug is in the
gwexpy/package, trace it to the source file and apply the fix.
- If the bug is in the
-
Verification:
- Re-run the notebook using
jupyter nbconvert --executeortest_notebooksto confirm it passes.
- Re-run the notebook using
# 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)