8000 bpo-40742: Doc: fix parallel build. (GH-21237) · python/cpython@a103e73 · GitHub
[go: up one dir, main page]

Skip to content

Commit a103e73

Browse files
authored
bpo-40742: Doc: fix parallel build. (GH-21237)
1 parent 1ac0cbc commit a103e73

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

Doc/tools/extensions/pyspecific.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,39 @@ def run(self):
125125

126126
# Support for documenting audit event
127127

128+
def audit_events_purge(app, env, docname):
129+
"""This is to remove from env.all_audit_events old traces of removed
130+
documents.
131+
"""
132+
if not hasattr(env, 'all_audit_events'):
133+
return
134+
fresh_all_audit_events = {}
135+
for name, event in env.all_audit_events.items():
136+
event["source"] = [(d, t) for d, t in event["source"] if d != docname]
137+
if event["source"]:
138+
# Only keep audit_events that have at least one source.
139+
fresh_all_audit_events[name] = event
140+
env.all_audit_events = fresh_all_audit_events
141+
142+
143+
def audit_events_merge(app, env, docnames, other):
144+
"""In Sphinx parallel builds, this merges env.all_audit_events from
145+
subprocesses.
146+
147+
all_audit_events is a dict of names, with values like:
148+
{'source': [(docname, target), ...], 'args': args}
149+
"""
150+
if not hasattr(other, 'all_audit_events'):
151+
return
152+
if not hasattr(env, 'all_audit_events'):
153+
env.all_audit_events = {}
154+
for name, value in other.all_audit_events.items():
155+
if name in env.all_audit_events:
156+
env.all_audit_events[name]["source"].extend(value["source"])
157+
else:
158+
env.all_audit_events[name] = value
159+
160+
128161
class AuditEvent(Directive):
129162

130163
has_content = True
@@ -589,4 +622,6 @@ def setup(app):
589622
app.add_directive_to_domain('py', 'abstractmethod', PyAbstractMethod)
590623
app.add_directive('miscnews', MiscNews)
591624
app.connect('doctree-resolved', process_audit_events)
625+
app.connect('env-merge-info', audit_events_merge)
626+
app.connect('env-purge-doc', audit_events_purge)
592627
return {'version': '1.0', 'parallel_read_safe': True}

0 commit comments

Comments
 (0)
0