https://github.com/python/cpython/commit/ac455678e7c9f12e9cdbdf5d31667cd12974ca92
commit: ac455678e7c9f12e9cdbdf5d31667cd12974ca92
branch: 3.12
author: Adam Turner <[email protected]>
committer: AA-Turner <[email protected]>
date: 2025-02-22T21:06:13Z
summary:

[3.12] Docs: Test presence of optional extensions with importlib (GH-130445) 
(#130466)

* [3.12] Docs: Test presence of optional extensions with importlib (GH-130445)
(cherry picked from commit 3cc9e867eba1ed139cf28c74b4a788bcc4801394)

Co-authored-by: Adam Turner <[email protected]>

files:
M Doc/conf.py

diff --git a/Doc/conf.py b/Doc/conf.py
index 023b2ace21dd40..42442742f65781 100644
--- a/Doc/conf.py
+++ b/Doc/conf.py
@@ -6,9 +6,10 @@
 # The contents of this file are pickled, so don't put values in the namespace
 # that aren't pickleable (module imports are okay, they're removed 
automatically).
 
-import importlib
 import os
 import sys
+from importlib import import_module
+from importlib.util import find_spec
 
 # Make our custom extensions available to Sphinx
 sys.path.append(os.path.abspath('tools/extensions'))
@@ -36,14 +37,15 @@
     'sphinx.ext.extlinks',
 ]
 
-# Skip if downstream redistributors haven't installed it
-try:
-    import sphinxext.opengraph  # noqa: F401
-except ImportError:
-    pass
-else:
-    extensions.append('sphinxext.opengraph')
-
+# Skip if downstream redistributors haven't installed them
+_OPTIONAL_EXTENSIONS = ('sphinxext.opengraph',)
+for optional_ext in _OPTIONAL_EXTENSIONS:
+    try:
+        if find_spec(optional_ext) is not None:
+            extensions.append(optional_ext)
+    except (ImportError, ValueError):
+        pass
+del _OPTIONAL_EXTENSIONS
 
 doctest_global_setup = '''
 try:
@@ -66,7 +68,7 @@
 # We look for the Include/patchlevel.h file in the current Python source tree
 # and replace the values accordingly.
 # See Doc/tools/extensions/patchlevel.py
-version, release = importlib.import_module('patchlevel').get_version_info()
+version, release = import_module('patchlevel').get_version_info()
 
 rst_epilog = f"""
 .. |python_version_literal| replace:: ``Python {version}``

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to