]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-43778: Fix Sphinx glossary_search extension (GH-25286)
authorVictor Stinner <vstinner@python.org>
Thu, 8 Apr 2021 22:07:01 +0000 (00:07 +0200)
committerGitHub <noreply@github.com>
Thu, 8 Apr 2021 22:07:01 +0000 (00:07 +0200)
Create the _static/ directory if it doesn't exist.

Add also constants for the static directory and the JSON filename.

Doc/tools/extensions/glossary_search.py
Misc/NEWS.d/next/Documentation/2021-04-08-22-42-02.bpo-43778.MszRnY.rst [new file with mode: 0644]

index 34d227d670243eb9f35a811dd5014bc5bfd7a34c..59a6862ea3d3f46bf5f5a6f3bab38af751f4f4fd 100644 (file)
@@ -7,14 +7,16 @@
 
     :license: Python license.
 """
-from os import path
+import json
+import os.path
+from docutils.nodes import definition_list_item
 from sphinx.addnodes import glossary
 from sphinx.util import logging
-from docutils.nodes import definition_list_item
-import json
 
 
 logger = logging.getLogger(__name__)
+STATIC_DIR = '_static'
+JSON = 'glossary.json'
 
 
 def process_glossary_nodes(app, doctree, fromdocname):
@@ -45,8 +47,12 @@ def on_build_finish(app, exc):
     if not app.env.glossary_terms:
         return
 
-    logger.info('Writing glossary.json', color='green')
-    with open(path.join(app.outdir, '_static', 'glossary.json'), 'w') as f:
+    logger.info(f'Writing {JSON}', color='green')
+
+    dest_dir = os.path.join(app.outdir, STATIC_DIR)
+    os.makedirs(dest_dir, exist_ok=True)
+
+    with open(os.path.join(dest_dir, JSON), 'w') as f:
         json.dump(app.env.glossary_terms, f)
 
 
diff --git a/Misc/NEWS.d/next/Documentation/2021-04-08-22-42-02.bpo-43778.MszRnY.rst b/Misc/NEWS.d/next/Documentation/2021-04-08-22-42-02.bpo-43778.MszRnY.rst
new file mode 100644 (file)
index 0000000..86dc286
--- /dev/null
@@ -0,0 +1,2 @@
+Fix the Sphinx glossary_search extension: create the _static/ sub-directory
+if it doesn't exist.