Skip to content

Commit 29dcd22

Browse files
jenshnielsenmgeier
authored andcommitted
Make implicit imports explicit
Closes #825 Implicit imports (imports that rely on the fact that importing a module imports another module such as a submodule) makes the code vulnerable to breakage due to refactors in the dependent code. Such as the changes in Sphinx 8.2.0 that caused #825 This replaces all implicit imports that I could find by explicit imports.
1 parent a921973 commit 29dcd22

File tree

1 file changed

+33
-13
lines changed

1 file changed

+33
-13
lines changed

src/nbsphinx/__init__.py

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import collections.abc
99
import copy
1010
import html
11+
import html.parser
1112
from itertools import chain
1213
import json
1314
import os
@@ -18,23 +19,42 @@
1819
import uuid
1920

2021
import docutils
22+
import docutils.nodes
23+
import docutils.transforms
24+
import docutils.frontend
25+
import docutils.utils
2126
from docutils.parsers import rst
27+
from docutils.parsers.rst import directives as rst_directives
2228
import jinja2
2329
import nbconvert
30+
import nbconvert.utils
31+
import nbconvert.utils.pandoc
32+
import nbconvert.utils.version
2433
import nbformat
2534
import sphinx
35+
import sphinx.addnodes
2636
import sphinx.directives
37+
import sphinx.directives.code
2738
import sphinx.directives.other
2839
import sphinx.environment
40+
import sphinx.environment.adapters.toctree
2941
import sphinx.errors
3042
import sphinx.transforms.post_transforms.images
43+
import sphinx.util
44+
import sphinx.util.console
45+
import sphinx.util.fileutil
46+
import sphinx.util.images
47+
import sphinx.util.logging
48+
import sphinx.util.nodes
49+
import sphinx.util.osutil
3150
from sphinx.util.matching import patmatch
3251
try:
3352
from sphinx.util.display import status_iterator
3453
except ImportError:
3554
# This will be removed in Sphinx 8:
3655
from sphinx.util import status_iterator
3756
import traitlets
57+
import traitlets.config
3858

3959

4060
if sys.version_info >= (3, 8) and sys.platform == 'win32':
@@ -782,10 +802,10 @@ class NbInput(rst.Directive):
782802
optional_arguments = 1 # lexer name
783803
final_argument_whitespace = False
784804
option_spec = {
785-
'execution-count': rst.directives.positive_int,
786-
'empty-lines-before': rst.directives.nonnegative_int,
787-
'empty-lines-after': rst.directives.nonnegative_int,
788-
'no-output': rst.directives.flag,
805+
'execution-count': rst_directives.positive_int,
806+
'empty-lines-before': rst_directives.nonnegative_int,
807+
'empty-lines-after': rst_directives.nonnegative_int,
808+
'no-output': rst_directives.flag,
789809
}
790810
has_content = True
791811

@@ -800,10 +820,10 @@ class NbOutput(rst.Directive):
800820
required_arguments = 0
801821
final_argument_whitespace = False
802822
option_spec = {
803-
'execution-count': rst.directives.positive_int,
804-
'more-to-come': rst.directives.flag,
805-
'fancy': rst.directives.flag,
806-
'class': rst.directives.unchanged,
823+
'execution-count': rst_directives.positive_int,
824+
'more-to-come': rst_directives.flag,
825+
'fancy': rst_directives.flag,
826+
'class': rst_directives.unchanged,
807827
}
808828
has_content = True
809829

@@ -867,10 +887,10 @@ class NbLinkGallery(NbGallery):
867887

868888
# Not all options of TocTree are allowed:
869889
option_spec = {
870-
'name': rst.directives.unchanged,
871-
'caption': rst.directives.unchanged_required,
872-
'glob': rst.directives.flag,
873-
'reversed': rst.directives.flag,
890+
'name': rst_directives.unchanged,
891+
'caption': rst_directives.unchanged_required,
892+
'glob': rst_directives.flag,
893+
'reversed': rst_directives.flag,
874894
}
875895

876896

@@ -2089,7 +2109,7 @@ def setup(app):
20892109
# Make docutils' "code" directive (generated by markdown2rst/pandoc)
20902110
# behave like Sphinx's "code-block",
20912111
# see https://github.com/sphinx-doc/sphinx/issues/2155:
2092-
rst.directives.register_directive('code', sphinx.directives.code.CodeBlock)
2112+
rst_directives.register_directive('code', sphinx.directives.code.CodeBlock)
20932113

20942114
# Monkey-patch Sphinx TocTree adapter
20952115
if hasattr(sphinx.environment.adapters.toctree, '_resolve_toctree'):

0 commit comments

Comments
 (0)