void-packages/srcpkgs/sagemath/patches/34995-support_tachyon_0.99....

58 lines
1.9 KiB
Diff

diff --git a/src/sage/interfaces/tachyon.py b/src/sage/interfaces/tachyon.py
index 23671e50892..ce1d50f71bc 100644
--- a/src/sage/interfaces/tachyon.py
+++ b/src/sage/interfaces/tachyon.py
@@ -683,12 +683,14 @@
#*****************************************************************************
import os
+import re
from sage.cpython.string import bytes_to_str
from sage.misc.pager import pager
from sage.misc.superseded import deprecation
from sage.misc.temporary_file import tmp_filename
from sage.structure.sage_object import SageObject
+from sage.misc.cachefunc import cached_method
class TachyonRT(SageObject):
@@ -799,6 +801,11 @@ def __call__(self, model, outfile='sage.png', verbose=1, extra_opts=''):
Parser failed due to an input file syntax error.
Aborting render.
"""
+ if self.version() >= '0.99.2':
+ # this keyword was changed in 0.99.2
+ model = model.replace(
+ " focallength ",
+ " focaldist ")
modelfile = tmp_filename(ext='.dat')
with open(modelfile, 'w') as file:
file.write(model)
@@ -851,6 +858,25 @@ def usage(self, use_pager=True):
else:
print(r)
+ @cached_method
+ def version(self):
+ """
+ Returns the version of the Tachyon raytracer being used.
+
+ TESTS::
+
+ sage: tachyon_rt.version() # random
+ 0.98.9
+ sage: tachyon_rt.version() >= '0.98.9'
+ True
+ """
+ with os.popen('tachyon') as f:
+ r = f.readline()
+ res = re.search(r"Version ([\d.]*)", r)
+ # debian patches tachyon so it won't report the version
+ # we hardcode '0.99' since that's indeed the version they ship
+ return res[1] if res else '0.99'
+
def help(self, use_pager=True):
"""
Deprecated: type 'sage.interfaces.tachyon?' for help