Skip to content

Commit 88c72ec

Browse files
authored
Merge pull request #128 from useblocks/fix_sphinx_util_issues
🔧 Refactor environment.py
2 parents c49bb7e + fdd8b79 commit 88c72ec

1 file changed

Lines changed: 27 additions & 26 deletions

File tree

sphinxcontrib/test_reports/environment.py

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
import sphinx
44
from packaging.version import Version
5-
from sphinx.util.console import brown
5+
from sphinx.application import Sphinx
6+
from sphinx.util.console import brown # type: ignore[import-not-found]
67
from sphinx.util.osutil import copyfile, ensuredir
78

89
sphinx_version = sphinx.__version__
@@ -15,7 +16,7 @@
1516
STATICS_DIR_NAME = "_static"
1617

1718

18-
def safe_add_file(filename, app):
19+
def safe_add_file(filename: str, app: Sphinx):
1920
"""
2021
Adds files to builder resources only, if the given filename was not already registered.
2122
Needed mainly for tests to avoid multiple registration of the same file and therefore also multiple execution
@@ -29,14 +30,13 @@ def safe_add_file(filename, app):
2930
static_data_file = os.path.join("_static", data_file)
3031

3132
if data_file.split(".")[-1] == "js":
32-
if (
33-
hasattr(app.builder, "script_files")
34-
and static_data_file not in app.builder.script_files
35-
):
36-
app.add_js_file(data_file)
33+
if hasattr(app.registry, "js_files"):
34+
js_files = [filename for filename, _ in app.registry.js_files]
35+
if static_data_file not in js_files:
36+
app.add_js_file(data_file)
3737
elif data_file.split(".")[-1] == "css":
38-
if hasattr(app.builder, "css_files"):
39-
css_files = [css.filename for css in app.builder.css_files]
38+
if hasattr(app.registry, "css_files"):
39+
css_files = [filename for filename, _ in app.registry.css_files]
4040
if static_data_file not in css_files:
4141
app.add_css_file(data_file)
4242
else:
@@ -45,7 +45,7 @@ def safe_add_file(filename, app):
4545
)
4646

4747

48-
def safe_remove_file(filename, app):
48+
def safe_remove_file(filename: str, app: Sphinx):
4949
"""
5050
Removes a given resource file from builder resources.
5151
Needed mostly during test, if multiple sphinx-build are started.
@@ -59,19 +59,18 @@ def safe_remove_file(filename, app):
5959
static_data_file = os.path.join("_static", data_file)
6060

6161
if data_file.split(".")[-1] == "js":
62-
if (
63-
hasattr(app.builder, "script_files")
64-
and static_data_file in app.builder.script_files
65-
):
66-
app.builder.script_files.remove(static_data_file)
67-
elif data_file.split(".")[-1] == "css" and hasattr(app.builder, "css_files"):
68-
css_files = [css.filename for css in app.builder.css_files]
62+
if hasattr(app.registry, "js_files"):
63+
js_files = dict(app.registry.js_files)
64+
if static_data_file in js_files:
65+
app.registry.js_files.remove(
66+
(static_data_file, js_files[static_data_file])
67+
)
68+
elif data_file.split(".")[-1] == "css" and hasattr(app.registry, "css_files"):
69+
css_files = dict(app.registry.css_files)
6970
if static_data_file in css_files:
70-
to_remove = [
71-
css for css in app.builder.css_files if css.filename == static_data_file
72-
]
73-
for css in to_remove:
74-
app.builder.css_files.remove(css)
71+
app.registry.css_files.remove(
72+
(static_data_file, css_files[static_data_file])
73+
)
7574

7675

7776
# Base implementation from sphinxcontrib-images
@@ -90,10 +89,12 @@ def install_styles_static_files(app, env):
9089
status_iterator = app.status_iterator
9190

9291
for source_file_path in status_iterator(
93-
files_to_copy,
94-
"Copying static files for sphinx-test-results custom style support...",
95-
brown,
96-
len(files_to_copy),
92+
iterable=files_to_copy,
93+
summary=brown(
94+
"Copying static files for sphinx-test-results custom style support..."
95+
),
96+
color="brown",
97+
length=len(files_to_copy),
9798
):
9899
if not os.path.isabs(source_file_path):
99100
source_file_path = os.path.join(

0 commit comments

Comments
 (0)