58 lines
1.9 KiB
Diff
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
|