Skip to content

Commit fdfac04

Browse files
committed
👌 IMPROVE: jupyter-book migration
- Better conversion validation - Move `options` key above `parts`/`chapters`/`sections` key
1 parent 21b2831 commit fdfac04

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

sphinx_external_toc/parsing.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -365,11 +365,11 @@ def _parse_item(item):
365365
# apply shorthand if possible (one toctree in subtrees)
366366
if len(data[subtrees_key]) == 1 and items_key in data[subtrees_key][0]:
367367
old_toctree_data = data.pop(subtrees_key)[0]
368-
data[items_key] = old_toctree_data[items_key]
369368
# move options to options key
370369
if len(old_toctree_data) > 1:
371370
data["options"] = {
372371
k: v for k, v in old_toctree_data.items() if k != items_key
373372
}
373+
data[items_key] = old_toctree_data[items_key]
374374

375375
return data

sphinx_external_toc/tools.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -321,8 +321,9 @@ def migrate_jupyter_book(
321321
raise MalformedError("ToC is not a list or dict")
322322

323323
# convert first `file` to `root`
324-
if "file" in toc:
325-
toc["root"] = toc.pop("file")
324+
if "file" not in toc:
325+
raise MalformedError("no top-level 'file' key found")
326+
toc["root"] = toc.pop("file")
326327

327328
# setting `titlesonly` True is now part of the file format
328329
# toc["defaults"] = {"titlesonly": True}
@@ -375,7 +376,10 @@ def migrate_jupyter_book(
375376
subtree["numbered"] = numbered
376377

377378
# now convert to a site map, so we can validate
378-
site_map = parse_toc_data(toc)
379+
try:
380+
site_map = parse_toc_data(toc)
381+
except MalformedError as err:
382+
raise MalformedError(f"Error parsing migrated output: {err}") from err
379383
# change the file format and convert back to a dict
380384
site_map.file_format = file_format
381385
return create_toc_dict(site_map, skip_defaults=True)

0 commit comments

Comments
 (0)