hCIBCAS1Hi / code /sosmc_repro /notebook_loader.py
DineshAI's picture
Publish claim-by-claim SOSMC reproduction
99aac1c verified
Raw
History Blame Contribute Delete
818 Bytes
from __future__ import annotations
import json
import sys
import types
from pathlib import Path
from typing import Any
def execute_cells(path: Path, indices: list[int]) -> dict[str, Any]:
"""Execute selected official notebook cells in one isolated namespace."""
notebook = json.loads(path.read_text(encoding="utf-8"))
module_name = "vendored_sosmc_notebook"
module = types.ModuleType(module_name)
module.__file__ = str(path)
sys.modules[module_name] = module
namespace = module.__dict__
for index in indices:
cell = notebook["cells"][index]
if cell["cell_type"] != "code":
raise ValueError(f"Cell {index} is not code")
source = "".join(cell["source"])
exec(compile(source, f"{path}:cell-{index}", "exec"), namespace)
return namespace