[sage-devel] jmol doesn't start in 10.5

2024-12-12 Thread Richard Quint
I have built Sage from source (sage-10.4.tar.gz and sage-10.5.tar.gz) on 
four machines with different architectures and different derivatives of 
Debian.  On all machines the jmol viewer for 3d plots works under 10.4 
but not under 10.5.  The RuntimeError Traceback is identical on all 
machines.  A copy of a Sage session is below. Except for the machine 
specific info the Traceback is identical for each installation. As you 
can see from the transcript, java is installed.  It is used by jmol in 
10.4.  I don't know enough Python to see what the problem is.  Any help 
would be appreciated.


┌┐
│ SageMath version 10.5, Release Date: 2024-12-04    │
│ Using Python 3.12.7. Type "help()" for help.   │
└┘
sage: !uname -a
Linux Iphegenia 6.11.0-9-generic #9-Ubuntu SMP PREEMPT_DYNAMIC Mon Oct 
14 13:19:59 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

sage: !lsb_release -d
Description:    Ubuntu 24.10
sage: !java --version
openjdk 21.0.5 2024-10-15
OpenJDK Runtime Environment (build 21.0.5+11-Ubuntu-1ubuntu124.10)
OpenJDK 64-Bit Server VM (build 21.0.5+11-Ubuntu-1ubuntu124.10, mixed 
mode, sharing)

sage: var('x y')
(x, y)
sage: plot3d(x*y, (-1,1), (-1,1), viewer="jmol")
---
RuntimeError  Traceback (most recent call last)
Cell In[5], line 1
> 1 plot3d(x*y, (-Integer(1),Integer(1)), (-Integer(1),Integer(1)), 
viewer="jmol")


File 
~/Sage/sage-10.5/local/var/lib/sage/venv-python3.12/lib/python3.12/site-packages/IPython/core/displayhook.py:268, 
in DisplayHook.__call__(self, result)

    266 self.start_displayhook()
    267 self.write_output_prompt()
--> 268 format_dict, md_dict = self.compute_format_data(result)
    269 self.update_user_ns(result)
    270 self.fill_exec_result(result)

File 
~/Sage/sage-10.5/local/var/lib/sage/venv-python3.12/lib/python3.12/site-packages/IPython/core/displayhook.py:157, 
in DisplayHook.compute_format_data(self, result)

    127 def compute_format_data(self, result):
    128 """Compute format data of the object to be displayed.
    129
    130 The format data is a generalization of the :func:`repr` of 
an object.

   (...)
    155
    156 """
--> 157 return self.shell.display_formatter.format(result)

File ~/Sage/sage-10.5/src/sage/repl/display/formatter.py:187, in 
SageDisplayFormatter.format(self, obj, include, exclude)

    112 def format(self, obj, include=None, exclude=None):
    113 r"""
    114 Use the Sage rich output instead of IPython.
    115
   (...)
    185 I am repper
    186 """
--> 187 sage_format, sage_metadata = self.dm.displayhook(obj)
    188 assert PLAIN_TEXT in sage_format, 'plain text is always 
present'
    190 # use Sage rich output for any except those native to 
IPython, but only

    191 # if it is not plain and dull

File ~/Sage/sage-10.5/src/sage/repl/rich_output/display_manager.py:800, 
in DisplayManager.displayhook(self, obj)

    798 self._backend.set_underscore_variable(obj)
    799 plain_text, rich_output = self._rich_output_formatter(obj, dict())
--> 800 return self._backend.displayhook(plain_text, rich_output)

File ~/Sage/sage-10.5/src/sage/repl/rich_output/backend_ipython.py:266, 
in BackendIPythonCommandline.displayhook(self, plain_text, rich_output)

    264 return ({'text/plain': msg}, {})
    265 elif isinstance(rich_output, OutputSceneJmol):
--> 266 msg = self.launch_jmol(rich_output, plain_text.text.get_str())
    267 return ({'text/plain': msg}, {})
    268 elif isinstance(rich_output, OutputSceneWavefront):

File ~/Sage/sage-10.5/src/sage/repl/rich_output/backend_ipython.py:367, 
in BackendIPythonCommandline.launch_jmol(self, output_jmol, plain_text)

    365 jdata = JmolData()
    366 if not jdata.is_jmol_available() and not DOCTEST_MODE:
--> 367 raise RuntimeError('jmol cannot run, no suitable java 
version found')

    368 launch_script = output_jmol.launch_script_filename()
    369 jmol_cmd = 'jmol'

RuntimeError: jmol cannot run, no suitable java version found
sage:


--
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/sage-devel/87e704ba-846b-4f2a-abf2-a7a81e3cff5b%40gmail.com.


Re: [sage-devel] jmol doesn't start in 10.5

2024-12-12 Thread Richard Quint
That was it.  I missed that jmol was optional now.  Thanks

On Thursday, December 12, 2024 at 12:40:03 PM UTC-8 dim...@gmail.com wrote:

> This most probably just means that jmol package is not installed. It's
> now optional, you need to explicitly say you want it installed.
> The quickest way would by just
>
> make jmol
>
> from the directory you built Sage from.
> Then try running your test again
>
> On Thu, Dec 12, 2024 at 12:24 PM Richard Quint
>  wrote:
> >
> > I have built Sage from source (sage-10.4.tar.gz and sage-10.5.tar.gz) on
> > four machines with different architectures and different derivatives of
> > Debian. On all machines the jmol viewer for 3d plots works under 10.4
> > but not under 10.5. The RuntimeError Traceback is identical on all
> > machines. A copy of a Sage session is below. Except for the machine
> > specific info the Traceback is identical for each installation. As you
> > can see from the transcript, java is installed. It is used by jmol in
> > 10.4. I don't know enough Python to see what the problem is. Any help
> > would be appreciated.
> >
> > ┌┐
> > │ SageMath version 10.5, Release Date: 2024-12-04 │
> > │ Using Python 3.12.7. Type "help()" for help. │
> > └┘
> > sage: !uname -a
> > Linux Iphegenia 6.11.0-9-generic #9-Ubuntu SMP PREEMPT_DYNAMIC Mon Oct
> > 14 13:19:59 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
> > sage: !lsb_release -d
> > Description: Ubuntu 24.10
> > sage: !java --version
> > openjdk 21.0.5 2024-10-15
> > OpenJDK Runtime Environment (build 21.0.5+11-Ubuntu-1ubuntu124.10)
> > OpenJDK 64-Bit Server VM (build 21.0.5+11-Ubuntu-1ubuntu124.10, mixed
> > mode, sharing)
> > sage: var('x y')
> > (x, y)
> > sage: plot3d(x*y, (-1,1), (-1,1), viewer="jmol")
> > 
> ---
> > RuntimeError Traceback (most recent call last)
> > Cell In[5], line 1
> > > 1 plot3d(x*y, (-Integer(1),Integer(1)), (-Integer(1),Integer(1)),
> > viewer="jmol")
> >
> > File
> > 
> ~/Sage/sage-10.5/local/var/lib/sage/venv-python3.12/lib/python3.12/site-packages/IPython/core/displayhook.py:268,
> > in DisplayHook.__call__(self, result)
> > 266 self.start_displayhook()
> > 267 self.write_output_prompt()
> > --> 268 format_dict, md_dict = self.compute_format_data(result)
> > 269 self.update_user_ns(result)
> > 270 self.fill_exec_result(result)
> >
> > File
> > 
> ~/Sage/sage-10.5/local/var/lib/sage/venv-python3.12/lib/python3.12/site-packages/IPython/core/displayhook.py:157,
> > in DisplayHook.compute_format_data(self, result)
> > 127 def compute_format_data(self, result):
> > 128 """Compute format data of the object to be displayed.
> > 129
> > 130 The format data is a generalization of the :func:`repr` of
> > an object.
> > (...)
> > 155
> > 156 """
> > --> 157 return self.shell.display_formatter.format(result)
> >
> > File ~/Sage/sage-10.5/src/sage/repl/display/formatter.py:187, in
> > SageDisplayFormatter.format(self, obj, include, exclude)
> > 112 def format(self, obj, include=None, exclude=None):
> > 113 r"""
> > 114 Use the Sage rich output instead of IPython.
> > 115
> > (...)
> > 185 I am repper
> > 186 """
> > --> 187 sage_format, sage_metadata = self.dm.displayhook(obj)
> > 188 assert PLAIN_TEXT in sage_format, 'plain text is always
> > present'
> > 190 # use Sage rich output for any except those native to
> > IPython, but only
> > 191 # if it is not plain and dull
> >
> > File ~/Sage/sage-10.5/src/sage/repl/rich_output/display_manager.py:800,
> > in DisplayManager.displayhook(self, obj)
> > 798 self._backend.set_underscore_variable(obj)
> > 799 plain_text, rich_output = self._rich_output_formatter(obj, dict())
> > --> 800 return self._backend.displayhook(plain_text, rich_output)
> >
> > File ~/Sage/sage-10.5/src/sage/repl/rich_output/backend_ipython.py:266,
> > in BackendIPythonCommandline.displayhook(self, plain_text, rich_output)
> > 264 return ({'text/plain': msg}, {})
> > 265 elif isinstance(rich_output, OutputSceneJmol):
> > --> 266 msg = self.launch_jmol(rich_output, plain_text.text.get_str())
> > 267 return ({'text/plain': msg}, {})
> > 268 elif isinstance(rich_output, OutputSc