mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-10-31 09:10:08 +00:00
34 lines
1.3 KiB
Diff
34 lines
1.3 KiB
Diff
diff --git a/manim/mobject/svg/svg_mobject.py b/manim/mobject/svg/svg_mobject.py
|
|
index 722efb29..66e99377 100644
|
|
--- a/manim/mobject/svg/svg_mobject.py
|
|
+++ b/manim/mobject/svg/svg_mobject.py
|
|
@@ -2,6 +2,7 @@
|
|
|
|
from __future__ import annotations
|
|
|
|
+import io
|
|
import os
|
|
from pathlib import Path
|
|
from typing import Any, Self
|
|
@@ -199,12 +200,14 @@ class SVGMobject(VMobject, metaclass=ConvertToOpenGL):
|
|
file_path = self.get_file_path()
|
|
element_tree = ET.parse(file_path)
|
|
new_tree = self.modify_xml_tree(element_tree) # type: ignore[arg-type]
|
|
- # Create a temporary svg file to dump modified svg to be parsed
|
|
- modified_file_path = file_path.with_name(f"{file_path.stem}_{file_path.suffix}")
|
|
- new_tree.write(modified_file_path)
|
|
-
|
|
- svg = se.SVG.parse(modified_file_path)
|
|
- modified_file_path.unlink()
|
|
+ # Dump the modified svg to an in-memory buffer to be parsed.
|
|
+ # Writing it next to the original file races when the same svg is
|
|
+ # loaded concurrently (e.g. by parallel test workers).
|
|
+ buffer = io.BytesIO()
|
|
+ new_tree.write(buffer)
|
|
+ buffer.seek(0)
|
|
+
|
|
+ svg = se.SVG.parse(buffer)
|
|
|
|
mobjects, mobject_dict = self.get_mobjects_from(svg)
|
|
self.add(*mobjects)
|