1
1
import re
2
2
3
+ import sphinx
4
+ from packaging import version
3
5
from sphinx .ext .autosummary import Autosummary , generate
4
6
5
7
from sphinx_autosummary_accessors .templates import known_templates
@@ -19,34 +21,76 @@ def extract_documenter(content):
19
21
return directive_name , "::" .join ([modname , name ])
20
22
21
23
22
- def create_documenter_from_template (autosummary , app , obj , parent , full_name ):
23
- real_name = "." .join (full_name .split ("::" ))
24
-
25
- options = autosummary .options
26
- template_name = options .get ("template" , None )
27
- if template_name is None or template_name not in known_templates :
28
- return original_create_documenter (autosummary , app , obj , parent , full_name )
29
-
30
- imported_members = options .get ("imported_members" , False )
31
- recursive = options .get ("recursive" , False )
32
-
33
- context = {}
34
- context .update (app .config .autosummary_context )
35
-
36
- rendered = generate .generate_autosummary_content (
37
- real_name ,
38
- obj ,
39
- parent ,
40
- template = generate .AutosummaryRenderer (app ),
41
- template_name = template_name ,
42
- app = app ,
43
- context = context ,
44
- imported_members = imported_members ,
45
- recursive = recursive ,
46
- )
47
-
48
- documenter_name , real_name = extract_documenter (rendered )
49
- doccls = app .registry .documenters .get (documenter_name )
50
- documenter = doccls (autosummary .bridge , real_name )
51
-
52
- return documenter
24
+ if version .parse (sphinx .__version__ ) >= version .Version ("8.2.0" ):
25
+
26
+ def create_documenter_from_template (
27
+ autosummary , obj , parent , full_name , * , registry
28
+ ):
29
+ real_name = "." .join (full_name .split ("::" ))
30
+
31
+ options = autosummary .options
32
+ template_name = options .get ("template" , None )
33
+ if template_name is None or template_name not in known_templates :
34
+ return original_create_documenter (
35
+ autosummary , obj , parent , full_name , registry = registry
36
+ )
37
+
38
+ imported_members = options .get ("imported_members" , False )
39
+ recursive = options .get ("recursive" , False )
40
+
41
+ context = {}
42
+ context .update (autosummary .env .config .autosummary_context )
43
+
44
+ rendered = generate .generate_autosummary_content (
45
+ real_name ,
46
+ obj ,
47
+ parent ,
48
+ template = generate .AutosummaryRenderer (autosummary .env .app ),
49
+ template_name = template_name ,
50
+ context = context ,
51
+ imported_members = imported_members ,
52
+ recursive = recursive ,
53
+ registry = registry ,
54
+ events = autosummary .env .events ,
55
+ config = autosummary .env .config ,
56
+ )
57
+
58
+ documenter_name , real_name = extract_documenter (rendered )
59
+ doccls = registry .documenters .get (documenter_name )
60
+ documenter = doccls (autosummary .bridge , real_name )
61
+
62
+ return documenter
63
+
64
+ else :
65
+
66
+ def create_documenter_from_template (autosummary , app , obj , parent , full_name ):
67
+ real_name = "." .join (full_name .split ("::" ))
68
+
69
+ options = autosummary .options
70
+ template_name = options .get ("template" , None )
71
+ if template_name is None or template_name not in known_templates :
72
+ return original_create_documenter (autosummary , app , obj , parent , full_name )
73
+
74
+ imported_members = options .get ("imported_members" , False )
75
+ recursive = options .get ("recursive" , False )
76
+
77
+ context = {}
78
+ context .update (app .config .autosummary_context )
79
+
80
+ rendered = generate .generate_autosummary_content (
81
+ real_name ,
82
+ obj ,
83
+ parent ,
84
+ template = generate .AutosummaryRenderer (app ),
85
+ template_name = template_name ,
86
+ app = app ,
87
+ context = context ,
88
+ imported_members = imported_members ,
89
+ recursive = recursive ,
90
+ )
91
+
92
+ documenter_name , real_name = extract_documenter (rendered )
93
+ doccls = app .registry .documenters .get (documenter_name )
94
+ documenter = doccls (autosummary .bridge , real_name )
95
+
96
+ return documenter
0 commit comments