| 
6 | 6 | # The contents of this file are pickled, so don't put values in the namespace  | 
7 | 7 | # that aren't pickleable (module imports are okay, they're removed automatically).  | 
8 | 8 | 
 
  | 
9 |  | -import importlib  | 
10 | 9 | import os  | 
11 | 10 | import sys  | 
 | 11 | +from importlib import import_module  | 
 | 12 | +from importlib.util import find_spec  | 
12 | 13 | 
 
  | 
13 | 14 | # Make our custom extensions available to Sphinx  | 
14 | 15 | sys.path.append(os.path.abspath('tools/extensions'))  | 
 | 
39 | 40 | ]  | 
40 | 41 | 
 
  | 
41 | 42 | # Skip if downstream redistributors haven't installed them  | 
42 |  | -try:  | 
43 |  | -    import notfound.extension  # noqa: F401  | 
44 |  | -except ImportError:  | 
45 |  | -    pass  | 
46 |  | -else:  | 
47 |  | -    extensions.append('notfound.extension')  | 
48 |  | -try:  | 
49 |  | -    import sphinxext.opengraph  # noqa: F401  | 
50 |  | -except ImportError:  | 
51 |  | -    pass  | 
52 |  | -else:  | 
53 |  | -    extensions.append('sphinxext.opengraph')  | 
54 |  | - | 
 | 43 | +_OPTIONAL_EXTENSIONS = (  | 
 | 44 | +    'notfound.extension',  | 
 | 45 | +    'sphinxext.opengraph',  | 
 | 46 | +)  | 
 | 47 | +for optional_ext in _OPTIONAL_EXTENSIONS:  | 
 | 48 | +    try:  | 
 | 49 | +        if find_spec(optional_ext) is not None:  | 
 | 50 | +            extensions.append(optional_ext)  | 
 | 51 | +    except (ImportError, ValueError):  | 
 | 52 | +        pass  | 
 | 53 | +del _OPTIONAL_EXTENSIONS  | 
55 | 54 | 
 
  | 
56 | 55 | doctest_global_setup = '''  | 
57 | 56 | try:  | 
 | 
74 | 73 | # We look for the Include/patchlevel.h file in the current Python source tree  | 
75 | 74 | # and replace the values accordingly.  | 
76 | 75 | # See Doc/tools/extensions/patchlevel.py  | 
77 |  | -version, release = importlib.import_module('patchlevel').get_version_info()  | 
 | 76 | +version, release = import_module('patchlevel').get_version_info()  | 
78 | 77 | 
 
  | 
79 | 78 | rst_epilog = f"""  | 
80 | 79 | .. |python_version_literal| replace:: ``Python {version}``  | 
 | 
0 commit comments