@@ -244,6 +244,7 @@ def generate_frontmatter_in_text(text, file_name=None):
244244 Args:
245245 text (`str`): The text in which to convert the links.
246246 """
247+ is_disabled = "<!-- DISABLE-FRONTMATTER-SECTIONS -->" in text
247248 text = text .split ("\n " )
248249 root = None
249250 is_inside_codeblock = False
@@ -270,6 +271,10 @@ def generate_frontmatter_in_text(text, file_name=None):
270271 node = FrontmatterNode (title , local )
271272 if header_level == 1 :
272273 root = node
274+ # doc writers may choose to disable frontmatter generation
275+ # currenly used in Quiz sections of hf course
276+ if is_disabled :
277+ break
273278 else :
274279 if root is None :
275280 raise ValueError (
@@ -337,7 +342,16 @@ def build_notebooks(doc_folder, notebook_dir, package=None, mapping=None, page_i
337342 raise type (e )(f"There was an error when converting { file } to a notebook.\n " + e .args [0 ]) from e
338343
339344
340- def build_doc (package_name , doc_folder , output_dir , clean = True , version = "master" , language = "en" , notebook_dir = None ):
345+ def build_doc (
346+ package_name ,
347+ doc_folder ,
348+ output_dir ,
349+ clean = True ,
350+ version = "master" ,
351+ language = "en" ,
352+ notebook_dir = None ,
353+ is_python_module = False ,
354+ ):
341355 """
342356 Build the documentation of a package.
343357
@@ -352,19 +366,22 @@ def build_doc(package_name, doc_folder, output_dir, clean=True, version="master"
352366 language (`str`, *optional*, defaults to `"en"`): The language of the doc.
353367 notebook_dir (`str` or `os.PathLike`, *optional*):
354368 If provided, where to save the notebooks generated from the doc file with an [[open-in-colab]] marker.
369+ is_python_module (`bool`, *optional*, defaults to `False`):
370+ Whether the docs being built are for python module. (For example, HF Course is not a python module).
355371 """
356372 page_info = {"version" : version , "language" : language , "package_name" : package_name }
357373 if clean and Path (output_dir ).exists ():
358374 shutil .rmtree (output_dir )
359375
360376 read_doc_config (doc_folder )
361377
362- package = importlib .import_module (package_name )
378+ package = importlib .import_module (package_name ) if is_python_module else None
363379 anchors_mapping = build_mdx_files (package , doc_folder , output_dir , page_info )
364380 sphinx_refs = check_toc_integrity (doc_folder , output_dir )
365381 sphinx_refs .extend (convert_anchors_mapping_to_sphinx_format (anchors_mapping , package ))
366- build_sphinx_objects_ref (sphinx_refs , output_dir , page_info )
367- resolve_links (output_dir , package , anchors_mapping , page_info )
382+ if is_python_module :
383+ build_sphinx_objects_ref (sphinx_refs , output_dir , page_info )
384+ resolve_links (output_dir , package , anchors_mapping , page_info )
368385 generate_frontmatter (output_dir )
369386
370387 if notebook_dir is not None :
@@ -395,6 +412,9 @@ def check_toc_integrity(doc_folder, output_dir):
395412 while len (toc ) > 0 :
396413 part = toc .pop (0 )
397414 toc_sections .extend ([sec ["local" ] for sec in part ["sections" ] if "local" in sec ])
415+ for sec in part ["sections" ]:
416+ if "local_fw" in sec :
417+ toc_sections .extend (sec ["local_fw" ].values ())
398418 # There should be one sphinx ref per page
399419 for sec in part ["sections" ]:
400420 if "local" in sec :
0 commit comments