22
33import sphinx
44from 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]
67from sphinx .util .osutil import copyfile , ensuredir
78
89sphinx_version = sphinx .__version__
1516STATICS_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