6
6
:license: BSD, see LICENSE for details.
7
7
"""
8
8
9
+ from __future__ import annotations
10
+
9
11
import pickle
10
12
import types
11
13
from os import path
12
- from typing import Any , Dict
14
+ from typing import Any
13
15
14
16
from sphinx .application import ENV_PICKLE_FILENAME , Sphinx
15
17
from sphinx .builders .html import BuildInfo , StandaloneHTMLBuilder
18
20
19
21
from sphinxcontrib .serializinghtml import jsonimpl
20
22
21
- if False :
22
- # For type annotation
23
- from typing import Any , Dict , Tuple # NOQA
24
-
25
23
__version__ = '1.1.6'
26
24
__version_info__ = (1 , 1 , 6 )
27
25
@@ -41,19 +39,18 @@ class SerializingHTMLBuilder(StandaloneHTMLBuilder):
41
39
#: the serializing implementation to use. Set this to a module that
42
40
#: implements a `dump`, `load`, `dumps` and `loads` functions
43
41
#: (pickle, simplejson etc.)
44
- implementation = None # type: Any
42
+ implementation : Any = None
45
43
implementation_dumps_unicode = False
46
44
#: additional arguments for dump()
47
- additional_dump_args = () # type: Tuple
45
+ additional_dump_args = ()
48
46
49
47
#: the filename for the global context file
50
- globalcontext_filename = None # type: str
48
+ globalcontext_filename : str | None = None
51
49
52
50
supported_image_types = ['image/svg+xml' , 'image/png' ,
53
51
'image/gif' , 'image/jpeg' ]
54
52
55
- def init (self ):
56
- # type: () -> None
53
+ def init (self ) -> None :
57
54
self .build_info = BuildInfo (self .config , self .tags )
58
55
self .imagedir = '_images'
59
56
self .current_docname = ''
@@ -65,26 +62,23 @@ def init(self):
65
62
self .init_js_files ()
66
63
self .use_index = self .get_builder_config ('use_index' , 'html' )
67
64
68
- def get_target_uri (self , docname , typ = None ):
69
- # type: (str, str | None) -> str
65
+ def get_target_uri (self , docname : str , typ : str | None = None ) -> str :
70
66
if docname == 'index' :
71
67
return ''
72
68
if docname .endswith (SEP + 'index' ):
73
69
return docname [:- 5 ] # up to sep
74
70
return docname + SEP
75
71
76
- def dump_context (self , context , filename ):
77
- # type: (Dict, str) -> None
72
+ def dump_context (self , context : dict , filename : str ) -> None :
78
73
if self .implementation_dumps_unicode :
79
74
with open (filename , 'w' , encoding = 'utf-8' ) as ft :
80
75
self .implementation .dump (context , ft , * self .additional_dump_args )
81
76
else :
82
77
with open (filename , 'wb' ) as fb :
83
78
self .implementation .dump (context , fb , * self .additional_dump_args )
84
79
85
- def handle_page (self , pagename , ctx , templatename = 'page.html' ,
86
- outfilename = None , event_arg = None ):
87
- # type: (str, Dict, str, str | None, Any) -> None
80
+ def handle_page (self , pagename : str , ctx : dict , templatename : str = 'page.html' ,
81
+ outfilename : str | None = None , event_arg : Any = None ) -> None :
88
82
ctx ['current_page_name' ] = pagename
89
83
ctx .setdefault ('pathto' , lambda p : p )
90
84
self .add_sidebars (pagename , ctx )
@@ -113,8 +107,7 @@ def handle_page(self, pagename, ctx, templatename='page.html',
113
107
ensuredir (path .dirname (source_name ))
114
108
copyfile (self .env .doc2path (pagename ), source_name )
115
109
116
- def handle_finish (self ):
117
- # type: () -> None
110
+ def handle_finish (self ) -> None :
118
111
# dump the global context
119
112
outfilename = path .join (self .outdir , self .globalcontext_filename )
120
113
self .dump_context (self .globalcontext , outfilename )
@@ -165,7 +158,7 @@ class JSONHTMLBuilder(SerializingHTMLBuilder):
165
158
searchindex_filename = 'searchindex.json'
166
159
167
160
168
- def setup (app : Sphinx ) -> Dict [str , Any ]:
161
+ def setup (app : Sphinx ) -> dict [str , Any ]:
169
162
app .setup_extension ('sphinx.builders.html' )
170
163
app .add_builder (JSONHTMLBuilder )
171
164
app .add_builder (PickleHTMLBuilder )
0 commit comments