Skip to content

Commit dd878e6

Browse files
authored
use unique output file names when rendering doc (#430)
1 parent 8a6ef31 commit dd878e6

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

docs/source/manim_directive.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ def construct(self):
6868

6969
import shutil
7070

71+
classnamedict = {}
72+
7173

7274
class ManimDirective(Directive):
7375
r"""The ``.. manim::`` directive.
@@ -90,7 +92,13 @@ class ManimDirective(Directive):
9092
def run(self):
9193
from manim import config
9294

95+
global classnamedict
96+
9397
clsname = self.arguments[0]
98+
if clsname not in classnamedict:
99+
classnamedict[clsname] = 1
100+
else:
101+
classnamedict[clsname] += 1
94102

95103
display_source = "display_source" in self.options
96104
save_as_gif = "save_as_gif" in self.options
@@ -147,6 +155,7 @@ def run(self):
147155
media_dir = os.path.join("source", "media")
148156
images_dir = os.path.join(media_dir, "images")
149157
video_dir = os.path.join(media_dir, "videos")
158+
output_file = f"{clsname}-{classnamedict[clsname]}"
150159

151160
file_writer_config_code = [
152161
f'config["frame_rate"] = {frame_rate}',
@@ -157,6 +166,7 @@ def run(self):
157166
f'file_writer_config["video_dir"] = "{video_dir}"',
158167
f'file_writer_config["save_last_frame"] = {save_last_frame}',
159168
f'file_writer_config["save_as_gif"] = {save_as_gif}',
169+
f'file_writer_config["output_file"] = "{output_file}"',
160170
]
161171

162172
user_code = self.content
@@ -175,23 +185,23 @@ def run(self):
175185

176186
# copy video file to output directory
177187
if not (save_as_gif or save_last_frame):
178-
filename = f"{clsname}.mp4"
188+
filename = f"{output_file}.mp4"
179189
filesrc = os.path.join(video_dir, qualitydir, filename)
180190
destfile = os.path.join(dest_dir, filename)
181191
shutil.copyfile(filesrc, destfile)
182192
elif save_as_gif:
183-
filename = f"{clsname}.gif"
193+
filename = f"{output_file}.gif"
184194
filesrc = os.path.join(video_dir, qualitydir, filename)
185195
elif save_last_frame:
186-
filename = f"{clsname}.png"
196+
filename = f"{output_file}.png"
187197
filesrc = os.path.join(images_dir, filename)
188198
else:
189199
raise ValueError("Invalid combination of render flags received.")
190200

191201
rendered_template = jinja2.Template(TEMPLATE).render(
192-
clsname=clsname,
193202
display_source=display_source,
194203
filesrc=filesrc[6:],
204+
output_file=output_file,
195205
save_last_frame=save_last_frame,
196206
save_as_gif=save_as_gif,
197207
source_block=source_block,
@@ -211,7 +221,7 @@ def setup(app):
211221
setup.confdir = app.confdir
212222
app.add_directive("manim", ManimDirective)
213223

214-
metadata = {"parallel_read_safe": True, "parallel_write_safe": True}
224+
metadata = {"parallel_read_safe": False, "parallel_write_safe": True}
215225
return metadata
216226

217227

@@ -227,7 +237,7 @@ def setup(app):
227237
{% if not (save_as_gif or save_last_frame) %}
228238
.. raw:: html
229239
230-
<video class="manim-video" controls loop autoplay src="./{{ clsname }}.mp4"></video>
240+
<video class="manim-video" controls loop autoplay src="./{{ output_file }}.mp4"></video>
231241
{% elif save_as_gif %}
232242
.. image:: {{ filesrc }}
233243
:align: center

0 commit comments

Comments
 (0)