From 3aa3c36c4f401cd0c5483a7d78348548774beec7 Mon Sep 17 00:00:00 2001
From: Rapptz <rapptz@gmail.com>
Date: Mon, 15 Aug 2022 15:01:08 -0400
Subject: [PATCH] Marginally speed up CI doc builds by using multiple jobs

---
 .github/workflows/build.yml             | 2 +-
 docs/extensions/attributetable.py       | 3 ++-
 docs/extensions/builder.py              | 1 +
 docs/extensions/details.py              | 2 +-
 docs/extensions/exception_hierarchy.py  | 1 +
 docs/extensions/nitpick_file_ignorer.py | 1 +
 6 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 7cfd5c888..d82ae9a9f 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -48,7 +48,7 @@ jobs:
         shell: bash
         run: |
           cd docs
-          sphinx-build -b html -D language=${DOCS_LANGUAGE} -a -n -T -W --keep-going . _build/html
+          sphinx-build -b html -D language=${DOCS_LANGUAGE} -j auto -a -n -T -W --keep-going . _build/html
         env:
           DOCS_LANGUAGE: ${{ matrix.language }}
 
diff --git a/docs/extensions/attributetable.py b/docs/extensions/attributetable.py
index b38e12a6e..5429e6228 100644
--- a/docs/extensions/attributetable.py
+++ b/docs/extensions/attributetable.py
@@ -276,7 +276,7 @@ def class_results_to_node(key: str, elements: Sequence[TableElement]) -> attribu
     return attributetablecolumn('', title, ul)
 
 
-def setup(app: Sphinx) -> None:
+def setup(app: Sphinx):
     app.add_directive('attributetable', PyAttributeTable)
     app.add_node(attributetable, html=(visit_attributetable_node, depart_attributetable_node))
     app.add_node(attributetablecolumn, html=(visit_attributetablecolumn_node, depart_attributetablecolumn_node))
@@ -285,3 +285,4 @@ def setup(app: Sphinx) -> None:
     app.add_node(attributetable_item, html=(visit_attributetable_item_node, depart_attributetable_item_node))
     app.add_node(attributetableplaceholder)
     app.connect('doctree-resolved', process_attributetable)
+    return {'parallel_read_safe': True}
diff --git a/docs/extensions/builder.py b/docs/extensions/builder.py
index 43b1cf9b9..ac48c8221 100644
--- a/docs/extensions/builder.py
+++ b/docs/extensions/builder.py
@@ -130,3 +130,4 @@ def add_builders(app):
 def setup(app):
     add_builders(app)
     app.connect('builder-inited', add_custom_jinja2)
+    return {'parallel_read_safe': True}
diff --git a/docs/extensions/details.py b/docs/extensions/details.py
index 96f39d5b6..302e250c7 100644
--- a/docs/extensions/details.py
+++ b/docs/extensions/details.py
@@ -52,4 +52,4 @@ def setup(app):
     app.add_node(details, html=(visit_details_node, depart_details_node))
     app.add_node(summary, html=(visit_summary_node, depart_summary_node))
     app.add_directive('details', DetailsDirective)
-
+    return {'parallel_read_safe': True}
diff --git a/docs/extensions/exception_hierarchy.py b/docs/extensions/exception_hierarchy.py
index cc69a7ce7..ae1af6cda 100644
--- a/docs/extensions/exception_hierarchy.py
+++ b/docs/extensions/exception_hierarchy.py
@@ -25,3 +25,4 @@ class ExceptionHierarchyDirective(Directive):
 def setup(app):
     app.add_node(exception_hierarchy, html=(visit_exception_hierarchy_node, depart_exception_hierarchy_node))
     app.add_directive('exception_hierarchy', ExceptionHierarchyDirective)
+    return {'parallel_read_safe': True}
diff --git a/docs/extensions/nitpick_file_ignorer.py b/docs/extensions/nitpick_file_ignorer.py
index f5dff1d12..e568d4b0d 100644
--- a/docs/extensions/nitpick_file_ignorer.py
+++ b/docs/extensions/nitpick_file_ignorer.py
@@ -20,3 +20,4 @@ def setup(app: Sphinx):
     app.add_config_value('nitpick_ignore_files', [], '')
     f = NitpickFileIgnorer(app)
     sphinx_logging.getLogger('sphinx.transforms.post_transforms').logger.addFilter(f)
+    return {'parallel_read_safe': True}